<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
     xmlns:content="http://purl.org/rss/1.0/modules/content/"
     xmlns:dc="http://purl.org/dc/elements/1.1/"
     xmlns:dcterms="http://purl.org/dc/terms/"
     xmlns:media="http://search.yahoo.com/mrss/"
     xmlns:atom="http://www.w3.org/2005/Atom"
     xmlns:cf="https://www.futureplc.com/rss/content-flags"
>
    <channel>
                    <atom:link href="https://www.pcgamer.com/feeds/tag/gaming-keyboards/" rel="self" type="application/rss+xml" />
                            <title><![CDATA[ Latest from PC Gamer in Gaming-keyboards ]]></title>
                <link>https://www.pcgamer.com/hardware/gaming-keyboards</link>
        <description><![CDATA[ All the latest gaming-keyboards content from the PC Gamer team ]]></description>
                                    <lastBuildDate>Tue, 20 Oct 2026 11:07:14 +0000</lastBuildDate>
                            <language>en</language>
                                <item>
                                                            <title><![CDATA[ This sound library catalogues 100 different keyboard switches, is dangerous for my wallet, and also has… live service game mechanics? ]]></title>
                                                                                                <dc:content><![CDATA[ <p>There's a lot that goes into the <a href="https://www.pcgamer.com/best-gaming-keyboard/" target="_blank">best gaming keyboards</a>, and switches are only part of the picture. The entire composition doesn't fall apart with a less than stellar switch in place, especially as so many boards are hot swappable. But if you're picky about typing sound, the search for your perfect key switch just got a little easier.</p><p><a href="https://switchlab.app/lab#/find" target="_blank">Switch Lab</a> is a browser-based library of 100 switch sounds, collecting together switches from Cherry, Gateron, Outemu and more. Obviously, <em>feel </em>is just as important as sound, but we don't yet live in a cyberpunk dystopia that can transmit textural experiences over the net. Shame.</p><p>Anyway, <a href="https://switchlab.app/intro" target="_blank">after a brief introduction to how Switch Lab works</a>, you can begin comparing and contrasting switch sounds. You can either hammer a solo switch with just your mouse, or load a full set into a virtual keyboard for a typing test where a cat pesters you. I have a pretty clacky keyboard in the office at PCG Towers, so this latter test did not give me the best sense of switch sound (and that fidgeting feline kept dragging down my accuracy score to boot).</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-WwgagW"></div>                            </div>                            <script src="https://kwizly.com/embed/WwgagW.js" async></script><p>Each switch enjoys its own detailed catalogue page, offering pointers on what sort of typist it's great for, alongside suggestions for switches in a similar ballpark if it doesn't quite hit the mark for you. There's weight, pricing information, and even links to extended sound test videos on YouTube.</p><p>As a huge fan of Be Quiet's silent switches (the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/be-quiet-light-mount-tkl-review/" target="_blank">Light Mount TKL</a> remains my daily driver at home), I've disappeared down a bit of a rabbit hole on Switch Lab. I first loved the cozy vibes of the <a href="https://switchlab.app/lab#/sw/keygeek-oat" target="_blank">Keygeek Oat</a>, but then stumbled upon the <a href="https://switchlab.app/lab#/sw/ttc-ice-frozen-v2" target="_blank">TTC Frozen Silent V2</a> which seems <em>properly </em>quiet. According to Switch Lab, the <a href="https://switchlab.app/lab#/sw/leobog-silent-cotton-candy" target="_blank">Leobog Silent cotton Candy</a> is even more understated and—whups! I've just added more than 50 bucks worth of switches to my shopping cart.</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="58guFzvTjZLNLTg3UUxbMH" name="Switch Lab" alt="A virtual typing test with a cat that pesters you." src="https://cdn.mos.cms.futurecdn.net/58guFzvTjZLNLTg3UUxbMH-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">My nemesis. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Switch Lab)</span></figcaption></figure><p>The dangers to my wallet aside, this switch sound library isn't without its quirks. For one, you don't get to try out each of the 100 currently catalogued switches from the off. To unlock the first 40, you have to either review the site or share it with a friend. More switch sounds can then be unlocked as a daily login bonus.</p><p>Yeah, I wasn't expecting live service mechanics in this humble switch library of all things. Speaking of, there's a selection of lightweight games here too, including multiple speed typing tests with leaderboards and even a Taiko no Tatsujin clone. Who thought a switch sound library would be quite so extra?</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-keyboards/this-sound-library-catalogues-100-different-keyboard-switches-is-dangerous-for-my-wallet-and-also-has-live-service-game-mechanics/</link>
                                                                            <description>
                            <![CDATA[ Bend an ear for this. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">EyTyeZ7fPLvinkYyc34MvK</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/R7iA4YTWya53YrgPYpzvPH-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 20 Oct 2026 11:07:14 +0000</pubDate>                                                                                                                                <updated>Tue, 20 Oct 2026 11:07:18 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming Keyboards]]></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/R7iA4YTWya53YrgPYpzvPH-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Key switches have spilled out across a black surface from a nearby clear plastic tube. the switches in question are Keychron Silk POM Banana.]]></media:description>                                                            <media:text><![CDATA[Key switches have spilled out across a black surface from a nearby clear plastic tube. the switches in question are Keychron Silk POM Banana.]]></media:text>
                                <media:title type="plain"><![CDATA[Key switches have spilled out across a black surface from a nearby clear plastic tube. the switches in question are Keychron Silk POM Banana.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/R7iA4YTWya53YrgPYpzvPH-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>There's a lot that goes into the <a href="https://www.pcgamer.com/best-gaming-keyboard/" target="_blank">best gaming keyboards</a>, and switches are only part of the picture. The entire composition doesn't fall apart with a less than stellar switch in place, especially as so many boards are hot swappable. But if you're picky about typing sound, the search for your perfect key switch just got a little easier.</p><p><a href="https://switchlab.app/lab#/find" target="_blank">Switch Lab</a> is a browser-based library of 100 switch sounds, collecting together switches from Cherry, Gateron, Outemu and more. Obviously, <em>feel </em>is just as important as sound, but we don't yet live in a cyberpunk dystopia that can transmit textural experiences over the net. Shame.</p><p>Anyway, <a href="https://switchlab.app/intro" target="_blank">after a brief introduction to how Switch Lab works</a>, you can begin comparing and contrasting switch sounds. You can either hammer a solo switch with just your mouse, or load a full set into a virtual keyboard for a typing test where a cat pesters you. I have a pretty clacky keyboard in the office at PCG Towers, so this latter test did not give me the best sense of switch sound (and that fidgeting feline kept dragging down my accuracy score to boot).</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-WwgagW"></div>                            </div>                            <script src="https://kwizly.com/embed/WwgagW.js" async></script><p>Each switch enjoys its own detailed catalogue page, offering pointers on what sort of typist it's great for, alongside suggestions for switches in a similar ballpark if it doesn't quite hit the mark for you. There's weight, pricing information, and even links to extended sound test videos on YouTube.</p><p>As a huge fan of Be Quiet's silent switches (the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/be-quiet-light-mount-tkl-review/" target="_blank">Light Mount TKL</a> remains my daily driver at home), I've disappeared down a bit of a rabbit hole on Switch Lab. I first loved the cozy vibes of the <a href="https://switchlab.app/lab#/sw/keygeek-oat" target="_blank">Keygeek Oat</a>, but then stumbled upon the <a href="https://switchlab.app/lab#/sw/ttc-ice-frozen-v2" target="_blank">TTC Frozen Silent V2</a> which seems <em>properly </em>quiet. According to Switch Lab, the <a href="https://switchlab.app/lab#/sw/leobog-silent-cotton-candy" target="_blank">Leobog Silent cotton Candy</a> is even more understated and—whups! I've just added more than 50 bucks worth of switches to my shopping cart.</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="58guFzvTjZLNLTg3UUxbMH" name="Switch Lab" alt="A virtual typing test with a cat that pesters you." src="https://cdn.mos.cms.futurecdn.net/58guFzvTjZLNLTg3UUxbMH-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">My nemesis. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Switch Lab)</span></figcaption></figure><p>The dangers to my wallet aside, this switch sound library isn't without its quirks. For one, you don't get to try out each of the 100 currently catalogued switches from the off. To unlock the first 40, you have to either review the site or share it with a friend. More switch sounds can then be unlocked as a daily login bonus.</p><p>Yeah, I wasn't expecting live service mechanics in this humble switch library of all things. Speaking of, there's a selection of lightweight games here too, including multiple speed typing tests with leaderboards and even a Taiko no Tatsujin clone. Who thought a switch sound library would be quite so extra?</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Button mashers rejoice: Gaming keyboard deals are plentiful this Prime Day, and here are my absolute favorites ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Fun fact: All the good gaming keyboards I've ever owned, I bought on sale. </p><p>Let's face it, gaming keebs of the higher caliber don't usually go for cheap, and since I've had a few missteps with mine, I've probably owned more than the average person. </p><p>You can reap the benefits of all my shopping shenanigans, though, and instead buy something that's actually a good deal during this Amazon Prime Day. It'll save you the time, money, frustration, and whatever other nuisance you can possibly think of.</p><p><a href="https://www.pcgamer.com/best-amazon-prime-day-pc-gaming-deals/" target="_blank"><strong>Check out all the best Prime Day PC gaming deals here.</strong></a></p><p>The three keyboards I've picked out for you below are all excellent. There are two wireless, smaller keebs for you to look at, plus one full-sized option that consistently ranks high on our list of the <a href="https://www.pcgamer.com/best-gaming-keyboard/">best gaming keyboards</a>.</p><p>The deals are on fire right now, but they won't stay that way for much longer. Now's the time to treat yourself to a new keyboard so that you can spam WASD in your game of choice with extra pizzazz.</p><h2 class="article-body__section" id="section-the-deals"><span>The deals</span></h2>        <div class="featured_product_block featured_block_hero" data-id="9855fc56-c178-11f1-89b5-15f8a289db49">            <a href="https://www.amazon.com/dp/B0DCVPGB9N" data-model-name="K2 HE Wireless 75%" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:56.25%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/zRyyXmxqYXZ4b7TUXNo9zm.jpg" alt="K2 HE Wireless 75%"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Keychron</div>                                        <div class="featured__title">K2 HE Wireless 75%</div>                                    </div>                <div class="subtitle__description">                                                            <p><p><br></p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="9855feea-c178-11f1-99a0-ed9e5bd9347e">            <a href="https://www.amazon.com/dp/B0FD5276Z6" data-model-name="BlackWidow V4 TKL Wireless" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:56.25%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/6ScMVK87xUKfGgXomAanGb.jpg" alt="BlackWidow V4 TKL Wireless"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Razer</div>                                        <div class="featured__title">BlackWidow V4 TKL Wireless</div>                                    </div>                <div class="subtitle__description">                                                            <p><p><br></p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="9855ffa8-c178-11f1-925d-c513e02fefcb">            <a href="https://www.amazon.com/dp/B0FGGZK4X7" data-model-name="ROG Strix Scope X | Wired " data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:56.25%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/6QKGW8GFyBNo2hgf3BuQxJ.jpg" alt="ROG Strix Scope X | Wired"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Asus</div>                                        <div class="featured__title">ROG Strix Scope X | Wired </div>                                    </div>                <div class="subtitle__description">                                                            <p><p><br></p></p>                </div>                            </div>        </div><h2 class="article-body__section" id="section-the-information"><span>The information</span></h2><div class="product"><a data-dimension112="1dd06d8c-c172-11f1-a6bd-cdeb9f4d52e8" data-action="Deal Block" data-label="MSI GF65" data-dimension48="K2 HE Wireless 75%" data-dimension25="$111.99" href="https://www.amazon.com/dp/B0DCVPGB9N" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1500px;"><p class="vanilla-image-block" style="padding-top:81.00%;"><img id="zRyyXmxqYXZ4b7TUXNo9zm" name="61ioq+AEmlL._AC_SL1500_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/zRyyXmxqYXZ4b7TUXNo9zm-1920-80.jpg" mos="" align="middle" fullscreen="" width="1500" height="1215" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/dp/B0DCVPGB9N" target="_blank" rel="nofollow" data-dimension112="1dd06d8c-c172-11f1-a6bd-cdeb9f4d52e8" data-action="Deal Block" data-label="MSI GF65" data-dimension48="K2 HE Wireless 75%" data-dimension25="$111.99">K2 HE Wireless 75%: was $139.99 now $111.99</a></strong><br>I love me a stylish gaming keeb, and this Keychron K2 HE gives you Noctua fan vibes while delivering on the performance front. This isn't the type of keyboard that'll scream "gamer," so you can keep it in your office and pretend that you're a fully functioning member of society while still mashing away until the early hours. We <a href="https://www.pcgamer.com/hardware/gaming-keyboards/keychron-k2-he-review/" target="_blank">liked this one a lot</a>, by the way, so it's not just nice to look at.</p><p><strong>Key specs:</strong> <strong>75% layout | Magnetic sensors | Customizable actuation | 2.4 GHz, Bluetooth 5.2, USB Type-C | 1,000 Hz polling rate | 0.1 mm sensitivity</strong></p><p><strong>Price check: </strong><a href="https://www.newegg.com/p/0TP-032N-004N0" target="_blank">Newegg $272.48</a><a class="view-deal button" href="https://www.amazon.com/dp/B0DCVPGB9N" target="_blank" rel="nofollow" data-dimension112="1dd06d8c-c172-11f1-a6bd-cdeb9f4d52e8" data-action="Deal Block" data-label="MSI GF65" data-dimension48="K2 HE Wireless 75%" data-dimension25="$111.99">View Deal</a></p></div><div class="product"><a data-dimension112="cbe9ec9e-c173-11f1-b086-db8b7e43b73d" data-action="Deal Block" data-label="MSI GF65" data-dimension48="BlackWidow V4 TKL Wireless" data-dimension25="$94.99" href="https://www.amazon.com/dp/B0FD5276Z6" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1500px;"><p class="vanilla-image-block" style="padding-top:43.20%;"><img id="6ScMVK87xUKfGgXomAanGb" name="razer-blackwidow-v4-tkl-wireless" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6ScMVK87xUKfGgXomAanGb-1920-80.jpg" mos="" align="middle" fullscreen="" width="1500" height="648" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/dp/B0FD5276Z6" target="_blank" rel="nofollow" data-dimension112="cbe9ec9e-c173-11f1-b086-db8b7e43b73d" data-action="Deal Block" data-label="MSI GF65" data-dimension48="BlackWidow V4 TKL Wireless" data-dimension25="$94.99">BlackWidow V4 TKL Wireless: was $149.99 now $94.99</a></strong><br>Gamer aesthetic doesn't make you flinch; on the contrary, you love it? I mean, same. I own a previous version of the BlackWidow, and I love just how clicky it is, plus it's super sturdy. I tend to mash my keys with the force of an angry sledgehammer, but Razer's signature gaming keyboard doesn't bat an eye, and it remains as delightful as ever.</p><p><strong>Key specs:</strong> <strong>TKL | Orange switches | Multi-function roller | 3 control buttons | Hot-swappable | 2.4 GHz, Bluetooth  | Up to 980h battery life</strong><a class="view-deal button" href="https://www.amazon.com/dp/B0FD5276Z6" target="_blank" rel="nofollow" data-dimension112="cbe9ec9e-c173-11f1-b086-db8b7e43b73d" data-action="Deal Block" data-label="MSI GF65" data-dimension48="BlackWidow V4 TKL Wireless" data-dimension25="$94.99">View Deal</a></p></div><div class="product"><a data-dimension112="cbe9edac-c173-11f1-9c27-8123de81f07c" data-action="Deal Block" data-label="ROG Strix Scope X | Wired" data-dimension48="ROG Strix Scope X | Wired" data-dimension25="$89.99" href="https://www.amazon.com/dp/B0FGGZK4X7" 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="6QKGW8GFyBNo2hgf3BuQxJ" name="AsusROGStrixScopeIIX" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6QKGW8GFyBNo2hgf3BuQxJ-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/dp/B0FGGZK4X7" target="_blank" rel="nofollow" data-dimension112="cbe9edac-c173-11f1-9c27-8123de81f07c" data-action="Deal Block" data-label="ROG Strix Scope X | Wired" data-dimension48="ROG Strix Scope X | Wired" data-dimension25="$89.99">ROG Strix Scope X | Wired: was $129.99 now $89.99</a></strong><br>This keyboard line is an absolute favorite here for us at PC Gamer, and this one is full-size and wired, so battery life is of no concern. If you love a full-size keyboard, which is a type of gaming keeb that's increasingly hard to come by, you're going to love this one. </p><p><strong>Key specs: Full-size | ROG RX pre-lubed linear switches | PBT doubleshot | sound-dampened | wired USB Type-C</strong><a class="view-deal button" href="https://www.amazon.com/dp/B0FGGZK4X7" target="_blank" rel="nofollow" data-dimension112="cbe9edac-c173-11f1-9c27-8123de81f07c" data-action="Deal Block" data-label="ROG Strix Scope X | Wired" data-dimension48="ROG Strix Scope X | Wired" data-dimension25="$89.99">View Deal</a></p></div><p>Don't love these? It's okay, I'm not offended. Picking a gaming keyboard needs to be done right. I've given away more keebs than I care to mention because they didn't suit my exact tastes (although I'm pickier than most, what with the typing for a living).</p><p>Here are some of the other <a href="https://www.pcgamer.com/hardware/gaming-keyboards/best-prime-day-gaming-keyboard-deals/" target="_blank">best gaming keyboard Prime Day deals we've rounded up for you</a>.</p><h2 id="shop-all-of-amazon-s-gaming-keyboard-deals-here">👉<a href="https://www.amazon.com/s?k=gaming+keyboard&crid=1JZ757P9AJSEL&sprefix=gaming+keyboar%2Caps%2C181&ref=nb_sb_noss_2" target="_blank">Shop all of Amazon's gaming keyboard deals here</a>👈</h2> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/button-mashers-rejoice-gaming-keyboard-deals-are-plentiful-this-prime-day-and-here-are-my-absolute-favorites/</link>
                                                                            <description>
                            <![CDATA[ I kind of want them all, but how am I going to play games on three keebs at once? ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">RUq9oyyooNYrdZrpUJAos4</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/AHEKE3tvor74k6G3gH8XQK-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 06 Oct 2026 11:32:32 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Keyboards]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                <author><![CDATA[ monicajwrites@gmail.com (Monica J. White) ]]></author>                    <dc:creator><![CDATA[ Monica J. White ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/NDfvhda34jai9UR8degXm9-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Monica started her gaming journey playing Super Mario Bros on the SNES, but she quickly switched over to a PC and never looked back. These days, her gaming habits are all over the place, ranging from Pokémon and Spelunky 2 to World of Warcraft and Elden Ring. She built her first rig nearly two decades ago, and now, when she&#039;s not elbow-deep inside a PC case, she&#039;s probably getting paid to rant about the mess that is the GPU market. Outside of the endless battle between AMD and Nvidia, she writes about CPUs, gaming laptops, software, and peripherals. Her work has appeared in Digital Trends, TechRadar, Laptop Mag, SlashGear, Tom&#039;s Hardware, WePC, and more. When not writing, she likes to stay up all night while gaming and then regret it the next morning, swearing to never do it again—until she inevitably does.&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/AHEKE3tvor74k6G3gH8XQK-1920-80.jpg">
                                                            <media:credit><![CDATA[Keychron]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Keychron keyboard over colorful background]]></media:description>                                                            <media:text><![CDATA[Keychron keyboard over colorful background]]></media:text>
                                <media:title type="plain"><![CDATA[Keychron keyboard over colorful background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/AHEKE3tvor74k6G3gH8XQK-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Fun fact: All the good gaming keyboards I've ever owned, I bought on sale. </p><p>Let's face it, gaming keebs of the higher caliber don't usually go for cheap, and since I've had a few missteps with mine, I've probably owned more than the average person. </p><p>You can reap the benefits of all my shopping shenanigans, though, and instead buy something that's actually a good deal during this Amazon Prime Day. It'll save you the time, money, frustration, and whatever other nuisance you can possibly think of.</p><p><a href="https://www.pcgamer.com/best-amazon-prime-day-pc-gaming-deals/" target="_blank"><strong>Check out all the best Prime Day PC gaming deals here.</strong></a></p><p>The three keyboards I've picked out for you below are all excellent. There are two wireless, smaller keebs for you to look at, plus one full-sized option that consistently ranks high on our list of the <a href="https://www.pcgamer.com/best-gaming-keyboard/">best gaming keyboards</a>.</p><p>The deals are on fire right now, but they won't stay that way for much longer. Now's the time to treat yourself to a new keyboard so that you can spam WASD in your game of choice with extra pizzazz.</p><h2 class="article-body__section" id="section-the-deals"><span>The deals</span></h2>        <div class="featured_product_block featured_block_hero" data-id="9855fc56-c178-11f1-89b5-15f8a289db49">            <a href="https://www.amazon.com/dp/B0DCVPGB9N" data-model-name="K2 HE Wireless 75%" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:56.25%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/zRyyXmxqYXZ4b7TUXNo9zm.jpg" alt="K2 HE Wireless 75%"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Keychron</div>                                        <div class="featured__title">K2 HE Wireless 75%</div>                                    </div>                <div class="subtitle__description">                                                            <p><p><br></p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="9855feea-c178-11f1-99a0-ed9e5bd9347e">            <a href="https://www.amazon.com/dp/B0FD5276Z6" data-model-name="BlackWidow V4 TKL Wireless" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:56.25%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/6ScMVK87xUKfGgXomAanGb.jpg" alt="BlackWidow V4 TKL Wireless"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Razer</div>                                        <div class="featured__title">BlackWidow V4 TKL Wireless</div>                                    </div>                <div class="subtitle__description">                                                            <p><p><br></p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="9855ffa8-c178-11f1-925d-c513e02fefcb">            <a href="https://www.amazon.com/dp/B0FGGZK4X7" data-model-name="ROG Strix Scope X | Wired " data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:56.25%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/6QKGW8GFyBNo2hgf3BuQxJ.jpg" alt="ROG Strix Scope X | Wired"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Asus</div>                                        <div class="featured__title">ROG Strix Scope X | Wired </div>                                    </div>                <div class="subtitle__description">                                                            <p><p><br></p></p>                </div>                            </div>        </div><h2 class="article-body__section" id="section-the-information"><span>The information</span></h2><div class="product"><a data-dimension112="1dd06d8c-c172-11f1-a6bd-cdeb9f4d52e8" data-action="Deal Block" data-label="MSI GF65" data-dimension48="K2 HE Wireless 75%" data-dimension25="$111.99" href="https://www.amazon.com/dp/B0DCVPGB9N" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1500px;"><p class="vanilla-image-block" style="padding-top:81.00%;"><img id="zRyyXmxqYXZ4b7TUXNo9zm" name="61ioq+AEmlL._AC_SL1500_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/zRyyXmxqYXZ4b7TUXNo9zm-1920-80.jpg" mos="" align="middle" fullscreen="" width="1500" height="1215" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/dp/B0DCVPGB9N" target="_blank" rel="nofollow" data-dimension112="1dd06d8c-c172-11f1-a6bd-cdeb9f4d52e8" data-action="Deal Block" data-label="MSI GF65" data-dimension48="K2 HE Wireless 75%" data-dimension25="$111.99">K2 HE Wireless 75%: was $139.99 now $111.99</a></strong><br>I love me a stylish gaming keeb, and this Keychron K2 HE gives you Noctua fan vibes while delivering on the performance front. This isn't the type of keyboard that'll scream "gamer," so you can keep it in your office and pretend that you're a fully functioning member of society while still mashing away until the early hours. We <a href="https://www.pcgamer.com/hardware/gaming-keyboards/keychron-k2-he-review/" target="_blank">liked this one a lot</a>, by the way, so it's not just nice to look at.</p><p><strong>Key specs:</strong> <strong>75% layout | Magnetic sensors | Customizable actuation | 2.4 GHz, Bluetooth 5.2, USB Type-C | 1,000 Hz polling rate | 0.1 mm sensitivity</strong></p><p><strong>Price check: </strong><a href="https://www.newegg.com/p/0TP-032N-004N0" target="_blank">Newegg $272.48</a><a class="view-deal button" href="https://www.amazon.com/dp/B0DCVPGB9N" target="_blank" rel="nofollow" data-dimension112="1dd06d8c-c172-11f1-a6bd-cdeb9f4d52e8" data-action="Deal Block" data-label="MSI GF65" data-dimension48="K2 HE Wireless 75%" data-dimension25="$111.99">View Deal</a></p></div><div class="product"><a data-dimension112="cbe9ec9e-c173-11f1-b086-db8b7e43b73d" data-action="Deal Block" data-label="MSI GF65" data-dimension48="BlackWidow V4 TKL Wireless" data-dimension25="$94.99" href="https://www.amazon.com/dp/B0FD5276Z6" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1500px;"><p class="vanilla-image-block" style="padding-top:43.20%;"><img id="6ScMVK87xUKfGgXomAanGb" name="razer-blackwidow-v4-tkl-wireless" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6ScMVK87xUKfGgXomAanGb-1920-80.jpg" mos="" align="middle" fullscreen="" width="1500" height="648" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/dp/B0FD5276Z6" target="_blank" rel="nofollow" data-dimension112="cbe9ec9e-c173-11f1-b086-db8b7e43b73d" data-action="Deal Block" data-label="MSI GF65" data-dimension48="BlackWidow V4 TKL Wireless" data-dimension25="$94.99">BlackWidow V4 TKL Wireless: was $149.99 now $94.99</a></strong><br>Gamer aesthetic doesn't make you flinch; on the contrary, you love it? I mean, same. I own a previous version of the BlackWidow, and I love just how clicky it is, plus it's super sturdy. I tend to mash my keys with the force of an angry sledgehammer, but Razer's signature gaming keyboard doesn't bat an eye, and it remains as delightful as ever.</p><p><strong>Key specs:</strong> <strong>TKL | Orange switches | Multi-function roller | 3 control buttons | Hot-swappable | 2.4 GHz, Bluetooth  | Up to 980h battery life</strong><a class="view-deal button" href="https://www.amazon.com/dp/B0FD5276Z6" target="_blank" rel="nofollow" data-dimension112="cbe9ec9e-c173-11f1-b086-db8b7e43b73d" data-action="Deal Block" data-label="MSI GF65" data-dimension48="BlackWidow V4 TKL Wireless" data-dimension25="$94.99">View Deal</a></p></div><div class="product"><a data-dimension112="cbe9edac-c173-11f1-9c27-8123de81f07c" data-action="Deal Block" data-label="ROG Strix Scope X | Wired" data-dimension48="ROG Strix Scope X | Wired" data-dimension25="$89.99" href="https://www.amazon.com/dp/B0FGGZK4X7" 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="6QKGW8GFyBNo2hgf3BuQxJ" name="AsusROGStrixScopeIIX" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6QKGW8GFyBNo2hgf3BuQxJ-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/dp/B0FGGZK4X7" target="_blank" rel="nofollow" data-dimension112="cbe9edac-c173-11f1-9c27-8123de81f07c" data-action="Deal Block" data-label="ROG Strix Scope X | Wired" data-dimension48="ROG Strix Scope X | Wired" data-dimension25="$89.99">ROG Strix Scope X | Wired: was $129.99 now $89.99</a></strong><br>This keyboard line is an absolute favorite here for us at PC Gamer, and this one is full-size and wired, so battery life is of no concern. If you love a full-size keyboard, which is a type of gaming keeb that's increasingly hard to come by, you're going to love this one. </p><p><strong>Key specs: Full-size | ROG RX pre-lubed linear switches | PBT doubleshot | sound-dampened | wired USB Type-C</strong><a class="view-deal button" href="https://www.amazon.com/dp/B0FGGZK4X7" target="_blank" rel="nofollow" data-dimension112="cbe9edac-c173-11f1-9c27-8123de81f07c" data-action="Deal Block" data-label="ROG Strix Scope X | Wired" data-dimension48="ROG Strix Scope X | Wired" data-dimension25="$89.99">View Deal</a></p></div><p>Don't love these? It's okay, I'm not offended. Picking a gaming keyboard needs to be done right. I've given away more keebs than I care to mention because they didn't suit my exact tastes (although I'm pickier than most, what with the typing for a living).</p><p>Here are some of the other <a href="https://www.pcgamer.com/hardware/gaming-keyboards/best-prime-day-gaming-keyboard-deals/" target="_blank">best gaming keyboard Prime Day deals we've rounded up for you</a>.</p><h2 id="shop-all-of-amazon-s-gaming-keyboard-deals-here">👉<a href="https://www.amazon.com/s?k=gaming+keyboard&crid=1JZ757P9AJSEL&sprefix=gaming+keyboar%2Caps%2C181&ref=nb_sb_noss_2" target="_blank">Shop all of Amazon's gaming keyboard deals here</a>👈</h2>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I'm here to inform you the wrist rest included with the new Logitech G Pro X2 Rapid is very good and very wobbly ]]></title>
                                                                                                <dc:content><![CDATA[ <p>I'm here to inform you the wrist rest included with the new Logitech G Pro X2 Rapid is very good and very wobbly. Watch it wobble below. But more seriously, I enjoy this wrist rest so much that it's relegated my old HyperX one, which I <a href="https://www.pcgamer.com/hardware/i-asked-the-pc-gamer-hardware-team-to-name-the-underrated-bits-of-gear-they-use-every-day-and-these-are-the-results/#section-wrist-rests" target="_blank">previously swore by</a>, to the floor. The giant and sturdy-but-slightly-wobbly silicon goodness that forms this one from Logitech is the best I've tried. It's hard, which is good ergonomically, but not <em>quite</em> as hard as wood. Perfect. Plus, wobble. Just a shame the keyboard that it comes with <a href="https://www.logitechg.com/en-us/shop/p/pro-x2-rapid.920-014077" target="_blank">costs $230</a>.</p><iframe src="https://content.jwplatform.com/players/fPrPUsnJ.html" id="fPrPUsnJ" title="IMG 4124" width="600" height="338" frameborder="0" scrolling="auto" allowfullscreen></iframe><p>And here's a pic of it not being all wobbly:</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="EBCM3FBRXrWQazxAAHxpyn" name="IMG_3881" alt="A Logitech G Pro X2 Rapid keyboard, G Pro X Control mouse pad, and G Pro X3 Superstrike gaming mouse on a desk." src="https://cdn.mos.cms.futurecdn.net/EBCM3FBRXrWQazxAAHxpyn-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> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-keyboards/im-here-to-inform-you-the-wrist-rest-included-with-the-new-logitech-g-pro-x2-rapid-is-very-good-and-very-wobbly/</link>
                                                                            <description>
                            <![CDATA[ The keyboard itself is $230, though, so not exactly cheap. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">NGnKAqW8Dxzwj2hvH5X22T</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/64iFdBgPJpm4oXrudMbR78-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 01 Oct 2026 15:28:11 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Keyboards]]></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/64iFdBgPJpm4oXrudMbR78-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A Logitech G Pro X2 Rapid gaming keyboard]]></media:description>                                                            <media:text><![CDATA[A Logitech G Pro X2 Rapid gaming keyboard]]></media:text>
                                <media:title type="plain"><![CDATA[A Logitech G Pro X2 Rapid gaming keyboard]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/64iFdBgPJpm4oXrudMbR78-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I'm here to inform you the wrist rest included with the new Logitech G Pro X2 Rapid is very good and very wobbly. Watch it wobble below. But more seriously, I enjoy this wrist rest so much that it's relegated my old HyperX one, which I <a href="https://www.pcgamer.com/hardware/i-asked-the-pc-gamer-hardware-team-to-name-the-underrated-bits-of-gear-they-use-every-day-and-these-are-the-results/#section-wrist-rests" target="_blank">previously swore by</a>, to the floor. The giant and sturdy-but-slightly-wobbly silicon goodness that forms this one from Logitech is the best I've tried. It's hard, which is good ergonomically, but not <em>quite</em> as hard as wood. Perfect. Plus, wobble. Just a shame the keyboard that it comes with <a href="https://www.logitechg.com/en-us/shop/p/pro-x2-rapid.920-014077" target="_blank">costs $230</a>.</p><iframe src="https://content.jwplatform.com/players/fPrPUsnJ.html" id="fPrPUsnJ" title="IMG 4124" width="600" height="338" frameborder="0" scrolling="auto" allowfullscreen></iframe><p>And here's a pic of it not being all wobbly:</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="EBCM3FBRXrWQazxAAHxpyn" name="IMG_3881" alt="A Logitech G Pro X2 Rapid keyboard, G Pro X Control mouse pad, and G Pro X3 Superstrike gaming mouse on a desk." src="https://cdn.mos.cms.futurecdn.net/EBCM3FBRXrWQazxAAHxpyn-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>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Google Japan's conveyor belt keyboard is a sad reminder of the sense of humour the whole company used to have long, long ago ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Is this a piss take? Okay, this is definitely a piss take. Google Japan has posted a YouTube video showcasing the new <a href="https://www.youtube.com/watch?v=DAn34l_YrUM" target="_blank">Gboard Conveyor Belt Version</a>. What we are talking about here, people, is "a keyboard whose keys are delivered straight to your finger tips." Literally.</p><p>Turns out, Google Japan has form with this kind of thing, what with the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/sick-of-clicky-clacky-keys-google-japan-offers-a-reminder-that-it-could-always-be-worse-unveiling-a-rotary-keyboard-concept/" target="_blank">rotary keyboard</a> and <a href="https://www.pcgamer.com/google-japans-absurdly-long-stick-keyboard-is-actually-real/" target="_blank">absurdly-long-stick-of-single-keys keyboard</a>, er, keyboards they've done before. But this conveyor-belt board? This one might just be the best of all.</p><p>The keyboard has four columns of vertically stacked keys that rotate on a belt, the idea being that you don't move your hand, you just wait for the right key to arrive. As the video explains, "just as conveyor belts ramped up factory productivity, we wondered if we could streamline typing in the exact same way." Well, quite.</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>"This key advancement allows you to fluidly convey your ideas," Google's Japan team explains, adding, "with keys streaming under your fingertips, it ushers in a whole new era of touch-and-go typing. You touch. It goes."</p><p>Google Japan says it's working on further developments of the concept, including multiple colourways and a high speed mode "ideal for developing hand-eye coordination."</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/DAn34l_YrUM" allowfullscreen></iframe></div></div><p>There are also swap-in cardboard key caps that enable daily nail care in the works. But my favourite planned feature? That'll be a new "voice guide" mode, where the keyboard reads out the passing keys aloud. Perfect. As the Japan team concludes, this is "a keyboard to come, built for the era to come."</p><p>Actually, there's a tinge of sadness to all this in that it's a reminder of what Google used to be like before it IPO'ed itself into the ruthless, humourless cyborg money-making machine the company has become today. Somehow, wonderfully, it seems Google Japan didn't get that memo.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-keyboards/google-japans-conveyor-belt-keyboard-is-a-sad-reminder-of-the-sense-of-humour-the-whole-company-used-to-have-long-long-ago/</link>
                                                                            <description>
                            <![CDATA[ Google Japan has form, pity it's seemingly the only bit of Google that still does. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">4rSomk668rQnRWswx45V4Z</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/AmDgNKLtHXhLdvpyzoYFY9-1920-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Thu, 01 Oct 2026 14:29:54 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Keyboards]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jeremy Laird ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/yAFomvQ2kRS39NDfXHRP7G-320-70.jpeg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/png" url="https://cdn.mos.cms.futurecdn.net/AmDgNKLtHXhLdvpyzoYFY9-1920-80.png">
                                                            <media:credit><![CDATA[Google Japan]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Gboard Conveyor Belt Version]]></media:description>                                                            <media:text><![CDATA[Gboard Conveyor Belt Version]]></media:text>
                                <media:title type="plain"><![CDATA[Gboard Conveyor Belt Version]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/AmDgNKLtHXhLdvpyzoYFY9-1920-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Is this a piss take? Okay, this is definitely a piss take. Google Japan has posted a YouTube video showcasing the new <a href="https://www.youtube.com/watch?v=DAn34l_YrUM" target="_blank">Gboard Conveyor Belt Version</a>. What we are talking about here, people, is "a keyboard whose keys are delivered straight to your finger tips." Literally.</p><p>Turns out, Google Japan has form with this kind of thing, what with the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/sick-of-clicky-clacky-keys-google-japan-offers-a-reminder-that-it-could-always-be-worse-unveiling-a-rotary-keyboard-concept/" target="_blank">rotary keyboard</a> and <a href="https://www.pcgamer.com/google-japans-absurdly-long-stick-keyboard-is-actually-real/" target="_blank">absurdly-long-stick-of-single-keys keyboard</a>, er, keyboards they've done before. But this conveyor-belt board? This one might just be the best of all.</p><p>The keyboard has four columns of vertically stacked keys that rotate on a belt, the idea being that you don't move your hand, you just wait for the right key to arrive. As the video explains, "just as conveyor belts ramped up factory productivity, we wondered if we could streamline typing in the exact same way." Well, quite.</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>"This key advancement allows you to fluidly convey your ideas," Google's Japan team explains, adding, "with keys streaming under your fingertips, it ushers in a whole new era of touch-and-go typing. You touch. It goes."</p><p>Google Japan says it's working on further developments of the concept, including multiple colourways and a high speed mode "ideal for developing hand-eye coordination."</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/DAn34l_YrUM" allowfullscreen></iframe></div></div><p>There are also swap-in cardboard key caps that enable daily nail care in the works. But my favourite planned feature? That'll be a new "voice guide" mode, where the keyboard reads out the passing keys aloud. Perfect. As the Japan team concludes, this is "a keyboard to come, built for the era to come."</p><p>Actually, there's a tinge of sadness to all this in that it's a reminder of what Google used to be like before it IPO'ed itself into the ruthless, humourless cyborg money-making machine the company has become today. Somehow, wonderfully, it seems Google Japan didn't get that memo.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ October Prime Day gaming keyboard deals ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The October Prime Day has been and gone, folks. Even after Amazon's Big Deal Days event, though, there are still discounts flowing in.</p><p>👉<a href="https://www.amazon.com/s?k=gaming+keyboard&crid=25G0ND4TIXQKJ&sprefix=gaming+keyboar%2Caps%2C188&ref=nb_sb_noss_2" target="_blank"><strong>ALL of Amazon's keyboard 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 constantly reviewing and picking out the <a href="https://www.pcgamer.com/best-gaming-keyboard/" target="_blank">best gaming keyboards</a> for our guides, so make sure to check in with us throughout the year to find out which are the right ones for you. In the meantime, though, there are still plenty of tempting options below.</p><h2 id="where-to-find-the-best-prime-day-gaming-keyboard-deals">Where to find the best Prime Day gaming keyboard deals</h2><ul><li><strong>Amazon: </strong><a href="https://www.amazon.com/s?k=gaming+keyboard" target="_blank"><strong>All the gaming keyboards you could ever want</strong></a></li><li><strong>Walmart:</strong> <a href="https://www.walmart.com/search?q=gaming+keyboard" target="_blank">Quality gaming keyboards, superb savings</a></li><li><strong>Best Buy:</strong> <a href="https://www.bestbuy.com/site/searchpage.jsp?st=gaming+keyboards" target="_blank">Big name keyboards with big value discounts</a></li><li><strong>Newegg:</strong> <a href="https://www.newegg.com/Gaming-Keyboard/SubCategory/ID-3523?cm_sp=Cat_Keyboard-Mice_1-_-VisNav-_-Gaming-Keyboards" target="_blank">Big savings on big brand gaming keyboards</a></li></ul><div class="vizualizer-embed"><iframe   srcdoc="<!DOCTYPE html><html><head>  <style>    #widget-6r4uxnr *:not(svg):not(path) { box-sizing: border-box; }    #widget-6r4uxnr h1, #widget-6r4uxnr p, #widget-6r4uxnr 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-6r4uxnr, :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-6r4uxnr); 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-6r4uxnr 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-6r4uxnr tr:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { border-bottom-width: 0px; }.prose :where(t#widget-6r4uxnr 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-6r4uxnr: 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-6r4uxnr: 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-6r4uxnr 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-6r4uxnr td:first-child, tfoot td:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-inline-start: 0px; }.prose :where(t#widget-6r4uxnr 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-6r4uxnr 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-6r4uxnr td:first-child, tfoot td:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-inline-start: 0px; }.prose-lg :where(t#widget-6r4uxnr 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-6r4uxnr: 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-6r4uxnr: 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-6r4uxnr"><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 76 gaming keyboard 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 Keyboards";        const INITIALLY_OPEN = false;        // Embedded complete category data        let LOCAL_REVIEWS = JSON.parse(decodeURIComponent("%5B%7B%22id%22%3A%225S3EE8WZfdFfAQPjpW6kCT%22%2C%22title%22%3A%22Razer%20Reclusa%20X%20Mini%2065%25%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Frazer-reclusa-x-mini-65-percent-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-09-24T11%3A05%3A07Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FYSG4N9J9jHFHRxpSnGamWe.jpg%22%2C%22strapline%22%3A%22A%20budget%20mini%20keeb%20that%20somehow%20manages%20to%20feel%20high-end.%22%2C%22categories%22%3A%5B%22Gaming%20Keyboards%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22Hardware%22%2C%22Gaming%20keyboard%22%2C%2265%25%20keyboard%22%2C%22Razer%20Reclusa%20X%20Mini%2065%25%22%2C%22ABS%22%2C%22Keycaps%22%2C%22wired%22%2C%22Magnetic%20switches%22%2C%22budget%22%5D%2C%22score%22%3A89%2C%22summary%22%3A%22A%20budget%20mini%20keeb%20that%20somehow%20manages%20to%20feel%20high-end.%22%7D%2C%7B%22id%22%3A%22tQuFw3eZTfok64xVrrkzoL%22%2C%22title%22%3A%22Be%20Quiet!%20Light%20Mount%20TKL%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fbe-quiet-light-mount-tkl-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-08-25T11%3A00%3A00Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FEKFS9yyRcpyGXg4u2d9d7o.jpg%22%2C%22strapline%22%3A%22A%20very%20welcome%20TKL%20update%20that%20didn't%20quite%20leave%20me%20speechless.%22%2C%22categories%22%3A%5B%22Gaming%20Keyboards%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22Review%22%2C%22Hardware%22%2C%22Gaming%20keyboard%22%2C%22be%20quiet!%20Light%20Mount%20TKL%22%2C%22be%20quiet!%20Light%20Mount%22%2C%22be%20quiet%22%2C%22mechanical%20keyboard%22%2C%22wired%22%2C%22RGB%22%5D%2C%22score%22%3A79%2C%22summary%22%3A%22A%20very%20welcome%20TKL%20update%20that%20didn't%20quite%20leave%20me%20speechless.%22%7D%2C%7B%22id%22%3A%22KhRJpBCxdh3b5buRuEeCGg%22%2C%22title%22%3A%22Keychron%20K8%20Ultra%208K%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fkeychron-k8-ultra-8k-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-08-19T13%3A29%3A22Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FM3D77H4ZPSveunoRmPb7od.jpg%22%2C%22strapline%22%3A%22Solid%2C%20dependable%20and%20versatile.%22%2C%22categories%22%3A%5B%22Gaming%20Keyboards%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22Hardware%22%2C%22keyboard%22%2C%22Keyboards%22%2C%22Gaming%20keyboards%22%2C%22Mechanical%20keyboards%22%2C%22Gaming%20keyboard%22%5D%2C%22score%22%3A88%2C%22summary%22%3A%22Solid%2C%20dependable%20and%20versatile.%22%7D%2C%7B%22id%22%3A%229kVBbSgAwuM8VfT4bojfLR%22%2C%22title%22%3A%22Asus%20ROG%20Azoth%20Extreme%20Edition%2020%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fasus-rog-azoth-extreme-edition-20-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-07-24T16%3A30%3A50Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FqHYtJQiCs2CPfmMExTfbJ9.jpg%22%2C%22strapline%22%3A%22The%20type%20of%20keyboard%20you%20buy%20because%20you%20can%2C%20and%20boy%20does%20it%20shine.%20%22%2C%22categories%22%3A%5B%22Gaming%20Keyboards%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22keyboard%22%2C%22Keyboards%22%2C%22Gaming%20keyboards%22%2C%22analog%20keyboards%22%2C%22Mechanical%20keyboards%22%2C%22Gaming%20keyboard%22%2C%22Hardware%22%2C%22Asus%20ROG%22%2C%22Asus%20ROG%20Azoth%20Extreme%20Edition%2020%22%2C%22special%20edition%22%5D%2C%22score%22%3A70%2C%22summary%22%3A%22The%20type%20of%20keyboard%20you%20buy%20because%20you%20can%2C%20and%20boy%20does%20it%20shine.%20%22%7D%2C%7B%22id%22%3A%22iHzgHfbNTjfDwcV3YWffkL%22%2C%22title%22%3A%22Turtle%20Beach%20Command%20Series%20KB7%20TKL%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fturtle-beach-command-series-kb7-tkl-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-06-30T14%3A06%3A39Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FvKQcrwr43mZvxAaNLbjepM.jpg%22%2C%22strapline%22%3A%22Turtle%20Beach%20puts%20a%20screen%20on%20another%20screenless%20PC%20mainstay.%22%2C%22categories%22%3A%5B%22Gaming%20Keyboards%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22Turtle%20Beach%22%2C%22Turtle%20Beach%20Command%20Series%20KB7%20TKL%20Hall-Effect%20Wired%20Keyboard%22%2C%22Hardware%22%2C%22Gaming%20keyboard%22%5D%2C%22score%22%3A85%2C%22summary%22%3A%22Turtle%20Beach%20puts%20a%20screen%20on%20another%20screenless%20PC%20mainstay.%22%7D%2C%7B%22id%22%3A%22WcYDEAPJkBRVN7qRVyfkfK%22%2C%22title%22%3A%22Logitech%20G316%20X%20(tactile)%20gaming%20keyboard%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Flogitech-g316-x-tactile-gaming-keyboard-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-06-29T17%3A02%3A11Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FggaGW6h7dZ2MJfcYJDpjwT.jpg%22%2C%22strapline%22%3A%22Oh%20what%20could%20have%20been.%22%2C%22categories%22%3A%5B%22Gaming%20Keyboards%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22Hardware%22%2C%22Logitech%20G316%20X%22%2C%22keyboard%22%2C%22Logitech%22%2C%22Gaming%20keyboard%22%2C%22mechanical%22%2C%22mechanical%20keyboard%22%5D%2C%22score%22%3A61%2C%22summary%22%3A%22Oh%20what%20could%20have%20been.%22%7D%2C%7B%22id%22%3A%22gw8kodEU7U8aFntXGVMRcK%22%2C%22title%22%3A%22Melgeek%20Real81%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fmelgeek-real81-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-06-18T15%3A54%3A15Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FUQoKbXr85QopFn23S5qEgY.jpg%22%2C%22strapline%22%3A%22A%20competitive%20keyboard%20that%20stumbles%20in%20more%20casual%20settings.%20%22%2C%22categories%22%3A%5B%22Gaming%20Keyboards%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22keyboard%22%2C%22Gaming%20keyboard%22%2C%22MelGeek%22%2C%22Melgeek%20Real%2081%22%2C%22competitive%22%2C%228K%22%2C%228%2C000%20hz%22%2C%22Hardware%22%5D%2C%22score%22%3A69%2C%22summary%22%3A%22A%20competitive%20keyboard%20that%20stumbles%20in%20more%20casual%20settings.%20%22%7D%2C%7B%22id%22%3A%22iSxVKWkNTUgDkFbXRUG259%22%2C%22title%22%3A%22MelGeek%20Centauri%2080%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fmelgeek-centauri-80-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-05-28T15%3A01%3A08Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FNJL54WqHVfV4GetNebzSPL.jpg%22%2C%22strapline%22%3A%22A%20lovely%20keyboard%20I%20couldn't%20actually%20recommend%20buying%2C%20unless%20you're%20a%20big%20space%20nerd%20in%20need%20of%20a%20touchscreen.%22%2C%22categories%22%3A%5B%22Gaming%20Keyboards%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22keyboard%22%2C%22Gaming%20keyboard%22%2C%22Review%22%2C%22MelGeek%22%2C%22MelGeek%20Centauri%2080%22%5D%2C%22score%22%3A70%2C%22summary%22%3A%22A%20lovely%20keyboard%20I%20couldn't%20actually%20recommend%20buying%2C%20unless%20you're%20a%20big%20space%20nerd%20in%20need%20of%20a%20touchscreen.%22%7D%2C%7B%22id%22%3A%22KAYVxexYi6KWXooFXNjdni%22%2C%22title%22%3A%22Logitech%20G512%20X%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Flogitech-g512-x-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-04-28T07%3A01%3A00Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2F2CFAqkbavRHGfpd2GuKGoT.jpg%22%2C%22strapline%22%3A%22Logitech's%20first%20foray%20into%20TMR%20switches%20is%20a%20triumph%2C%20and%20easily%20one%20of%20the%20best%20gaming%20keyboards%20I've%20used%20in%20recent%20memory.%20%22%2C%22categories%22%3A%5B%22Gaming%20Keyboards%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22keyboard%22%2C%22Keyboards%22%2C%22Gaming%20keyboards%22%2C%22analog%20keyboards%22%2C%22Mechanical%20keyboards%22%2C%22Gaming%20keyboard%22%2C%22best%20gaming%20keyboard%22%2C%22Logitech%22%2C%22Hardware%22%5D%2C%22score%22%3A90%2C%22summary%22%3A%22Logitech's%20first%20foray%20into%20TMR%20switches%20is%20a%20triumph%2C%20and%20easily%20one%20of%20the%20best%20gaming%20keyboards%20I've%20used%20in%20recent%20memory.%20%22%7D%2C%7B%22id%22%3A%22imTAQLqr4QDeG6qpAUz46V%22%2C%22title%22%3A%22Cherry%20XTRFY%20K5%20Pro%20TMR%20Compact%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fcherry-k5-pro-tmr-compact-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-04-09T10%3A00%3A00Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FNGvN2pffCkRzZGxW5VKbQ5.png%22%2C%22strapline%22%3A%22It%20ticks%20all%20of%20the%20right%20boxes%2C%20but%20I%20was%20left%20wanting%20just%20a%20little%20more.%22%2C%22categories%22%3A%5B%22Gaming%20Keyboards%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22Cherry%22%2C%22Hardware%22%2C%22TMR%22%2C%22Xtrfy%22%2C%22Gaming%20keyboard%22%2C%22Magnetic%20switches%22%5D%2C%22score%22%3A76%2C%22summary%22%3A%22It%20ticks%20all%20of%20the%20right%20boxes%2C%20but%20I%20was%20left%20wanting%20just%20a%20little%20more.%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 = 104;        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 Keyboards Widget"></iframe></div><h2 class="article-body__section" id="section-prime-day-gaming-keyboard-deals"><span>Prime Day gaming keyboard deals</span></h2><div class="product"><a data-dimension112="97cb5a08-bb4f-11f1-8c51-19f219b0e354" data-action="Deal Block" data-label="x NaughShark NS68 | Wired" data-dimension48="x NaughShark NS68 | Wired" data-dimension25="$45.99" href="https://www.amazon.com/GK-GAMAKAY-NaughShark-NS68-Mechanical/dp/B0F283459L?th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1503px;"><p class="vanilla-image-block" style="padding-top:99.33%;"><img id="cbkcaJ68Pwnf5TvXNiYANj" name="1790608297.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/cbkcaJ68Pwnf5TvXNiYANj-1920-80.jpg" mos="" align="middle" fullscreen="" width="1503" height="1493" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/GK-GAMAKAY-NaughShark-NS68-Mechanical/dp/B0F283459L?th=1" target="_blank" rel="nofollow" data-dimension112="97cb5a08-bb4f-11f1-8c51-19f219b0e354" data-action="Deal Block" data-label="x NaughShark NS68 | Wired" data-dimension48="x NaughShark NS68 | Wired" data-dimension25="$45.99">x NaughShark NS68 | Wired: was $49.99 now $45.99</a></strong><br>An 8 KHz polling rate, Hall effect switches, rapid trigger, and nice double-shot PBT keycaps. The <a href="https://www.pcgamer.com/hardware/gaming-keyboards/gamakay-x-naughshark-ns68-review/" target="_blank">Gamakay x NaughShark NS68</a> is noticeably a cheaper keyboard in feel, but those internals truly are phenomenal. </p><p><strong>Key specs:</strong> <strong>Wired | 8,000 Hz | Hall effect </strong><a class="view-deal button" href="https://www.amazon.com/GK-GAMAKAY-NaughShark-NS68-Mechanical/dp/B0F283459L?th=1" target="_blank" rel="nofollow" data-dimension112="97cb5a08-bb4f-11f1-8c51-19f219b0e354" data-action="Deal Block" data-label="x NaughShark NS68 | Wired" data-dimension48="x NaughShark NS68 | Wired" data-dimension25="$45.99">View Deal</a></p></div><div class="product"><a data-dimension112="97cb5a8a-bb4f-11f1-bf4f-3916c3bfff25" data-action="Deal Block" data-label="Reclusa X Mini 65% | Wired" data-dimension48="Reclusa X Mini 65% | Wired" data-dimension25="$49.99" href="https://www.amazon.com/Razer-Reclusa-Hot-Swappable-Mechanical-Keyboard/dp/B0H9CC8JCZ" 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:99.34%;"><img id="DDJyygUrhBvvRA35DZWvy8" name="1790608391.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/DDJyygUrhBvvRA35DZWvy8-1920-80.jpg" mos="" align="middle" fullscreen="" width="1509" height="1499" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/Razer-Reclusa-Hot-Swappable-Mechanical-Keyboard/dp/B0H9CC8JCZ" target="_blank" rel="nofollow" data-dimension112="97cb5a8a-bb4f-11f1-bf4f-3916c3bfff25" data-action="Deal Block" data-label="Reclusa X Mini 65% | Wired" data-dimension48="Reclusa X Mini 65% | Wired" data-dimension25="$49.99">Reclusa X Mini 65% | Wired: $49.99</a></strong><br>Okay, this one's not actually on sale, but we <a href="https://www.pcgamer.com/hardware/gaming-keyboards/razer-reclusa-x-mini-65-percent-review/" target="_blank">reviewed this new Razer budget keyboard very favourably</a> when it launched recently, so it's worth highlighting what a good keyboard it is. It doesn't have the competitive gaming features of the Naughshark above, but if you just want an excellent keyboard for typing and regular ol' gaming action, the build quality on the Reclusa is hard to beat at this price.<br><br><strong>Key specs: Wired USB-A to USB-C | 1,000 Hz | RGB lighting | 65% size </strong><a class="view-deal button" href="https://www.amazon.com/Razer-Reclusa-Hot-Swappable-Mechanical-Keyboard/dp/B0H9CC8JCZ" target="_blank" rel="nofollow" data-dimension112="97cb5a8a-bb4f-11f1-bf4f-3916c3bfff25" data-action="Deal Block" data-label="Reclusa X Mini 65% | Wired" data-dimension48="Reclusa X Mini 65% | Wired" data-dimension25="$49.99">View Deal</a></p></div><div class="product"><a data-dimension112="a9d8f712-bb47-11f1-893f-3f2d56427584" data-action="Deal Block" data-label="Huntsman Mini | Wired" data-dimension48="Huntsman Mini | Wired" data-dimension25="$69.00" href="https://www.amazon.com/Razer-Huntsman-Mini-Gaming-Keyboard/dp/B0FFJDH7GM" 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="ieEsaMbBWvzjtMBSVc2zHf" name="1698929091.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/ieEsaMbBWvzjtMBSVc2zHf-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/Razer-Huntsman-Mini-Gaming-Keyboard/dp/B0FFJDH7GM" target="_blank" rel="nofollow" data-dimension112="a9d8f712-bb47-11f1-893f-3f2d56427584" data-action="Deal Block" data-label="Huntsman Mini | Wired" data-dimension48="Huntsman Mini | Wired" data-dimension25="$69.00">Huntsman Mini | Wired: was $129.99 now $69.00</a></strong><br>A teeny-tiny keyboard with impressive credentials. You can customize the lighting to your heart's content with Razer's Chroma RGB lighting, but the headline feature here is the inclusion of optical-mechanical switches. It's also got PBT keys and Razer Hypershift for all your favorite macros.</p><p><strong>Key specs: Tenkeyless | Razer optomechanical switch (clicky or linear) | Chroma RGB lighting</strong></p><p><strong>Price check: </strong><a href="https://www.bestbuy.com/site/razer-huntsman-mini-60-wired-optical-clicky-switch-gaming-keyboard-with-chroma-rgb-backlighting-black/6417111.p?skuId=6417111" target="_blank">Best Buy $69.00 (black model)</a><strong></strong><a class="view-deal button" href="https://www.amazon.com/Razer-Huntsman-Mini-Gaming-Keyboard/dp/B0FFJDH7GM" target="_blank" rel="nofollow" data-dimension112="a9d8f712-bb47-11f1-893f-3f2d56427584" data-action="Deal Block" data-label="Huntsman Mini | Wired" data-dimension48="Huntsman Mini | Wired" data-dimension25="$69.00">View Deal</a></p></div><div class="product"><a data-dimension112="a9d8f83e-bb47-11f1-b679-53ec45644ec3" data-action="Deal Block" data-label="ROG Strix Scope X | Wired" data-dimension48="ROG Strix Scope X | Wired" data-dimension25="$85.49" href="https://www.amazon.com/dp/B0FGGZK4X7" 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="6QKGW8GFyBNo2hgf3BuQxJ" name="AsusROGStrixScopeIIX" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6QKGW8GFyBNo2hgf3BuQxJ-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/dp/B0FGGZK4X7" target="_blank" rel="nofollow" data-dimension112="a9d8f83e-bb47-11f1-b679-53ec45644ec3" data-action="Deal Block" data-label="ROG Strix Scope X | Wired" data-dimension48="ROG Strix Scope X | Wired" data-dimension25="$85.49">ROG Strix Scope X | Wired: was $129.99 now $85.49</a></strong><br>This is the full size (and wired) variant of one of our all-time favourite keebs. It's a bit of a desk dominator, but if you don't mind the size and dealing with a cable, it's got a very attractive price. It's got pre-lubed NX Snow V2 linear switches and the switch dampening pads we love so much, so the typing feel should be pretty ace.</p><p><strong>Key specs: Full-size | ROG RX pre-lubed linear linear switches | PBT doubleshot | sound-dampened | wired USB Type-C</strong><a class="view-deal button" href="https://www.amazon.com/dp/B0FGGZK4X7" target="_blank" rel="nofollow" data-dimension112="a9d8f83e-bb47-11f1-b679-53ec45644ec3" data-action="Deal Block" data-label="ROG Strix Scope X | Wired" data-dimension48="ROG Strix Scope X | Wired" data-dimension25="$85.49">View Deal</a></p></div><div class="product"><a data-dimension112="a9d8f776-bb47-11f1-a43f-ff8eabc44183" data-action="Deal Block" data-label="G Pro | Wired" data-dimension48="G Pro | Wired" data-dimension25="$85.49" href="https://www.amazon.com/Logitech-Mechanical-Tenkeyless-Detachable-LIGHTSYNC/dp/B07QQB9VCV?th=1" 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="TdwJBFg7MUjmSDUQybdXCD" name="1698923788.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/TdwJBFg7MUjmSDUQybdXCD-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-Mechanical-Tenkeyless-Detachable-LIGHTSYNC/dp/B07QQB9VCV?th=1" target="_blank" rel="nofollow" data-dimension112="a9d8f776-bb47-11f1-a43f-ff8eabc44183" data-action="Deal Block" data-label="G Pro | Wired" data-dimension48="G Pro | Wired" data-dimension25="$85.49">G Pro | Wired: was $119.99 now $85.49</a></strong><br>This Logitech G Pro gives you all the functionality with less of the fuss. It comes with a choice of key switches, a detachable Micro USB cable for easy portability, 3-step angle adjustment and a lot of customization options in the G Hub software. Those backlit keys are on the subtle side of RGB lighting, and the Logitech comes off as a class act for less at this price. </p><p><strong>Key specs: Tenkeyless | Mechanical | Lightsync RGB backlit keys</strong></p><p><strong>Price check: </strong><a href="https://www.bestbuy.com/product/logitech-g-pro-tkl-wired-mechanical-gx-blue-clicky-switch-gaming-keyboard-with-rgb-backlighting-for-pc-black/J7H7ZYXWCJ" target="_blank">Best Buy $119.99</a><a class="view-deal button" href="https://www.amazon.com/Logitech-Mechanical-Tenkeyless-Detachable-LIGHTSYNC/dp/B07QQB9VCV?th=1" target="_blank" rel="nofollow" data-dimension112="a9d8f776-bb47-11f1-a43f-ff8eabc44183" data-action="Deal Block" data-label="G Pro | Wired" data-dimension48="G Pro | Wired" data-dimension25="$85.49">View Deal</a></p></div><div class="product"><a data-dimension112="a9d8f7da-bb47-11f1-a3c6-8346dad04957" data-action="Deal Block" data-label="G515 Wireless TKL" data-dimension48="G515 Wireless TKL" data-dimension25="$97.03" href="https://www.amazon.com/Logitech-LIGHTSYNC-Tenkeyless-Double-Shot-Mechanical/dp/B0FLF81R4J/ref=sr_1_19" 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="mSngcsZXFHBy4ZVCVYNZF5" name="1781521507.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/mSngcsZXFHBy4ZVCVYNZF5-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/Logitech-LIGHTSYNC-Tenkeyless-Double-Shot-Mechanical/dp/B0FLF81R4J/ref=sr_1_19" target="_blank" rel="nofollow" data-dimension112="a9d8f7da-bb47-11f1-a3c6-8346dad04957" data-action="Deal Block" data-label="G515 Wireless TKL" data-dimension48="G515 Wireless TKL" data-dimension25="$97.03">G515 Wireless TKL: was $159.99 now $97.03</a></strong><br>This compact keyboard is especially affordable in this light purple colorway. We reviewed the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/logitech-g515-rapid-tkl-review/" target="_blank">wired Rapid version with magnetic switches a while back</a> and thought it was a bit expensive for what you get—but this is the wireless version with standard keys for much, much less cash.</p><p><strong>Key specs: Wireless | Low-profile | PBT keycaps</strong><a class="view-deal button" href="https://www.amazon.com/Logitech-LIGHTSYNC-Tenkeyless-Double-Shot-Mechanical/dp/B0FLF81R4J/ref=sr_1_19" target="_blank" rel="nofollow" data-dimension112="a9d8f7da-bb47-11f1-a3c6-8346dad04957" data-action="Deal Block" data-label="G515 Wireless TKL" data-dimension48="G515 Wireless TKL" data-dimension25="$97.03">View Deal</a></p></div><div class="product"><a data-dimension112="76c0352c-c180-11f1-ab2c-77eba1e51548" data-action="Deal Block" data-label="MSI GF65" data-dimension48="BlackWidow V4 TKL Wireless" data-dimension25="$99.99" href="https://www.amazon.com/dp/B0FD5276Z6" 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="t93oNJaeWt2bWkXRLbSXKa" name="Razerkeeb" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/t93oNJaeWt2bWkXRLbSXKa-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/dp/B0FD5276Z6" target="_blank" rel="nofollow" data-dimension112="76c0352c-c180-11f1-ab2c-77eba1e51548" data-action="Deal Block" data-label="MSI GF65" data-dimension48="BlackWidow V4 TKL Wireless" data-dimension25="$99.99">BlackWidow V4 TKL Wireless: was $149.99 now $99.99</a></strong><br>Gamer aesthetic doesn't make you flinch; on the contrary, you love it? I mean, same. I own a previous version of the BlackWidow, and I love just how clicky it is, plus it's super sturdy. I tend to mash my keys with the force of an angry sledgehammer, but Razer's signature gaming keyboard doesn't bat an eye.</p><p><strong>Key specs:</strong> <strong>TKL | Orange switches | Multi-function roller | 3 control buttons | Hot-swappable | 2.4 GHz, Bluetooth  | Up to 980h battery life</strong><a class="view-deal button" href="https://www.amazon.com/dp/B0FD5276Z6" target="_blank" rel="nofollow" data-dimension112="76c0352c-c180-11f1-ab2c-77eba1e51548" data-action="Deal Block" data-label="MSI GF65" data-dimension48="BlackWidow V4 TKL Wireless" data-dimension25="$99.99">View Deal</a></p></div><div class="product"><a data-dimension112="76c035cc-c180-11f1-b931-bfcd87681c8b" data-action="Deal Block" data-label="MSI GF65" data-dimension48="K2 HE Wireless 75%" data-dimension25="$111.99" href="https://www.amazon.com/dp/B0DCVPGB9N" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1500px;"><p class="vanilla-image-block" style="padding-top:81.00%;"><img id="zRyyXmxqYXZ4b7TUXNo9zm" name="61ioq+AEmlL._AC_SL1500_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/zRyyXmxqYXZ4b7TUXNo9zm-1920-80.jpg" mos="" align="middle" fullscreen="" width="1500" height="1215" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/dp/B0DCVPGB9N" target="_blank" rel="nofollow" data-dimension112="76c035cc-c180-11f1-b931-bfcd87681c8b" data-action="Deal Block" data-label="MSI GF65" data-dimension48="K2 HE Wireless 75%" data-dimension25="$111.99">K2 HE Wireless 75%: was $139.99 now $111.99</a></strong><br>I love me a stylish gaming keeb, and this Keychron K2 HE gives you Noctua fan vibes while delivering on the performance front. This isn't the type of keyboard that'll scream "gamer," so you can keep it in your office and pretend that you're a fully functioning member of society while still mashing away until the early hours. We <a href="https://www.pcgamer.com/hardware/gaming-keyboards/keychron-k2-he-review/" target="_blank">liked this one a lot</a>, by the way, so it's not just nice to look at.</p><p><strong>Key specs:</strong> <strong>75% layout | Magnetic sensors | Customizable actuation | 2.4 GHz, Bluetooth 5.2, USB Type-C | 1,000 Hz polling rate</strong></p><p><strong>Price check: </strong><a href="https://www.newegg.com/p/0TP-032N-004N0" target="_blank">Newegg $272.48</a><a class="view-deal button" href="https://www.amazon.com/dp/B0DCVPGB9N" target="_blank" rel="nofollow" data-dimension112="76c035cc-c180-11f1-b931-bfcd87681c8b" data-action="Deal Block" data-label="MSI GF65" data-dimension48="K2 HE Wireless 75%" data-dimension25="$111.99">View Deal</a></p></div><div class="product"><a data-dimension112="a9d8f8fc-bb47-11f1-9b93-8d8521974fb3" data-action="Deal Block" data-label="ROG Strix Scope II 96 RX | Wireless" data-dimension48="ROG Strix Scope II 96 RX | Wireless" data-dimension25="$119.69" href="https://www.amazon.com/ASUS-II-96-RX-Wireless/dp/B0GMZ5Z9G4/" 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:99.34%;"><img id="aBkTkcypaZkMRFHYZ9uCRf" name="1781598708.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/aBkTkcypaZkMRFHYZ9uCRf-1920-80.jpg" mos="" align="middle" fullscreen="" width="1509" height="1499" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/ASUS-II-96-RX-Wireless/dp/B0GMZ5Z9G4/" target="_blank" rel="nofollow" data-dimension112="a9d8f8fc-bb47-11f1-9b93-8d8521974fb3" data-action="Deal Block" data-label="ROG Strix Scope II 96 RX | Wireless" data-dimension48="ROG Strix Scope II 96 RX | Wireless" data-dimension25="$119.69">ROG Strix Scope II 96 RX | Wireless: was $179.99 now $119.69</a></strong><br>This is one of the best keyboards going and right now it's at a cracking price. You're getting excellent typing feel, stellar gaming performance, sound dampening that actually works, and a build quality that stands well above most of the competition. The RX version is optical, too, though non-adjustable.</p><p><strong>Key specs: 96% | Wireless | sound dampening</strong><a class="view-deal button" href="https://www.amazon.com/ASUS-II-96-RX-Wireless/dp/B0GMZ5Z9G4/" target="_blank" rel="nofollow" data-dimension112="a9d8f8fc-bb47-11f1-9b93-8d8521974fb3" data-action="Deal Block" data-label="ROG Strix Scope II 96 RX | Wireless" data-dimension48="ROG Strix Scope II 96 RX | Wireless" data-dimension25="$119.69">View Deal</a></p></div><div class="product"><a data-dimension112="3383dc4c-c233-11f1-8932-8d3dada81fac" data-action="Deal Block" data-label="Vanguard Pro 96" data-dimension48="Vanguard Pro 96" data-dimension25="$149.99" href="https://www.amazon.com/Corsair-Vanguard-Magnetic-Mechanical-Keyboard-PC/dp/B0FKHPRZ45" 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="Srw8Ws3JmR6R9hyH6YomwV" name="Vanguard Pro 96" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/Srw8Ws3JmR6R9hyH6YomwV-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/Corsair-Vanguard-Magnetic-Mechanical-Keyboard-PC/dp/B0FKHPRZ45" target="_blank" rel="nofollow" data-dimension112="3383dc4c-c233-11f1-8932-8d3dada81fac" data-action="Deal Block" data-label="Vanguard Pro 96" data-dimension48="Vanguard Pro 96" data-dimension25="$149.99">Vanguard Pro 96: was $229.99 now $149.99</a></strong><br>Getting an <a href="https://www.pcgamer.com/hardware/gaming-keyboards/corsair-vanguard-pro-96-review/" target="_blank">85% from us</a> late last year, this keyboard has responsive and powerful Hall effect switches, and it even comes with macro keys and a wrist rest. The price is hefty, and it's only wired but it's a great keeb, nonetheless</p><p><strong>Key specs: Corsair MGX Overdrive switches | wired | PBT doubleshot | Hall effect</strong></p><p><strong>Price check:</strong> <a href="https://www.bestbuy.com/product/corsair-vanguard-pro-96-rgb-wired-magnetic-hall-effect-mgx-linear-96-gaming-keyboard-with-flashtap-socd-rapid-trigger-black/J39TSCPZC5" target="_blank">Best Buy $229.99</a><a class="view-deal button" href="https://www.amazon.com/Corsair-Vanguard-Magnetic-Mechanical-Keyboard-PC/dp/B0FKHPRZ45" target="_blank" rel="nofollow" data-dimension112="3383dc4c-c233-11f1-8932-8d3dada81fac" data-action="Deal Block" data-label="Vanguard Pro 96" data-dimension48="Vanguard Pro 96" data-dimension25="$149.99">View Deal</a></p></div><div class="product"><a data-dimension112="a9d8f960-bb47-11f1-904c-d31a1dd5e324" data-action="Deal Block" data-label="Apex Pro Gen 3 | Wired" data-dimension48="Apex Pro Gen 3 | Wired" data-dimension25="$199.99" href="https://www.amazon.com/SteelSeries-Apex-Pro-TKL-Gen/dp/B0DGZLHN8G" 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="SAo3QyrPMzu3j2SfKjWVtZ" name="key" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/SAo3QyrPMzu3j2SfKjWVtZ-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/SteelSeries-Apex-Pro-TKL-Gen/dp/B0DGZLHN8G" target="_blank" rel="nofollow" data-dimension112="a9d8f960-bb47-11f1-904c-d31a1dd5e324" data-action="Deal Block" data-label="Apex Pro Gen 3 | Wired" data-dimension48="Apex Pro Gen 3 | Wired" data-dimension25="$199.99">Apex Pro Gen 3 | Wired: was $239.99 now $199.99</a></strong><br>It's quite a lot of cash for a keyboard, but it shows in not only the tech underneath the keys (like some impressive switches) but also the build quality and extra quality-of-life features. If you're looking for a rapid trigger keyboard to cut fractions off your reaction times, and like the idea of an extra little screen to display in-game information, this is an excellent choice, especially with a tidy discount. </p><p><strong>Key specs: OmniPoint 3.0 HyperMagnetic Switches | Wired | Rapid trigger </strong></p><p><strong>Price check:</strong> <a href="https://www.bestbuy.com/product/steelseries-apex-pro-gen-3-full-size-wired-mechanical-omnipoint-adjustable-gaming-keyboard-with-rapid-tap-black/J3GTVPQWWX" target="_blank">Best Buy $228.99</a><a class="view-deal button" href="https://www.amazon.com/SteelSeries-Apex-Pro-TKL-Gen/dp/B0DGZLHN8G" target="_blank" rel="nofollow" data-dimension112="a9d8f960-bb47-11f1-904c-d31a1dd5e324" data-action="Deal Block" data-label="Apex Pro Gen 3 | Wired" data-dimension48="Apex Pro Gen 3 | Wired" data-dimension25="$199.99">View Deal</a></p></div><div class="product"><a data-dimension112="3383dd1e-c233-11f1-a148-71afe111e854" data-action="Deal Block" data-label="Galleon 100 SD" data-dimension48="Galleon 100 SD" data-dimension25="$284.99" href="https://www.amazon.com/Corsair-Galleon-Mechanical-Gaming-Keyboard/dp/B0G3PN1VS4" 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="EbCb4ApJhSjhgtrmpdMSTG" name="Galleon 100 SD" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/EbCb4ApJhSjhgtrmpdMSTG-1920-80.png" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>A grand keyboard with a grand price tag, the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/corsair-galleon-100-sd-review/" target="_blank" data-dimension112="3383dd1e-c233-11f1-a148-71afe111e854" data-action="Deal Block" data-label="Galleon 100 SD" data-dimension48="Galleon 100 SD" data-dimension25="$284.99">Corsair Galleon 100 SD</a> is well-built, with a great sound and a built-in Stream Deck. The only major caveats are the price and mediocre USB passthrough.</p><p><strong>Key specs: Full size |  Corsair MLX Pulse switches | Up to 8,000 Hz | Wired</strong></p><p><strong>Price check: </strong><a href="https://www.bestbuy.com/product/corsair-galleon-100-sd-stream-deck-integrated-mechanical-gaming-keyboard-black/J39TSCSCRT" target="_blank">Best Buy $299.99</a><strong></strong><a class="view-deal button" href="https://www.amazon.com/Corsair-Galleon-Mechanical-Gaming-Keyboard/dp/B0G3PN1VS4" target="_blank" rel="nofollow" data-dimension112="3383dd1e-c233-11f1-a148-71afe111e854" data-action="Deal Block" data-label="Galleon 100 SD" data-dimension48="Galleon 100 SD" data-dimension25="$284.99">View Deal</a></p></div><div class="product"><a data-dimension112="a9d8fa0a-bb47-11f1-9430-134d818f0d28" data-action="Deal Block" data-label="ROG Azoth Extreme | Wireless" data-dimension48="ROG Azoth Extreme | Wireless" data-dimension25="$334.99" href="https://www.amazon.com/ASUS-Extreme-Wireless-Mechanical-Keyboard/dp/B0D45ZHYZJ" 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="govmE7Ga4oRFS7SZ2kqPCi" name="a" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/govmE7Ga4oRFS7SZ2kqPCi-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/ASUS-Extreme-Wireless-Mechanical-Keyboard/dp/B0D45ZHYZJ" target="_blank" rel="nofollow" data-dimension112="a9d8fa0a-bb47-11f1-9430-134d818f0d28" data-action="Deal Block" data-label="ROG Azoth Extreme | Wireless" data-dimension48="ROG Azoth Extreme | Wireless" data-dimension25="$334.99">ROG Azoth Extreme | Wireless: was $499.99 now $334.99</a></strong><br>The Asus ROG Azoth Extreme Wireless is still a pricey 'ol keeb even with a discount. We still liked it a lot in <a href="https://www.pcgamer.com/hardware/gaming-keyboards/asus-rog-azoth-extreme-review/" target="_blank">our review</a>, though, and that's for good reason. It's beautifully constructed, with a super typing feel and useful media controls. </p><p><strong>Key specs: 75% | ROG NX Snow linear switches | Aluminium chassis | OLED screen</strong></p><p><strong>Price check: </strong><a href="https://www.bestbuy.com/product/asus-rog-azoth-extreme-75-wireless-mechanical-gaming-keyboard-with-rog-nx-snow-linear-switches-and-color-oled-touchscreen-black/JJGGLQLYRY/sku/6606308" target="_blank">Best Buy $334.99</a><a class="view-deal button" href="https://www.amazon.com/ASUS-Extreme-Wireless-Mechanical-Keyboard/dp/B0D45ZHYZJ" target="_blank" rel="nofollow" data-dimension112="a9d8fa0a-bb47-11f1-9430-134d818f0d28" data-action="Deal Block" data-label="ROG Azoth Extreme | Wireless" data-dimension48="ROG Azoth Extreme | Wireless" data-dimension25="$334.99">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-keyboard-deals-in-the-uk"><span>Prime Day gaming keyboard deals in the UK</span></h2><h2 id="where-are-the-best-prime-day-gaming-keyboard-deals-in-the-uk">Where are the best Prime Day gaming keyboard deals in the UK?</h2><ul><li><strong>Amazon: </strong><a href="https://www.amazon.co.uk/s?k=gaming+keyboard" target="_blank">Big discounts on top-brand gaming keyboards</a></li><li><strong>Overclockers:</strong> <a href="https://www.overclockers.co.uk/search?q=gaming+keyboards&search-button=&lang=en_GB&_gl=1*1ingm4b*_up*MQ..*_ga*NzIxNDkyNDA1LjE3OTA2MDY5NTQ.*_ga_7SS7XDNBS9*czE3OTA2MDY5NTMkbzEkZzAkdDE3OTA2MDY5NTMkajYwJGwwJGgw*_ga_123456*czE3OTA2MDY5NTMkbzEkZzAkdDE3OTA2MDY5NTMkajYwJGwwJGgxOTY1MTc0NTY2" target="_blank">Over 100 gaming keyboards to choose from</a></li><li><strong>Scan:</strong> <a href="https://www.scan.co.uk/shop/computer-hardware/keyboards/1814/493" target="_blank">Gaming keyboards from just £18</a></li><li><strong>Box: </strong><a href="https://box.co.uk/gaming-keyboards" target="_blank">Gaming keyboards from Asus, Logitech, and Razer</a></li><li><strong>Currys:</strong> <a href="https://www.currys.co.uk/gaming/gaming-accessories/keyboards?q=gaming%20keyboards" target="_blank">Keyboards from as little as £25</a></li><li><strong>Argos: </strong><a href="https://www.argos.co.uk/search/gaming-keyboard/?clickOrigin=searchbar:home:term:gaming+keyboard" target="_blank">Good prices on budget to high-end keyboards</a></li></ul><div class="product"><a data-dimension112="a9d8fcc6-bb47-11f1-be9a-c116a355cf33" data-action="Deal Block" data-label="x NaughShark NS68 | Wired" data-dimension48="x NaughShark NS68 | Wired" data-dimension25="£47.75" href="https://www.amazon.co.uk/GK-GAMAKAY-NaughShark-NS68-Mechanical/dp/B0F283459L?th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1503px;"><p class="vanilla-image-block" style="padding-top:99.33%;"><img id="cbkcaJ68Pwnf5TvXNiYANj" name="1790608297.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/cbkcaJ68Pwnf5TvXNiYANj-1920-80.jpg" mos="" align="middle" fullscreen="" width="1503" height="1493" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.co.uk/GK-GAMAKAY-NaughShark-NS68-Mechanical/dp/B0F283459L?th=1" target="_blank" rel="nofollow" data-dimension112="a9d8fcc6-bb47-11f1-be9a-c116a355cf33" data-action="Deal Block" data-label="x NaughShark NS68 | Wired" data-dimension48="x NaughShark NS68 | Wired" data-dimension25="£47.75">x NaughShark NS68 | Wired: £47.75</a></strong><br>An 8 KHz polling rate, Hall effect switches, rapid trigger, and nice double-shot PBT keycaps. To think you can get all of this for little cash makes the geeky hardware kid in me very happy. The <a href="https://www.pcgamer.com/hardware/gaming-keyboards/gamakay-x-naughshark-ns68-review/" target="_blank">Gamakay x NaughShark NS68</a> is noticeably a cheaper keyboard in feel, but those internals truly are phenomenal. </p><p><strong>Key specs:</strong> <strong>Wired | 8 KHz | Hall effect </strong><a class="view-deal button" href="https://www.amazon.co.uk/GK-GAMAKAY-NaughShark-NS68-Mechanical/dp/B0F283459L?th=1" target="_blank" rel="nofollow" data-dimension112="a9d8fcc6-bb47-11f1-be9a-c116a355cf33" data-action="Deal Block" data-label="x NaughShark NS68 | Wired" data-dimension48="x NaughShark NS68 | Wired" data-dimension25="£47.75">View Deal</a></p></div><div class="product"><a data-dimension112="6102f902-bb51-11f1-a009-1b4d4ee2dfe8" data-action="Deal Block" data-label="G515 Rapid TKL | Wired" data-dimension48="G515 Rapid TKL | Wired" data-dimension25="£92.49" href="https://www.amazon.co.uk/Logitech-LIGHTSPEED-LIGHTSYNC-Tenkeyless-Mechanical/dp/B0FJ8SGY2L" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1503px;"><p class="vanilla-image-block" style="padding-top:99.33%;"><img id="bwEcDNEPsPRhS9v9fBNLAH" name="1790609333.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/bwEcDNEPsPRhS9v9fBNLAH-1920-80.jpg" mos="" align="middle" fullscreen="" width="1503" height="1493" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.co.uk/Logitech-LIGHTSPEED-LIGHTSYNC-Tenkeyless-Mechanical/dp/B0FJ8SGY2L" target="_blank" rel="nofollow" data-dimension112="6102f902-bb51-11f1-a009-1b4d4ee2dfe8" data-action="Deal Block" data-label="G515 Rapid TKL | Wired" data-dimension48="G515 Rapid TKL | Wired" data-dimension25="£92.49">G515 Rapid TKL | Wired: was £129.99 now £92.49</a></strong><br>When we <a href="https://www.pcgamer.com/hardware/gaming-keyboards/logitech-g515-rapid-tkl-review/" target="_blank">first reviewed this board</a> it was far too expensive to fit into the mainstream market it felt more suited to. Fast forward nearly a year and the price has dropped down to a more palatable sum. Not bad for rapid trigger functionality in a solid, reliable board.<br><br><strong>Key specs: Wired USB-A to USB-C | Magnetic analogue switches | RGB lighting | PBT keycaps</strong><a class="view-deal button" href="https://www.amazon.co.uk/Logitech-LIGHTSPEED-LIGHTSYNC-Tenkeyless-Mechanical/dp/B0FJ8SGY2L" target="_blank" rel="nofollow" data-dimension112="6102f902-bb51-11f1-a009-1b4d4ee2dfe8" data-action="Deal Block" data-label="G515 Rapid TKL | Wired" data-dimension48="G515 Rapid TKL | Wired" data-dimension25="£92.49">View Deal</a></p></div><div class="product"><a data-dimension112="a9d8fd8e-bb47-11f1-992b-4d62ed1fd33e" data-action="Deal Block" data-label="ROG Strix Scope II 96 | Wireless" data-dimension48="ROG Strix Scope II 96 | Wireless" data-dimension25="£139.99" href="https://www.amazon.co.uk/ASUS-Connection-Dampening-Switch-Dampening-Hot-Swappable/dp/B0BVNWNR1Q/ref=sr_1_1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1508px;"><p class="vanilla-image-block" style="padding-top:99.34%;"><img id="8YbiHBzPro7FyoEqpCierm" name="1731945100.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/8YbiHBzPro7FyoEqpCierm-1920-80.jpg" mos="" align="middle" fullscreen="" width="1508" height="1498" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.co.uk/ASUS-Connection-Dampening-Switch-Dampening-Hot-Swappable/dp/B0BVNWNR1Q/ref=sr_1_1" target="_blank" rel="nofollow" data-dimension112="a9d8fd8e-bb47-11f1-992b-4d62ed1fd33e" data-action="Deal Block" data-label="ROG Strix Scope II 96 | Wireless" data-dimension48="ROG Strix Scope II 96 | Wireless" data-dimension25="£139.99">ROG Strix Scope II 96 | Wireless: was £169.99 now £139.99</a></strong><br>This is one of the best gaming keyboards going, and even a light discount is pretty good. You're getting excellent typing feel, stellar gaming performance, sound dampening that actually works, and a build quality that stands well above most of the competition. All for one of the best prices we've seen this keyboard going for.</p><p><strong>Key specs: Numpad | Wireless | Hot-swappable mechanical switches</strong></p><p><strong>Price check: </strong><a href="https://www.scan.co.uk/products/asus-rog-strix-scope-ii-96-white-rgb-mechanical-keyboard-rog-nx-snow-n-key-rollover-anti-ghosting" target="_blank">Scan £169.99</a><a class="view-deal button" href="https://www.amazon.co.uk/ASUS-Connection-Dampening-Switch-Dampening-Hot-Swappable/dp/B0BVNWNR1Q/ref=sr_1_1" target="_blank" rel="nofollow" data-dimension112="a9d8fd8e-bb47-11f1-992b-4d62ed1fd33e" data-action="Deal Block" data-label="ROG Strix Scope II 96 | Wireless" data-dimension48="ROG Strix Scope II 96 | Wireless" data-dimension25="£139.99">View Deal</a></p></div><div class="product"><a data-dimension112="a9d8fdf2-bb47-11f1-8043-4503d699a62c" data-action="Deal Block" data-label="ROG Falchion RX Low Profile | Wireless" data-dimension48="ROG Falchion RX Low Profile | Wireless" data-dimension25="£149.50" href="https://www.amazon.co.uk/ASUS-Pre-lubed-Low-Profile-Dampening-Interactive/dp/B07M6HZDSC" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:672px;"><p class="vanilla-image-block" style="padding-top:98.51%;"><img id="WQuwBrKSSvimKgcEsfDZE9" name="1731946043.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/WQuwBrKSSvimKgcEsfDZE9-1920-80.jpg" mos="" align="middle" fullscreen="" width="672" height="662" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.co.uk/ASUS-Pre-lubed-Low-Profile-Dampening-Interactive/dp/B07M6HZDSC" target="_blank" rel="nofollow" data-dimension112="a9d8fdf2-bb47-11f1-8043-4503d699a62c" data-action="Deal Block" data-label="ROG Falchion RX Low Profile | Wireless" data-dimension48="ROG Falchion RX Low Profile | Wireless" data-dimension25="£149.50">ROG Falchion RX Low Profile | Wireless: was £169.99 now £149.50</a></strong><br>This one's for all you low-profile lovers out there. The Falchion RX Low Profile is a smashing little keyboard—and I do say "little" because it uses a 60% layout, although thankfully it keeps the arrow keys. The switches you get are fantastic, though: pre-lubed and smooth as butter. The board even comes with volume controls along the top.</p><p><strong>Key specs: Tenkeyless | Wireless | Low profile mechanical switches</strong></p><p><strong>Price check: </strong><a href="https://www.scan.co.uk/products/asus-m603-rog-falchion-rx-low-profile-wired-wireless-mechanical-gaming-keyboard-rx-low-profile-switc" target="_blank">Scan £169.99</a><strong></strong><a class="view-deal button" href="https://www.amazon.co.uk/ASUS-Pre-lubed-Low-Profile-Dampening-Interactive/dp/B07M6HZDSC" target="_blank" rel="nofollow" data-dimension112="a9d8fdf2-bb47-11f1-8043-4503d699a62c" data-action="Deal Block" data-label="ROG Falchion RX Low Profile | Wireless" data-dimension48="ROG Falchion RX Low Profile | Wireless" data-dimension25="£149.50">View Deal</a></p></div><ul><li><a href="#main"><strong>Back to top ^</strong></a></li></ul><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, started on <strong>October 6</strong>, and ran though until the end of <strong>October 7</strong>. Many deals continued long after that, though.</p></article></section><h2 class="article-body__section" id="section-buying-advice-gaming-keyboards"><span>Buying advice: gaming keyboards</span></h2> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-keyboards/best-prime-day-gaming-keyboard-deals/</link>
                                                                            <description>
                            <![CDATA[ Gaming keyboards are a pretty Big Deal (Days) around here. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">kHjYQARGFVXrLWHK25o7FY</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/rj6tL2sRZkZdtMrXecrGJ3-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 28 Sep 2026 15:33:48 +0000</pubDate>                                                                                                                                <updated>Thu, 08 Oct 2026 09:52:12 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming Keyboards]]></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/rj6tL2sRZkZdtMrXecrGJ3-1920-80.jpg">
                                                            <media:credit><![CDATA[Asus]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Asus ROG Strix Scope II 96 keyboard on a blue background]]></media:description>                                                            <media:text><![CDATA[Asus ROG Strix Scope II 96 keyboard on a blue background]]></media:text>
                                <media:title type="plain"><![CDATA[Asus ROG Strix Scope II 96 keyboard on a blue background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/rj6tL2sRZkZdtMrXecrGJ3-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The October Prime Day has been and gone, folks. Even after Amazon's Big Deal Days event, though, there are still discounts flowing in.</p><p>👉<a href="https://www.amazon.com/s?k=gaming+keyboard&crid=25G0ND4TIXQKJ&sprefix=gaming+keyboar%2Caps%2C188&ref=nb_sb_noss_2" target="_blank"><strong>ALL of Amazon's keyboard 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 constantly reviewing and picking out the <a href="https://www.pcgamer.com/best-gaming-keyboard/" target="_blank">best gaming keyboards</a> for our guides, so make sure to check in with us throughout the year to find out which are the right ones for you. In the meantime, though, there are still plenty of tempting options below.</p><h2 id="where-to-find-the-best-prime-day-gaming-keyboard-deals">Where to find the best Prime Day gaming keyboard deals</h2><ul><li><strong>Amazon: </strong><a href="https://www.amazon.com/s?k=gaming+keyboard" target="_blank"><strong>All the gaming keyboards you could ever want</strong></a></li><li><strong>Walmart:</strong> <a href="https://www.walmart.com/search?q=gaming+keyboard" target="_blank">Quality gaming keyboards, superb savings</a></li><li><strong>Best Buy:</strong> <a href="https://www.bestbuy.com/site/searchpage.jsp?st=gaming+keyboards" target="_blank">Big name keyboards with big value discounts</a></li><li><strong>Newegg:</strong> <a href="https://www.newegg.com/Gaming-Keyboard/SubCategory/ID-3523?cm_sp=Cat_Keyboard-Mice_1-_-VisNav-_-Gaming-Keyboards" target="_blank">Big savings on big brand gaming keyboards</a></li></ul><div class="vizualizer-embed"><iframe   srcdoc="<!DOCTYPE html><html><head>  <style>    #widget-6r4uxnr *:not(svg):not(path) { box-sizing: border-box; }    #widget-6r4uxnr h1, #widget-6r4uxnr p, #widget-6r4uxnr 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-6r4uxnr, :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-6r4uxnr); 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-6r4uxnr 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-6r4uxnr tr:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { border-bottom-width: 0px; }.prose :where(t#widget-6r4uxnr 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-6r4uxnr: 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-6r4uxnr: 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-6r4uxnr 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-6r4uxnr td:first-child, tfoot td:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-inline-start: 0px; }.prose :where(t#widget-6r4uxnr 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-6r4uxnr 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-6r4uxnr td:first-child, tfoot td:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-inline-start: 0px; }.prose-lg :where(t#widget-6r4uxnr 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-6r4uxnr: 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-6r4uxnr: 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-6r4uxnr"><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 76 gaming keyboard 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 Keyboards";        const INITIALLY_OPEN = false;        // Embedded complete category data        let LOCAL_REVIEWS = JSON.parse(decodeURIComponent("%5B%7B%22id%22%3A%225S3EE8WZfdFfAQPjpW6kCT%22%2C%22title%22%3A%22Razer%20Reclusa%20X%20Mini%2065%25%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Frazer-reclusa-x-mini-65-percent-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-09-24T11%3A05%3A07Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FYSG4N9J9jHFHRxpSnGamWe.jpg%22%2C%22strapline%22%3A%22A%20budget%20mini%20keeb%20that%20somehow%20manages%20to%20feel%20high-end.%22%2C%22categories%22%3A%5B%22Gaming%20Keyboards%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22Hardware%22%2C%22Gaming%20keyboard%22%2C%2265%25%20keyboard%22%2C%22Razer%20Reclusa%20X%20Mini%2065%25%22%2C%22ABS%22%2C%22Keycaps%22%2C%22wired%22%2C%22Magnetic%20switches%22%2C%22budget%22%5D%2C%22score%22%3A89%2C%22summary%22%3A%22A%20budget%20mini%20keeb%20that%20somehow%20manages%20to%20feel%20high-end.%22%7D%2C%7B%22id%22%3A%22tQuFw3eZTfok64xVrrkzoL%22%2C%22title%22%3A%22Be%20Quiet!%20Light%20Mount%20TKL%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fbe-quiet-light-mount-tkl-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-08-25T11%3A00%3A00Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FEKFS9yyRcpyGXg4u2d9d7o.jpg%22%2C%22strapline%22%3A%22A%20very%20welcome%20TKL%20update%20that%20didn't%20quite%20leave%20me%20speechless.%22%2C%22categories%22%3A%5B%22Gaming%20Keyboards%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22Review%22%2C%22Hardware%22%2C%22Gaming%20keyboard%22%2C%22be%20quiet!%20Light%20Mount%20TKL%22%2C%22be%20quiet!%20Light%20Mount%22%2C%22be%20quiet%22%2C%22mechanical%20keyboard%22%2C%22wired%22%2C%22RGB%22%5D%2C%22score%22%3A79%2C%22summary%22%3A%22A%20very%20welcome%20TKL%20update%20that%20didn't%20quite%20leave%20me%20speechless.%22%7D%2C%7B%22id%22%3A%22KhRJpBCxdh3b5buRuEeCGg%22%2C%22title%22%3A%22Keychron%20K8%20Ultra%208K%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fkeychron-k8-ultra-8k-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-08-19T13%3A29%3A22Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FM3D77H4ZPSveunoRmPb7od.jpg%22%2C%22strapline%22%3A%22Solid%2C%20dependable%20and%20versatile.%22%2C%22categories%22%3A%5B%22Gaming%20Keyboards%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22Hardware%22%2C%22keyboard%22%2C%22Keyboards%22%2C%22Gaming%20keyboards%22%2C%22Mechanical%20keyboards%22%2C%22Gaming%20keyboard%22%5D%2C%22score%22%3A88%2C%22summary%22%3A%22Solid%2C%20dependable%20and%20versatile.%22%7D%2C%7B%22id%22%3A%229kVBbSgAwuM8VfT4bojfLR%22%2C%22title%22%3A%22Asus%20ROG%20Azoth%20Extreme%20Edition%2020%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fasus-rog-azoth-extreme-edition-20-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-07-24T16%3A30%3A50Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FqHYtJQiCs2CPfmMExTfbJ9.jpg%22%2C%22strapline%22%3A%22The%20type%20of%20keyboard%20you%20buy%20because%20you%20can%2C%20and%20boy%20does%20it%20shine.%20%22%2C%22categories%22%3A%5B%22Gaming%20Keyboards%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22keyboard%22%2C%22Keyboards%22%2C%22Gaming%20keyboards%22%2C%22analog%20keyboards%22%2C%22Mechanical%20keyboards%22%2C%22Gaming%20keyboard%22%2C%22Hardware%22%2C%22Asus%20ROG%22%2C%22Asus%20ROG%20Azoth%20Extreme%20Edition%2020%22%2C%22special%20edition%22%5D%2C%22score%22%3A70%2C%22summary%22%3A%22The%20type%20of%20keyboard%20you%20buy%20because%20you%20can%2C%20and%20boy%20does%20it%20shine.%20%22%7D%2C%7B%22id%22%3A%22iHzgHfbNTjfDwcV3YWffkL%22%2C%22title%22%3A%22Turtle%20Beach%20Command%20Series%20KB7%20TKL%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fturtle-beach-command-series-kb7-tkl-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-06-30T14%3A06%3A39Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FvKQcrwr43mZvxAaNLbjepM.jpg%22%2C%22strapline%22%3A%22Turtle%20Beach%20puts%20a%20screen%20on%20another%20screenless%20PC%20mainstay.%22%2C%22categories%22%3A%5B%22Gaming%20Keyboards%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22Turtle%20Beach%22%2C%22Turtle%20Beach%20Command%20Series%20KB7%20TKL%20Hall-Effect%20Wired%20Keyboard%22%2C%22Hardware%22%2C%22Gaming%20keyboard%22%5D%2C%22score%22%3A85%2C%22summary%22%3A%22Turtle%20Beach%20puts%20a%20screen%20on%20another%20screenless%20PC%20mainstay.%22%7D%2C%7B%22id%22%3A%22WcYDEAPJkBRVN7qRVyfkfK%22%2C%22title%22%3A%22Logitech%20G316%20X%20(tactile)%20gaming%20keyboard%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Flogitech-g316-x-tactile-gaming-keyboard-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-06-29T17%3A02%3A11Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FggaGW6h7dZ2MJfcYJDpjwT.jpg%22%2C%22strapline%22%3A%22Oh%20what%20could%20have%20been.%22%2C%22categories%22%3A%5B%22Gaming%20Keyboards%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22Hardware%22%2C%22Logitech%20G316%20X%22%2C%22keyboard%22%2C%22Logitech%22%2C%22Gaming%20keyboard%22%2C%22mechanical%22%2C%22mechanical%20keyboard%22%5D%2C%22score%22%3A61%2C%22summary%22%3A%22Oh%20what%20could%20have%20been.%22%7D%2C%7B%22id%22%3A%22gw8kodEU7U8aFntXGVMRcK%22%2C%22title%22%3A%22Melgeek%20Real81%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fmelgeek-real81-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-06-18T15%3A54%3A15Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FUQoKbXr85QopFn23S5qEgY.jpg%22%2C%22strapline%22%3A%22A%20competitive%20keyboard%20that%20stumbles%20in%20more%20casual%20settings.%20%22%2C%22categories%22%3A%5B%22Gaming%20Keyboards%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22keyboard%22%2C%22Gaming%20keyboard%22%2C%22MelGeek%22%2C%22Melgeek%20Real%2081%22%2C%22competitive%22%2C%228K%22%2C%228%2C000%20hz%22%2C%22Hardware%22%5D%2C%22score%22%3A69%2C%22summary%22%3A%22A%20competitive%20keyboard%20that%20stumbles%20in%20more%20casual%20settings.%20%22%7D%2C%7B%22id%22%3A%22iSxVKWkNTUgDkFbXRUG259%22%2C%22title%22%3A%22MelGeek%20Centauri%2080%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fmelgeek-centauri-80-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-05-28T15%3A01%3A08Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FNJL54WqHVfV4GetNebzSPL.jpg%22%2C%22strapline%22%3A%22A%20lovely%20keyboard%20I%20couldn't%20actually%20recommend%20buying%2C%20unless%20you're%20a%20big%20space%20nerd%20in%20need%20of%20a%20touchscreen.%22%2C%22categories%22%3A%5B%22Gaming%20Keyboards%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22keyboard%22%2C%22Gaming%20keyboard%22%2C%22Review%22%2C%22MelGeek%22%2C%22MelGeek%20Centauri%2080%22%5D%2C%22score%22%3A70%2C%22summary%22%3A%22A%20lovely%20keyboard%20I%20couldn't%20actually%20recommend%20buying%2C%20unless%20you're%20a%20big%20space%20nerd%20in%20need%20of%20a%20touchscreen.%22%7D%2C%7B%22id%22%3A%22KAYVxexYi6KWXooFXNjdni%22%2C%22title%22%3A%22Logitech%20G512%20X%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Flogitech-g512-x-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-04-28T07%3A01%3A00Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2F2CFAqkbavRHGfpd2GuKGoT.jpg%22%2C%22strapline%22%3A%22Logitech's%20first%20foray%20into%20TMR%20switches%20is%20a%20triumph%2C%20and%20easily%20one%20of%20the%20best%20gaming%20keyboards%20I've%20used%20in%20recent%20memory.%20%22%2C%22categories%22%3A%5B%22Gaming%20Keyboards%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22keyboard%22%2C%22Keyboards%22%2C%22Gaming%20keyboards%22%2C%22analog%20keyboards%22%2C%22Mechanical%20keyboards%22%2C%22Gaming%20keyboard%22%2C%22best%20gaming%20keyboard%22%2C%22Logitech%22%2C%22Hardware%22%5D%2C%22score%22%3A90%2C%22summary%22%3A%22Logitech's%20first%20foray%20into%20TMR%20switches%20is%20a%20triumph%2C%20and%20easily%20one%20of%20the%20best%20gaming%20keyboards%20I've%20used%20in%20recent%20memory.%20%22%7D%2C%7B%22id%22%3A%22imTAQLqr4QDeG6qpAUz46V%22%2C%22title%22%3A%22Cherry%20XTRFY%20K5%20Pro%20TMR%20Compact%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fcherry-k5-pro-tmr-compact-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-04-09T10%3A00%3A00Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FNGvN2pffCkRzZGxW5VKbQ5.png%22%2C%22strapline%22%3A%22It%20ticks%20all%20of%20the%20right%20boxes%2C%20but%20I%20was%20left%20wanting%20just%20a%20little%20more.%22%2C%22categories%22%3A%5B%22Gaming%20Keyboards%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22Cherry%22%2C%22Hardware%22%2C%22TMR%22%2C%22Xtrfy%22%2C%22Gaming%20keyboard%22%2C%22Magnetic%20switches%22%5D%2C%22score%22%3A76%2C%22summary%22%3A%22It%20ticks%20all%20of%20the%20right%20boxes%2C%20but%20I%20was%20left%20wanting%20just%20a%20little%20more.%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 = 104;        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 Keyboards Widget"></iframe></div><h2 class="article-body__section" id="section-prime-day-gaming-keyboard-deals"><span>Prime Day gaming keyboard deals</span></h2><div class="product"><a data-dimension112="97cb5a08-bb4f-11f1-8c51-19f219b0e354" data-action="Deal Block" data-label="x NaughShark NS68 | Wired" data-dimension48="x NaughShark NS68 | Wired" data-dimension25="$45.99" href="https://www.amazon.com/GK-GAMAKAY-NaughShark-NS68-Mechanical/dp/B0F283459L?th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1503px;"><p class="vanilla-image-block" style="padding-top:99.33%;"><img id="cbkcaJ68Pwnf5TvXNiYANj" name="1790608297.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/cbkcaJ68Pwnf5TvXNiYANj-1920-80.jpg" mos="" align="middle" fullscreen="" width="1503" height="1493" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/GK-GAMAKAY-NaughShark-NS68-Mechanical/dp/B0F283459L?th=1" target="_blank" rel="nofollow" data-dimension112="97cb5a08-bb4f-11f1-8c51-19f219b0e354" data-action="Deal Block" data-label="x NaughShark NS68 | Wired" data-dimension48="x NaughShark NS68 | Wired" data-dimension25="$45.99">x NaughShark NS68 | Wired: was $49.99 now $45.99</a></strong><br>An 8 KHz polling rate, Hall effect switches, rapid trigger, and nice double-shot PBT keycaps. The <a href="https://www.pcgamer.com/hardware/gaming-keyboards/gamakay-x-naughshark-ns68-review/" target="_blank">Gamakay x NaughShark NS68</a> is noticeably a cheaper keyboard in feel, but those internals truly are phenomenal. </p><p><strong>Key specs:</strong> <strong>Wired | 8,000 Hz | Hall effect </strong><a class="view-deal button" href="https://www.amazon.com/GK-GAMAKAY-NaughShark-NS68-Mechanical/dp/B0F283459L?th=1" target="_blank" rel="nofollow" data-dimension112="97cb5a08-bb4f-11f1-8c51-19f219b0e354" data-action="Deal Block" data-label="x NaughShark NS68 | Wired" data-dimension48="x NaughShark NS68 | Wired" data-dimension25="$45.99">View Deal</a></p></div><div class="product"><a data-dimension112="97cb5a8a-bb4f-11f1-bf4f-3916c3bfff25" data-action="Deal Block" data-label="Reclusa X Mini 65% | Wired" data-dimension48="Reclusa X Mini 65% | Wired" data-dimension25="$49.99" href="https://www.amazon.com/Razer-Reclusa-Hot-Swappable-Mechanical-Keyboard/dp/B0H9CC8JCZ" 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:99.34%;"><img id="DDJyygUrhBvvRA35DZWvy8" name="1790608391.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/DDJyygUrhBvvRA35DZWvy8-1920-80.jpg" mos="" align="middle" fullscreen="" width="1509" height="1499" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/Razer-Reclusa-Hot-Swappable-Mechanical-Keyboard/dp/B0H9CC8JCZ" target="_blank" rel="nofollow" data-dimension112="97cb5a8a-bb4f-11f1-bf4f-3916c3bfff25" data-action="Deal Block" data-label="Reclusa X Mini 65% | Wired" data-dimension48="Reclusa X Mini 65% | Wired" data-dimension25="$49.99">Reclusa X Mini 65% | Wired: $49.99</a></strong><br>Okay, this one's not actually on sale, but we <a href="https://www.pcgamer.com/hardware/gaming-keyboards/razer-reclusa-x-mini-65-percent-review/" target="_blank">reviewed this new Razer budget keyboard very favourably</a> when it launched recently, so it's worth highlighting what a good keyboard it is. It doesn't have the competitive gaming features of the Naughshark above, but if you just want an excellent keyboard for typing and regular ol' gaming action, the build quality on the Reclusa is hard to beat at this price.<br><br><strong>Key specs: Wired USB-A to USB-C | 1,000 Hz | RGB lighting | 65% size </strong><a class="view-deal button" href="https://www.amazon.com/Razer-Reclusa-Hot-Swappable-Mechanical-Keyboard/dp/B0H9CC8JCZ" target="_blank" rel="nofollow" data-dimension112="97cb5a8a-bb4f-11f1-bf4f-3916c3bfff25" data-action="Deal Block" data-label="Reclusa X Mini 65% | Wired" data-dimension48="Reclusa X Mini 65% | Wired" data-dimension25="$49.99">View Deal</a></p></div><div class="product"><a data-dimension112="a9d8f712-bb47-11f1-893f-3f2d56427584" data-action="Deal Block" data-label="Huntsman Mini | Wired" data-dimension48="Huntsman Mini | Wired" data-dimension25="$69.00" href="https://www.amazon.com/Razer-Huntsman-Mini-Gaming-Keyboard/dp/B0FFJDH7GM" 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="ieEsaMbBWvzjtMBSVc2zHf" name="1698929091.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/ieEsaMbBWvzjtMBSVc2zHf-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/Razer-Huntsman-Mini-Gaming-Keyboard/dp/B0FFJDH7GM" target="_blank" rel="nofollow" data-dimension112="a9d8f712-bb47-11f1-893f-3f2d56427584" data-action="Deal Block" data-label="Huntsman Mini | Wired" data-dimension48="Huntsman Mini | Wired" data-dimension25="$69.00">Huntsman Mini | Wired: was $129.99 now $69.00</a></strong><br>A teeny-tiny keyboard with impressive credentials. You can customize the lighting to your heart's content with Razer's Chroma RGB lighting, but the headline feature here is the inclusion of optical-mechanical switches. It's also got PBT keys and Razer Hypershift for all your favorite macros.</p><p><strong>Key specs: Tenkeyless | Razer optomechanical switch (clicky or linear) | Chroma RGB lighting</strong></p><p><strong>Price check: </strong><a href="https://www.bestbuy.com/site/razer-huntsman-mini-60-wired-optical-clicky-switch-gaming-keyboard-with-chroma-rgb-backlighting-black/6417111.p?skuId=6417111" target="_blank">Best Buy $69.00 (black model)</a><strong></strong><a class="view-deal button" href="https://www.amazon.com/Razer-Huntsman-Mini-Gaming-Keyboard/dp/B0FFJDH7GM" target="_blank" rel="nofollow" data-dimension112="a9d8f712-bb47-11f1-893f-3f2d56427584" data-action="Deal Block" data-label="Huntsman Mini | Wired" data-dimension48="Huntsman Mini | Wired" data-dimension25="$69.00">View Deal</a></p></div><div class="product"><a data-dimension112="a9d8f83e-bb47-11f1-b679-53ec45644ec3" data-action="Deal Block" data-label="ROG Strix Scope X | Wired" data-dimension48="ROG Strix Scope X | Wired" data-dimension25="$85.49" href="https://www.amazon.com/dp/B0FGGZK4X7" 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="6QKGW8GFyBNo2hgf3BuQxJ" name="AsusROGStrixScopeIIX" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6QKGW8GFyBNo2hgf3BuQxJ-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/dp/B0FGGZK4X7" target="_blank" rel="nofollow" data-dimension112="a9d8f83e-bb47-11f1-b679-53ec45644ec3" data-action="Deal Block" data-label="ROG Strix Scope X | Wired" data-dimension48="ROG Strix Scope X | Wired" data-dimension25="$85.49">ROG Strix Scope X | Wired: was $129.99 now $85.49</a></strong><br>This is the full size (and wired) variant of one of our all-time favourite keebs. It's a bit of a desk dominator, but if you don't mind the size and dealing with a cable, it's got a very attractive price. It's got pre-lubed NX Snow V2 linear switches and the switch dampening pads we love so much, so the typing feel should be pretty ace.</p><p><strong>Key specs: Full-size | ROG RX pre-lubed linear linear switches | PBT doubleshot | sound-dampened | wired USB Type-C</strong><a class="view-deal button" href="https://www.amazon.com/dp/B0FGGZK4X7" target="_blank" rel="nofollow" data-dimension112="a9d8f83e-bb47-11f1-b679-53ec45644ec3" data-action="Deal Block" data-label="ROG Strix Scope X | Wired" data-dimension48="ROG Strix Scope X | Wired" data-dimension25="$85.49">View Deal</a></p></div><div class="product"><a data-dimension112="a9d8f776-bb47-11f1-a43f-ff8eabc44183" data-action="Deal Block" data-label="G Pro | Wired" data-dimension48="G Pro | Wired" data-dimension25="$85.49" href="https://www.amazon.com/Logitech-Mechanical-Tenkeyless-Detachable-LIGHTSYNC/dp/B07QQB9VCV?th=1" 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="TdwJBFg7MUjmSDUQybdXCD" name="1698923788.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/TdwJBFg7MUjmSDUQybdXCD-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-Mechanical-Tenkeyless-Detachable-LIGHTSYNC/dp/B07QQB9VCV?th=1" target="_blank" rel="nofollow" data-dimension112="a9d8f776-bb47-11f1-a43f-ff8eabc44183" data-action="Deal Block" data-label="G Pro | Wired" data-dimension48="G Pro | Wired" data-dimension25="$85.49">G Pro | Wired: was $119.99 now $85.49</a></strong><br>This Logitech G Pro gives you all the functionality with less of the fuss. It comes with a choice of key switches, a detachable Micro USB cable for easy portability, 3-step angle adjustment and a lot of customization options in the G Hub software. Those backlit keys are on the subtle side of RGB lighting, and the Logitech comes off as a class act for less at this price. </p><p><strong>Key specs: Tenkeyless | Mechanical | Lightsync RGB backlit keys</strong></p><p><strong>Price check: </strong><a href="https://www.bestbuy.com/product/logitech-g-pro-tkl-wired-mechanical-gx-blue-clicky-switch-gaming-keyboard-with-rgb-backlighting-for-pc-black/J7H7ZYXWCJ" target="_blank">Best Buy $119.99</a><a class="view-deal button" href="https://www.amazon.com/Logitech-Mechanical-Tenkeyless-Detachable-LIGHTSYNC/dp/B07QQB9VCV?th=1" target="_blank" rel="nofollow" data-dimension112="a9d8f776-bb47-11f1-a43f-ff8eabc44183" data-action="Deal Block" data-label="G Pro | Wired" data-dimension48="G Pro | Wired" data-dimension25="$85.49">View Deal</a></p></div><div class="product"><a data-dimension112="a9d8f7da-bb47-11f1-a3c6-8346dad04957" data-action="Deal Block" data-label="G515 Wireless TKL" data-dimension48="G515 Wireless TKL" data-dimension25="$97.03" href="https://www.amazon.com/Logitech-LIGHTSYNC-Tenkeyless-Double-Shot-Mechanical/dp/B0FLF81R4J/ref=sr_1_19" 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="mSngcsZXFHBy4ZVCVYNZF5" name="1781521507.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/mSngcsZXFHBy4ZVCVYNZF5-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/Logitech-LIGHTSYNC-Tenkeyless-Double-Shot-Mechanical/dp/B0FLF81R4J/ref=sr_1_19" target="_blank" rel="nofollow" data-dimension112="a9d8f7da-bb47-11f1-a3c6-8346dad04957" data-action="Deal Block" data-label="G515 Wireless TKL" data-dimension48="G515 Wireless TKL" data-dimension25="$97.03">G515 Wireless TKL: was $159.99 now $97.03</a></strong><br>This compact keyboard is especially affordable in this light purple colorway. We reviewed the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/logitech-g515-rapid-tkl-review/" target="_blank">wired Rapid version with magnetic switches a while back</a> and thought it was a bit expensive for what you get—but this is the wireless version with standard keys for much, much less cash.</p><p><strong>Key specs: Wireless | Low-profile | PBT keycaps</strong><a class="view-deal button" href="https://www.amazon.com/Logitech-LIGHTSYNC-Tenkeyless-Double-Shot-Mechanical/dp/B0FLF81R4J/ref=sr_1_19" target="_blank" rel="nofollow" data-dimension112="a9d8f7da-bb47-11f1-a3c6-8346dad04957" data-action="Deal Block" data-label="G515 Wireless TKL" data-dimension48="G515 Wireless TKL" data-dimension25="$97.03">View Deal</a></p></div><div class="product"><a data-dimension112="76c0352c-c180-11f1-ab2c-77eba1e51548" data-action="Deal Block" data-label="MSI GF65" data-dimension48="BlackWidow V4 TKL Wireless" data-dimension25="$99.99" href="https://www.amazon.com/dp/B0FD5276Z6" 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="t93oNJaeWt2bWkXRLbSXKa" name="Razerkeeb" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/t93oNJaeWt2bWkXRLbSXKa-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/dp/B0FD5276Z6" target="_blank" rel="nofollow" data-dimension112="76c0352c-c180-11f1-ab2c-77eba1e51548" data-action="Deal Block" data-label="MSI GF65" data-dimension48="BlackWidow V4 TKL Wireless" data-dimension25="$99.99">BlackWidow V4 TKL Wireless: was $149.99 now $99.99</a></strong><br>Gamer aesthetic doesn't make you flinch; on the contrary, you love it? I mean, same. I own a previous version of the BlackWidow, and I love just how clicky it is, plus it's super sturdy. I tend to mash my keys with the force of an angry sledgehammer, but Razer's signature gaming keyboard doesn't bat an eye.</p><p><strong>Key specs:</strong> <strong>TKL | Orange switches | Multi-function roller | 3 control buttons | Hot-swappable | 2.4 GHz, Bluetooth  | Up to 980h battery life</strong><a class="view-deal button" href="https://www.amazon.com/dp/B0FD5276Z6" target="_blank" rel="nofollow" data-dimension112="76c0352c-c180-11f1-ab2c-77eba1e51548" data-action="Deal Block" data-label="MSI GF65" data-dimension48="BlackWidow V4 TKL Wireless" data-dimension25="$99.99">View Deal</a></p></div><div class="product"><a data-dimension112="76c035cc-c180-11f1-b931-bfcd87681c8b" data-action="Deal Block" data-label="MSI GF65" data-dimension48="K2 HE Wireless 75%" data-dimension25="$111.99" href="https://www.amazon.com/dp/B0DCVPGB9N" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1500px;"><p class="vanilla-image-block" style="padding-top:81.00%;"><img id="zRyyXmxqYXZ4b7TUXNo9zm" name="61ioq+AEmlL._AC_SL1500_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/zRyyXmxqYXZ4b7TUXNo9zm-1920-80.jpg" mos="" align="middle" fullscreen="" width="1500" height="1215" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/dp/B0DCVPGB9N" target="_blank" rel="nofollow" data-dimension112="76c035cc-c180-11f1-b931-bfcd87681c8b" data-action="Deal Block" data-label="MSI GF65" data-dimension48="K2 HE Wireless 75%" data-dimension25="$111.99">K2 HE Wireless 75%: was $139.99 now $111.99</a></strong><br>I love me a stylish gaming keeb, and this Keychron K2 HE gives you Noctua fan vibes while delivering on the performance front. This isn't the type of keyboard that'll scream "gamer," so you can keep it in your office and pretend that you're a fully functioning member of society while still mashing away until the early hours. We <a href="https://www.pcgamer.com/hardware/gaming-keyboards/keychron-k2-he-review/" target="_blank">liked this one a lot</a>, by the way, so it's not just nice to look at.</p><p><strong>Key specs:</strong> <strong>75% layout | Magnetic sensors | Customizable actuation | 2.4 GHz, Bluetooth 5.2, USB Type-C | 1,000 Hz polling rate</strong></p><p><strong>Price check: </strong><a href="https://www.newegg.com/p/0TP-032N-004N0" target="_blank">Newegg $272.48</a><a class="view-deal button" href="https://www.amazon.com/dp/B0DCVPGB9N" target="_blank" rel="nofollow" data-dimension112="76c035cc-c180-11f1-b931-bfcd87681c8b" data-action="Deal Block" data-label="MSI GF65" data-dimension48="K2 HE Wireless 75%" data-dimension25="$111.99">View Deal</a></p></div><div class="product"><a data-dimension112="a9d8f8fc-bb47-11f1-9b93-8d8521974fb3" data-action="Deal Block" data-label="ROG Strix Scope II 96 RX | Wireless" data-dimension48="ROG Strix Scope II 96 RX | Wireless" data-dimension25="$119.69" href="https://www.amazon.com/ASUS-II-96-RX-Wireless/dp/B0GMZ5Z9G4/" 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:99.34%;"><img id="aBkTkcypaZkMRFHYZ9uCRf" name="1781598708.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/aBkTkcypaZkMRFHYZ9uCRf-1920-80.jpg" mos="" align="middle" fullscreen="" width="1509" height="1499" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/ASUS-II-96-RX-Wireless/dp/B0GMZ5Z9G4/" target="_blank" rel="nofollow" data-dimension112="a9d8f8fc-bb47-11f1-9b93-8d8521974fb3" data-action="Deal Block" data-label="ROG Strix Scope II 96 RX | Wireless" data-dimension48="ROG Strix Scope II 96 RX | Wireless" data-dimension25="$119.69">ROG Strix Scope II 96 RX | Wireless: was $179.99 now $119.69</a></strong><br>This is one of the best keyboards going and right now it's at a cracking price. You're getting excellent typing feel, stellar gaming performance, sound dampening that actually works, and a build quality that stands well above most of the competition. The RX version is optical, too, though non-adjustable.</p><p><strong>Key specs: 96% | Wireless | sound dampening</strong><a class="view-deal button" href="https://www.amazon.com/ASUS-II-96-RX-Wireless/dp/B0GMZ5Z9G4/" target="_blank" rel="nofollow" data-dimension112="a9d8f8fc-bb47-11f1-9b93-8d8521974fb3" data-action="Deal Block" data-label="ROG Strix Scope II 96 RX | Wireless" data-dimension48="ROG Strix Scope II 96 RX | Wireless" data-dimension25="$119.69">View Deal</a></p></div><div class="product"><a data-dimension112="3383dc4c-c233-11f1-8932-8d3dada81fac" data-action="Deal Block" data-label="Vanguard Pro 96" data-dimension48="Vanguard Pro 96" data-dimension25="$149.99" href="https://www.amazon.com/Corsair-Vanguard-Magnetic-Mechanical-Keyboard-PC/dp/B0FKHPRZ45" 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="Srw8Ws3JmR6R9hyH6YomwV" name="Vanguard Pro 96" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/Srw8Ws3JmR6R9hyH6YomwV-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/Corsair-Vanguard-Magnetic-Mechanical-Keyboard-PC/dp/B0FKHPRZ45" target="_blank" rel="nofollow" data-dimension112="3383dc4c-c233-11f1-8932-8d3dada81fac" data-action="Deal Block" data-label="Vanguard Pro 96" data-dimension48="Vanguard Pro 96" data-dimension25="$149.99">Vanguard Pro 96: was $229.99 now $149.99</a></strong><br>Getting an <a href="https://www.pcgamer.com/hardware/gaming-keyboards/corsair-vanguard-pro-96-review/" target="_blank">85% from us</a> late last year, this keyboard has responsive and powerful Hall effect switches, and it even comes with macro keys and a wrist rest. The price is hefty, and it's only wired but it's a great keeb, nonetheless</p><p><strong>Key specs: Corsair MGX Overdrive switches | wired | PBT doubleshot | Hall effect</strong></p><p><strong>Price check:</strong> <a href="https://www.bestbuy.com/product/corsair-vanguard-pro-96-rgb-wired-magnetic-hall-effect-mgx-linear-96-gaming-keyboard-with-flashtap-socd-rapid-trigger-black/J39TSCPZC5" target="_blank">Best Buy $229.99</a><a class="view-deal button" href="https://www.amazon.com/Corsair-Vanguard-Magnetic-Mechanical-Keyboard-PC/dp/B0FKHPRZ45" target="_blank" rel="nofollow" data-dimension112="3383dc4c-c233-11f1-8932-8d3dada81fac" data-action="Deal Block" data-label="Vanguard Pro 96" data-dimension48="Vanguard Pro 96" data-dimension25="$149.99">View Deal</a></p></div><div class="product"><a data-dimension112="a9d8f960-bb47-11f1-904c-d31a1dd5e324" data-action="Deal Block" data-label="Apex Pro Gen 3 | Wired" data-dimension48="Apex Pro Gen 3 | Wired" data-dimension25="$199.99" href="https://www.amazon.com/SteelSeries-Apex-Pro-TKL-Gen/dp/B0DGZLHN8G" 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="SAo3QyrPMzu3j2SfKjWVtZ" name="key" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/SAo3QyrPMzu3j2SfKjWVtZ-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/SteelSeries-Apex-Pro-TKL-Gen/dp/B0DGZLHN8G" target="_blank" rel="nofollow" data-dimension112="a9d8f960-bb47-11f1-904c-d31a1dd5e324" data-action="Deal Block" data-label="Apex Pro Gen 3 | Wired" data-dimension48="Apex Pro Gen 3 | Wired" data-dimension25="$199.99">Apex Pro Gen 3 | Wired: was $239.99 now $199.99</a></strong><br>It's quite a lot of cash for a keyboard, but it shows in not only the tech underneath the keys (like some impressive switches) but also the build quality and extra quality-of-life features. If you're looking for a rapid trigger keyboard to cut fractions off your reaction times, and like the idea of an extra little screen to display in-game information, this is an excellent choice, especially with a tidy discount. </p><p><strong>Key specs: OmniPoint 3.0 HyperMagnetic Switches | Wired | Rapid trigger </strong></p><p><strong>Price check:</strong> <a href="https://www.bestbuy.com/product/steelseries-apex-pro-gen-3-full-size-wired-mechanical-omnipoint-adjustable-gaming-keyboard-with-rapid-tap-black/J3GTVPQWWX" target="_blank">Best Buy $228.99</a><a class="view-deal button" href="https://www.amazon.com/SteelSeries-Apex-Pro-TKL-Gen/dp/B0DGZLHN8G" target="_blank" rel="nofollow" data-dimension112="a9d8f960-bb47-11f1-904c-d31a1dd5e324" data-action="Deal Block" data-label="Apex Pro Gen 3 | Wired" data-dimension48="Apex Pro Gen 3 | Wired" data-dimension25="$199.99">View Deal</a></p></div><div class="product"><a data-dimension112="3383dd1e-c233-11f1-a148-71afe111e854" data-action="Deal Block" data-label="Galleon 100 SD" data-dimension48="Galleon 100 SD" data-dimension25="$284.99" href="https://www.amazon.com/Corsair-Galleon-Mechanical-Gaming-Keyboard/dp/B0G3PN1VS4" 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="EbCb4ApJhSjhgtrmpdMSTG" name="Galleon 100 SD" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/EbCb4ApJhSjhgtrmpdMSTG-1920-80.png" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>A grand keyboard with a grand price tag, the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/corsair-galleon-100-sd-review/" target="_blank" data-dimension112="3383dd1e-c233-11f1-a148-71afe111e854" data-action="Deal Block" data-label="Galleon 100 SD" data-dimension48="Galleon 100 SD" data-dimension25="$284.99">Corsair Galleon 100 SD</a> is well-built, with a great sound and a built-in Stream Deck. The only major caveats are the price and mediocre USB passthrough.</p><p><strong>Key specs: Full size |  Corsair MLX Pulse switches | Up to 8,000 Hz | Wired</strong></p><p><strong>Price check: </strong><a href="https://www.bestbuy.com/product/corsair-galleon-100-sd-stream-deck-integrated-mechanical-gaming-keyboard-black/J39TSCSCRT" target="_blank">Best Buy $299.99</a><strong></strong><a class="view-deal button" href="https://www.amazon.com/Corsair-Galleon-Mechanical-Gaming-Keyboard/dp/B0G3PN1VS4" target="_blank" rel="nofollow" data-dimension112="3383dd1e-c233-11f1-a148-71afe111e854" data-action="Deal Block" data-label="Galleon 100 SD" data-dimension48="Galleon 100 SD" data-dimension25="$284.99">View Deal</a></p></div><div class="product"><a data-dimension112="a9d8fa0a-bb47-11f1-9430-134d818f0d28" data-action="Deal Block" data-label="ROG Azoth Extreme | Wireless" data-dimension48="ROG Azoth Extreme | Wireless" data-dimension25="$334.99" href="https://www.amazon.com/ASUS-Extreme-Wireless-Mechanical-Keyboard/dp/B0D45ZHYZJ" 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="govmE7Ga4oRFS7SZ2kqPCi" name="a" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/govmE7Ga4oRFS7SZ2kqPCi-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/ASUS-Extreme-Wireless-Mechanical-Keyboard/dp/B0D45ZHYZJ" target="_blank" rel="nofollow" data-dimension112="a9d8fa0a-bb47-11f1-9430-134d818f0d28" data-action="Deal Block" data-label="ROG Azoth Extreme | Wireless" data-dimension48="ROG Azoth Extreme | Wireless" data-dimension25="$334.99">ROG Azoth Extreme | Wireless: was $499.99 now $334.99</a></strong><br>The Asus ROG Azoth Extreme Wireless is still a pricey 'ol keeb even with a discount. We still liked it a lot in <a href="https://www.pcgamer.com/hardware/gaming-keyboards/asus-rog-azoth-extreme-review/" target="_blank">our review</a>, though, and that's for good reason. It's beautifully constructed, with a super typing feel and useful media controls. </p><p><strong>Key specs: 75% | ROG NX Snow linear switches | Aluminium chassis | OLED screen</strong></p><p><strong>Price check: </strong><a href="https://www.bestbuy.com/product/asus-rog-azoth-extreme-75-wireless-mechanical-gaming-keyboard-with-rog-nx-snow-linear-switches-and-color-oled-touchscreen-black/JJGGLQLYRY/sku/6606308" target="_blank">Best Buy $334.99</a><a class="view-deal button" href="https://www.amazon.com/ASUS-Extreme-Wireless-Mechanical-Keyboard/dp/B0D45ZHYZJ" target="_blank" rel="nofollow" data-dimension112="a9d8fa0a-bb47-11f1-9430-134d818f0d28" data-action="Deal Block" data-label="ROG Azoth Extreme | Wireless" data-dimension48="ROG Azoth Extreme | Wireless" data-dimension25="$334.99">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-keyboard-deals-in-the-uk"><span>Prime Day gaming keyboard deals in the UK</span></h2><h2 id="where-are-the-best-prime-day-gaming-keyboard-deals-in-the-uk">Where are the best Prime Day gaming keyboard deals in the UK?</h2><ul><li><strong>Amazon: </strong><a href="https://www.amazon.co.uk/s?k=gaming+keyboard" target="_blank">Big discounts on top-brand gaming keyboards</a></li><li><strong>Overclockers:</strong> <a href="https://www.overclockers.co.uk/search?q=gaming+keyboards&search-button=&lang=en_GB&_gl=1*1ingm4b*_up*MQ..*_ga*NzIxNDkyNDA1LjE3OTA2MDY5NTQ.*_ga_7SS7XDNBS9*czE3OTA2MDY5NTMkbzEkZzAkdDE3OTA2MDY5NTMkajYwJGwwJGgw*_ga_123456*czE3OTA2MDY5NTMkbzEkZzAkdDE3OTA2MDY5NTMkajYwJGwwJGgxOTY1MTc0NTY2" target="_blank">Over 100 gaming keyboards to choose from</a></li><li><strong>Scan:</strong> <a href="https://www.scan.co.uk/shop/computer-hardware/keyboards/1814/493" target="_blank">Gaming keyboards from just £18</a></li><li><strong>Box: </strong><a href="https://box.co.uk/gaming-keyboards" target="_blank">Gaming keyboards from Asus, Logitech, and Razer</a></li><li><strong>Currys:</strong> <a href="https://www.currys.co.uk/gaming/gaming-accessories/keyboards?q=gaming%20keyboards" target="_blank">Keyboards from as little as £25</a></li><li><strong>Argos: </strong><a href="https://www.argos.co.uk/search/gaming-keyboard/?clickOrigin=searchbar:home:term:gaming+keyboard" target="_blank">Good prices on budget to high-end keyboards</a></li></ul><div class="product"><a data-dimension112="a9d8fcc6-bb47-11f1-be9a-c116a355cf33" data-action="Deal Block" data-label="x NaughShark NS68 | Wired" data-dimension48="x NaughShark NS68 | Wired" data-dimension25="£47.75" href="https://www.amazon.co.uk/GK-GAMAKAY-NaughShark-NS68-Mechanical/dp/B0F283459L?th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1503px;"><p class="vanilla-image-block" style="padding-top:99.33%;"><img id="cbkcaJ68Pwnf5TvXNiYANj" name="1790608297.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/cbkcaJ68Pwnf5TvXNiYANj-1920-80.jpg" mos="" align="middle" fullscreen="" width="1503" height="1493" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.co.uk/GK-GAMAKAY-NaughShark-NS68-Mechanical/dp/B0F283459L?th=1" target="_blank" rel="nofollow" data-dimension112="a9d8fcc6-bb47-11f1-be9a-c116a355cf33" data-action="Deal Block" data-label="x NaughShark NS68 | Wired" data-dimension48="x NaughShark NS68 | Wired" data-dimension25="£47.75">x NaughShark NS68 | Wired: £47.75</a></strong><br>An 8 KHz polling rate, Hall effect switches, rapid trigger, and nice double-shot PBT keycaps. To think you can get all of this for little cash makes the geeky hardware kid in me very happy. The <a href="https://www.pcgamer.com/hardware/gaming-keyboards/gamakay-x-naughshark-ns68-review/" target="_blank">Gamakay x NaughShark NS68</a> is noticeably a cheaper keyboard in feel, but those internals truly are phenomenal. </p><p><strong>Key specs:</strong> <strong>Wired | 8 KHz | Hall effect </strong><a class="view-deal button" href="https://www.amazon.co.uk/GK-GAMAKAY-NaughShark-NS68-Mechanical/dp/B0F283459L?th=1" target="_blank" rel="nofollow" data-dimension112="a9d8fcc6-bb47-11f1-be9a-c116a355cf33" data-action="Deal Block" data-label="x NaughShark NS68 | Wired" data-dimension48="x NaughShark NS68 | Wired" data-dimension25="£47.75">View Deal</a></p></div><div class="product"><a data-dimension112="6102f902-bb51-11f1-a009-1b4d4ee2dfe8" data-action="Deal Block" data-label="G515 Rapid TKL | Wired" data-dimension48="G515 Rapid TKL | Wired" data-dimension25="£92.49" href="https://www.amazon.co.uk/Logitech-LIGHTSPEED-LIGHTSYNC-Tenkeyless-Mechanical/dp/B0FJ8SGY2L" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1503px;"><p class="vanilla-image-block" style="padding-top:99.33%;"><img id="bwEcDNEPsPRhS9v9fBNLAH" name="1790609333.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/bwEcDNEPsPRhS9v9fBNLAH-1920-80.jpg" mos="" align="middle" fullscreen="" width="1503" height="1493" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.co.uk/Logitech-LIGHTSPEED-LIGHTSYNC-Tenkeyless-Mechanical/dp/B0FJ8SGY2L" target="_blank" rel="nofollow" data-dimension112="6102f902-bb51-11f1-a009-1b4d4ee2dfe8" data-action="Deal Block" data-label="G515 Rapid TKL | Wired" data-dimension48="G515 Rapid TKL | Wired" data-dimension25="£92.49">G515 Rapid TKL | Wired: was £129.99 now £92.49</a></strong><br>When we <a href="https://www.pcgamer.com/hardware/gaming-keyboards/logitech-g515-rapid-tkl-review/" target="_blank">first reviewed this board</a> it was far too expensive to fit into the mainstream market it felt more suited to. Fast forward nearly a year and the price has dropped down to a more palatable sum. Not bad for rapid trigger functionality in a solid, reliable board.<br><br><strong>Key specs: Wired USB-A to USB-C | Magnetic analogue switches | RGB lighting | PBT keycaps</strong><a class="view-deal button" href="https://www.amazon.co.uk/Logitech-LIGHTSPEED-LIGHTSYNC-Tenkeyless-Mechanical/dp/B0FJ8SGY2L" target="_blank" rel="nofollow" data-dimension112="6102f902-bb51-11f1-a009-1b4d4ee2dfe8" data-action="Deal Block" data-label="G515 Rapid TKL | Wired" data-dimension48="G515 Rapid TKL | Wired" data-dimension25="£92.49">View Deal</a></p></div><div class="product"><a data-dimension112="a9d8fd8e-bb47-11f1-992b-4d62ed1fd33e" data-action="Deal Block" data-label="ROG Strix Scope II 96 | Wireless" data-dimension48="ROG Strix Scope II 96 | Wireless" data-dimension25="£139.99" href="https://www.amazon.co.uk/ASUS-Connection-Dampening-Switch-Dampening-Hot-Swappable/dp/B0BVNWNR1Q/ref=sr_1_1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1508px;"><p class="vanilla-image-block" style="padding-top:99.34%;"><img id="8YbiHBzPro7FyoEqpCierm" name="1731945100.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/8YbiHBzPro7FyoEqpCierm-1920-80.jpg" mos="" align="middle" fullscreen="" width="1508" height="1498" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.co.uk/ASUS-Connection-Dampening-Switch-Dampening-Hot-Swappable/dp/B0BVNWNR1Q/ref=sr_1_1" target="_blank" rel="nofollow" data-dimension112="a9d8fd8e-bb47-11f1-992b-4d62ed1fd33e" data-action="Deal Block" data-label="ROG Strix Scope II 96 | Wireless" data-dimension48="ROG Strix Scope II 96 | Wireless" data-dimension25="£139.99">ROG Strix Scope II 96 | Wireless: was £169.99 now £139.99</a></strong><br>This is one of the best gaming keyboards going, and even a light discount is pretty good. You're getting excellent typing feel, stellar gaming performance, sound dampening that actually works, and a build quality that stands well above most of the competition. All for one of the best prices we've seen this keyboard going for.</p><p><strong>Key specs: Numpad | Wireless | Hot-swappable mechanical switches</strong></p><p><strong>Price check: </strong><a href="https://www.scan.co.uk/products/asus-rog-strix-scope-ii-96-white-rgb-mechanical-keyboard-rog-nx-snow-n-key-rollover-anti-ghosting" target="_blank">Scan £169.99</a><a class="view-deal button" href="https://www.amazon.co.uk/ASUS-Connection-Dampening-Switch-Dampening-Hot-Swappable/dp/B0BVNWNR1Q/ref=sr_1_1" target="_blank" rel="nofollow" data-dimension112="a9d8fd8e-bb47-11f1-992b-4d62ed1fd33e" data-action="Deal Block" data-label="ROG Strix Scope II 96 | Wireless" data-dimension48="ROG Strix Scope II 96 | Wireless" data-dimension25="£139.99">View Deal</a></p></div><div class="product"><a data-dimension112="a9d8fdf2-bb47-11f1-8043-4503d699a62c" data-action="Deal Block" data-label="ROG Falchion RX Low Profile | Wireless" data-dimension48="ROG Falchion RX Low Profile | Wireless" data-dimension25="£149.50" href="https://www.amazon.co.uk/ASUS-Pre-lubed-Low-Profile-Dampening-Interactive/dp/B07M6HZDSC" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:672px;"><p class="vanilla-image-block" style="padding-top:98.51%;"><img id="WQuwBrKSSvimKgcEsfDZE9" name="1731946043.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/WQuwBrKSSvimKgcEsfDZE9-1920-80.jpg" mos="" align="middle" fullscreen="" width="672" height="662" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.co.uk/ASUS-Pre-lubed-Low-Profile-Dampening-Interactive/dp/B07M6HZDSC" target="_blank" rel="nofollow" data-dimension112="a9d8fdf2-bb47-11f1-8043-4503d699a62c" data-action="Deal Block" data-label="ROG Falchion RX Low Profile | Wireless" data-dimension48="ROG Falchion RX Low Profile | Wireless" data-dimension25="£149.50">ROG Falchion RX Low Profile | Wireless: was £169.99 now £149.50</a></strong><br>This one's for all you low-profile lovers out there. The Falchion RX Low Profile is a smashing little keyboard—and I do say "little" because it uses a 60% layout, although thankfully it keeps the arrow keys. The switches you get are fantastic, though: pre-lubed and smooth as butter. The board even comes with volume controls along the top.</p><p><strong>Key specs: Tenkeyless | Wireless | Low profile mechanical switches</strong></p><p><strong>Price check: </strong><a href="https://www.scan.co.uk/products/asus-m603-rog-falchion-rx-low-profile-wired-wireless-mechanical-gaming-keyboard-rx-low-profile-switc" target="_blank">Scan £169.99</a><strong></strong><a class="view-deal button" href="https://www.amazon.co.uk/ASUS-Pre-lubed-Low-Profile-Dampening-Interactive/dp/B07M6HZDSC" target="_blank" rel="nofollow" data-dimension112="a9d8fdf2-bb47-11f1-8043-4503d699a62c" data-action="Deal Block" data-label="ROG Falchion RX Low Profile | Wireless" data-dimension48="ROG Falchion RX Low Profile | Wireless" data-dimension25="£149.50">View Deal</a></p></div><ul><li><a href="#main"><strong>Back to top ^</strong></a></li></ul><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, started on <strong>October 6</strong>, and ran though until the end of <strong>October 7</strong>. Many deals continued long after that, though.</p></article></section><h2 class="article-body__section" id="section-buying-advice-gaming-keyboards"><span>Buying advice: gaming keyboards</span></h2>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I made two $50 gaming keyboards fight for my average-gamer affections, and for me there's one clear winner ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Welcome to my own personal battle of the budget gaming keyboards, where I make two reasonably-priced input devices fight to the bitter end for my affections. Okay, so it's more about working out which one I'd actually spend my money on, but that hasn't got the same ring to it. Onwards!</p><p>In the left corner sits the<a href="https://www.pcgamer.com/hardware/gaming-keyboards/gamakay-x-naughshark-ns68-review/" target="_blank"> Gamakay x NaughShark NS68</a>, a keeb with the silliest name I've ever heard. Still, it's got a surprisingly good specs sheet for its $40 MSRP, although it's gone up since our review and is<a href="https://www.amazon.com/GK-GAMAKAY-NaughShark-NS68-Black-Side/dp/B0F284SGG7/" target="_blank"> now often found for $50-$60</a> instead. It's been our best budget gaming keyboard pick for a while now, mostly because its value proposition is damn hard to beat for the cash—even with the price increase.</p><p>However, warming up in the right corner is the new kid on the block; the<a href="https://www.pcgamer.com/hardware/gaming-keyboards/razer-reclusa-x-mini-65-percent-review/" target="_blank"> Razer Reclusa X Mini 65%</a> is so fresh to the market, it hasn't even started shaving yet. But, being a proper mechanical mini keeb with<a href="https://www.amazon.com/Razer-Reclusa-Hot-Swappable-Mechanical-Keyboard/dp/B0H9CC8JCZ/" target="_blank"> a $50 price tag</a>, it's sure swinging for the fences straight out of the gate. Something like that, anyway.</p><h2 class="article-body__section" id="section-the-rules"><span>The rules</span></h2><p>I'll be judging this battle based on five rounds. The first will be specs, the second, build quality. The third shall be looks, the fourth will be sound, and the fifth will be a real-world gaming test—judged subjectively by me, a (very) non-pro gamer.</p><p>You won't find any esports-level, picosecond-measuring switch testing here. I shall use each keeb for a day in the games I usually play, and pick the one I would buy with my own cash.</p><p>I have 38-year-old reflexes and a tendency to leave a match because I want a cup of tea, or I saw a dog outside my window. There will be no questions taken about my judging ability at this time, thank you.</p><p>Without further ado.... Fight!</p><h2 class="article-body__section" id="section-round-one-technical-specs"><span>Round one: Technical specs</span></h2><div ><table><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>Gamakay x NaughShark NS68</strong></p></td><td  ><p><strong>Razer Reclusa X Mini 65%</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Layout</strong></p></td><td  ><p>65%</p></td><td  ><p>65%</p></td></tr><tr><td class="firstcol " ><p><strong>Number of keys</strong></p></td><td  ><p>68</p></td><td  ><p>68</p></td></tr><tr><td class="firstcol " ><p><strong>Switches</strong></p></td><td  ><p>Outemu Peach Magnetic</p></td><td  ><p>Razer Gen-3 Orange Tactile</p></td></tr><tr><td class="firstcol " ><p><strong>Hall effect</strong></p></td><td  ><p>Yes</p></td><td  ><p>No</p></td></tr><tr><td class="firstcol " ><p><strong>Switch actuation point</strong></p></td><td  ><p>Up to 3.7 mm</p></td><td  ><p>3.5 mm</p></td></tr><tr><td class="firstcol " ><p><strong>Actuation force</strong></p></td><td  ><p>40 g</p></td><td  ><p>50 g</p></td></tr><tr><td class="firstcol " ><p><strong>Keycaps</strong></p></td><td  ><p>Doubleshot PBT</p></td><td  ><p>Doubleshot ABS</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>Wired (wireless version $20 extra)</p></td><td  ><p>Wired</p></td></tr><tr><td class="firstcol " ><p><strong>Max polling rate</strong></p></td><td  ><p>8,000 Hz</p></td><td  ><p>1,000 Hz</p></td></tr><tr><td class="firstcol " ><p><strong>RGB lighting</strong></p></td><td  ><p>Yes</p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p><a href="https://www.amazon.com/GK-GAMAKAY-NaughShark-NS68-Black-Side/dp/B0F284SGG7/" target="_blank">$54</a>/<a href="https://www.amazon.co.uk/GK-GAMAKAY-NaughShark-NS68-White-Shine/dp/B0F282VSHQ/" target="_blank">£47</a></p></td><td  ><p><a href="https://www.amazon.com/Razer-Reclusa-Hot-Swappable-Mechanical-Keyboard/dp/B0H9CC8JCZ/" target="_blank">$50</a>/<a href="https://www.amazon.co.uk/Razer-Reclusa-Mini-Hot-swappable-Dual-Keypress/dp/B0HCYBHRZ5/" target="_blank">$60</a></p></td></tr></tbody></table></div><p>First up, let's take a look at the specs sheets. The first difference you'll notice comes in the form of the switches, which in the Gamakay's case are Hall effect, but are purely mechanical on the Razer. Beyond the extra durability offered by Hall effect models, this also means you can fine-tune the x NaughShark's switch actuation point, which is darn handy.</p><p>But before you go leaping for the buy button, it's worth mentioning that the NaughShark's Outemu Peach Magnetic switches have a 40 g actuation force, while the Gen-3 Orange Tactile switches in the Reclusa come in at 50 g. That might not sound like much on paper, but in practice it does make for a significantly different feel.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="SdgAs3oAMizx6FqyVJToFM" name="20260922_144345" alt="A Gamakay x NaughShark NS68 above a Razer Reclusa X Mini 65% gaming keyboard" src="https://cdn.mos.cms.futurecdn.net/SdgAs3oAMizx6FqyVJToFM-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>Then there are the keycaps, which are doubleshot PBT on the Gamakay, and doubleshot ABS on the Razer. I actually prefer the crisp-cut edges of the Reclusa's caps, but the NaughShark's feel fairly good under the fingertips, too.</p><p>The biggest difference, though, comes in the polling rate. The NaughShark tops out at 8,000 Hz, while the Reclusa X Mini falls behind with a 1,000 Hz limit. Your average gamer is unlikely to feel the difference with an 8K polling rate, but esports-level gamers may well appreciate the higher figure.</p><p>Looking at the specs alone, I think the Gamakay keeb clearly comes out on top. It's not a bad showing from the little Razer, but Hall effect switches and a higher polling rate wins the day for the notoriously good-value NaughShark.</p><h2 class="article-body__section" id="section-round-two-build-quality"><span>Round two: Build quality</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="V6UebHN5xhV9vMAZpTDatd" name="20260922_144408" alt="Two gaming keyboards pushed together on a desk" src="https://cdn.mos.cms.futurecdn.net/V6UebHN5xhV9vMAZpTDatd-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>The first thing I do when I pick up a budget gaming keyboard (or almost any keyboard, for that matter), is to grab both sides and twist it to check for deck flex. This makes PR reps very nervous. However, both of these budget keebs have little movement in the chassis, which is usually a sign of robust materials.</p><p>That being said, in the Gamakay's case, this is likely because it has a substantial lower lip on the bottom edge of the chassis to stiffen things up. In terms of the plastic itself, it feels <em>okay </em>but there's a hollow quality to the whole affair that makes me wrinkle my nose. Only one of these keyboards betrays its cheap price through the materials, and I'm sad to say it's the NaughShark.</p><p>The Reclusa X Mini feels much more solidly built, despite having a smaller chassis overall. It's crisp-edged and remarkably robust for such a well-priced keeb, while the keycaps have very little wobble on top of the switches. That's unlike the Gamakay's, which rattle around a little too much for my liking.</p><p>I'm sure the NaughShark NS68 will last for a reasonable amount of time, but the Reclusa X Mini 65% is the winner for me here.</p><h2 class="article-body__section" id="section-round-three-aesthetics"><span>Round three: Aesthetics</span></h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/5yXsbEp49d4n9SnyCgAUmS-1920-80.jpg" alt="A Razer Reclusa X Mini 65% gaming keyboard above a Gamakay x NaughShark NS68 on a desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/D27Rc46KRTXcXRycybWrFc-1920-80.jpg" alt="Close ups of the Gamakay x NaughShark budget gaming keyboard" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/YfVTvXnZQisng7qnKFP33c-1920-80.jpg" alt="Close ups of the Gamakay x NaughShark budget gaming keyboard" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/8SpuPpqfXNK6wiJcmSWMFc-1920-80.jpg" alt="Close ups of the Gamakay x NaughShark budget gaming keyboard" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/8LsvvaMBjh4GGXfMMTzpVP-1920-80.jpg" alt="A Razer Reclusa X Mini 65% gaming keyboard shot from above, on a wooden desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/YSG4N9J9jHFHRxpSnGamWe-1920-80.jpg" alt="A Razer Reclusa X Mini 65% gaming keyboard with rainbow-coloured RGB lighting on a wooden desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/mjTFDXcgDJU4ZaLN3o5G2L-1920-80.jpg" alt="Close ups of the Razer Reclusa X Mini 65% gaming keyboard showing the RGB lighting effect" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/sjX3k95pzDTE3czF8FCTzK-1920-80.jpg" alt="Close ups of the Razer Reclusa X Mini 65% gaming keyboard showing the RGB lighting effect" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Everyone's tastes are different, but I'm surprised by how much I like the Razer's white/green/black keycap combo. I normally abhor white hardware, particularly if I'm going to be touching it with my greasy mitts. Still, it helps the Reclusa X Mini stand out from the crowd, and the RGB lighting shines through with aplomb.</p><p>The NaughShark NS68 also has impressive RGB lighting, and I've grown to like the wave pattern over the top of the keycaps in combination with the shine-through lettering on the bottom side. There are a few details here, though, that I'm really not so keen on.</p><p>One, the stick-out lanyard strap on the left hand side. I don't know who's going to be wearing their keyboard round their wrist when they take it for a walk (?), but it's not going to be me. You can remove the lanyard itself with the help of a flat-headed screwdriver (or a thumbnail). Unfortunately, the ugly sidehook is integrated into the chassis. There it shall remain.</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="GtXnWtby58p7DuFwr88aRm" name="20260925_121745" alt="The lanyard strap attachment of the Gamakay x NaughShark NS68" src="https://cdn.mos.cms.futurecdn.net/GtXnWtby58p7DuFwr88aRm-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 two, there are some fiddly details in the chassis design that are more indicative of a budget product. The dipped-in sides with ridges are easy enough to ignore, but did we have to write "Naugh Shark" (with a space, no less) on the front, complete with a stylised graphic of a great white? </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="mDWhu3oRzebomLdqHtiwjf" name="20260925_123913" alt="A close up of the "Naugh Shark" text on the front of the Gamakay x NaughShark NS68 gaming keyboard" src="https://cdn.mos.cms.futurecdn.net/mDWhu3oRzebomLdqHtiwjf-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>It's a bit... childish, I guess. I like a bit of fun in my gaming product design, but I think if I had the NS68 on my desk and there was company coming over, I might throw a magazine on top of it. The Razer, however, is more grown up. Other than the RGB of course, but isn't that the highest indicator of class? Another win for the Reclusa, in my book.</p><h2 class="article-body__section" id="section-round-four-sound"><span>Round four: Sound</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="nuJV4ExPzSE9KAcKkq7ohD" name="20260922_144317" alt="The Gamakay x NaughShark NS68 and the Razer Reclusa X Mini 65% next to each other on a desk" src="https://cdn.mos.cms.futurecdn.net/nuJV4ExPzSE9KAcKkq7ohD-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>Tippy tappy, or clicky clacky? That's the question I find myself asking when choosing between these two keebs. The NaughShark NS68 belongs to the former camp, with a "tappity-tap" kind of ring to it that sounds perfectly fine while typing or gaming.</p><p>There's a bit of a hollow note to the whole affair, though, particularly underneath the delete key, which sounds markedly different to all the others. By contrast, the spacebar sounds much more dampened. It's an inconsistent tonal palette (if I'm allowing myself to be pretentious, which I am), but I still reckon the Gamakay is far from a bad-sounding keeb.</p><iframe src="https://content.jwplatform.com/players/qC20ZXvr.html" id="qC20ZXvr" title="Budget keyboard typing sound-off" width="1920" height="1080" frameborder="0" scrolling="auto" allowfullscreen></iframe><p>The Reclusa X Mini sounds much more like a traditional mechanical keyboard. There's a crunchy, self-assured click and clack to its output, which I usually associate with expensive, enthusiast-level keebs.</p><p>But while the Razer is quieter and more refined overall, the clicky top-end noise has a tendency to travel a bit further, as it's not caught by the Reclusa's dual-layer silicone sound dampening layers inside the board. I happen to enjoy said noise, but I fear a cushion being thrown at the back of my head any moment now.</p><p>Out of the two, I'll go for the Razer—even if the rest of my household might prefer otherwise.</p><h2 class="article-body__section" id="section-round-five-real-world-gaming"><span>Round five: Real-world gaming</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="zYjmxG5d4JgMD5iCSMGBJK" name="20260925_122453" alt="Two budget gaming keyboards on a desk, ready to game" src="https://cdn.mos.cms.futurecdn.net/zYjmxG5d4JgMD5iCSMGBJK-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>I'm no pro gamer, and I get my arse kicked in seconds by younger players in esports-style shooters. No gaming keyboard is going to change that fact. I do knock around in Gray Zone Warfare, Borderlands 4, Ready or Not, and Helldivers 2 on a regular basis, though, so those are the games I decided to use for my real-world gaming tests.</p><p>And in terms of responsiveness, perhaps, <em>just perhaps, </em>I could feel a touch faster reaction from the NaughShark NS68 at its full 8K polling rate. It's such a close-run thing, though, I'm still not entirely sure. The Razer certainly doesn't lag, I can tell you that much.</p><p>I also like the Gamakay keeb's adjustable actuation point switches, which give me scope for customising my input distances in a very direct way. What I don't like, however, is the switchfeel underneath my WASD hand.</p><p>It's a bit spongy, and the slightly rattly keycaps remind me that I'm using a very fast, but also very budget input device. The Razer feels rock solid by contrast, and the heavier switches make me feel like I'm more in control. Even if, technically, the Gamakay is quicker on the draw.</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="fQBPfdcisSva8PEgq8f2mk" name="Gamakaysettings" alt="Gamakay software settings for the Gamakay x NaughShark NS68" src="https://cdn.mos.cms.futurecdn.net/fQBPfdcisSva8PEgq8f2mk-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: Gamakay)</span></figcaption></figure><p>In terms of software features, the NaughShark NS68 has plenty of them. In terms of making them work, though, I've had a pretty inconsistent experience. The options are confusingly labelled, and some settings have a tendency to change behind my back for reasons I can't entirely explain.</p><p>Still, top marks go to the Gamakay software's switch simulation feature, which lets you see switch actuation in realtime to decide on the right distance for you. There's also rapid trigger support, alongside Dynamic Key Stroke, Press and Click, SnapKey, and various other confusingly-named options.</p><p>Speaking of rapid trigger, I've really tried to get on with it, honestly I have. But ultimately, I don't think it makes a big difference in the games I play. Anyway, the NaughShark NS68 has it, the Razer doesn't, and for some it'll be a make-or-break feature. </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="9WNZekEcrKzvUGnTTh8Nrh" name="Synapse2" alt="Keyboard settings in Razer Synapse for the Reclusa X Mini 65% gaming keyboard" src="https://cdn.mos.cms.futurecdn.net/9WNZekEcrKzvUGnTTh8Nrh-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: Razer)</span></figcaption></figure><p>Back to the software. Razer Synapse is much better at handling the Reclusa X Mini's software features, with clearly-labelled menus and much less fuss. I was left scratching my head as I tweaked the Gamakay keeb's various options, while Razer's menu system lets me get going with its Snap Tap, Snap Flex, and Dual-Keypress priority features with little fuss. The menus are a bit basic, sure. But they work well, and that's all that really matters.</p><p>Beyond that, the Reclusa's straightforward recipe of satisfying switches, crisp keycaps, and solid build quality really makes the difference to me when I sit down for a Sunday afternoon of gaming. Or a Wednesday evening, for that matter. The Gamakay is a very good gaming keeb, but given the Razer is nearly the same cash, I'll take the features I can feel in my fingertips over the ones I can fiddle with deep within the software.</p><h2 class="article-body__section" id="section-the-winner"><span>The winner</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="Vpr6TzekEBGhomFo2cYaeE" name="Razerongamakayaction" alt="A Razer Reclusa X Mini 65% on top of a Gamakay x NaughShark NS68" src="https://cdn.mos.cms.futurecdn.net/Vpr6TzekEBGhomFo2cYaeE-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>For those of you that made it this far, it'll be no surprise to learn that for me, the Razer Reclusa X Mini 65% wins the day. Sticking the two keyboards side-by-side, the many differences between the two are kinda interesting to see.</p><p>Internally, the Gamakay x NaughShark NS68 is full of cutting edge features. When it comes to actually using them (and the keyboard itself), though, its budget concessions make themselves known more often than I'd like. </p><p>I can absolutely see why we've kept the NS68 in our best budget gaming keyboard spot for so long. Traditionally, it's been very difficult to find a good gaming keyboard for $50 or less, never mind one stuffed full of the latest tech.</p><div><blockquote><p>I'll take the features I can feel in my fingertips</p></blockquote></div><p>But while the Razer Reclusa X Mini 65% doesn't have the same fancy specs sheet, it's the nicer to use device of the two. It's much more solidly built, it's got better switchfeel, it's great to type and game on, and it looks grown up enough that you won't be embarrassed if someone spots it on your desk before a night out.</p><p>And as for that polling rate difference, and the Gamakay keeb's Hall effect switches and many, many software options? Well, proper competitive gamers may consider those grounds for an overarching win, no matter the rest. And god bless 'em, that's what I say.</p><p>For a regular ol' gamer like me, though? I'll take the Reclusa X Mini 65%, please. And I think I might be far from alone on that one.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-keyboards/i-made-two-usd50-gaming-keyboards-fight-for-my-average-gamer-affections-and-for-me-theres-one-clear-winner/</link>
                                                                            <description>
                            <![CDATA[ In the battle of the silly naming schemes, we all lose. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">HZWjfFq2QQMLd4edTz6SBG</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/R24eWGKqXZJihXm8XYeoxU-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 25 Sep 2026 13:45:10 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Keyboards]]></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/R24eWGKqXZJihXm8XYeoxU-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Two gaming keyboards separated by &quot;fight&quot; text]]></media:description>                                                            <media:text><![CDATA[Two gaming keyboards separated by &quot;fight&quot; text]]></media:text>
                                <media:title type="plain"><![CDATA[Two gaming keyboards separated by &quot;fight&quot; text]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/R24eWGKqXZJihXm8XYeoxU-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Welcome to my own personal battle of the budget gaming keyboards, where I make two reasonably-priced input devices fight to the bitter end for my affections. Okay, so it's more about working out which one I'd actually spend my money on, but that hasn't got the same ring to it. Onwards!</p><p>In the left corner sits the<a href="https://www.pcgamer.com/hardware/gaming-keyboards/gamakay-x-naughshark-ns68-review/" target="_blank"> Gamakay x NaughShark NS68</a>, a keeb with the silliest name I've ever heard. Still, it's got a surprisingly good specs sheet for its $40 MSRP, although it's gone up since our review and is<a href="https://www.amazon.com/GK-GAMAKAY-NaughShark-NS68-Black-Side/dp/B0F284SGG7/" target="_blank"> now often found for $50-$60</a> instead. It's been our best budget gaming keyboard pick for a while now, mostly because its value proposition is damn hard to beat for the cash—even with the price increase.</p><p>However, warming up in the right corner is the new kid on the block; the<a href="https://www.pcgamer.com/hardware/gaming-keyboards/razer-reclusa-x-mini-65-percent-review/" target="_blank"> Razer Reclusa X Mini 65%</a> is so fresh to the market, it hasn't even started shaving yet. But, being a proper mechanical mini keeb with<a href="https://www.amazon.com/Razer-Reclusa-Hot-Swappable-Mechanical-Keyboard/dp/B0H9CC8JCZ/" target="_blank"> a $50 price tag</a>, it's sure swinging for the fences straight out of the gate. Something like that, anyway.</p><h2 class="article-body__section" id="section-the-rules"><span>The rules</span></h2><p>I'll be judging this battle based on five rounds. The first will be specs, the second, build quality. The third shall be looks, the fourth will be sound, and the fifth will be a real-world gaming test—judged subjectively by me, a (very) non-pro gamer.</p><p>You won't find any esports-level, picosecond-measuring switch testing here. I shall use each keeb for a day in the games I usually play, and pick the one I would buy with my own cash.</p><p>I have 38-year-old reflexes and a tendency to leave a match because I want a cup of tea, or I saw a dog outside my window. There will be no questions taken about my judging ability at this time, thank you.</p><p>Without further ado.... Fight!</p><h2 class="article-body__section" id="section-round-one-technical-specs"><span>Round one: Technical specs</span></h2><div ><table><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>Gamakay x NaughShark NS68</strong></p></td><td  ><p><strong>Razer Reclusa X Mini 65%</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Layout</strong></p></td><td  ><p>65%</p></td><td  ><p>65%</p></td></tr><tr><td class="firstcol " ><p><strong>Number of keys</strong></p></td><td  ><p>68</p></td><td  ><p>68</p></td></tr><tr><td class="firstcol " ><p><strong>Switches</strong></p></td><td  ><p>Outemu Peach Magnetic</p></td><td  ><p>Razer Gen-3 Orange Tactile</p></td></tr><tr><td class="firstcol " ><p><strong>Hall effect</strong></p></td><td  ><p>Yes</p></td><td  ><p>No</p></td></tr><tr><td class="firstcol " ><p><strong>Switch actuation point</strong></p></td><td  ><p>Up to 3.7 mm</p></td><td  ><p>3.5 mm</p></td></tr><tr><td class="firstcol " ><p><strong>Actuation force</strong></p></td><td  ><p>40 g</p></td><td  ><p>50 g</p></td></tr><tr><td class="firstcol " ><p><strong>Keycaps</strong></p></td><td  ><p>Doubleshot PBT</p></td><td  ><p>Doubleshot ABS</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>Wired (wireless version $20 extra)</p></td><td  ><p>Wired</p></td></tr><tr><td class="firstcol " ><p><strong>Max polling rate</strong></p></td><td  ><p>8,000 Hz</p></td><td  ><p>1,000 Hz</p></td></tr><tr><td class="firstcol " ><p><strong>RGB lighting</strong></p></td><td  ><p>Yes</p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p><a href="https://www.amazon.com/GK-GAMAKAY-NaughShark-NS68-Black-Side/dp/B0F284SGG7/" target="_blank">$54</a>/<a href="https://www.amazon.co.uk/GK-GAMAKAY-NaughShark-NS68-White-Shine/dp/B0F282VSHQ/" target="_blank">£47</a></p></td><td  ><p><a href="https://www.amazon.com/Razer-Reclusa-Hot-Swappable-Mechanical-Keyboard/dp/B0H9CC8JCZ/" target="_blank">$50</a>/<a href="https://www.amazon.co.uk/Razer-Reclusa-Mini-Hot-swappable-Dual-Keypress/dp/B0HCYBHRZ5/" target="_blank">$60</a></p></td></tr></tbody></table></div><p>First up, let's take a look at the specs sheets. The first difference you'll notice comes in the form of the switches, which in the Gamakay's case are Hall effect, but are purely mechanical on the Razer. Beyond the extra durability offered by Hall effect models, this also means you can fine-tune the x NaughShark's switch actuation point, which is darn handy.</p><p>But before you go leaping for the buy button, it's worth mentioning that the NaughShark's Outemu Peach Magnetic switches have a 40 g actuation force, while the Gen-3 Orange Tactile switches in the Reclusa come in at 50 g. That might not sound like much on paper, but in practice it does make for a significantly different feel.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="SdgAs3oAMizx6FqyVJToFM" name="20260922_144345" alt="A Gamakay x NaughShark NS68 above a Razer Reclusa X Mini 65% gaming keyboard" src="https://cdn.mos.cms.futurecdn.net/SdgAs3oAMizx6FqyVJToFM-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>Then there are the keycaps, which are doubleshot PBT on the Gamakay, and doubleshot ABS on the Razer. I actually prefer the crisp-cut edges of the Reclusa's caps, but the NaughShark's feel fairly good under the fingertips, too.</p><p>The biggest difference, though, comes in the polling rate. The NaughShark tops out at 8,000 Hz, while the Reclusa X Mini falls behind with a 1,000 Hz limit. Your average gamer is unlikely to feel the difference with an 8K polling rate, but esports-level gamers may well appreciate the higher figure.</p><p>Looking at the specs alone, I think the Gamakay keeb clearly comes out on top. It's not a bad showing from the little Razer, but Hall effect switches and a higher polling rate wins the day for the notoriously good-value NaughShark.</p><h2 class="article-body__section" id="section-round-two-build-quality"><span>Round two: Build quality</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="V6UebHN5xhV9vMAZpTDatd" name="20260922_144408" alt="Two gaming keyboards pushed together on a desk" src="https://cdn.mos.cms.futurecdn.net/V6UebHN5xhV9vMAZpTDatd-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>The first thing I do when I pick up a budget gaming keyboard (or almost any keyboard, for that matter), is to grab both sides and twist it to check for deck flex. This makes PR reps very nervous. However, both of these budget keebs have little movement in the chassis, which is usually a sign of robust materials.</p><p>That being said, in the Gamakay's case, this is likely because it has a substantial lower lip on the bottom edge of the chassis to stiffen things up. In terms of the plastic itself, it feels <em>okay </em>but there's a hollow quality to the whole affair that makes me wrinkle my nose. Only one of these keyboards betrays its cheap price through the materials, and I'm sad to say it's the NaughShark.</p><p>The Reclusa X Mini feels much more solidly built, despite having a smaller chassis overall. It's crisp-edged and remarkably robust for such a well-priced keeb, while the keycaps have very little wobble on top of the switches. That's unlike the Gamakay's, which rattle around a little too much for my liking.</p><p>I'm sure the NaughShark NS68 will last for a reasonable amount of time, but the Reclusa X Mini 65% is the winner for me here.</p><h2 class="article-body__section" id="section-round-three-aesthetics"><span>Round three: Aesthetics</span></h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/5yXsbEp49d4n9SnyCgAUmS-1920-80.jpg" alt="A Razer Reclusa X Mini 65% gaming keyboard above a Gamakay x NaughShark NS68 on a desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/D27Rc46KRTXcXRycybWrFc-1920-80.jpg" alt="Close ups of the Gamakay x NaughShark budget gaming keyboard" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/YfVTvXnZQisng7qnKFP33c-1920-80.jpg" alt="Close ups of the Gamakay x NaughShark budget gaming keyboard" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/8SpuPpqfXNK6wiJcmSWMFc-1920-80.jpg" alt="Close ups of the Gamakay x NaughShark budget gaming keyboard" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/8LsvvaMBjh4GGXfMMTzpVP-1920-80.jpg" alt="A Razer Reclusa X Mini 65% gaming keyboard shot from above, on a wooden desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/YSG4N9J9jHFHRxpSnGamWe-1920-80.jpg" alt="A Razer Reclusa X Mini 65% gaming keyboard with rainbow-coloured RGB lighting on a wooden desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/mjTFDXcgDJU4ZaLN3o5G2L-1920-80.jpg" alt="Close ups of the Razer Reclusa X Mini 65% gaming keyboard showing the RGB lighting effect" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/sjX3k95pzDTE3czF8FCTzK-1920-80.jpg" alt="Close ups of the Razer Reclusa X Mini 65% gaming keyboard showing the RGB lighting effect" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Everyone's tastes are different, but I'm surprised by how much I like the Razer's white/green/black keycap combo. I normally abhor white hardware, particularly if I'm going to be touching it with my greasy mitts. Still, it helps the Reclusa X Mini stand out from the crowd, and the RGB lighting shines through with aplomb.</p><p>The NaughShark NS68 also has impressive RGB lighting, and I've grown to like the wave pattern over the top of the keycaps in combination with the shine-through lettering on the bottom side. There are a few details here, though, that I'm really not so keen on.</p><p>One, the stick-out lanyard strap on the left hand side. I don't know who's going to be wearing their keyboard round their wrist when they take it for a walk (?), but it's not going to be me. You can remove the lanyard itself with the help of a flat-headed screwdriver (or a thumbnail). Unfortunately, the ugly sidehook is integrated into the chassis. There it shall remain.</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="GtXnWtby58p7DuFwr88aRm" name="20260925_121745" alt="The lanyard strap attachment of the Gamakay x NaughShark NS68" src="https://cdn.mos.cms.futurecdn.net/GtXnWtby58p7DuFwr88aRm-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 two, there are some fiddly details in the chassis design that are more indicative of a budget product. The dipped-in sides with ridges are easy enough to ignore, but did we have to write "Naugh Shark" (with a space, no less) on the front, complete with a stylised graphic of a great white? </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="mDWhu3oRzebomLdqHtiwjf" name="20260925_123913" alt="A close up of the "Naugh Shark" text on the front of the Gamakay x NaughShark NS68 gaming keyboard" src="https://cdn.mos.cms.futurecdn.net/mDWhu3oRzebomLdqHtiwjf-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>It's a bit... childish, I guess. I like a bit of fun in my gaming product design, but I think if I had the NS68 on my desk and there was company coming over, I might throw a magazine on top of it. The Razer, however, is more grown up. Other than the RGB of course, but isn't that the highest indicator of class? Another win for the Reclusa, in my book.</p><h2 class="article-body__section" id="section-round-four-sound"><span>Round four: Sound</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="nuJV4ExPzSE9KAcKkq7ohD" name="20260922_144317" alt="The Gamakay x NaughShark NS68 and the Razer Reclusa X Mini 65% next to each other on a desk" src="https://cdn.mos.cms.futurecdn.net/nuJV4ExPzSE9KAcKkq7ohD-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>Tippy tappy, or clicky clacky? That's the question I find myself asking when choosing between these two keebs. The NaughShark NS68 belongs to the former camp, with a "tappity-tap" kind of ring to it that sounds perfectly fine while typing or gaming.</p><p>There's a bit of a hollow note to the whole affair, though, particularly underneath the delete key, which sounds markedly different to all the others. By contrast, the spacebar sounds much more dampened. It's an inconsistent tonal palette (if I'm allowing myself to be pretentious, which I am), but I still reckon the Gamakay is far from a bad-sounding keeb.</p><iframe src="https://content.jwplatform.com/players/qC20ZXvr.html" id="qC20ZXvr" title="Budget keyboard typing sound-off" width="1920" height="1080" frameborder="0" scrolling="auto" allowfullscreen></iframe><p>The Reclusa X Mini sounds much more like a traditional mechanical keyboard. There's a crunchy, self-assured click and clack to its output, which I usually associate with expensive, enthusiast-level keebs.</p><p>But while the Razer is quieter and more refined overall, the clicky top-end noise has a tendency to travel a bit further, as it's not caught by the Reclusa's dual-layer silicone sound dampening layers inside the board. I happen to enjoy said noise, but I fear a cushion being thrown at the back of my head any moment now.</p><p>Out of the two, I'll go for the Razer—even if the rest of my household might prefer otherwise.</p><h2 class="article-body__section" id="section-round-five-real-world-gaming"><span>Round five: Real-world gaming</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="zYjmxG5d4JgMD5iCSMGBJK" name="20260925_122453" alt="Two budget gaming keyboards on a desk, ready to game" src="https://cdn.mos.cms.futurecdn.net/zYjmxG5d4JgMD5iCSMGBJK-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>I'm no pro gamer, and I get my arse kicked in seconds by younger players in esports-style shooters. No gaming keyboard is going to change that fact. I do knock around in Gray Zone Warfare, Borderlands 4, Ready or Not, and Helldivers 2 on a regular basis, though, so those are the games I decided to use for my real-world gaming tests.</p><p>And in terms of responsiveness, perhaps, <em>just perhaps, </em>I could feel a touch faster reaction from the NaughShark NS68 at its full 8K polling rate. It's such a close-run thing, though, I'm still not entirely sure. The Razer certainly doesn't lag, I can tell you that much.</p><p>I also like the Gamakay keeb's adjustable actuation point switches, which give me scope for customising my input distances in a very direct way. What I don't like, however, is the switchfeel underneath my WASD hand.</p><p>It's a bit spongy, and the slightly rattly keycaps remind me that I'm using a very fast, but also very budget input device. The Razer feels rock solid by contrast, and the heavier switches make me feel like I'm more in control. Even if, technically, the Gamakay is quicker on the draw.</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="fQBPfdcisSva8PEgq8f2mk" name="Gamakaysettings" alt="Gamakay software settings for the Gamakay x NaughShark NS68" src="https://cdn.mos.cms.futurecdn.net/fQBPfdcisSva8PEgq8f2mk-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: Gamakay)</span></figcaption></figure><p>In terms of software features, the NaughShark NS68 has plenty of them. In terms of making them work, though, I've had a pretty inconsistent experience. The options are confusingly labelled, and some settings have a tendency to change behind my back for reasons I can't entirely explain.</p><p>Still, top marks go to the Gamakay software's switch simulation feature, which lets you see switch actuation in realtime to decide on the right distance for you. There's also rapid trigger support, alongside Dynamic Key Stroke, Press and Click, SnapKey, and various other confusingly-named options.</p><p>Speaking of rapid trigger, I've really tried to get on with it, honestly I have. But ultimately, I don't think it makes a big difference in the games I play. Anyway, the NaughShark NS68 has it, the Razer doesn't, and for some it'll be a make-or-break feature. </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="9WNZekEcrKzvUGnTTh8Nrh" name="Synapse2" alt="Keyboard settings in Razer Synapse for the Reclusa X Mini 65% gaming keyboard" src="https://cdn.mos.cms.futurecdn.net/9WNZekEcrKzvUGnTTh8Nrh-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: Razer)</span></figcaption></figure><p>Back to the software. Razer Synapse is much better at handling the Reclusa X Mini's software features, with clearly-labelled menus and much less fuss. I was left scratching my head as I tweaked the Gamakay keeb's various options, while Razer's menu system lets me get going with its Snap Tap, Snap Flex, and Dual-Keypress priority features with little fuss. The menus are a bit basic, sure. But they work well, and that's all that really matters.</p><p>Beyond that, the Reclusa's straightforward recipe of satisfying switches, crisp keycaps, and solid build quality really makes the difference to me when I sit down for a Sunday afternoon of gaming. Or a Wednesday evening, for that matter. The Gamakay is a very good gaming keeb, but given the Razer is nearly the same cash, I'll take the features I can feel in my fingertips over the ones I can fiddle with deep within the software.</p><h2 class="article-body__section" id="section-the-winner"><span>The winner</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="Vpr6TzekEBGhomFo2cYaeE" name="Razerongamakayaction" alt="A Razer Reclusa X Mini 65% on top of a Gamakay x NaughShark NS68" src="https://cdn.mos.cms.futurecdn.net/Vpr6TzekEBGhomFo2cYaeE-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>For those of you that made it this far, it'll be no surprise to learn that for me, the Razer Reclusa X Mini 65% wins the day. Sticking the two keyboards side-by-side, the many differences between the two are kinda interesting to see.</p><p>Internally, the Gamakay x NaughShark NS68 is full of cutting edge features. When it comes to actually using them (and the keyboard itself), though, its budget concessions make themselves known more often than I'd like. </p><p>I can absolutely see why we've kept the NS68 in our best budget gaming keyboard spot for so long. Traditionally, it's been very difficult to find a good gaming keyboard for $50 or less, never mind one stuffed full of the latest tech.</p><div><blockquote><p>I'll take the features I can feel in my fingertips</p></blockquote></div><p>But while the Razer Reclusa X Mini 65% doesn't have the same fancy specs sheet, it's the nicer to use device of the two. It's much more solidly built, it's got better switchfeel, it's great to type and game on, and it looks grown up enough that you won't be embarrassed if someone spots it on your desk before a night out.</p><p>And as for that polling rate difference, and the Gamakay keeb's Hall effect switches and many, many software options? Well, proper competitive gamers may consider those grounds for an overarching win, no matter the rest. And god bless 'em, that's what I say.</p><p>For a regular ol' gamer like me, though? I'll take the Reclusa X Mini 65%, please. And I think I might be far from alone on that one.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Razer Reclusa X Mini 65% gaming keyboard review ]]></title>
                                                                                                <dc:content><![CDATA[ <div data-widget-type="review" data-model-name="Razer Reclusa X Mini 65%"></div><p>While Razer makes some excellent headsets, laptops, and gaming mice, I've never been particularly keen on its keyboards. They tend to be decent devices overall, but are usually expensive enough that you can get more bang for your buck from the competition. However, there's a new budget offering in town from the big green snake, and it's called the Razer Reclusa X Mini 65%.<br><br>Those of you familiar with keyboard percentage figures (and the term "mini") will likely deduce that this is a small keeb. There's no numpad to be found here, but at least you get all the main keys needed for day to day usage. It doesn't feel constrictive to type on, and it sure is a good-looking device—but the main thing that impresses me is the build quality, especially given the MSRP.<br><br>This is a <a href="https://www.razer.com/gaming-keyboards/razer-reclusa-x-mini-65" target="_blank">$50</a>/<a href="https://www.razer.com/gb-en/gaming-keyboards/razer-reclusa-x-mini-65" target="_blank">£60</a> gaming keyboard, but it feels more expensive than that. The doubleshot ABS keycaps are crisp, the switches are meaty, and its diminutive frame resists flexing to an admirable degree. If you told me this sharp little keyboard retailed for $80, I would absolutely believe you. For $50 at full price? I think it's a damn good bit of gaming hardware for the cash.<br><br>The specs sheet isn't particularly impressive, I'll give you that. 1,000 Hz wired polling, no Hall effect switches, no dedicated multimedia keys. And there's no height adjustment. But if what you're looking for in your next <a href="https://www.pcgamer.com/best-gaming-keyboard/" target="_blank">gaming keyboard</a> is something that doesn't take up much room on your desk, feels great to type and game on, and doesn't break the bank, I reckon the little Reclusa is very hard to beat.</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 proper enthusiast keeb on a budget:</strong> I'm used to $50 gaming keyboards feeling… well, cheap. This one feels like a genuine enthusiast keyboard, without the prohibitive price tag.<br><br>✅ <strong>You want something small and stylish: </strong>The Reclusa X Mini 65% doesn't take up much room on your desk, and looks downright excellent with a dash of RGB.</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 with competitive gamer specs:</strong> The Reclusa is plenty good enough for most gamers, but there's no 8,000 Hz polling or fancy Hall effect switches to play with.<br><br>❌ <strong>You want dedicated media keys: </strong>There's simply no room for anything beyond a 65% layout, so no single-purpose media knobs or buttons for you.</p></div></div></div></div><h2 class="article-body__section" id="section-razer-reclusa-x-mini-65-features"><span>Razer Reclusa X Mini 65%: 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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="YgXYcfb4Cys3xanXdqmcE8" name="20260921_093504" alt="The Razer Reclusa X Mini 65% gaming keyboard held in the hand outside, in front of some foliage" src="https://cdn.mos.cms.futurecdn.net/YgXYcfb4Cys3xanXdqmcE8-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 ><table><caption>Razer Reclusa X Mini 65% specs</caption><tbody><tr><td class="firstcol " ><p><strong>Layout</strong></p></td><td  ><p>65%</p></td></tr><tr><td class="firstcol " ><p><strong>Switches</strong></p></td><td  ><p>Razer Gen-3 Orange Tactile, mechanical</p></td></tr><tr><td class="firstcol " ><p><strong>Travel distance</strong></p></td><td  ><p>3.5 mm</p></td></tr><tr><td class="firstcol " ><p><strong>Actuation force</strong></p></td><td  ><p>50 g</p></td></tr><tr><td class="firstcol " ><p><strong>Polling rate</strong></p></td><td  ><p>1,000 Hz</p></td></tr><tr><td class="firstcol " ><p><strong>RGB lighting</strong></p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Dedicated multimedia keys</strong></p></td><td  ><p>No</p></td></tr><tr><td class="firstcol " ><p><strong>Connection</strong></p></td><td  ><p>Wired, USB Type-C to Type-A</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p><a href="https://www.razer.com/gaming-keyboards/razer-reclusa-x-mini-65" target="_blank">$50</a>/<a href="https://www.razer.com/gb-en/gaming-keyboards/razer-reclusa-x-mini-65" target="_blank">£60</a></p></td></tr></tbody></table></div><p>The Reclusa X Mini 65% is a small keyboard. That's the first thing you'll notice when you pull it from the box. The second thing is the white, green, and black colour scheme, and its reasonable weight. It's around 700 g according to my miniature scales. That's positively featherweight compared to my <a href="https://www.pcgamer.com/hardware/gaming-keyboards/glorious-gmmk-3-he-keyboard-review/" target="_blank">brass-plated custom Glorious GMMK 3</a>, but thanks to the robust-feeling chassis, it's not light enough to cause immediate concern.</p><p>It's got lovely crisp keycaps, too, being of the doubleshot ABS variety. The switches underneath are Razer's Gen-3 Orange tactile models, and they're also pretty snappy—although you can hotswap them out for your preferred three-pin or five-pin models if you wish. Inside, the Reclusa X Mini has dual layer silicone sound dampening sandwiched within its frame.</p><p>Esports-fuelled, 8,000 Hz polling enthusiasts won't be blown away by its 1,000 Hz rate, but the rest of us will likely find it plenty speedy enough. It's also a wired keeb only, which I actually prefer. Wireless keyboards have a tendency to end up plugged in all the time on your desk, as having another device to charge usually creates more hassle than it's worth. Plus, eschewing a wireless receiver keeps the price down.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/8LsvvaMBjh4GGXfMMTzpVP-1920-80.jpg" alt="A Razer Reclusa X Mini 65% gaming keyboard shot from above, on a wooden desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/feBqSXrizen5XkQQZ8NDdW-1920-80.jpg" alt="A Razer Reclusa X Mini 65% gaming keyboard on top of gravel" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/FUa5MrFgTtMaAaDv9uVVdb-1920-80.jpg" alt="A close up of the keycaps on the Razer Reclusa X Mini" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/G2WqZ4yhtwtW2vPDQWyvAn-1920-80.jpg" alt="The arrow keys (and others) of the Razer Reclusa X Mini 65% gaming keyboard" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/qVZmV2sZn53dvuRrX8nKNg-1920-80.jpg" alt="The rear of the Razer Reclusa X Mini 65%" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Software feature-wise, you get Snap Tap (<a href="https://www.pcgamer.com/hardware/gaming-keyboards/what-is-socd-snap-tap/" target="_blank">Razer's name for SOCD</a>), Snap Flex for assigning specific actions to a key release, and Dual-Keypress Priority, which aims to make game movement more consistent by only registering a new directional input once you've let go of two previous ones. All via Razer Synapse, of course, which is where you can also control the lighting.</p><p>And rather impressive lighting it is, too. The LEDs are south-facing, which should mean the glow shines properly beneath a wide range of keycaps. It's currently lit up in an icey blue as I write this review, and it's a sharp-looking effect. Admittedly I can spot a bit of light escaping through the bottom of the keycap material, but it's no big deal.</p><h2 class="article-body__section" id="section-razer-reclusa-x-mini-65-ergonomics"><span>Razer Reclusa X Mini 65%: Ergonomics</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="M5NKRdTamp2oZ8avPrH5Rk" name="Razereclusaergo" alt="A Razer Reclusa X Mini 65% gaming keyboard on gravel, shot from the user typing position" src="https://cdn.mos.cms.futurecdn.net/M5NKRdTamp2oZ8avPrH5Rk-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 used to be a full-size keyboard enjoyer, but every time I see one these days they look increasingly desk-dominating. Even by 65% keyboard standards, though, the Reclusa X Mini is diminutive. It's a teeny little keeb, but that doesn't mean that typing on it feels constrictive.</p><p>Quite the opposite, in fact. The keycaps are full-sized, the layout is comfortable, and the crisp edges of both the chassis and the keycap design make for a precise-feeling experience. The effect is enhanced by the Orange tactile switches, which have a meaty 50 g actuation force and 3.5 mm travel distance.</p><p>I've found my typing accuracy to improve with these accidental-keypress-resistant switches, although they won't be to everyone's taste. They also feel nicely weighty for gaming inputs, which makes this keeb a genuine joy to play shooters on. Plus, given the smaller sizing, there's plenty of room left on your desk to position this keeb exactly where you want 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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Kx3wfc23FtYCRqUJSwyteA" name="20260921_093911" alt="The Razer Reclusa X Mini 65% next to a Logitech MX Master 4 on a wooden desk" src="https://cdn.mos.cms.futurecdn.net/Kx3wfc23FtYCRqUJSwyteA-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>If you're a desk mat user, your gaming mouse will have lots of space to roam around on. Or if you're me, there'll be more room for snacks. Razer's keyboards might be getting smaller, but I'm getting l-l-l-larger. </p><p>Anyway, while the Reclusa X Mini might not have anything particularly special going on in the ergonomics department, it's got most of the things you reasonably need, implemented in very tactile, satisfying ways.</p><p>My one hang up is the lack of feet on the underside for height and tilt adjustability. The Reclusa's chassis is already tilted towards you quite significantly, and for me, it's pretty much perfect. However, those that like a more aggressive tilt (or a flatter typing experience) have no built-in option to change it. May I suggest, err, propping it up with a coaster?</p><h2 class="article-body__section" id="section-razer-reclusa-x-mini-65-aesthetics"><span>Razer Reclusa X Mini 65%: Aesthetics</span></h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/utiy9EeqRKmJ4ZF85y3gmK-1920-80.jpg" alt="Close ups of the Razer Reclusa X Mini 65% gaming keyboard showing the RGB lighting effect" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/sjX3k95pzDTE3czF8FCTzK-1920-80.jpg" alt="Close ups of the Razer Reclusa X Mini 65% gaming keyboard showing the RGB lighting effect" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/mjTFDXcgDJU4ZaLN3o5G2L-1920-80.jpg" alt="Close ups of the Razer Reclusa X Mini 65% gaming keyboard showing the RGB lighting effect" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>I tend to like my hardware fully stealthed-out in black, wherever possible. And I usually <em>hate </em>colour<em> </em>mismatched keycaps. However, the Reclusa X Mini's black/green/white colour combo is very aesthetically pleasing in person. Add some RGB lighting underneath to taste, and you've got yourself a seriously stylish input device.</p><p>It looks (and as I've pointed out above, feels) like a better keyboard than its $50 price tag suggests. I particularly like the defined edge running around the top of the outer chassis, which is tucked in enough that it doesn't interfere with my palms or dangling fingers when I'm gaming/typing, but gives the whole thing a crisp, edge-cut look.</p><p>To misquote ZZ Top, this is a sharp-dressed keeb. And should you wish to customise it to your tastes later on, the swappable keycaps should make the whole process reasonably straightforward. I want for little else in the aesthetics department, that's for sure.</p><h3 class="article-body__section" id="section-razer-reclusa-x-mini-65-sound"><span>Razer Reclusa X Mini 65%: Sound</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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="j7U62zmYrawLxdfRJzrUSW" name="20260924_111314" alt="A close up of the keycaps of the Razer Reclusa X Mini 65% gaming keyboard, lit in green" src="https://cdn.mos.cms.futurecdn.net/j7U62zmYrawLxdfRJzrUSW-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>Ah, keyboard sound. The most subjective of subjects. I first heard the Razer Reclusa X Mini 65% in a crowded booth at Gamescom earlier this year, and it had a crispy, crunchy quality to it that I rather enjoyed.</p><p>Typing on it in my quiet front room, I think it's perhaps a little more divisive than I initially realised. Still, I personally like the way the Reclusa sounds. The internal deadening layers (in combination with the slightly-crunchy switches and the thick keycaps) make for a satisfying aural experience, although it's far from the quietest.</p><p><em>(volume up!)</em></p><iframe src="https://content.jwplatform.com/players/ExB4q97h.html" id="ExB4q97h" title="20260924 105546" width="1920" height="1080" frameborder="0" scrolling="auto" allowfullscreen></iframe><p>One person's crispy, crunchy delight is another's ear-annoying nightmare. However, there's a slight weightiness to the typing noise that again makes the little Razer more reminiscent of a high-end, enthusiast-level product. It's a sort of… self-assured sound, with no distracting switch-pinging. </p><p>Crispy, crunchy, and clean. That's about as far as I can go via the medium of text to describe such a sound, so I'll let you be the judge for yourself by listening to the video clip above.</p><h3 class="article-body__section" id="section-razer-reclusa-x-mini-65-software"><span>Razer Reclusa X Mini 65%: Software</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:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="4pR2FW92EnSJjkNTGR9gmb" name="Synapse1" alt="Razer Synapse settings for the Reclusa X Mini 65% gaming keyboard" src="https://cdn.mos.cms.futurecdn.net/4pR2FW92EnSJjkNTGR9gmb-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: Razer)</span></figcaption></figure><p>Razer Synapse is not my favourite piece of software, but<strong> </strong>at least it's fairly straightforward. Select the keeb within the homescreen menu, and you've got gaming mode to play with (in which you can disable the Windows key and any annoying key combos for a less frustrating experience), polling rates to play with (why you'd turn the rate down on a wired keyboard is beyond me) and various other goodies.</p><p>And yes, the controversial Snap Tap feature lives here. I personally find that assisted counter-strafing doesn't improve my K:D ratio very much, so it's not exactly a game–changer for me. However, I'm also old and tired. Younger, more esports-level players may well find some benefit—although <a href="https://www.pcgamer.com/games/fps/valve-says-weve-decided-to-draw-a-clear-line-and-bans-snap-tap-keyboard-automation-from-counter-strike-2/" target="_blank">you should definitely avoid it in Counter Strike 2</a>.</p><p>Then there's Snap Flex, which allows you to assign up to four individual keys to perform two separate actions when pressed, then released. So, jump+grenade, that sort of thing. I haven't been able to find much use for it in everything I've played on this keyboard so far, but then I'm more of a slow-paced tactical shooter sort of guy than a Valorant fiend. That's what they're called these days, right?</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="9WNZekEcrKzvUGnTTh8Nrh" name="Synapse2" alt="Keyboard settings in Razer Synapse for the Reclusa X Mini 65% gaming keyboard" src="https://cdn.mos.cms.futurecdn.net/9WNZekEcrKzvUGnTTh8Nrh-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/9WNZekEcrKzvUGnTTh8Nrh-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: Razer)</span></figcaption></figure><p>You can also assign macro and keystroke interruption to a dedicated key, which will come in handy for MMO-ers, or activate the Dual-Keypress Priority feature, which lets you set pairs of keys that will stay active when others are pressed for more consistent movement if you accidentally press the wrong direction key.</p><p>These are all nice-to-have features, but are far from necessary for a good gaming keyboard. Still, Synapse does a good job of organizing them, and the more competitive gamers among us will likely find some good uses. Or ignore them entirely, and simply get on with the business of enjoying a really nice budget keeb. One of the two, at least.</p><h2 class="article-body__section" id="section-razer-reclusa-x-mini-65-value"><span>Razer Reclusa X Mini 65%: 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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="F5ztxKWJpmThNEVTbw8WuV" name="20260921_093920" alt="The Razer Reclusa X Mini 65% gaming keyboard on a desk, with an ergo mouse underneath it" src="https://cdn.mos.cms.futurecdn.net/F5ztxKWJpmThNEVTbw8WuV-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>It feels like every review I write these days ends with the phrase "...it's a shame it's too expensive." However, in the Reclusa X Mini's case, I think its $50 price tag is darn impressive given the stout little keyboard you end up receiving.</p><p>Its main competition in this price bracket comes in the form of the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/gamakay-x-naughshark-ns68-review/" target="_blank">Gamakay x NaughShark NS68</a>, a miniature keeb that has reigned supreme as our <a href="https://www.pcgamer.com/best-gaming-keyboard/#section-the-best-budget-gaming-keyboard" target="_blank">best budget gaming keyboard</a> pick for some time now. It's got PBT keycaps, 8,000 Hz polling, and powerful Hall effect switches, all for a $40 MSRP.</p><p>Which you prefer will likely come down to what features you value the most. While the NaughShark NS68 has a much better specs sheet, sticking the two side-by-side and using them for a day reveals something that surprises me. Out of the two, I'd happily pick the Razer without a second thought.</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="SsHdKTFGZhmntFZYSYZetL" name="20260922_144310" alt="A Razer Reclusa X Mini 65% and a Gamakay x NaughShark NS68 gaming keyboard next to each other on a desk" src="https://cdn.mos.cms.futurecdn.net/SsHdKTFGZhmntFZYSYZetL-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>It's a super-subjective thing, of course. And perhaps the NS68's cheap-feeling plastics (and to my eyes, ugly aesthetics) have caused me to misjudge it, given the technical hardware benefits inside. But typing and gaming on the Reclusa X Mini, thanks to those crisp keycaps and weighty switches, simply <em>feels </em>better to me—and it makes a much better noise, too.</p><p>These are the things I value most in a good keyboard, whereas a more competitively-minded gamer may disagree. Still, I'll be keeping the little Razer on my desk for a while to come. Who would have thought a cheap mini keeb would be one of the best things I've tested so far this year? It's full of surprises, 2026. I'll give it that at least.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-keyboards/razer-reclusa-x-mini-65-percent-review/</link>
                                                                            <description>
                            <![CDATA[ A budget mini keeb that somehow manages to feel high-end. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">5S3EE8WZfdFfAQPjpW6kCT</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/YSG4N9J9jHFHRxpSnGamWe-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 24 Sep 2026 11:05:07 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Keyboards]]></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/YSG4N9J9jHFHRxpSnGamWe-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A Razer Reclusa X Mini 65% gaming keyboard with rainbow-coloured RGB lighting on a wooden desk]]></media:description>                                                            <media:text><![CDATA[A Razer Reclusa X Mini 65% gaming keyboard with rainbow-coloured RGB lighting on a wooden desk]]></media:text>
                                <media:title type="plain"><![CDATA[A Razer Reclusa X Mini 65% gaming keyboard with rainbow-coloured RGB lighting on a wooden desk]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/YSG4N9J9jHFHRxpSnGamWe-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div data-widget-type="review" data-model-name="Razer Reclusa X Mini 65%"></div><p>While Razer makes some excellent headsets, laptops, and gaming mice, I've never been particularly keen on its keyboards. They tend to be decent devices overall, but are usually expensive enough that you can get more bang for your buck from the competition. However, there's a new budget offering in town from the big green snake, and it's called the Razer Reclusa X Mini 65%.<br><br>Those of you familiar with keyboard percentage figures (and the term "mini") will likely deduce that this is a small keeb. There's no numpad to be found here, but at least you get all the main keys needed for day to day usage. It doesn't feel constrictive to type on, and it sure is a good-looking device—but the main thing that impresses me is the build quality, especially given the MSRP.<br><br>This is a <a href="https://www.razer.com/gaming-keyboards/razer-reclusa-x-mini-65" target="_blank">$50</a>/<a href="https://www.razer.com/gb-en/gaming-keyboards/razer-reclusa-x-mini-65" target="_blank">£60</a> gaming keyboard, but it feels more expensive than that. The doubleshot ABS keycaps are crisp, the switches are meaty, and its diminutive frame resists flexing to an admirable degree. If you told me this sharp little keyboard retailed for $80, I would absolutely believe you. For $50 at full price? I think it's a damn good bit of gaming hardware for the cash.<br><br>The specs sheet isn't particularly impressive, I'll give you that. 1,000 Hz wired polling, no Hall effect switches, no dedicated multimedia keys. And there's no height adjustment. But if what you're looking for in your next <a href="https://www.pcgamer.com/best-gaming-keyboard/" target="_blank">gaming keyboard</a> is something that doesn't take up much room on your desk, feels great to type and game on, and doesn't break the bank, I reckon the little Reclusa is very hard to beat.</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 proper enthusiast keeb on a budget:</strong> I'm used to $50 gaming keyboards feeling… well, cheap. This one feels like a genuine enthusiast keyboard, without the prohibitive price tag.<br><br>✅ <strong>You want something small and stylish: </strong>The Reclusa X Mini 65% doesn't take up much room on your desk, and looks downright excellent with a dash of RGB.</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 with competitive gamer specs:</strong> The Reclusa is plenty good enough for most gamers, but there's no 8,000 Hz polling or fancy Hall effect switches to play with.<br><br>❌ <strong>You want dedicated media keys: </strong>There's simply no room for anything beyond a 65% layout, so no single-purpose media knobs or buttons for you.</p></div></div></div></div><h2 class="article-body__section" id="section-razer-reclusa-x-mini-65-features"><span>Razer Reclusa X Mini 65%: 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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="YgXYcfb4Cys3xanXdqmcE8" name="20260921_093504" alt="The Razer Reclusa X Mini 65% gaming keyboard held in the hand outside, in front of some foliage" src="https://cdn.mos.cms.futurecdn.net/YgXYcfb4Cys3xanXdqmcE8-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 ><table><caption>Razer Reclusa X Mini 65% specs</caption><tbody><tr><td class="firstcol " ><p><strong>Layout</strong></p></td><td  ><p>65%</p></td></tr><tr><td class="firstcol " ><p><strong>Switches</strong></p></td><td  ><p>Razer Gen-3 Orange Tactile, mechanical</p></td></tr><tr><td class="firstcol " ><p><strong>Travel distance</strong></p></td><td  ><p>3.5 mm</p></td></tr><tr><td class="firstcol " ><p><strong>Actuation force</strong></p></td><td  ><p>50 g</p></td></tr><tr><td class="firstcol " ><p><strong>Polling rate</strong></p></td><td  ><p>1,000 Hz</p></td></tr><tr><td class="firstcol " ><p><strong>RGB lighting</strong></p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Dedicated multimedia keys</strong></p></td><td  ><p>No</p></td></tr><tr><td class="firstcol " ><p><strong>Connection</strong></p></td><td  ><p>Wired, USB Type-C to Type-A</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p><a href="https://www.razer.com/gaming-keyboards/razer-reclusa-x-mini-65" target="_blank">$50</a>/<a href="https://www.razer.com/gb-en/gaming-keyboards/razer-reclusa-x-mini-65" target="_blank">£60</a></p></td></tr></tbody></table></div><p>The Reclusa X Mini 65% is a small keyboard. That's the first thing you'll notice when you pull it from the box. The second thing is the white, green, and black colour scheme, and its reasonable weight. It's around 700 g according to my miniature scales. That's positively featherweight compared to my <a href="https://www.pcgamer.com/hardware/gaming-keyboards/glorious-gmmk-3-he-keyboard-review/" target="_blank">brass-plated custom Glorious GMMK 3</a>, but thanks to the robust-feeling chassis, it's not light enough to cause immediate concern.</p><p>It's got lovely crisp keycaps, too, being of the doubleshot ABS variety. The switches underneath are Razer's Gen-3 Orange tactile models, and they're also pretty snappy—although you can hotswap them out for your preferred three-pin or five-pin models if you wish. Inside, the Reclusa X Mini has dual layer silicone sound dampening sandwiched within its frame.</p><p>Esports-fuelled, 8,000 Hz polling enthusiasts won't be blown away by its 1,000 Hz rate, but the rest of us will likely find it plenty speedy enough. It's also a wired keeb only, which I actually prefer. Wireless keyboards have a tendency to end up plugged in all the time on your desk, as having another device to charge usually creates more hassle than it's worth. Plus, eschewing a wireless receiver keeps the price down.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/8LsvvaMBjh4GGXfMMTzpVP-1920-80.jpg" alt="A Razer Reclusa X Mini 65% gaming keyboard shot from above, on a wooden desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/feBqSXrizen5XkQQZ8NDdW-1920-80.jpg" alt="A Razer Reclusa X Mini 65% gaming keyboard on top of gravel" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/FUa5MrFgTtMaAaDv9uVVdb-1920-80.jpg" alt="A close up of the keycaps on the Razer Reclusa X Mini" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/G2WqZ4yhtwtW2vPDQWyvAn-1920-80.jpg" alt="The arrow keys (and others) of the Razer Reclusa X Mini 65% gaming keyboard" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/qVZmV2sZn53dvuRrX8nKNg-1920-80.jpg" alt="The rear of the Razer Reclusa X Mini 65%" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Software feature-wise, you get Snap Tap (<a href="https://www.pcgamer.com/hardware/gaming-keyboards/what-is-socd-snap-tap/" target="_blank">Razer's name for SOCD</a>), Snap Flex for assigning specific actions to a key release, and Dual-Keypress Priority, which aims to make game movement more consistent by only registering a new directional input once you've let go of two previous ones. All via Razer Synapse, of course, which is where you can also control the lighting.</p><p>And rather impressive lighting it is, too. The LEDs are south-facing, which should mean the glow shines properly beneath a wide range of keycaps. It's currently lit up in an icey blue as I write this review, and it's a sharp-looking effect. Admittedly I can spot a bit of light escaping through the bottom of the keycap material, but it's no big deal.</p><h2 class="article-body__section" id="section-razer-reclusa-x-mini-65-ergonomics"><span>Razer Reclusa X Mini 65%: Ergonomics</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="M5NKRdTamp2oZ8avPrH5Rk" name="Razereclusaergo" alt="A Razer Reclusa X Mini 65% gaming keyboard on gravel, shot from the user typing position" src="https://cdn.mos.cms.futurecdn.net/M5NKRdTamp2oZ8avPrH5Rk-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 used to be a full-size keyboard enjoyer, but every time I see one these days they look increasingly desk-dominating. Even by 65% keyboard standards, though, the Reclusa X Mini is diminutive. It's a teeny little keeb, but that doesn't mean that typing on it feels constrictive.</p><p>Quite the opposite, in fact. The keycaps are full-sized, the layout is comfortable, and the crisp edges of both the chassis and the keycap design make for a precise-feeling experience. The effect is enhanced by the Orange tactile switches, which have a meaty 50 g actuation force and 3.5 mm travel distance.</p><p>I've found my typing accuracy to improve with these accidental-keypress-resistant switches, although they won't be to everyone's taste. They also feel nicely weighty for gaming inputs, which makes this keeb a genuine joy to play shooters on. Plus, given the smaller sizing, there's plenty of room left on your desk to position this keeb exactly where you want 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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Kx3wfc23FtYCRqUJSwyteA" name="20260921_093911" alt="The Razer Reclusa X Mini 65% next to a Logitech MX Master 4 on a wooden desk" src="https://cdn.mos.cms.futurecdn.net/Kx3wfc23FtYCRqUJSwyteA-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>If you're a desk mat user, your gaming mouse will have lots of space to roam around on. Or if you're me, there'll be more room for snacks. Razer's keyboards might be getting smaller, but I'm getting l-l-l-larger. </p><p>Anyway, while the Reclusa X Mini might not have anything particularly special going on in the ergonomics department, it's got most of the things you reasonably need, implemented in very tactile, satisfying ways.</p><p>My one hang up is the lack of feet on the underside for height and tilt adjustability. The Reclusa's chassis is already tilted towards you quite significantly, and for me, it's pretty much perfect. However, those that like a more aggressive tilt (or a flatter typing experience) have no built-in option to change it. May I suggest, err, propping it up with a coaster?</p><h2 class="article-body__section" id="section-razer-reclusa-x-mini-65-aesthetics"><span>Razer Reclusa X Mini 65%: Aesthetics</span></h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/utiy9EeqRKmJ4ZF85y3gmK-1920-80.jpg" alt="Close ups of the Razer Reclusa X Mini 65% gaming keyboard showing the RGB lighting effect" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/sjX3k95pzDTE3czF8FCTzK-1920-80.jpg" alt="Close ups of the Razer Reclusa X Mini 65% gaming keyboard showing the RGB lighting effect" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/mjTFDXcgDJU4ZaLN3o5G2L-1920-80.jpg" alt="Close ups of the Razer Reclusa X Mini 65% gaming keyboard showing the RGB lighting effect" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>I tend to like my hardware fully stealthed-out in black, wherever possible. And I usually <em>hate </em>colour<em> </em>mismatched keycaps. However, the Reclusa X Mini's black/green/white colour combo is very aesthetically pleasing in person. Add some RGB lighting underneath to taste, and you've got yourself a seriously stylish input device.</p><p>It looks (and as I've pointed out above, feels) like a better keyboard than its $50 price tag suggests. I particularly like the defined edge running around the top of the outer chassis, which is tucked in enough that it doesn't interfere with my palms or dangling fingers when I'm gaming/typing, but gives the whole thing a crisp, edge-cut look.</p><p>To misquote ZZ Top, this is a sharp-dressed keeb. And should you wish to customise it to your tastes later on, the swappable keycaps should make the whole process reasonably straightforward. I want for little else in the aesthetics department, that's for sure.</p><h3 class="article-body__section" id="section-razer-reclusa-x-mini-65-sound"><span>Razer Reclusa X Mini 65%: Sound</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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="j7U62zmYrawLxdfRJzrUSW" name="20260924_111314" alt="A close up of the keycaps of the Razer Reclusa X Mini 65% gaming keyboard, lit in green" src="https://cdn.mos.cms.futurecdn.net/j7U62zmYrawLxdfRJzrUSW-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>Ah, keyboard sound. The most subjective of subjects. I first heard the Razer Reclusa X Mini 65% in a crowded booth at Gamescom earlier this year, and it had a crispy, crunchy quality to it that I rather enjoyed.</p><p>Typing on it in my quiet front room, I think it's perhaps a little more divisive than I initially realised. Still, I personally like the way the Reclusa sounds. The internal deadening layers (in combination with the slightly-crunchy switches and the thick keycaps) make for a satisfying aural experience, although it's far from the quietest.</p><p><em>(volume up!)</em></p><iframe src="https://content.jwplatform.com/players/ExB4q97h.html" id="ExB4q97h" title="20260924 105546" width="1920" height="1080" frameborder="0" scrolling="auto" allowfullscreen></iframe><p>One person's crispy, crunchy delight is another's ear-annoying nightmare. However, there's a slight weightiness to the typing noise that again makes the little Razer more reminiscent of a high-end, enthusiast-level product. It's a sort of… self-assured sound, with no distracting switch-pinging. </p><p>Crispy, crunchy, and clean. That's about as far as I can go via the medium of text to describe such a sound, so I'll let you be the judge for yourself by listening to the video clip above.</p><h3 class="article-body__section" id="section-razer-reclusa-x-mini-65-software"><span>Razer Reclusa X Mini 65%: Software</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:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="4pR2FW92EnSJjkNTGR9gmb" name="Synapse1" alt="Razer Synapse settings for the Reclusa X Mini 65% gaming keyboard" src="https://cdn.mos.cms.futurecdn.net/4pR2FW92EnSJjkNTGR9gmb-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: Razer)</span></figcaption></figure><p>Razer Synapse is not my favourite piece of software, but<strong> </strong>at least it's fairly straightforward. Select the keeb within the homescreen menu, and you've got gaming mode to play with (in which you can disable the Windows key and any annoying key combos for a less frustrating experience), polling rates to play with (why you'd turn the rate down on a wired keyboard is beyond me) and various other goodies.</p><p>And yes, the controversial Snap Tap feature lives here. I personally find that assisted counter-strafing doesn't improve my K:D ratio very much, so it's not exactly a game–changer for me. However, I'm also old and tired. Younger, more esports-level players may well find some benefit—although <a href="https://www.pcgamer.com/games/fps/valve-says-weve-decided-to-draw-a-clear-line-and-bans-snap-tap-keyboard-automation-from-counter-strike-2/" target="_blank">you should definitely avoid it in Counter Strike 2</a>.</p><p>Then there's Snap Flex, which allows you to assign up to four individual keys to perform two separate actions when pressed, then released. So, jump+grenade, that sort of thing. I haven't been able to find much use for it in everything I've played on this keyboard so far, but then I'm more of a slow-paced tactical shooter sort of guy than a Valorant fiend. That's what they're called these days, right?</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="9WNZekEcrKzvUGnTTh8Nrh" name="Synapse2" alt="Keyboard settings in Razer Synapse for the Reclusa X Mini 65% gaming keyboard" src="https://cdn.mos.cms.futurecdn.net/9WNZekEcrKzvUGnTTh8Nrh-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/9WNZekEcrKzvUGnTTh8Nrh-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: Razer)</span></figcaption></figure><p>You can also assign macro and keystroke interruption to a dedicated key, which will come in handy for MMO-ers, or activate the Dual-Keypress Priority feature, which lets you set pairs of keys that will stay active when others are pressed for more consistent movement if you accidentally press the wrong direction key.</p><p>These are all nice-to-have features, but are far from necessary for a good gaming keyboard. Still, Synapse does a good job of organizing them, and the more competitive gamers among us will likely find some good uses. Or ignore them entirely, and simply get on with the business of enjoying a really nice budget keeb. One of the two, at least.</p><h2 class="article-body__section" id="section-razer-reclusa-x-mini-65-value"><span>Razer Reclusa X Mini 65%: 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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="F5ztxKWJpmThNEVTbw8WuV" name="20260921_093920" alt="The Razer Reclusa X Mini 65% gaming keyboard on a desk, with an ergo mouse underneath it" src="https://cdn.mos.cms.futurecdn.net/F5ztxKWJpmThNEVTbw8WuV-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>It feels like every review I write these days ends with the phrase "...it's a shame it's too expensive." However, in the Reclusa X Mini's case, I think its $50 price tag is darn impressive given the stout little keyboard you end up receiving.</p><p>Its main competition in this price bracket comes in the form of the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/gamakay-x-naughshark-ns68-review/" target="_blank">Gamakay x NaughShark NS68</a>, a miniature keeb that has reigned supreme as our <a href="https://www.pcgamer.com/best-gaming-keyboard/#section-the-best-budget-gaming-keyboard" target="_blank">best budget gaming keyboard</a> pick for some time now. It's got PBT keycaps, 8,000 Hz polling, and powerful Hall effect switches, all for a $40 MSRP.</p><p>Which you prefer will likely come down to what features you value the most. While the NaughShark NS68 has a much better specs sheet, sticking the two side-by-side and using them for a day reveals something that surprises me. Out of the two, I'd happily pick the Razer without a second thought.</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="SsHdKTFGZhmntFZYSYZetL" name="20260922_144310" alt="A Razer Reclusa X Mini 65% and a Gamakay x NaughShark NS68 gaming keyboard next to each other on a desk" src="https://cdn.mos.cms.futurecdn.net/SsHdKTFGZhmntFZYSYZetL-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>It's a super-subjective thing, of course. And perhaps the NS68's cheap-feeling plastics (and to my eyes, ugly aesthetics) have caused me to misjudge it, given the technical hardware benefits inside. But typing and gaming on the Reclusa X Mini, thanks to those crisp keycaps and weighty switches, simply <em>feels </em>better to me—and it makes a much better noise, too.</p><p>These are the things I value most in a good keyboard, whereas a more competitively-minded gamer may disagree. Still, I'll be keeping the little Razer on my desk for a while to come. Who would have thought a cheap mini keeb would be one of the best things I've tested so far this year? It's full of surprises, 2026. I'll give it that at least.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Framework cancels custom low profile keyboard module for its laptops: 'We weren’t able to bring costs to a place where the product economics worked' ]]></title>
                                                                                                <dc:content><![CDATA[ <p>It's easier than ever to make a gaming desktop feel all your own. The same is arguably much less true of gaming laptops, though Framework is one company hoping to expand the horizons of gaming-on-the-go through modular upgrades. However, sometimes even Framework has to call it quits when a design idea simply does not come together.</p><p>The low-profile keyboard fiends are gathered here today to pour one out for the <a href="https://frame.work/gb/en/blog/one-key-module-developer-program-recap" target="_blank">One Key Module Developer Program</a>, which was <a href="https://x.com/FrameworkPuter/status/2001746402423246893" target="_blank">first opened up in December 2025</a>. The initial aim of this was to develop "custom ultra-low-profile keyboards and Input Modules for <a href="https://www.pcgamer.com/framework-16-modular-gaming-laptop-review/" target="_blank">Framework Laptop 16</a>." Unfortunately, after three years total of prototyping and taking on developer feedback, Framework has shared that it isn't able to turn the keyboard module into "a sellable product".</p><p>There's a few reasons for this, and I doubt number one will shock you: cost. Framework writes, "We weren’t able to bring material and assembly costs along with manufacturing yield to a place where the product economics worked. The per-key costs resulted in breakeven pricing too high to reasonably enable high volume sales, and neither we nor our suppliers can take on the overhead of manufacturing a product of this complexity at low volumes."</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>To expand on that lattermost point about hardware complexity, apparently even "the expert DIYers and electronics tinkerers" that collaborated with Framework via the developer program had trouble "reliably assembling the One Key Module into their designs." Parts of the One Key Module were apparently "too fragile for easy handling," which is far from ideal in any kind of DIY hardware project.</p><p>Though the One Key Module will never see a wider release, Framework has chosen to give away what prototype development modules it still had to those who helped build the thing up to this point. If you fancy having a go at tinkering yourself, Framework has uploaded <a href="https://github.com/frameworkcomputer/" target="_blank">open source documentation and firmware for its laptops' input module systems to GitHub</a>. If you're looking for some inspiration, the company also highlighted some early One Key Module developer designs <a href="https://frame.work/blog/one-key-module-developer-program-recap" target="_blank">over on its blog</a>.</p><p>Though the module definitely wasn't my cup of tea, Framework's transparency definitely is. Most recently, I was pretty impressed by the company's decision to <a href="https://www.pcgamer.com/hardware/memory/good-news-for-some-framework-swims-against-the-tide-of-the-rampocalypse-by-retroactively-reducing-its-lpcamm2-prices/" target="_blank">swim against the tide of the RAMpocalypse by 'retroactively reducing' its LPCAMM2 prices</a>. If only more of hardware's heavy-hitters were as candid with consumers.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-keyboards/framework-cancels-custom-low-profile-keyboard-module-for-its-laptops-we-werent-able-to-bring-costs-to-a-place-where-the-product-economics-worked/</link>
                                                                            <description>
                            <![CDATA[ When 'custom' comes at too high a cost. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">b4o6sxPmBQpqmBxFv3SPvP</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/6JWvZvtAdJJNKedvuYuNzh-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 11 Sep 2026 16:10:03 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Keyboards]]></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/6JWvZvtAdJJNKedvuYuNzh-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Framework 16 gaming laptop]]></media:description>                                                            <media:text><![CDATA[Framework 16 gaming laptop]]></media:text>
                                <media:title type="plain"><![CDATA[Framework 16 gaming laptop]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/6JWvZvtAdJJNKedvuYuNzh-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>It's easier than ever to make a gaming desktop feel all your own. The same is arguably much less true of gaming laptops, though Framework is one company hoping to expand the horizons of gaming-on-the-go through modular upgrades. However, sometimes even Framework has to call it quits when a design idea simply does not come together.</p><p>The low-profile keyboard fiends are gathered here today to pour one out for the <a href="https://frame.work/gb/en/blog/one-key-module-developer-program-recap" target="_blank">One Key Module Developer Program</a>, which was <a href="https://x.com/FrameworkPuter/status/2001746402423246893" target="_blank">first opened up in December 2025</a>. The initial aim of this was to develop "custom ultra-low-profile keyboards and Input Modules for <a href="https://www.pcgamer.com/framework-16-modular-gaming-laptop-review/" target="_blank">Framework Laptop 16</a>." Unfortunately, after three years total of prototyping and taking on developer feedback, Framework has shared that it isn't able to turn the keyboard module into "a sellable product".</p><p>There's a few reasons for this, and I doubt number one will shock you: cost. Framework writes, "We weren’t able to bring material and assembly costs along with manufacturing yield to a place where the product economics worked. The per-key costs resulted in breakeven pricing too high to reasonably enable high volume sales, and neither we nor our suppliers can take on the overhead of manufacturing a product of this complexity at low volumes."</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>To expand on that lattermost point about hardware complexity, apparently even "the expert DIYers and electronics tinkerers" that collaborated with Framework via the developer program had trouble "reliably assembling the One Key Module into their designs." Parts of the One Key Module were apparently "too fragile for easy handling," which is far from ideal in any kind of DIY hardware project.</p><p>Though the One Key Module will never see a wider release, Framework has chosen to give away what prototype development modules it still had to those who helped build the thing up to this point. If you fancy having a go at tinkering yourself, Framework has uploaded <a href="https://github.com/frameworkcomputer/" target="_blank">open source documentation and firmware for its laptops' input module systems to GitHub</a>. If you're looking for some inspiration, the company also highlighted some early One Key Module developer designs <a href="https://frame.work/blog/one-key-module-developer-program-recap" target="_blank">over on its blog</a>.</p><p>Though the module definitely wasn't my cup of tea, Framework's transparency definitely is. Most recently, I was pretty impressed by the company's decision to <a href="https://www.pcgamer.com/hardware/memory/good-news-for-some-framework-swims-against-the-tide-of-the-rampocalypse-by-retroactively-reducing-its-lpcamm2-prices/" target="_blank">swim against the tide of the RAMpocalypse by 'retroactively reducing' its LPCAMM2 prices</a>. If only more of hardware's heavy-hitters were as candid with consumers.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Our absolute favourite gaming keyboard, the Wooting 80HE, is getting a BIG KNOB, improved switches, and more ]]></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/uoxVuQYSxv0" allowfullscreen></iframe></div></div><p>The Wooting 80HE has been out for a while, but we reckon it's still the <a href="https://www.pcgamer.com/best-gaming-keyboard/" target="_blank">best gaming keyboard</a> on the market. It looks great, isn't too diminutively sized, has fantastic and very customisable software, and, of course, Hall effect switches for adjustable actuation and rapid trigger. All for a pretty reasonable price, mind you. And now it's getting an upgrade</p><p>Wooting has <a href="https://x.com/WootingKB/status/2097327342947274966?s=20" target="_blank">just announced</a> the <a href="https://wooting.io/wooting-80he-plus" target="_blank">Wooting 80HE+</a>, available for pre-order on September 17. That's a week on Thursday.</p><p>There are a number of changes coming to the new 'Plus' version, including of course the addition of a BIG KNOB, but also some less visible but arguably more important changes.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xm8v0O"></div>                            </div>                            <script src="https://kwizly.com/embed/Xm8v0O.js" async></script><p>Specifically, I'm talking about the inclusion of the same Lekker Tikken switches that you'll find in the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/wooting-60he-v2-review/" target="_blank">Wooting 60HE V2</a>. Our Jacob Ridley has really taken to this keyboard and its switches, as it's much more stable and generally pleasant-sounding and -feeling than the Lekker60 V2 switches in the original 80HE. Combine this with the new FR4 plate inside the 80HE+ and you can almost certainly expect a wonderful typing experience.</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2097327342947274966"><p lang="en" dir="ltr">The best just became better 🌟The Wooting 80HE+ is joining the Wooting roster soon!Wanna be up to date and the first to snap a pre-order on September 17?Be sure to sign up for the newsletter & news here: https://t.co/30XHJD72f2 pic.twitter.com/UpmLIO6Nlw<a href="https://twitter.com/cantworkitout/status/2097327342947274966">September 8, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>The other addition is another of our Ridley's faves: a split spacebar module. this gives you extra keys by splitting the spacebar into three.</p><p>With the original 80HE costing <a href="https://wooting.io/wooting-80he" target="_blank">about $200</a>, I'll be expecting similar for the 80HE+, And Wooting does say the pre-assembled versions will be "almost the same price". It's an expensive keyboard, for sure, but if you want the competitive benefits of Hall effect, despite the prevalence of <a href="https://www.pcgamer.com/best-gaming-keyboard/#section-the-best-budget-gaming-keyboard" target="_blank">cheaper options</a>, we've not found a better overall choice the original 80HE. Hopefully we'll be able to say the same about the 80HE+ before long.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-keyboards/our-absolute-favourite-gaming-keyboard-the-wooting-80he-is-getting-a-big-knob-improved-switches-and-more/</link>
                                                                            <description>
                            <![CDATA[ This could become the new best gaming keyboard. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">uNV5YFgZoZ5p7RqRA5q2JX</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/KheQwXMUoEGSRd5zyAEAKJ-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 08 Sep 2026 15:35:30 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Keyboards]]></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/KheQwXMUoEGSRd5zyAEAKJ-1920-80.jpg">
                                                            <media:credit><![CDATA[Wooting]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A couple of Wooting 80HE+ keyboards.]]></media:description>                                                            <media:text><![CDATA[A couple of Wooting 80HE+ keyboards.]]></media:text>
                                <media:title type="plain"><![CDATA[A couple of Wooting 80HE+ keyboards.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/KheQwXMUoEGSRd5zyAEAKJ-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/uoxVuQYSxv0" allowfullscreen></iframe></div></div><p>The Wooting 80HE has been out for a while, but we reckon it's still the <a href="https://www.pcgamer.com/best-gaming-keyboard/" target="_blank">best gaming keyboard</a> on the market. It looks great, isn't too diminutively sized, has fantastic and very customisable software, and, of course, Hall effect switches for adjustable actuation and rapid trigger. All for a pretty reasonable price, mind you. And now it's getting an upgrade</p><p>Wooting has <a href="https://x.com/WootingKB/status/2097327342947274966?s=20" target="_blank">just announced</a> the <a href="https://wooting.io/wooting-80he-plus" target="_blank">Wooting 80HE+</a>, available for pre-order on September 17. That's a week on Thursday.</p><p>There are a number of changes coming to the new 'Plus' version, including of course the addition of a BIG KNOB, but also some less visible but arguably more important changes.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xm8v0O"></div>                            </div>                            <script src="https://kwizly.com/embed/Xm8v0O.js" async></script><p>Specifically, I'm talking about the inclusion of the same Lekker Tikken switches that you'll find in the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/wooting-60he-v2-review/" target="_blank">Wooting 60HE V2</a>. Our Jacob Ridley has really taken to this keyboard and its switches, as it's much more stable and generally pleasant-sounding and -feeling than the Lekker60 V2 switches in the original 80HE. Combine this with the new FR4 plate inside the 80HE+ and you can almost certainly expect a wonderful typing experience.</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2097327342947274966"><p lang="en" dir="ltr">The best just became better 🌟The Wooting 80HE+ is joining the Wooting roster soon!Wanna be up to date and the first to snap a pre-order on September 17?Be sure to sign up for the newsletter & news here: https://t.co/30XHJD72f2 pic.twitter.com/UpmLIO6Nlw<a href="https://twitter.com/cantworkitout/status/2097327342947274966">September 8, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>The other addition is another of our Ridley's faves: a split spacebar module. this gives you extra keys by splitting the spacebar into three.</p><p>With the original 80HE costing <a href="https://wooting.io/wooting-80he" target="_blank">about $200</a>, I'll be expecting similar for the 80HE+, And Wooting does say the pre-assembled versions will be "almost the same price". It's an expensive keyboard, for sure, but if you want the competitive benefits of Hall effect, despite the prevalence of <a href="https://www.pcgamer.com/best-gaming-keyboard/#section-the-best-budget-gaming-keyboard" target="_blank">cheaper options</a>, we've not found a better overall choice the original 80HE. Hopefully we'll be able to say the same about the 80HE+ before long.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I got my hands on Razer's new $50 mechanical mini keeb and it makes a damn good first impression ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Razer had a bountiful display of products to show at Gamescom 2026, many of which come with substantial price tags. However, my eyes lit up when I saw the new <a href="https://razer.com/gaming-keyboards/razer-reclusa-x-mini-65" target="_blank">Razer Reclusa X Mini 65% keyboard</a>, especially as it's got a $50/£60 MSRP.</p><p>I picked it up and twisted it around in my hands, expecting it to bend like a piece of cardboard thanks to some budget materials. Nope, it seems like a very solidly-built device—which is pretty impressive given the affordable price tag.</p><p>The doubleshot ABS keycaps, in combination with <a href="https://www.razer.com/gaming-keyboards-accessories/razer-mechanical-switches" target="_blank">Razer's Gen-3 orange tactile switches</a>, feel downright high-end. It makes a good noise, too, producing the sort of weighty thock I normally associate with much more expensive keebs. I've used enough $50 boards to know that you usually don't get a whole lot for your cash, but this one feels like a proper enthusiast offering—even if it does come in a shrunken 65% form factor.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xm8v0O"></div>                            </div>                            <script src="https://kwizly.com/embed/Xm8v0O.js" async></script><p>The switches are hot-swappable, with both 3-pin and 5-pin models supported. The orange ones it comes with are designed to deliver a "crisp, satisfying tactile bump without the click," according to the press release, and I can confirm this to be true. </p><p>I hate overly-clicky tactile switches, but these are rather nice. They're specced out with a 3.5 mm travel distance and 50 g of actuation force, which combines with the keycaps to make for a satisfying typing experience. At least, for the brief time I got to play with it. It was torn from my hands eventually, as there were more RGB-lit sights to see. Shame.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/ouQsUrYRVr7H8EgA7x4b38-1920-80.jpg" alt="The Razer Reclusa X Mini 65% gaming keyboard at Gamescom 2026" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/kZAV6KFrfG8NSpFedBkw78-1920-80.jpg" alt="The Razer Reclusa X Mini 65% gaming keyboard at Gamescom 2026" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/tAMwaSmwn7domxUdGRVZ88-1920-80.jpg" alt="The Razer Reclusa X Mini 65% gaming keyboard at Gamescom 2026" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The Reclusa X Mini 65% also supports Snap Tap, Razer's version of the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/what-is-socd-snap-tap/" target="_blank">somewhat-controversial SOCD tech</a>, which uses the most recent input when two keys are pressed for faster counter strafing. It also supports Snap Flex, which can be used to bind two key inputs into a single press. Nothing revolutionary there, but it's probably enough to keep the competitive gaming crowd interested.</p><p>That being said, as someone that primarily likes a good keyboard for its feel underneath my fingertips, not necessarily for its esports-like credentials, I'm more interested in the build quality combined with the price tag.</p><p>As PC component costs skyrocket, any cash you can save on decent peripherals means more in the kitty for <a href="https://www.pcgamer.com/the-best-graphics-cards/" target="_blank">your next graphics card</a>. And while the market is full of well-priced gaming keyboards, a lot of them are pretty uninspiring affairs. This one? I've got high hopes. </p><p>A review sample is winging its way to PC Gamer Towers as we speak, so I'll give it a proper test once it's arrived. In the meantime, enjoy some of the pretty pictures I took above. Everyone loves a good-looking keeb for reasonable cash, right?</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-keyboards/i-got-my-hands-on-razers-new-usd50-mechanical-mini-keeb-and-it-makes-a-damn-good-first-impression/</link>
                                                                            <description>
                            <![CDATA[ It's got an entry-level MSRP, but still feels like an enthusiast-level device. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">zAQjkgfFzuuuYevbeCBw4b</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/RmXK9Rme4Q6j2VizaufM3A-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 08 Sep 2026 15:01:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Keyboards]]></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/RmXK9Rme4Q6j2VizaufM3A-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A Razer Reclusa X Mini 65% gaming keyboard lit up with RGB lighting in the Razer booth at Gamescom 2026]]></media:description>                                                            <media:text><![CDATA[A Razer Reclusa X Mini 65% gaming keyboard lit up with RGB lighting in the Razer booth at Gamescom 2026]]></media:text>
                                <media:title type="plain"><![CDATA[A Razer Reclusa X Mini 65% gaming keyboard lit up with RGB lighting in the Razer booth at Gamescom 2026]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/RmXK9Rme4Q6j2VizaufM3A-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Razer had a bountiful display of products to show at Gamescom 2026, many of which come with substantial price tags. However, my eyes lit up when I saw the new <a href="https://razer.com/gaming-keyboards/razer-reclusa-x-mini-65" target="_blank">Razer Reclusa X Mini 65% keyboard</a>, especially as it's got a $50/£60 MSRP.</p><p>I picked it up and twisted it around in my hands, expecting it to bend like a piece of cardboard thanks to some budget materials. Nope, it seems like a very solidly-built device—which is pretty impressive given the affordable price tag.</p><p>The doubleshot ABS keycaps, in combination with <a href="https://www.razer.com/gaming-keyboards-accessories/razer-mechanical-switches" target="_blank">Razer's Gen-3 orange tactile switches</a>, feel downright high-end. It makes a good noise, too, producing the sort of weighty thock I normally associate with much more expensive keebs. I've used enough $50 boards to know that you usually don't get a whole lot for your cash, but this one feels like a proper enthusiast offering—even if it does come in a shrunken 65% form factor.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xm8v0O"></div>                            </div>                            <script src="https://kwizly.com/embed/Xm8v0O.js" async></script><p>The switches are hot-swappable, with both 3-pin and 5-pin models supported. The orange ones it comes with are designed to deliver a "crisp, satisfying tactile bump without the click," according to the press release, and I can confirm this to be true. </p><p>I hate overly-clicky tactile switches, but these are rather nice. They're specced out with a 3.5 mm travel distance and 50 g of actuation force, which combines with the keycaps to make for a satisfying typing experience. At least, for the brief time I got to play with it. It was torn from my hands eventually, as there were more RGB-lit sights to see. Shame.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/ouQsUrYRVr7H8EgA7x4b38-1920-80.jpg" alt="The Razer Reclusa X Mini 65% gaming keyboard at Gamescom 2026" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/kZAV6KFrfG8NSpFedBkw78-1920-80.jpg" alt="The Razer Reclusa X Mini 65% gaming keyboard at Gamescom 2026" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/tAMwaSmwn7domxUdGRVZ88-1920-80.jpg" alt="The Razer Reclusa X Mini 65% gaming keyboard at Gamescom 2026" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The Reclusa X Mini 65% also supports Snap Tap, Razer's version of the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/what-is-socd-snap-tap/" target="_blank">somewhat-controversial SOCD tech</a>, which uses the most recent input when two keys are pressed for faster counter strafing. It also supports Snap Flex, which can be used to bind two key inputs into a single press. Nothing revolutionary there, but it's probably enough to keep the competitive gaming crowd interested.</p><p>That being said, as someone that primarily likes a good keyboard for its feel underneath my fingertips, not necessarily for its esports-like credentials, I'm more interested in the build quality combined with the price tag.</p><p>As PC component costs skyrocket, any cash you can save on decent peripherals means more in the kitty for <a href="https://www.pcgamer.com/the-best-graphics-cards/" target="_blank">your next graphics card</a>. And while the market is full of well-priced gaming keyboards, a lot of them are pretty uninspiring affairs. This one? I've got high hopes. </p><p>A review sample is winging its way to PC Gamer Towers as we speak, so I'll give it a proper test once it's arrived. In the meantime, enjoy some of the pretty pictures I took above. Everyone loves a good-looking keeb for reasonable cash, right?</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Be Quiet! Light Mount TKL wired mechanical gaming keyboard ]]></title>
                                                                                                <dc:content><![CDATA[ <div data-widget-type="multimodelreview" data-widget-title="" data-model-name="Be Quiet! Light Mount TKL"></div><p>My prime PC gaming hours tend to be when the rest of my household is already in bed. As such, the fantastically clicky-clacky key presses of a mechanical gaming keyboard echoing through our halls isn't really ideal. It's just as well then that Be Quiet! is back with a welcome update to the very nearly silent keyboard I loved last year, the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/be-quiet-light-mount-review/" target="_blank">Light Mount</a>.</p><p>As someone with a perennially messy desk, the Light Mount TKL's 80% size is just right; I have room to swish my mouse, and I find I'm not forever accidentally hitting the capslock key as with other cut-down keebs. This TKL update offers more than just a smaller form factor, though, introducing the next generation of Be Quiet!'s Silent switches in Linear and Tactile flavours.</p><p>This TKL update also addresses one of the key problems I had with the original Light Mount by introducing new gaming features. This includes Quick Tap (SOCD), which will be sweet percussion to the ears of shooter fans—and at best eyebrow raising for the esports sickos. For those unfamiliar, SOCD stands for 'Simultaneous Opposing Cardinal Directions'. Features falling under this umbrella, like Razer's Snap Tap and now Be Quiet!'s Quick Tap, prioritises your most recent directional input, making for strafing so efficient that <a href="https://www.pcgamer.com/games/fps/valve-says-weve-decided-to-draw-a-clear-line-and-bans-snap-tap-keyboard-automation-from-counter-strike-2/" target="_blank">Valve banned it from Counter-Strike 2</a>.</p><p>Alongside Quick Tap, there's also more options for macros, and a few fresh customisation options within the IO center software. While I appreciate these additions and expansions, the TKL still isn't the most feature-packed gaming keyboard you'll find.</p><p>I still love the even-quieter switches, though. Coupled with the TKL's sturdy construction, this makes for another smart-looking package. However, it's rocking up to the rowdy PC gaming party as the quiet kid in the corner—that is to say, while some will definitely appreciate its charms, it can't compete with the louder, more popular keeb crowd.</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 something that's actually quiet:</strong> If clackier keyboards are just too loud, this is the one for you. Better yet, the new V2 Silent switches are even quieter than their predecessors.<br><br>✅ <strong>You want a keyboard for both work and play: </strong>This board's smart looks mean it will be just as at home in the office as it is next to your RGB-illuminated rig.</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> </strong> <strong>You're looking for a gaming keyboard that's the complete package: </strong>Though this does bring a few new things to Be Quiet's table, it's less fully-featured than other TKL options.<br><br>❌<strong> You're working with an extremely limited amount of desk space:</strong> As an 80% keyboard, you can definitely go smaller.</p></div></div></div></div><h2 class="article-body__section" id="section-features"><span>Features</span></h2><div ><table><tbody><tr><td class="firstcol " ><p><strong></strong></p></td><td  ><p><strong>Be Quiet! Light Mount TKL</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Switch</strong></p></td><td  ><p>Be quiet! Silent V2 Linear Mechanical Switches (Tactile also available)</p></td></tr><tr><td class="firstcol " ><p><strong>Size</strong></p></td><td  ><p>80%</p></td></tr><tr><td class="firstcol " ><p><strong>Connection type</strong></p></td><td  ><p>Wired</p></td></tr><tr><td class="firstcol " ><p><strong>Cable</strong></p></td><td  ><p>Braided USB Type-C/USB Type-A</p></td></tr><tr><td class="firstcol " ><p><strong>Onboard storage</strong></p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Backlight</strong></p></td><td  ><p>RGB LED</p></td></tr><tr><td class="firstcol " ><p><strong>Media controls</strong></p></td><td  ><p>Tactile knob, twist for volume control, tap top to mute</p></td></tr><tr><td class="firstcol " ><p><strong>Wristrest</strong></p></td><td  ><p>Yes, magnetic attachment</p></td></tr><tr><td class="firstcol " ><p><strong>Keycaps</strong></p></td><td  ><p>PBT, double-shot</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>770 g</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p>$140/€140</p></td></tr></tbody></table></div><p>The Light Mount TKL is an 80% keyboard that enjoys the latest generation of Be Quiet!'s Silent switches. Tactile switches are available, but my review unit came with the Silent Linear V2s (though if you're craving clicky-ness, the media knob in the keyboard's top left corner has got you covered). According to Be Quiet!, the new V2s feature thicker gold contact points for the copper lever inside, as well as 'optimised lubrication for quieter operation and improved responsiveness'—well, I'll be the judge of that.</p><p>The V1 switches were already astonishingly understated on the full-sized board, making the most of the original Light Mount's internal layers of sound dampening. The V2 switches on the TKL are somehow <em>even quieter</em>.</p><p>Though the new switches feel a bit on the firm side right out of the box, they soon actuate just as cleanly as the V1s. Before, I described typing on the Tactile V1s as a controlled descent onto solid ground, but the Linear V2s have a little more pleasing texture underhand. It's not like stepping on a discordantly crunchy leaf, it's more like tiptoeing over a thin layer of soft sand—I like it!</p><p>The combination of the V2s and the TKL's construction also means the space bar is now much quieter than what I found on this board's big brother. Although, it's worth noting that future productions of both the full size Light Mount and the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/be-quiet-dark-mount-review/" target="_blank">Dark Mount</a> will come with the new V2 switches.</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="7CWUJk5dQ8nYNuJr6qbtwn" name="Be Quiet Light Mount TKL mechanical gaming keyboard" alt="The Be Quiet Light Mount TKL wired mechanical gaming keyboard seen from various angles." src="https://cdn.mos.cms.futurecdn.net/7CWUJk5dQ8nYNuJr6qbtwn-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>So far, so excellent: the Light Mount TKL is an actually quiet mechanical keyboard that won't tattle on you during late night gaming sessions. So, what about those fresh gaming features? Well, let's get the least exciting addition out of the way first: You can now disable the Capslock key in Game Mode. </p><p>Cool. Moving swiftly on, the Light Mount TKL also enjoys Be Quiet's version of SOCD, Quick Tap, for the first time. Whereas the original Light Mount felt more like a fairly quiet mechanical keyboard you could also use for gaming, the TKL feels a smidge more like a gaming keyboard in its own right.</p><p>And you know what gamers love above all else? Bathing themselves in the glow of RGB lighting. Like its predecessors, the TKL implementation of RGB is similarly classy; a dedicated light strip lines the very top of the keyboard, and every switch below enjoys an 'ARGB diffuser' for tasteful per-key illumination. On top of plenty of customisation options in the IO Center software, the Light Mount TKL also features support for Microsoft Dynamic Lighting.</p><h2 class="article-body__section" id="section-performance"><span>Performance</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="peaahbSdJbUAu9C75EtLgn" name="Be Quiet Light Mount TKL mechanical gaming keyboard" alt="The Be Quiet Light Mount TKL wired mechanical gaming keyboard seen from various angles." src="https://cdn.mos.cms.futurecdn.net/peaahbSdJbUAu9C75EtLgn-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 Be Quiet! Light Mount TKL is a joy to type on. Switch-feel is really second to none in my mind. But what about gaming? Well, as I've said before, my most intense encounter in an online game recently was getting lost in <a href="https://www.pcgamer.com/games/puzzle/big-walk-review/" target="_blank">Big Walk</a> (not to mention how I tend to spend more time hiding in bushes in <a href="https://www.pcgamer.com/arc-raiders/" target="_blank">Arc Raiders</a> than running and gunning). Similarly, this isn't a gaming keyboard with the competitive scene in mind. With those expectations set, let's get into it.</p><p>I tend to accidentally hit the Capslock key on smaller form factor keyboards, such as the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/cherry-k5-pro-tmr-compact-review" target="_blank">Cherry XTRFY K5 Pro TMR Compact</a>. The option to disable this key in Game Mode is definitely welcome, though I do find myself stumbling on to Capslock a lot less with this TKL. I also found this keyboard's layout and 1,000 Hz maximum polling rate does little to impede my running around the feline-themed post office of <a href="https://www.pcgamer.com/games/sim/ive-helped-100-cats-mail-parcels-in-cat-mail-co-which-is-why-i-can-safely-say-its-one-of-the-best-management-sims-ive-played-in-a-very-long-time/" target="_blank">Cat Mail Co.</a> The Shift key for sprinting between barely organised shelves is comfortably within reach—so long as you don't subconsciously curl your hand into a weird cat paw-esque grip like I do.</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="eYqjzGmESNs74cxhQagqYn" name="Be Quiet Light Mount TKL mechanical gaming keyboard" alt="The Be Quiet Light Mount TKL wired mechanical gaming keyboard seen from various angles." src="https://cdn.mos.cms.futurecdn.net/eYqjzGmESNs74cxhQagqYn-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 TKL's precision is definitely welcome as I roll up everything in sight in <a href="https://www.pcgamer.com/games/puzzle/once-upon-a-katamari-has-reignited-my-love-for-a-series-that-hasnt-released-a-mainline-game-in-14-years-and-now-its-the-only-game-i-want-to-play/" target="_blank">Once Upon a Katamari</a>. The TKL's responsiveness already makes it easy to both slow my roll and steer clear of disaster. Quick Tap comes especially in handy here, making changing the direction of my Katamari all the snappier. Does that mean I start immediately smashing through all of my previous records? Eh, no, not exactly. A swish gaming keyboard can only do so much for a skill issue, after all.</p><p>Whether I'm whiling away the wee hours trying to improve my Katamari game, or simply lose track of time playing <a href="https://www.pcgamer.com/games/life-sim/paralives-is-home-to-the-kind-of-architectural-creative-freedom-i-havent-felt-from-a-life-sim-since-the-sims-2/" target="_blank">Paralives</a>, the Light Mount TKL's luscious layers of sound-dampening foam and updated Silent switches continue to keep the secret of my late night gaming sessions.</p><h2 class="article-body__section" id="section-build-quality"><span>Build Quality</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="HMLFFSbt9iPKydLKCvKkqn" name="Be Quiet Light Mount TKL mechanical gaming keyboard" alt="The Be Quiet Light Mount TKL wired mechanical gaming keyboard seen from various angles." src="https://cdn.mos.cms.futurecdn.net/HMLFFSbt9iPKydLKCvKkqn-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>This is a lovingly put together keyboard. I've already waxed lyrical about the factory-lubricated V2 Silent switches and their lovely, linear actuation. The keys themselves aren't completely smooth on top, offering a little bit of surface texture that's typical of PBT caps. This choice of material is generally more durable than ABS, and also tends to be much more resistant to picking up finger grease. In other words, these PBT keycaps will be looking box fresh for much longer.</p><p>Speaking of looks, you're not going to find the Light Mount TKL in any fun colourways. Normally, I would rue the lack of a lavender colourway, but I respect Be Quiet's vision; this is a smart looking keyboard that wouldn't be out of place in either a gamer den or an office with a strict dress code. Besides, if you're still desperate for a splash of colour, the IO Center software offers lots of customisation options for the RGB lighting.</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="SwrZTY8N7A49UAT9zzk48o" name="Be Quiet Light Mount TKL mechanical gaming keyboard" alt="The Be Quiet Light Mount TKL wired mechanical gaming keyboard seen from various angles." src="https://cdn.mos.cms.futurecdn.net/SwrZTY8N7A49UAT9zzk48o-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>A potentially unfortunate wrinkle is that PBT keycaps aren't known for letting a lot of light through. That means that, even with the keycaps' shine-through legends, the RGB lighting here is generally a more subtle affair. An arched ARGB diffuser on each switch keeps what glow there is evenly distributed, but I can't help but feel the original Light Mount's RGB was a smidge brighter. </p><p>Mind you, the gamer den I was testing the fullsize board in is generally much darker than the bright overhead lights of PCG towers where I spent most of my quality time with the TKL. Anyway, the strip of RGB at the top of the TKL is all the lovelier for being allowed to shine unimpeded.</p><p>Like the company's other boards, the TKL also enjoys three internal layers of sound-dampening foam. This makes good on the entire promise of Be Quiet! while also making for a keeb with a pleasing amount of sturdy heft. The same brushed aluminium top plate featured on Be Quiet's other boards is also the finishing touch here, acting as the shiny cherry topping an already beautifully constructed cake.</p><h2 class="article-body__section" id="section-software"><span>Software</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1348px;"><p class="vanilla-image-block" style="padding-top:63.43%;"><img id="eaP6Zo4SSXqpdniCANpahd" name="IO Center screenshots" alt="Various settings menus within Be Quiet's IO Center software." src="https://cdn.mos.cms.futurecdn.net/eaP6Zo4SSXqpdniCANpahd-1920-80.png" mos="" align="middle" fullscreen="" width="1348" height="855" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Be Quiet!)</span></figcaption></figure><p>IO Center can either be downloaded as a local desktop app, or <a href="https://iocenter.bequiet.com/" target="_blank">accessed via the web</a>. For the most part, it's a smartly laid out bit of software that makes it easy to tweak an array of settings. The latest version offers a helpful hardware monitor too, showing you temps and even fan RPM right there in the dashboard, though obviously this is less relevant in a review about a keyboard.</p><p>What <em>is </em>relevant is the robust selection of customisation options for the RGB lights. The usual rippling designs return, allowing for gradient, single, or dual colour lighting effects. If you aren't digging IO Center's 'general' pre-sets, you can create your own layered lighting, customising the look of each key and segment of the top light bar. The Light Mount TKL also enjoys support for Microsoft Dynamic Lighting for those with a much grander, all encompassing vision for their desk.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/pBn8EGnKBPVUdtzikmnycd-1920-80.png" alt="Various settings menus within Be Quiet's IO Center software." /><figcaption><small role="credit">Be Quiet!</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ScxtvAM7MAiAeQCeYktzZd-1920-80.png" alt="Various settings menus within Be Quiet's IO Center software." /><figcaption><small role="credit">Be Quiet!</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/uUzZmX35Yy8fMACPGLiSTd-1920-80.png" alt="Various settings menus within Be Quiet's IO Center software." /><figcaption><small role="credit">Be Quiet!</small></figcaption></figure></figure><p>Now, obviously RGB lighting isn't the only thing that makes a gaming keyboard. Via IO Center, you can also fine tune the Game Mode across a small selection of toggles. These allow you to disable various key configurations while the mode is active, including Shift + Tab, Alt + F4, the Windows Key, Alt + Tab, and now Capslock too.</p><p>Interestingly, Quick Tap falls outside of IO Center's Key Binding sub-menu. Instead, you'll find options for remapping keys, editing the Function layer, and recording a whole load of Macros.</p><p>Quick Tap is found under 'Product Settings,' alongside the Game Mode. Quick Tap can be calibrated across five key pairs ('A' and 'D' are included as an editable default pair to start you off). While in Quick Tap settings, the software also warns that some competitive titles will restrict or ban SOCD tech, and advises that you check the rules for your game of choice before calibrating.</p><h2 class="article-body__section" id="section-value"><span>Value</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="NmMtGTsLQuBWXwXWS9Uvxn" name="Be Quiet Light Mount TKL mechanical gaming keyboard" alt="The Be Quiet Light Mount TKL wired mechanical gaming keyboard seen from various angles." src="https://cdn.mos.cms.futurecdn.net/NmMtGTsLQuBWXwXWS9Uvxn-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 Light Mount TKL costs $140/€140. That's about $30/€30 less than the full size version would set you back at launch, though you can get a 100% Light Mount for much less now. That's just as well, as the full size version graces our <a href="https://www.pcgamer.com/best-gaming-keyboard/#section-the-best-60-gaming-keyboard" target="_blank">best gaming keyboards</a> guide as our pick for the best silent board. The obvious question, then, is does the TKL do enough to dethrone its older sibling?</p><p>Well, the TKL introduces a number of features that will be coming to future productions of the full size keyboard, such as the V2 switches. Those who already have the full size Light Mount will also be able to enjoy the slightly expanded Game Mode through updates to IO Center, though Be Quiet is still evaluating if further features will be added retroactively.</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="hJBKpYbXeno3kom8rr9vZn" name="Be Quiet Light Mount TKL mechanical gaming keyboard" alt="The Be Quiet Light Mount TKL wired mechanical gaming keyboard seen from various angles." src="https://cdn.mos.cms.futurecdn.net/hJBKpYbXeno3kom8rr9vZn-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>What I can tell you for sure right now is, due to technical limitations, neither the full size Light Mount or Dark Mount will have the TKL's 10 customisable layers of lighting effects, or its ability to record up to 999 Macro events. The original Light Mount is limited to 58, while the Dark Mount can record up to 200. So, if you use a lot of complex Macros and are looking for a quiet keeb, the TKL is the gaming keyboard to go with.</p><p>But that's the thing: many PC gamers will tell you 'the clack is the whole point' of a mechanical keyboard. Personally, I think there's room for a range of sound profiles in this space, but the Light Mount TKL's central reason for being is arguably niche in appeal.</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="Nfof4Ddnfmc8rYk3sRQYen" name="Be Quiet Light Mount TKL mechanical gaming keyboard" alt="The Be Quiet Light Mount TKL wired mechanical gaming keyboard seen from various angles." src="https://cdn.mos.cms.futurecdn.net/Nfof4Ddnfmc8rYk3sRQYen-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>As an 80% design, the TKL is far from the most space-saving thing either, plus plenty of smaller boards beat it on features, too. For instance, our pick for the best 75% keyboard is the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/keychron-k2-he-review/" target="_blank">Keychron K2 HE</a>, which comes with Hall effect switches and offers customisable actuation points. It's also wireless, woody, and basically the same price as Be Quiet's slightly larger offering.</p><p>If you're looking to save yet more desk space, our pick for the best 60% keyboard is the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/wooting-60he-v2-review/" target="_blank">Wooting 60HE v2</a>, which our Jacob describes as "the best keyboard that Wooting has ever made." That's high-praise that feels absolutely earned once you hear just how feature-packed it is.</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="wuynfpHvaru3SoRSVvjUjn" name="Be Quiet Light Mount TKL mechanical gaming keyboard" alt="The Be Quiet Light Mount TKL wired mechanical gaming keyboard seen from various angles." src="https://cdn.mos.cms.futurecdn.net/wuynfpHvaru3SoRSVvjUjn-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>You can also get a feature-packed 65% gaming keyboard for much less than the Light Mount TKL. Case in point, the best budget gaming keyboard is the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/gamakay-x-naughshark-ns68-review/" target="_blank">Gamakay x NaughShark NS68</a>, and having spent some quality time with this $40 keyboard myself, going with something 100 bucks more feels like a steep ask. </p><p>Obviously, a $40 keyboard cannot hold a candle to Be Quiet's build quality, and its software also leaves a lot to be desired compared to IO Center's ease of use. But otherwise the NS68 still offers fantastic value for money with Hall effect switches and even PBT keycaps.</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="PM3sVkUjK8Dej3uRcKQZ7o" name="Be Quiet Light Mount TKL mechanical gaming keyboard" alt="The Be Quiet Light Mount TKL wired mechanical gaming keyboard seen from various angles." src="https://cdn.mos.cms.futurecdn.net/PM3sVkUjK8Dej3uRcKQZ7o-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>As a typist, I still love the Light Mount TKL; the switches really are that quiet and the key actuation is wonderfully smooth. Though I rue the lack of fun colourways, the aluminium topped chassis definitely looks very classy as it is, and I appreciate all of the options for colourful RGB customisation in the IO Center software. Although not the brightest, the RGB here illuminates my dank gamer den well enough.</p><p>As a PC gamer, I am left wanting just a little more for the money—specifically, the option to customise key actuation points wouldn't go amiss. To be fair, having seen how much the full size Light Mount has come down in price since its launch last year, the TKL may also drop to a similarly appealing price point before too long.</p><p>Furthermore, I'm hardly a high-tier competitive gamer and what's here on the TKL definitely suits most of my gaming needs. If you can take or leave gaming keyboards' bleeding edge features, but still want a well-made mechanical keyboard to class up your desk, there's lots to like about the Light Mount TKL.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-keyboards/be-quiet-light-mount-tkl-review/</link>
                                                                            <description>
                            <![CDATA[ A very welcome TKL update that didn't quite leave me speechless. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">tQuFw3eZTfok64xVrrkzoL</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/EKFS9yyRcpyGXg4u2d9d7o-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 25 Aug 2026 11:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Keyboards]]></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/EKFS9yyRcpyGXg4u2d9d7o-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Be Quiet Light Mount TKL wired mechanical gaming keyboard seen from various angles.]]></media:description>                                                            <media:text><![CDATA[The Be Quiet Light Mount TKL wired mechanical gaming keyboard seen from various angles.]]></media:text>
                                <media:title type="plain"><![CDATA[The Be Quiet Light Mount TKL wired mechanical gaming keyboard seen from various angles.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/EKFS9yyRcpyGXg4u2d9d7o-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div data-widget-type="multimodelreview" data-widget-title="" data-model-name="Be Quiet! Light Mount TKL"></div><p>My prime PC gaming hours tend to be when the rest of my household is already in bed. As such, the fantastically clicky-clacky key presses of a mechanical gaming keyboard echoing through our halls isn't really ideal. It's just as well then that Be Quiet! is back with a welcome update to the very nearly silent keyboard I loved last year, the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/be-quiet-light-mount-review/" target="_blank">Light Mount</a>.</p><p>As someone with a perennially messy desk, the Light Mount TKL's 80% size is just right; I have room to swish my mouse, and I find I'm not forever accidentally hitting the capslock key as with other cut-down keebs. This TKL update offers more than just a smaller form factor, though, introducing the next generation of Be Quiet!'s Silent switches in Linear and Tactile flavours.</p><p>This TKL update also addresses one of the key problems I had with the original Light Mount by introducing new gaming features. This includes Quick Tap (SOCD), which will be sweet percussion to the ears of shooter fans—and at best eyebrow raising for the esports sickos. For those unfamiliar, SOCD stands for 'Simultaneous Opposing Cardinal Directions'. Features falling under this umbrella, like Razer's Snap Tap and now Be Quiet!'s Quick Tap, prioritises your most recent directional input, making for strafing so efficient that <a href="https://www.pcgamer.com/games/fps/valve-says-weve-decided-to-draw-a-clear-line-and-bans-snap-tap-keyboard-automation-from-counter-strike-2/" target="_blank">Valve banned it from Counter-Strike 2</a>.</p><p>Alongside Quick Tap, there's also more options for macros, and a few fresh customisation options within the IO center software. While I appreciate these additions and expansions, the TKL still isn't the most feature-packed gaming keyboard you'll find.</p><p>I still love the even-quieter switches, though. Coupled with the TKL's sturdy construction, this makes for another smart-looking package. However, it's rocking up to the rowdy PC gaming party as the quiet kid in the corner—that is to say, while some will definitely appreciate its charms, it can't compete with the louder, more popular keeb crowd.</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 something that's actually quiet:</strong> If clackier keyboards are just too loud, this is the one for you. Better yet, the new V2 Silent switches are even quieter than their predecessors.<br><br>✅ <strong>You want a keyboard for both work and play: </strong>This board's smart looks mean it will be just as at home in the office as it is next to your RGB-illuminated rig.</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> </strong> <strong>You're looking for a gaming keyboard that's the complete package: </strong>Though this does bring a few new things to Be Quiet's table, it's less fully-featured than other TKL options.<br><br>❌<strong> You're working with an extremely limited amount of desk space:</strong> As an 80% keyboard, you can definitely go smaller.</p></div></div></div></div><h2 class="article-body__section" id="section-features"><span>Features</span></h2><div ><table><tbody><tr><td class="firstcol " ><p><strong></strong></p></td><td  ><p><strong>Be Quiet! Light Mount TKL</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Switch</strong></p></td><td  ><p>Be quiet! Silent V2 Linear Mechanical Switches (Tactile also available)</p></td></tr><tr><td class="firstcol " ><p><strong>Size</strong></p></td><td  ><p>80%</p></td></tr><tr><td class="firstcol " ><p><strong>Connection type</strong></p></td><td  ><p>Wired</p></td></tr><tr><td class="firstcol " ><p><strong>Cable</strong></p></td><td  ><p>Braided USB Type-C/USB Type-A</p></td></tr><tr><td class="firstcol " ><p><strong>Onboard storage</strong></p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Backlight</strong></p></td><td  ><p>RGB LED</p></td></tr><tr><td class="firstcol " ><p><strong>Media controls</strong></p></td><td  ><p>Tactile knob, twist for volume control, tap top to mute</p></td></tr><tr><td class="firstcol " ><p><strong>Wristrest</strong></p></td><td  ><p>Yes, magnetic attachment</p></td></tr><tr><td class="firstcol " ><p><strong>Keycaps</strong></p></td><td  ><p>PBT, double-shot</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>770 g</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p>$140/€140</p></td></tr></tbody></table></div><p>The Light Mount TKL is an 80% keyboard that enjoys the latest generation of Be Quiet!'s Silent switches. Tactile switches are available, but my review unit came with the Silent Linear V2s (though if you're craving clicky-ness, the media knob in the keyboard's top left corner has got you covered). According to Be Quiet!, the new V2s feature thicker gold contact points for the copper lever inside, as well as 'optimised lubrication for quieter operation and improved responsiveness'—well, I'll be the judge of that.</p><p>The V1 switches were already astonishingly understated on the full-sized board, making the most of the original Light Mount's internal layers of sound dampening. The V2 switches on the TKL are somehow <em>even quieter</em>.</p><p>Though the new switches feel a bit on the firm side right out of the box, they soon actuate just as cleanly as the V1s. Before, I described typing on the Tactile V1s as a controlled descent onto solid ground, but the Linear V2s have a little more pleasing texture underhand. It's not like stepping on a discordantly crunchy leaf, it's more like tiptoeing over a thin layer of soft sand—I like it!</p><p>The combination of the V2s and the TKL's construction also means the space bar is now much quieter than what I found on this board's big brother. Although, it's worth noting that future productions of both the full size Light Mount and the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/be-quiet-dark-mount-review/" target="_blank">Dark Mount</a> will come with the new V2 switches.</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="7CWUJk5dQ8nYNuJr6qbtwn" name="Be Quiet Light Mount TKL mechanical gaming keyboard" alt="The Be Quiet Light Mount TKL wired mechanical gaming keyboard seen from various angles." src="https://cdn.mos.cms.futurecdn.net/7CWUJk5dQ8nYNuJr6qbtwn-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>So far, so excellent: the Light Mount TKL is an actually quiet mechanical keyboard that won't tattle on you during late night gaming sessions. So, what about those fresh gaming features? Well, let's get the least exciting addition out of the way first: You can now disable the Capslock key in Game Mode. </p><p>Cool. Moving swiftly on, the Light Mount TKL also enjoys Be Quiet's version of SOCD, Quick Tap, for the first time. Whereas the original Light Mount felt more like a fairly quiet mechanical keyboard you could also use for gaming, the TKL feels a smidge more like a gaming keyboard in its own right.</p><p>And you know what gamers love above all else? Bathing themselves in the glow of RGB lighting. Like its predecessors, the TKL implementation of RGB is similarly classy; a dedicated light strip lines the very top of the keyboard, and every switch below enjoys an 'ARGB diffuser' for tasteful per-key illumination. On top of plenty of customisation options in the IO Center software, the Light Mount TKL also features support for Microsoft Dynamic Lighting.</p><h2 class="article-body__section" id="section-performance"><span>Performance</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="peaahbSdJbUAu9C75EtLgn" name="Be Quiet Light Mount TKL mechanical gaming keyboard" alt="The Be Quiet Light Mount TKL wired mechanical gaming keyboard seen from various angles." src="https://cdn.mos.cms.futurecdn.net/peaahbSdJbUAu9C75EtLgn-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 Be Quiet! Light Mount TKL is a joy to type on. Switch-feel is really second to none in my mind. But what about gaming? Well, as I've said before, my most intense encounter in an online game recently was getting lost in <a href="https://www.pcgamer.com/games/puzzle/big-walk-review/" target="_blank">Big Walk</a> (not to mention how I tend to spend more time hiding in bushes in <a href="https://www.pcgamer.com/arc-raiders/" target="_blank">Arc Raiders</a> than running and gunning). Similarly, this isn't a gaming keyboard with the competitive scene in mind. With those expectations set, let's get into it.</p><p>I tend to accidentally hit the Capslock key on smaller form factor keyboards, such as the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/cherry-k5-pro-tmr-compact-review" target="_blank">Cherry XTRFY K5 Pro TMR Compact</a>. The option to disable this key in Game Mode is definitely welcome, though I do find myself stumbling on to Capslock a lot less with this TKL. I also found this keyboard's layout and 1,000 Hz maximum polling rate does little to impede my running around the feline-themed post office of <a href="https://www.pcgamer.com/games/sim/ive-helped-100-cats-mail-parcels-in-cat-mail-co-which-is-why-i-can-safely-say-its-one-of-the-best-management-sims-ive-played-in-a-very-long-time/" target="_blank">Cat Mail Co.</a> The Shift key for sprinting between barely organised shelves is comfortably within reach—so long as you don't subconsciously curl your hand into a weird cat paw-esque grip like I do.</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="eYqjzGmESNs74cxhQagqYn" name="Be Quiet Light Mount TKL mechanical gaming keyboard" alt="The Be Quiet Light Mount TKL wired mechanical gaming keyboard seen from various angles." src="https://cdn.mos.cms.futurecdn.net/eYqjzGmESNs74cxhQagqYn-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 TKL's precision is definitely welcome as I roll up everything in sight in <a href="https://www.pcgamer.com/games/puzzle/once-upon-a-katamari-has-reignited-my-love-for-a-series-that-hasnt-released-a-mainline-game-in-14-years-and-now-its-the-only-game-i-want-to-play/" target="_blank">Once Upon a Katamari</a>. The TKL's responsiveness already makes it easy to both slow my roll and steer clear of disaster. Quick Tap comes especially in handy here, making changing the direction of my Katamari all the snappier. Does that mean I start immediately smashing through all of my previous records? Eh, no, not exactly. A swish gaming keyboard can only do so much for a skill issue, after all.</p><p>Whether I'm whiling away the wee hours trying to improve my Katamari game, or simply lose track of time playing <a href="https://www.pcgamer.com/games/life-sim/paralives-is-home-to-the-kind-of-architectural-creative-freedom-i-havent-felt-from-a-life-sim-since-the-sims-2/" target="_blank">Paralives</a>, the Light Mount TKL's luscious layers of sound-dampening foam and updated Silent switches continue to keep the secret of my late night gaming sessions.</p><h2 class="article-body__section" id="section-build-quality"><span>Build Quality</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="HMLFFSbt9iPKydLKCvKkqn" name="Be Quiet Light Mount TKL mechanical gaming keyboard" alt="The Be Quiet Light Mount TKL wired mechanical gaming keyboard seen from various angles." src="https://cdn.mos.cms.futurecdn.net/HMLFFSbt9iPKydLKCvKkqn-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>This is a lovingly put together keyboard. I've already waxed lyrical about the factory-lubricated V2 Silent switches and their lovely, linear actuation. The keys themselves aren't completely smooth on top, offering a little bit of surface texture that's typical of PBT caps. This choice of material is generally more durable than ABS, and also tends to be much more resistant to picking up finger grease. In other words, these PBT keycaps will be looking box fresh for much longer.</p><p>Speaking of looks, you're not going to find the Light Mount TKL in any fun colourways. Normally, I would rue the lack of a lavender colourway, but I respect Be Quiet's vision; this is a smart looking keyboard that wouldn't be out of place in either a gamer den or an office with a strict dress code. Besides, if you're still desperate for a splash of colour, the IO Center software offers lots of customisation options for the RGB lighting.</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="SwrZTY8N7A49UAT9zzk48o" name="Be Quiet Light Mount TKL mechanical gaming keyboard" alt="The Be Quiet Light Mount TKL wired mechanical gaming keyboard seen from various angles." src="https://cdn.mos.cms.futurecdn.net/SwrZTY8N7A49UAT9zzk48o-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>A potentially unfortunate wrinkle is that PBT keycaps aren't known for letting a lot of light through. That means that, even with the keycaps' shine-through legends, the RGB lighting here is generally a more subtle affair. An arched ARGB diffuser on each switch keeps what glow there is evenly distributed, but I can't help but feel the original Light Mount's RGB was a smidge brighter. </p><p>Mind you, the gamer den I was testing the fullsize board in is generally much darker than the bright overhead lights of PCG towers where I spent most of my quality time with the TKL. Anyway, the strip of RGB at the top of the TKL is all the lovelier for being allowed to shine unimpeded.</p><p>Like the company's other boards, the TKL also enjoys three internal layers of sound-dampening foam. This makes good on the entire promise of Be Quiet! while also making for a keeb with a pleasing amount of sturdy heft. The same brushed aluminium top plate featured on Be Quiet's other boards is also the finishing touch here, acting as the shiny cherry topping an already beautifully constructed cake.</p><h2 class="article-body__section" id="section-software"><span>Software</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1348px;"><p class="vanilla-image-block" style="padding-top:63.43%;"><img id="eaP6Zo4SSXqpdniCANpahd" name="IO Center screenshots" alt="Various settings menus within Be Quiet's IO Center software." src="https://cdn.mos.cms.futurecdn.net/eaP6Zo4SSXqpdniCANpahd-1920-80.png" mos="" align="middle" fullscreen="" width="1348" height="855" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Be Quiet!)</span></figcaption></figure><p>IO Center can either be downloaded as a local desktop app, or <a href="https://iocenter.bequiet.com/" target="_blank">accessed via the web</a>. For the most part, it's a smartly laid out bit of software that makes it easy to tweak an array of settings. The latest version offers a helpful hardware monitor too, showing you temps and even fan RPM right there in the dashboard, though obviously this is less relevant in a review about a keyboard.</p><p>What <em>is </em>relevant is the robust selection of customisation options for the RGB lights. The usual rippling designs return, allowing for gradient, single, or dual colour lighting effects. If you aren't digging IO Center's 'general' pre-sets, you can create your own layered lighting, customising the look of each key and segment of the top light bar. The Light Mount TKL also enjoys support for Microsoft Dynamic Lighting for those with a much grander, all encompassing vision for their desk.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/pBn8EGnKBPVUdtzikmnycd-1920-80.png" alt="Various settings menus within Be Quiet's IO Center software." /><figcaption><small role="credit">Be Quiet!</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ScxtvAM7MAiAeQCeYktzZd-1920-80.png" alt="Various settings menus within Be Quiet's IO Center software." /><figcaption><small role="credit">Be Quiet!</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/uUzZmX35Yy8fMACPGLiSTd-1920-80.png" alt="Various settings menus within Be Quiet's IO Center software." /><figcaption><small role="credit">Be Quiet!</small></figcaption></figure></figure><p>Now, obviously RGB lighting isn't the only thing that makes a gaming keyboard. Via IO Center, you can also fine tune the Game Mode across a small selection of toggles. These allow you to disable various key configurations while the mode is active, including Shift + Tab, Alt + F4, the Windows Key, Alt + Tab, and now Capslock too.</p><p>Interestingly, Quick Tap falls outside of IO Center's Key Binding sub-menu. Instead, you'll find options for remapping keys, editing the Function layer, and recording a whole load of Macros.</p><p>Quick Tap is found under 'Product Settings,' alongside the Game Mode. Quick Tap can be calibrated across five key pairs ('A' and 'D' are included as an editable default pair to start you off). While in Quick Tap settings, the software also warns that some competitive titles will restrict or ban SOCD tech, and advises that you check the rules for your game of choice before calibrating.</p><h2 class="article-body__section" id="section-value"><span>Value</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="NmMtGTsLQuBWXwXWS9Uvxn" name="Be Quiet Light Mount TKL mechanical gaming keyboard" alt="The Be Quiet Light Mount TKL wired mechanical gaming keyboard seen from various angles." src="https://cdn.mos.cms.futurecdn.net/NmMtGTsLQuBWXwXWS9Uvxn-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 Light Mount TKL costs $140/€140. That's about $30/€30 less than the full size version would set you back at launch, though you can get a 100% Light Mount for much less now. That's just as well, as the full size version graces our <a href="https://www.pcgamer.com/best-gaming-keyboard/#section-the-best-60-gaming-keyboard" target="_blank">best gaming keyboards</a> guide as our pick for the best silent board. The obvious question, then, is does the TKL do enough to dethrone its older sibling?</p><p>Well, the TKL introduces a number of features that will be coming to future productions of the full size keyboard, such as the V2 switches. Those who already have the full size Light Mount will also be able to enjoy the slightly expanded Game Mode through updates to IO Center, though Be Quiet is still evaluating if further features will be added retroactively.</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="hJBKpYbXeno3kom8rr9vZn" name="Be Quiet Light Mount TKL mechanical gaming keyboard" alt="The Be Quiet Light Mount TKL wired mechanical gaming keyboard seen from various angles." src="https://cdn.mos.cms.futurecdn.net/hJBKpYbXeno3kom8rr9vZn-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>What I can tell you for sure right now is, due to technical limitations, neither the full size Light Mount or Dark Mount will have the TKL's 10 customisable layers of lighting effects, or its ability to record up to 999 Macro events. The original Light Mount is limited to 58, while the Dark Mount can record up to 200. So, if you use a lot of complex Macros and are looking for a quiet keeb, the TKL is the gaming keyboard to go with.</p><p>But that's the thing: many PC gamers will tell you 'the clack is the whole point' of a mechanical keyboard. Personally, I think there's room for a range of sound profiles in this space, but the Light Mount TKL's central reason for being is arguably niche in appeal.</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="Nfof4Ddnfmc8rYk3sRQYen" name="Be Quiet Light Mount TKL mechanical gaming keyboard" alt="The Be Quiet Light Mount TKL wired mechanical gaming keyboard seen from various angles." src="https://cdn.mos.cms.futurecdn.net/Nfof4Ddnfmc8rYk3sRQYen-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>As an 80% design, the TKL is far from the most space-saving thing either, plus plenty of smaller boards beat it on features, too. For instance, our pick for the best 75% keyboard is the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/keychron-k2-he-review/" target="_blank">Keychron K2 HE</a>, which comes with Hall effect switches and offers customisable actuation points. It's also wireless, woody, and basically the same price as Be Quiet's slightly larger offering.</p><p>If you're looking to save yet more desk space, our pick for the best 60% keyboard is the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/wooting-60he-v2-review/" target="_blank">Wooting 60HE v2</a>, which our Jacob describes as "the best keyboard that Wooting has ever made." That's high-praise that feels absolutely earned once you hear just how feature-packed it is.</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="wuynfpHvaru3SoRSVvjUjn" name="Be Quiet Light Mount TKL mechanical gaming keyboard" alt="The Be Quiet Light Mount TKL wired mechanical gaming keyboard seen from various angles." src="https://cdn.mos.cms.futurecdn.net/wuynfpHvaru3SoRSVvjUjn-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>You can also get a feature-packed 65% gaming keyboard for much less than the Light Mount TKL. Case in point, the best budget gaming keyboard is the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/gamakay-x-naughshark-ns68-review/" target="_blank">Gamakay x NaughShark NS68</a>, and having spent some quality time with this $40 keyboard myself, going with something 100 bucks more feels like a steep ask. </p><p>Obviously, a $40 keyboard cannot hold a candle to Be Quiet's build quality, and its software also leaves a lot to be desired compared to IO Center's ease of use. But otherwise the NS68 still offers fantastic value for money with Hall effect switches and even PBT keycaps.</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="PM3sVkUjK8Dej3uRcKQZ7o" name="Be Quiet Light Mount TKL mechanical gaming keyboard" alt="The Be Quiet Light Mount TKL wired mechanical gaming keyboard seen from various angles." src="https://cdn.mos.cms.futurecdn.net/PM3sVkUjK8Dej3uRcKQZ7o-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>As a typist, I still love the Light Mount TKL; the switches really are that quiet and the key actuation is wonderfully smooth. Though I rue the lack of fun colourways, the aluminium topped chassis definitely looks very classy as it is, and I appreciate all of the options for colourful RGB customisation in the IO Center software. Although not the brightest, the RGB here illuminates my dank gamer den well enough.</p><p>As a PC gamer, I am left wanting just a little more for the money—specifically, the option to customise key actuation points wouldn't go amiss. To be fair, having seen how much the full size Light Mount has come down in price since its launch last year, the TKL may also drop to a similarly appealing price point before too long.</p><p>Furthermore, I'm hardly a high-tier competitive gamer and what's here on the TKL definitely suits most of my gaming needs. If you can take or leave gaming keyboards' bleeding edge features, but still want a well-made mechanical keyboard to class up your desk, there's lots to like about the Light Mount TKL.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Keychron K8 Ultra 8K review ]]></title>
                                                                                                <dc:content><![CDATA[ <div data-widget-type="review" data-model-name="Keychron K8 Ultra 8K" data-widget-title=""></div><p>Keychron has carved out a wonderful niche in the now admittedly overcrowded mechanical keyboard space for offering fantastic all-round keyboards with all the features and robustness you could want for a surprisingly affordable price, given what's on offer.</p><p>The new K8 Ultra 8K might feel like I'm parroting a lot of the same thoughts as I have with the numerous other Keychron products I've tested simply because most products I've tested from them have been consistently excellent. This new model doesn't deviate from a lot of the established formula: hefty aluminium top case, PBT keycaps, versatile connectivity, web-based software. And let me tell you, that's no bad thing.</p><p>Okay, against the likes of the<a href="https://www.pcgamer.com/hardware/gaming-keyboards/lemokey-l4-review/" target="_blank"> Lemokey L4</a> and <a href="https://www.pcgamer.com/hardware/gaming-keyboards/keychron-q3-max-review/" target="_blank">Keychron Q3 Max</a>, I can nitpick and say the <em>entire</em> case isn't the usual machined aluminium as there's a doubleshot ABS portion on the underside mated to an aluminium top piece. However, that is nitpicking of the highest order. The K8 Ultra 8K remains the type of keyboard you could use as a weapon. It's 1.2 kg in heft, which is a lot for a smaller form factor keyboard, and has a fantastically sturdy frame to boot. </p><p>To go with it, we've also got the usual doubleshot PBT keycaps for durability and an added touch of quality in an OSA profile, which gives them more of a spherical top edge to help with finger placement when typing.</p><div  class="fancy-box"><div class="fancy_box-title">Keychron K8 Ultra 8K specs</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="TgS5vxR8RzUahKhaMjFavd" name="Keychron K8 Ultra 8K 5" caption="" alt="The Keychron K8 Ultra 8K on a table." src="https://cdn.mos.cms.futurecdn.net/TgS5vxR8RzUahKhaMjFavd-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>Switch type: </strong>Keychron Apex Red, Brown or Banana<br><strong>Keycaps: </strong>PBT, doubleshot<br><strong>Lighting: </strong>RGB, controllable in software<br><strong>Onboard storage:</strong> 4 profiles<br><strong>Extra ports: </strong>None<br><strong>Connection type: </strong>Wired USB-C/2.4 GHz/Bluetooth 5.2<br><strong>Cable: </strong>USB Type-C/USB Type-A, detachable<br><strong>Weight: </strong>1.299 kg/2.86 lbs<br><strong>Price: </strong>$120</p></div></div><p>The TKL layout here is familiar, and a good starting point if you're after a space-saving layout that won't immediately make you question your life choices if you've not used it before—that's reserved for the <a href="https://www.pcgamer.com/hhkb-professional-hybrid-type-s-review/" target="_blank">HHKB</a>. It simply chops off the number pad and leaves the rest as-is, giving you more desk space without sacrificing too much functionality. With narrow bezels around the edge of the layout, this is also a little bit smaller than other TKL keyboards I've used, giving you even more desk space black.</p><p>Where the K8 Ultra 8K differs from some of its other keyboards is the fact it lacks much in the way of additional extras, such as the customary rotary volume knob I've come to expect from their products. The lack of something to fiddle and twiddle with is a bit of a shame, but you can turn the volume up and down with a combination of the Fn key and either F11 or F12 on the function row. There is the customary USB-C port on the left side for charging and wired connectivity, as well as a selector switch for either Bluetooth or 2.4 GHz connectivity and Windows or macOS.</p><p>Speaking of connectivity, this Keychron keyboard worked a charm over either wireless method, connecting with ease to either my MacBook over Bluetooth or my main Windows gaming PC over its 2.4 GHz receiver. With both, it was virtually effortless. Pairing over Bluetooth is as easy as holding the function key down with either 1, 2 or 3 on the number row depending on which Bluetooth channel you wish to use until the small blue light underneath the key flashes quickly. The keyboard should then show up in the pairing settings on the device you want to connect to. Press 'connect' and you should be off to the races in a matter of moments.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/s7cc3qtsxF99my894UA5rd-1920-80.jpg" alt="The Keychron K8 Ultra 8K on a table." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ByUuf89SiKEW4jWWw2uEsd-1920-80.jpg" alt="The Keychron K8 Ultra 8K on a table." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/XMBdDynGcEPyFu7MxoyRnd-1920-80.jpg" alt="The Keychron K8 Ultra 8K on a table." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Tpjm2FAVNHt6sBku6N3avd-1920-80.jpg" alt="The Keychron K8 Ultra 8K on a table." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>In addition, its battery life is solid too, with up to 760 hours of runtime with no RGB turned on. If you turn the lighting on at its lowest level, this figure drops to 225 hours. That's a huge increase over the older Keychron models I've tested, and the brand says it's down to the fact this keyboard is using new ZMK firmware.</p><p>ZMK is specifically designed for wireless connectivity, rather than the older QMK standard, which had wireless connectivity support more or less bolted on, which meant its battery life dropoff was quite noticeable. In my week or so with the K8 Ultra 8K, the percentage hasn't dropped much, and I've been through a workday where it hasn't moved from 100% charge in the Windows settings. </p><p>This also bodes well for the traditionally horrendous battery drop-off we see keyboards suffering from with 8000 Hz polling rate enabled, as it's reporting much more frequently than with a standard 1000 Hz rate keyboard, it tends to cane overall endurance. As its name suggests, this keyboard supports 8000 Hz polling, both over 2.4GHz wireless and USB-C wired, but that's as far as its 'gaming' chops go—no TMR, rapid trigger or all the rest of 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="SK5mUFxvJsXfM2i3Pzodod" name="Keychron K8 Ultra 8K 12" alt="The Keychron K8 Ultra 8K on a table." src="https://cdn.mos.cms.futurecdn.net/SK5mUFxvJsXfM2i3Pzodod-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>On the point of firmware (and by extension software), the K8 Ultra 8K supports Keychron's new web-based Launcher software, which is a lightweight and convenient method of configuring everything from macros, key remapping and tweaking the keyboard's RGB lighting. To be specific, it's got 22 different lighting presets you can pick from.</p><p>I admit, it's taken me long enough, but it's finally time to talk about switches. Seemingly in keeping with the theme of the K8 Ultra 8K being wholly new, it utilises Keychron's own Apex switches. These are a new switch that utilises a box stem design and a clear top, rather than a more traditional MX-style stem. The box stem is designed to reduce key wobble to some extent, although they are still quite wobbly in my experience with these switches.</p><p>You can get this keyboard in three different flavours, with a light and linear Red, a soft tactile Brown and a heavier soft tactile Banana switch available. Mine shipped with the Brown switch, which has a 50 g force and a standard 4mm travel. For reference, the Reds have a 45 g force and 4 mm travel, while the Bananas have a 55g force with a shorter 3.6 mm travel to allow for a sharper tactile bump halfway down the travel.</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="kg3H2XfFYSFGiPijBAqJsd" name="Keychron K8 Ultra 8K 9" alt="The Keychron K8 Ultra 8K on a table." src="https://cdn.mos.cms.futurecdn.net/kg3H2XfFYSFGiPijBAqJsd-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>In my experience, Brown switches of the clone variety are some of the hardest to get right against actual MX Browns, which I've used a lot in the intervening decade since getting into this hobby. Sometimes clones can be inconsistent in feel, or it can feel as if there isn't a bump at all, negating their soft tactile status. In my experience, the ones inside this keyboard feel the wrong side of subtle: there is a bump, but it's a little too soft and therefore not as noticeable as I'd like it to be. The 50 g weighting means they're also quite light, and I would prefer something heavier out of the box, but that's where the Banana switches come in.</p><p>Combined with the heaps of sound dampening and foam inside the keyboard's metal chassis, the fact that the default switches are also lubricated means the K8 Ultra 8K sounds divine once you get up to speed with a pleasant acoustic profile. It is quite loud and high-pitched though, owing to the resonance from the metal case, although there isn't any horrible rattle or ping.</p><div  class="fancy-box"><div class="fancy_box-title">Buy if...</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>✅ You want a solid all-rounder: </strong>The K8 Ultra 8K is a great all-round mechanical option with solid build quality, thoughtful extras and excellent battery life.</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 more consistent switches: </strong>The Brown switches on my particular sample aren't as consistent or strong as other tactiles I've tried on other keyboards.</p></div></div><p>If the switches inside aren't your jam though, then you can easily swap them out with a range of 3- or 5-pin choices, as this keyboard is hot-swappable. As with other Keychron keyboards, it bundles in a switch and keycap puller to make swapping them out a breeze. I had some spare Cherry MX Falcon tactile switches left over from a different project, which I slotted into the K8 Ultra 8K, and swapping them in was a doddle, as it usually is with these keyboards.</p><p>Now's usually the point where I'd potentially bemoan that this Keychron product is a little too dear, but I'm not going to. In fact, I'm a little shocked at the price. This keyboard is going to run you the princely sum of $120, which is very competitive considering what you get for the price. For reference, the full-size <a href="https://www.pcgamer.com/hardware/gaming-keyboards/ducky-zero-6108-review/" target="_blank">Ducky Zero 6108</a> with genuine Cherry MX2As inside is cheaper, and remains built like a tank, but its battery life isn't as strong, and there's barely any software support. </p><p>The <a href="https://www.pcgamer.com/asus-rog-strix-scope-ii-96-wireless-review/" target="_blank">Asus ROG Strix Scope II 96 Wireless</a> has traditionally been our favourite mechanical gaming pick and ticks all of the fundamental boxes with smooth switches, a solid build and convenient wireless connectivity. However, it's more expensive, and ROG Armory Crate doesn't provide the most optimal software experience.</p><p>Think of the K8 Ultra 8K as a pleasant halfway house between the two that gets mostly everything right. It's solid, dependable and versatile. For the price, you can't ask for much more than that. But, if I could have some more consistent soft tactile switches, that would be nice.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-keyboards/keychron-k8-ultra-8k-review/</link>
                                                                            <description>
                            <![CDATA[ Solid, dependable and versatile. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">KhRJpBCxdh3b5buRuEeCGg</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/M3D77H4ZPSveunoRmPb7od-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 19 Aug 2026 13:29:22 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Keyboards]]></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/M3D77H4ZPSveunoRmPb7od-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Keychron K8 Ultra 8K on a table.]]></media:description>                                                            <media:text><![CDATA[The Keychron K8 Ultra 8K on a table.]]></media:text>
                                <media:title type="plain"><![CDATA[The Keychron K8 Ultra 8K on a table.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/M3D77H4ZPSveunoRmPb7od-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div data-widget-type="review" data-model-name="Keychron K8 Ultra 8K" data-widget-title=""></div><p>Keychron has carved out a wonderful niche in the now admittedly overcrowded mechanical keyboard space for offering fantastic all-round keyboards with all the features and robustness you could want for a surprisingly affordable price, given what's on offer.</p><p>The new K8 Ultra 8K might feel like I'm parroting a lot of the same thoughts as I have with the numerous other Keychron products I've tested simply because most products I've tested from them have been consistently excellent. This new model doesn't deviate from a lot of the established formula: hefty aluminium top case, PBT keycaps, versatile connectivity, web-based software. And let me tell you, that's no bad thing.</p><p>Okay, against the likes of the<a href="https://www.pcgamer.com/hardware/gaming-keyboards/lemokey-l4-review/" target="_blank"> Lemokey L4</a> and <a href="https://www.pcgamer.com/hardware/gaming-keyboards/keychron-q3-max-review/" target="_blank">Keychron Q3 Max</a>, I can nitpick and say the <em>entire</em> case isn't the usual machined aluminium as there's a doubleshot ABS portion on the underside mated to an aluminium top piece. However, that is nitpicking of the highest order. The K8 Ultra 8K remains the type of keyboard you could use as a weapon. It's 1.2 kg in heft, which is a lot for a smaller form factor keyboard, and has a fantastically sturdy frame to boot. </p><p>To go with it, we've also got the usual doubleshot PBT keycaps for durability and an added touch of quality in an OSA profile, which gives them more of a spherical top edge to help with finger placement when typing.</p><div  class="fancy-box"><div class="fancy_box-title">Keychron K8 Ultra 8K specs</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="TgS5vxR8RzUahKhaMjFavd" name="Keychron K8 Ultra 8K 5" caption="" alt="The Keychron K8 Ultra 8K on a table." src="https://cdn.mos.cms.futurecdn.net/TgS5vxR8RzUahKhaMjFavd-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>Switch type: </strong>Keychron Apex Red, Brown or Banana<br><strong>Keycaps: </strong>PBT, doubleshot<br><strong>Lighting: </strong>RGB, controllable in software<br><strong>Onboard storage:</strong> 4 profiles<br><strong>Extra ports: </strong>None<br><strong>Connection type: </strong>Wired USB-C/2.4 GHz/Bluetooth 5.2<br><strong>Cable: </strong>USB Type-C/USB Type-A, detachable<br><strong>Weight: </strong>1.299 kg/2.86 lbs<br><strong>Price: </strong>$120</p></div></div><p>The TKL layout here is familiar, and a good starting point if you're after a space-saving layout that won't immediately make you question your life choices if you've not used it before—that's reserved for the <a href="https://www.pcgamer.com/hhkb-professional-hybrid-type-s-review/" target="_blank">HHKB</a>. It simply chops off the number pad and leaves the rest as-is, giving you more desk space without sacrificing too much functionality. With narrow bezels around the edge of the layout, this is also a little bit smaller than other TKL keyboards I've used, giving you even more desk space black.</p><p>Where the K8 Ultra 8K differs from some of its other keyboards is the fact it lacks much in the way of additional extras, such as the customary rotary volume knob I've come to expect from their products. The lack of something to fiddle and twiddle with is a bit of a shame, but you can turn the volume up and down with a combination of the Fn key and either F11 or F12 on the function row. There is the customary USB-C port on the left side for charging and wired connectivity, as well as a selector switch for either Bluetooth or 2.4 GHz connectivity and Windows or macOS.</p><p>Speaking of connectivity, this Keychron keyboard worked a charm over either wireless method, connecting with ease to either my MacBook over Bluetooth or my main Windows gaming PC over its 2.4 GHz receiver. With both, it was virtually effortless. Pairing over Bluetooth is as easy as holding the function key down with either 1, 2 or 3 on the number row depending on which Bluetooth channel you wish to use until the small blue light underneath the key flashes quickly. The keyboard should then show up in the pairing settings on the device you want to connect to. Press 'connect' and you should be off to the races in a matter of moments.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/s7cc3qtsxF99my894UA5rd-1920-80.jpg" alt="The Keychron K8 Ultra 8K on a table." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ByUuf89SiKEW4jWWw2uEsd-1920-80.jpg" alt="The Keychron K8 Ultra 8K on a table." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/XMBdDynGcEPyFu7MxoyRnd-1920-80.jpg" alt="The Keychron K8 Ultra 8K on a table." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Tpjm2FAVNHt6sBku6N3avd-1920-80.jpg" alt="The Keychron K8 Ultra 8K on a table." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>In addition, its battery life is solid too, with up to 760 hours of runtime with no RGB turned on. If you turn the lighting on at its lowest level, this figure drops to 225 hours. That's a huge increase over the older Keychron models I've tested, and the brand says it's down to the fact this keyboard is using new ZMK firmware.</p><p>ZMK is specifically designed for wireless connectivity, rather than the older QMK standard, which had wireless connectivity support more or less bolted on, which meant its battery life dropoff was quite noticeable. In my week or so with the K8 Ultra 8K, the percentage hasn't dropped much, and I've been through a workday where it hasn't moved from 100% charge in the Windows settings. </p><p>This also bodes well for the traditionally horrendous battery drop-off we see keyboards suffering from with 8000 Hz polling rate enabled, as it's reporting much more frequently than with a standard 1000 Hz rate keyboard, it tends to cane overall endurance. As its name suggests, this keyboard supports 8000 Hz polling, both over 2.4GHz wireless and USB-C wired, but that's as far as its 'gaming' chops go—no TMR, rapid trigger or all the rest of 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="SK5mUFxvJsXfM2i3Pzodod" name="Keychron K8 Ultra 8K 12" alt="The Keychron K8 Ultra 8K on a table." src="https://cdn.mos.cms.futurecdn.net/SK5mUFxvJsXfM2i3Pzodod-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>On the point of firmware (and by extension software), the K8 Ultra 8K supports Keychron's new web-based Launcher software, which is a lightweight and convenient method of configuring everything from macros, key remapping and tweaking the keyboard's RGB lighting. To be specific, it's got 22 different lighting presets you can pick from.</p><p>I admit, it's taken me long enough, but it's finally time to talk about switches. Seemingly in keeping with the theme of the K8 Ultra 8K being wholly new, it utilises Keychron's own Apex switches. These are a new switch that utilises a box stem design and a clear top, rather than a more traditional MX-style stem. The box stem is designed to reduce key wobble to some extent, although they are still quite wobbly in my experience with these switches.</p><p>You can get this keyboard in three different flavours, with a light and linear Red, a soft tactile Brown and a heavier soft tactile Banana switch available. Mine shipped with the Brown switch, which has a 50 g force and a standard 4mm travel. For reference, the Reds have a 45 g force and 4 mm travel, while the Bananas have a 55g force with a shorter 3.6 mm travel to allow for a sharper tactile bump halfway down the travel.</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="kg3H2XfFYSFGiPijBAqJsd" name="Keychron K8 Ultra 8K 9" alt="The Keychron K8 Ultra 8K on a table." src="https://cdn.mos.cms.futurecdn.net/kg3H2XfFYSFGiPijBAqJsd-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>In my experience, Brown switches of the clone variety are some of the hardest to get right against actual MX Browns, which I've used a lot in the intervening decade since getting into this hobby. Sometimes clones can be inconsistent in feel, or it can feel as if there isn't a bump at all, negating their soft tactile status. In my experience, the ones inside this keyboard feel the wrong side of subtle: there is a bump, but it's a little too soft and therefore not as noticeable as I'd like it to be. The 50 g weighting means they're also quite light, and I would prefer something heavier out of the box, but that's where the Banana switches come in.</p><p>Combined with the heaps of sound dampening and foam inside the keyboard's metal chassis, the fact that the default switches are also lubricated means the K8 Ultra 8K sounds divine once you get up to speed with a pleasant acoustic profile. It is quite loud and high-pitched though, owing to the resonance from the metal case, although there isn't any horrible rattle or ping.</p><div  class="fancy-box"><div class="fancy_box-title">Buy if...</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>✅ You want a solid all-rounder: </strong>The K8 Ultra 8K is a great all-round mechanical option with solid build quality, thoughtful extras and excellent battery life.</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 more consistent switches: </strong>The Brown switches on my particular sample aren't as consistent or strong as other tactiles I've tried on other keyboards.</p></div></div><p>If the switches inside aren't your jam though, then you can easily swap them out with a range of 3- or 5-pin choices, as this keyboard is hot-swappable. As with other Keychron keyboards, it bundles in a switch and keycap puller to make swapping them out a breeze. I had some spare Cherry MX Falcon tactile switches left over from a different project, which I slotted into the K8 Ultra 8K, and swapping them in was a doddle, as it usually is with these keyboards.</p><p>Now's usually the point where I'd potentially bemoan that this Keychron product is a little too dear, but I'm not going to. In fact, I'm a little shocked at the price. This keyboard is going to run you the princely sum of $120, which is very competitive considering what you get for the price. For reference, the full-size <a href="https://www.pcgamer.com/hardware/gaming-keyboards/ducky-zero-6108-review/" target="_blank">Ducky Zero 6108</a> with genuine Cherry MX2As inside is cheaper, and remains built like a tank, but its battery life isn't as strong, and there's barely any software support. </p><p>The <a href="https://www.pcgamer.com/asus-rog-strix-scope-ii-96-wireless-review/" target="_blank">Asus ROG Strix Scope II 96 Wireless</a> has traditionally been our favourite mechanical gaming pick and ticks all of the fundamental boxes with smooth switches, a solid build and convenient wireless connectivity. However, it's more expensive, and ROG Armory Crate doesn't provide the most optimal software experience.</p><p>Think of the K8 Ultra 8K as a pleasant halfway house between the two that gets mostly everything right. It's solid, dependable and versatile. For the price, you can't ask for much more than that. But, if I could have some more consistent soft tactile switches, that would be nice.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 'To own a Razer Artisan Keycap is to display one’s allegiance, a mark of belonging within the Cult of Razer' says the PR nonsense behind this $90 coil of snakes ]]></title>
                                                                                                <dc:content><![CDATA[ <p>"To own a Razer Artisan Keycap is to display one’s allegiance, a mark of belonging within the cult of Razer," says the marketing gumph for <a href="https://www.razer.com/newsroom/product-news/artisan-keycap-triple-headed-snake-edition" target="_blank">the company's first artisan keycap</a>. I've read a lot of ambitious press releases in this job, but that's definitely the strangest sentence I've parsed this year.</p><p>That being said, I do like the look of the <a href="https://www.razer.com/gaming-keyboards-accessories/razer-artisan-keycap" target="_blank">Razer Artisan Keycap - Triple-Headed Snake Edition</a>. Because as the name suggests, it's made up of a twisting coil of snakes. Indiana Jones wouldn't approve, but as for Andy-ana Edser? Aye, it's alright by me.</p><p>Razer's slippery new keycap is resin-cast, has been individually hand-painted (I'd genuinely enjoy that job), and subjected to a two-stage quality control process that makes sure no dust or bubbles are left on the final product.</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>It's been designed to fit on MX-style, cross-stem switches, so it should be compatible with most keyboards. Even if you haven't bought into the cult of Razer and gone for a competitor's product instead. Which is probably some form of heresy in Razer's eyes, I would imagine. </p><p>The keycap is also "the next step towards the ultimate expression of keyboard customisation," and "a statement of identity," apparently. My goodness. There was me thinking it was a little trinket you could shove on one of your lesser-used switches and admire on occasion between games. </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="w2RWFsGZXCbeQAmDC9nBfa" name="RazerArtisanKeycap" alt="A Razer artisan keycap made of up three resin-cast, neon green snakes" src="https://cdn.mos.cms.futurecdn.net/w2RWFsGZXCbeQAmDC9nBfa-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: Razer)</span></figcaption></figure><p>If you want one for yourself, Razer has a signup form for the initial batch on the product page, complete with a neon-green countdown timer that wouldn't look out of place in NASA mission control. In much smaller font underneath is the price: $90, which makes it one of the most expensive keycaps I think I've ever covered on this site.</p><p>"One of a kind. One of the cult," says Razer. Sure thing. Can I just enjoy my pricey keycap in peace, instead?</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-keyboards/to-own-a-razer-artisan-keycap-is-to-display-ones-allegiance-a-mark-of-belonging-within-the-cult-of-razer-says-the-pr-nonsense-behind-this-usd90-coil-of-snakes/</link>
                                                                            <description>
                            <![CDATA[ It's Medusa-friendly, though. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">WcFixSGfnUmV8wfSuFnxXH</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/6yD6mXyKNCopX4HAW84wp9-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 14 Aug 2026 14:45:06 +0000</pubDate>                                                                                                                                <updated>Fri, 14 Aug 2026 14:45:33 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming Keyboards]]></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/6yD6mXyKNCopX4HAW84wp9-1920-80.jpg">
                                                            <media:credit><![CDATA[Razer]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A Razer artisan keycap, made up of three green resin-cast snakes, attached to a gaming keyboard]]></media:description>                                                            <media:text><![CDATA[A Razer artisan keycap, made up of three green resin-cast snakes, attached to a gaming keyboard]]></media:text>
                                <media:title type="plain"><![CDATA[A Razer artisan keycap, made up of three green resin-cast snakes, attached to a gaming keyboard]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/6yD6mXyKNCopX4HAW84wp9-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>"To own a Razer Artisan Keycap is to display one’s allegiance, a mark of belonging within the cult of Razer," says the marketing gumph for <a href="https://www.razer.com/newsroom/product-news/artisan-keycap-triple-headed-snake-edition" target="_blank">the company's first artisan keycap</a>. I've read a lot of ambitious press releases in this job, but that's definitely the strangest sentence I've parsed this year.</p><p>That being said, I do like the look of the <a href="https://www.razer.com/gaming-keyboards-accessories/razer-artisan-keycap" target="_blank">Razer Artisan Keycap - Triple-Headed Snake Edition</a>. Because as the name suggests, it's made up of a twisting coil of snakes. Indiana Jones wouldn't approve, but as for Andy-ana Edser? Aye, it's alright by me.</p><p>Razer's slippery new keycap is resin-cast, has been individually hand-painted (I'd genuinely enjoy that job), and subjected to a two-stage quality control process that makes sure no dust or bubbles are left on the final product.</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>It's been designed to fit on MX-style, cross-stem switches, so it should be compatible with most keyboards. Even if you haven't bought into the cult of Razer and gone for a competitor's product instead. Which is probably some form of heresy in Razer's eyes, I would imagine. </p><p>The keycap is also "the next step towards the ultimate expression of keyboard customisation," and "a statement of identity," apparently. My goodness. There was me thinking it was a little trinket you could shove on one of your lesser-used switches and admire on occasion between games. </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="w2RWFsGZXCbeQAmDC9nBfa" name="RazerArtisanKeycap" alt="A Razer artisan keycap made of up three resin-cast, neon green snakes" src="https://cdn.mos.cms.futurecdn.net/w2RWFsGZXCbeQAmDC9nBfa-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: Razer)</span></figcaption></figure><p>If you want one for yourself, Razer has a signup form for the initial batch on the product page, complete with a neon-green countdown timer that wouldn't look out of place in NASA mission control. In much smaller font underneath is the price: $90, which makes it one of the most expensive keycaps I think I've ever covered on this site.</p><p>"One of a kind. One of the cult," says Razer. Sure thing. Can I just enjoy my pricey keycap in peace, instead?</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Asus ROG Azoth Extreme Edition 20 review ]]></title>
                                                                                                <dc:content><![CDATA[ <div data-widget-type="review" data-model-name="Asus ROG Azoth Extreme Edition 20" data-widget-title=""></div><p>After you spend above a certain amount of money on your gaming keyboard, you're not really paying for quality, specs, or competitive edge anymore. I felt this recently while testing out <a href="https://www.pcgamer.com/hardware/gaming-keyboards/melgeek-centauri-80-review/" target="_blank">Melgeek's Centauri 80</a>. In my approximation, any more than $200 and you move into bragging rights/centrepiece territory, and by that logic, I reckon the Asus ROG Azoth Extreme Edition 20 is worth about <em>three</em> centrepieces. </p><p>It's an expensive old beast, and $100 more than the already very pricey <a href="https://www.pcgamer.com/hardware/gaming-keyboards/asus-rog-azoth-extreme-review/" target="_blank">Asus ROG Azoth Extreme</a>, which we reviewed back in 2024. But it's hard to say that Asus hasn't thrown absolutely everything at this new keyboard to celebrate the 20-year anniversary of ROG; you're getting an 8,000 Hz polling, up to 1,600 hours of battery life, a carbon-fibre positioning plate, as well as multi-layer dampening, plus a whole host of extra accessories and extras in the box.</p><p>Oh, and did I mention the 24K-gold-plated commemorative nameplate? I probably should have mentioned the 24K-gold-plated commemorative nameplate. </p><p>The Azoth Extreme is a very well-built bit of tech. It's super hefty, but it's heavy for a reason. It's sturdy, and though I wouldn't much like to drop a $600 gaming keyboard, I feel like I could do so with relatively minor problems here. The OLED screen up at the top right looks lovely, and the controls next to it are easy to use and quite handy. You can adjust volume, change brightness, and even set up custom controls. It's not quite as useful as the likes of the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/corsair-galleon-100-sd-review/" target="_blank">Corsair Galleon 100 SD</a> and its built-in Stream Deck, but it will likely be enough for most.</p><div  class="fancy-box"><div class="fancy_box-title">Asus ROG Azoth Extreme Edition 20 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="Cwnbdh9BAwRPuPgwkbAWS8" name="IMG_0020" caption="" alt="Asus ROG Azoth Extreme Edition 20 from the left hand side, on top of a black table" src="https://cdn.mos.cms.futurecdn.net/Cwnbdh9BAwRPuPgwkbAWS8-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>Form factor:</strong> TKL<br><strong>Switch:</strong> ROG NX Mechanical Switch (hot swappable)<br><strong>Keycaps:</strong> ROG Edition 20 Translucent-Black Keycaps <strong>Lighting:</strong> Per-key RGB<br><strong>Connection type: </strong>Wired and wireless (Bluetooth and 2.4 GHz)<br><strong>Polling:</strong> 8,000 Hz<br><strong>Battery life:</strong> up to 1600 hours<br><strong>Extras: </strong>Name plate, polling rate booster, palm rest.<br><strong>Weight: </strong>1.5 kg<br><strong>Price:</strong> <a data-analytics-id="inline-link" href="https://eshop.asus.com/us/90mp04vf-bkaa20-rog-azoth-extreme-edition-20.html" target="_blank">$600</a> | <a data-analytics-id="inline-link" href="https://uk.store.asus.com/rog-azoth-extreme-edition-20-gaming-keyboard808-90mp04vf-bkea20.html" target="_blank">£540</a></p></div></div><p>Thanks to that weight, this TKL keyboard isn't exactly the type of thing you'd throw in a backpack. That said, a heavy keyboard is not nearly as much of a deal breaker as a heavy mouse or a heavy headset. In fact, the only thing I'd watch out for is the long-term wear on a particularly light mouse pad; 1.5 kg is a lot to put on any pad, and that's not including the weight of your hands on the wrist rest either. </p><p>The Azoth Extreme Edition 20 splits its keycap designs between standard black ones with a translucent base for the letter and number keys, then fully translucent caps for the F keys, space bar, and those on the side. Aesthetically, it works well and allows the per-key RGB to really shine. Initially, that RGB comes in all-gold (or, I suppose, with it being RGB, closer to a yellowed white). It makes the gold accenting on the side of the keyboard and bottom of the palm rest really pop. Despite gold tending to be a very gauche accent choice, it actually looks great in-person. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/xJR8gzsddgKydFkzu5jwN9-1920-80.jpg" alt="Asus ROG Azoth Extreme Edition 20 on a black table, with a box behind it" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/7eVAzyjNTbwgNunX3fq4B9-1920-80.jpg" alt="Asus ROG Azoth Extreme Edition 20 from the front, to the side, on a black desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/zMMPP7rG85HMXgMmERVkz8-1920-80.jpg" alt="Asus ROG Azoth Extreme Edition 20 extra accessories on a table" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/orT9mnxdLUdivVhKAHzru8-1920-80.jpg" alt="Asus ROG Azoth Extreme Edition 20 from the front left hand side, on a table" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The two types of keycaps don't just add to the aesthetic; they also feel different on the fingertips, which is a decent way of keeping your fingers in check when you're not actively looking at the keyboard. The full translucent keys are very smooth to the touch, feeling similar to the <a href="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/" target="_blank">ROG Harpe II Extreme Edition gaming mouse</a>, while the other style of keycaps have more of a matte feel. Both keycap designs are pretty in their own right, and the difference in feel between the two isn't distracting either. </p><p>As far as typing is concerned, I'd say the Azoth Extreme Edition 20's actuation is on the light side, but not so much that I found myself misclicking. It's near perfect for accuracy, speed, and ease of use, in my book. The typing sound is light and clicky, with those dampening layers taking out any thock you might expect from the weight of shoving keys down. It's almost like Asus has scooped the bass and mids from it and just left the treble on top. </p><p>Typing feel, as a result, is lovely. Keys press easily with a light, satisfying sound. It's easy to find your place on the keyboard by feel too due to the mixture of keycaps and solid spacing all around. I do miss the extra keys of a full-fledged keyboard, but with some smart custom controls, I get by just fine. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/QUmFPZkbEzaqvNVxVXLTR9-1920-80.jpg" alt="Asus ROG Azoth Extreme Edition 20 outside, from the front" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/FcNpLSL9ZKVLKy7RtkGd39-1920-80.jpg" alt="Asus ROG Azoth Extreme Edition 20 from the front right, outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/6AvJjNALfYurJXghmVTFt8-1920-80.jpg" alt="Asus ROG Azoth Extreme Edition 20 from the right hand side, outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/rc9xhbKgRQkp73zv3XJt39-1920-80.jpg" alt="Asus ROG Azoth Extreme Edition 20 from the back, outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/AmEKnk3QJr3uh3caNdUMv8-1920-80.jpg" alt="Asus ROG Azoth Extreme Edition 20 from the left side, outside" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>My first gaming test with the Azoth Extreme Edition 20 was to take it into a Counter-Strike 2 match, and I can happily report that me losing had nothing to do with the keyboard. It's super snappy and responsive, with its light actuation keys making quick reactions much easier. It's also just plain effortless to use, with little fatigue after hours of gaming. As I learned when I tested the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/melgeek-real81-review/" target="_blank">Melgeek Real 81</a>, that's a really important facet of using any gaming keyboard. </p><p>You're getting an optional 8,000 Hz polling here (though worse battery life as a result), but you're still getting mechanical switches, which is a surprise. Them being hot swappable certainly helps, but one would hope for analogue or optical switches, for faster clicks, better battery efficiency, and rapid trigger. Still, it's super fast anyway, so you may not notice that downgrade from some other high-spec 2026 gaming keyboards. </p><div><blockquote><p>It's super snappy and responsive, with its light actuation keys making quick reactions much easier. It's also just plain effortless to use.</p></blockquote></div><p>Overall, I'd say the Extreme Edition 20 is a stronger package than the 2024 Azoth Extreme, coming with the poll rate booster, plus tons of extra bits, a palm rest, and an upgraded battery life. The NX mechanical switches feel great under the fingers, but you are paying $100 for that upgrade. </p><p>One problem I do have with the Azoth Extreme Edition 20 is a pretty common one, as far as keyboards go. The keycaps that don't have translucent tops have white lettering on black, which can be quite tough to make out in the dark. Some keyboard manufacturers get around this by making lettering translucent and shining RGB through it (like the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/logitech-g915-x-lightspeed-review/" target="_blank">Logitech G915 X Lightspeed</a>), but that makes them harder to see under natural light. This means when there's little light on the keyboard, I have to make out keys through feel. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ecYk7mva9J5cKFVMrovC5B" name="IMG_0015" alt="Asus ROG Azoth Extreme Edition 20 with rgb on, in the dark" src="https://cdn.mos.cms.futurecdn.net/ecYk7mva9J5cKFVMrovC5B-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">How the keyboard looks, in the dark </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Unfortunately, Asus's software continues to be a problem. It worked fine when I first set it up but, it suddenly just stopped working when I tried to swap the OLED screen animation. The web app requires an extra bit of software to actually run, and it soon stopped as it said I didn't have the software, despite me installing it. A fresh install did not fix this problem, either. In Armoury Crate, it simply refuses to recognise the keyboard, even with multiple restarts and a fresh batch of software. </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 an uber luxurious keeb: </strong> It's a gorgeous keyboard, and an improvement on the standard Azoth (for a fifth more)</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 just want great specs: </strong>The Azoth Extreme has great specs, but you can get almost everything it has for much, much less</p></div></div><p>Software problems aren't unique, but the Azoth Extreme 20 is a glorious keyboard with golden highlights and a breadth of extra little goodies included in the box. It feels like a limousine coming to pick you up, but inside it turns out to be a plain old Honda Accord. There's nothing wrong with an Accord, but Asus is pulling out the stops for this keyboard, and it simply can't make it down the runway without a hitch. </p><p>Stating that the Azoth Extreme Edition 20 is expensive feels so obvious it's almost not worth saying. That might be kinda the point here: it's a limited edition bit of tech that comes with a thank you card, extra switches, a switch and keycap puller, a polling rate booster, the aforementioned nameplate, a cleaning cloth, and all manner of little extras. It is extravagant and meant to feel that way. </p><p>As such, comparing it to a standard gaming keyboard is a bit hard, as you don't walk into a Walmart and think 'I wonder if that's worth it'. It's more of a piece of hardware you search out, and if you're prepared to part with all of that money, you are getting a truly lovely bit of tech. I just couldn't ever see myself being prepared to spend that much on it.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-keyboards/asus-rog-azoth-extreme-edition-20-review/</link>
                                                                            <description>
                            <![CDATA[ The type of keyboard you buy because you can, and boy does it shine. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">9kVBbSgAwuM8VfT4bojfLR</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/qHYtJQiCs2CPfmMExTfbJ9-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 24 Jul 2026 16:30:50 +0000</pubDate>                                                                                                                                <updated>Wed, 19 Aug 2026 13:12:52 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming Keyboards]]></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/qHYtJQiCs2CPfmMExTfbJ9-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Asus ROG Azoth Extreme Edition 20 from the front, outside]]></media:description>                                                            <media:text><![CDATA[Asus ROG Azoth Extreme Edition 20 from the front, outside]]></media:text>
                                <media:title type="plain"><![CDATA[Asus ROG Azoth Extreme Edition 20 from the front, outside]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/qHYtJQiCs2CPfmMExTfbJ9-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div data-widget-type="review" data-model-name="Asus ROG Azoth Extreme Edition 20" data-widget-title=""></div><p>After you spend above a certain amount of money on your gaming keyboard, you're not really paying for quality, specs, or competitive edge anymore. I felt this recently while testing out <a href="https://www.pcgamer.com/hardware/gaming-keyboards/melgeek-centauri-80-review/" target="_blank">Melgeek's Centauri 80</a>. In my approximation, any more than $200 and you move into bragging rights/centrepiece territory, and by that logic, I reckon the Asus ROG Azoth Extreme Edition 20 is worth about <em>three</em> centrepieces. </p><p>It's an expensive old beast, and $100 more than the already very pricey <a href="https://www.pcgamer.com/hardware/gaming-keyboards/asus-rog-azoth-extreme-review/" target="_blank">Asus ROG Azoth Extreme</a>, which we reviewed back in 2024. But it's hard to say that Asus hasn't thrown absolutely everything at this new keyboard to celebrate the 20-year anniversary of ROG; you're getting an 8,000 Hz polling, up to 1,600 hours of battery life, a carbon-fibre positioning plate, as well as multi-layer dampening, plus a whole host of extra accessories and extras in the box.</p><p>Oh, and did I mention the 24K-gold-plated commemorative nameplate? I probably should have mentioned the 24K-gold-plated commemorative nameplate. </p><p>The Azoth Extreme is a very well-built bit of tech. It's super hefty, but it's heavy for a reason. It's sturdy, and though I wouldn't much like to drop a $600 gaming keyboard, I feel like I could do so with relatively minor problems here. The OLED screen up at the top right looks lovely, and the controls next to it are easy to use and quite handy. You can adjust volume, change brightness, and even set up custom controls. It's not quite as useful as the likes of the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/corsair-galleon-100-sd-review/" target="_blank">Corsair Galleon 100 SD</a> and its built-in Stream Deck, but it will likely be enough for most.</p><div  class="fancy-box"><div class="fancy_box-title">Asus ROG Azoth Extreme Edition 20 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="Cwnbdh9BAwRPuPgwkbAWS8" name="IMG_0020" caption="" alt="Asus ROG Azoth Extreme Edition 20 from the left hand side, on top of a black table" src="https://cdn.mos.cms.futurecdn.net/Cwnbdh9BAwRPuPgwkbAWS8-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>Form factor:</strong> TKL<br><strong>Switch:</strong> ROG NX Mechanical Switch (hot swappable)<br><strong>Keycaps:</strong> ROG Edition 20 Translucent-Black Keycaps <strong>Lighting:</strong> Per-key RGB<br><strong>Connection type: </strong>Wired and wireless (Bluetooth and 2.4 GHz)<br><strong>Polling:</strong> 8,000 Hz<br><strong>Battery life:</strong> up to 1600 hours<br><strong>Extras: </strong>Name plate, polling rate booster, palm rest.<br><strong>Weight: </strong>1.5 kg<br><strong>Price:</strong> <a data-analytics-id="inline-link" href="https://eshop.asus.com/us/90mp04vf-bkaa20-rog-azoth-extreme-edition-20.html" target="_blank">$600</a> | <a data-analytics-id="inline-link" href="https://uk.store.asus.com/rog-azoth-extreme-edition-20-gaming-keyboard808-90mp04vf-bkea20.html" target="_blank">£540</a></p></div></div><p>Thanks to that weight, this TKL keyboard isn't exactly the type of thing you'd throw in a backpack. That said, a heavy keyboard is not nearly as much of a deal breaker as a heavy mouse or a heavy headset. In fact, the only thing I'd watch out for is the long-term wear on a particularly light mouse pad; 1.5 kg is a lot to put on any pad, and that's not including the weight of your hands on the wrist rest either. </p><p>The Azoth Extreme Edition 20 splits its keycap designs between standard black ones with a translucent base for the letter and number keys, then fully translucent caps for the F keys, space bar, and those on the side. Aesthetically, it works well and allows the per-key RGB to really shine. Initially, that RGB comes in all-gold (or, I suppose, with it being RGB, closer to a yellowed white). It makes the gold accenting on the side of the keyboard and bottom of the palm rest really pop. Despite gold tending to be a very gauche accent choice, it actually looks great in-person. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/xJR8gzsddgKydFkzu5jwN9-1920-80.jpg" alt="Asus ROG Azoth Extreme Edition 20 on a black table, with a box behind it" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/7eVAzyjNTbwgNunX3fq4B9-1920-80.jpg" alt="Asus ROG Azoth Extreme Edition 20 from the front, to the side, on a black desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/zMMPP7rG85HMXgMmERVkz8-1920-80.jpg" alt="Asus ROG Azoth Extreme Edition 20 extra accessories on a table" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/orT9mnxdLUdivVhKAHzru8-1920-80.jpg" alt="Asus ROG Azoth Extreme Edition 20 from the front left hand side, on a table" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The two types of keycaps don't just add to the aesthetic; they also feel different on the fingertips, which is a decent way of keeping your fingers in check when you're not actively looking at the keyboard. The full translucent keys are very smooth to the touch, feeling similar to the <a href="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/" target="_blank">ROG Harpe II Extreme Edition gaming mouse</a>, while the other style of keycaps have more of a matte feel. Both keycap designs are pretty in their own right, and the difference in feel between the two isn't distracting either. </p><p>As far as typing is concerned, I'd say the Azoth Extreme Edition 20's actuation is on the light side, but not so much that I found myself misclicking. It's near perfect for accuracy, speed, and ease of use, in my book. The typing sound is light and clicky, with those dampening layers taking out any thock you might expect from the weight of shoving keys down. It's almost like Asus has scooped the bass and mids from it and just left the treble on top. </p><p>Typing feel, as a result, is lovely. Keys press easily with a light, satisfying sound. It's easy to find your place on the keyboard by feel too due to the mixture of keycaps and solid spacing all around. I do miss the extra keys of a full-fledged keyboard, but with some smart custom controls, I get by just fine. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/QUmFPZkbEzaqvNVxVXLTR9-1920-80.jpg" alt="Asus ROG Azoth Extreme Edition 20 outside, from the front" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/FcNpLSL9ZKVLKy7RtkGd39-1920-80.jpg" alt="Asus ROG Azoth Extreme Edition 20 from the front right, outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/6AvJjNALfYurJXghmVTFt8-1920-80.jpg" alt="Asus ROG Azoth Extreme Edition 20 from the right hand side, outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/rc9xhbKgRQkp73zv3XJt39-1920-80.jpg" alt="Asus ROG Azoth Extreme Edition 20 from the back, outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/AmEKnk3QJr3uh3caNdUMv8-1920-80.jpg" alt="Asus ROG Azoth Extreme Edition 20 from the left side, outside" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>My first gaming test with the Azoth Extreme Edition 20 was to take it into a Counter-Strike 2 match, and I can happily report that me losing had nothing to do with the keyboard. It's super snappy and responsive, with its light actuation keys making quick reactions much easier. It's also just plain effortless to use, with little fatigue after hours of gaming. As I learned when I tested the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/melgeek-real81-review/" target="_blank">Melgeek Real 81</a>, that's a really important facet of using any gaming keyboard. </p><p>You're getting an optional 8,000 Hz polling here (though worse battery life as a result), but you're still getting mechanical switches, which is a surprise. Them being hot swappable certainly helps, but one would hope for analogue or optical switches, for faster clicks, better battery efficiency, and rapid trigger. Still, it's super fast anyway, so you may not notice that downgrade from some other high-spec 2026 gaming keyboards. </p><div><blockquote><p>It's super snappy and responsive, with its light actuation keys making quick reactions much easier. It's also just plain effortless to use.</p></blockquote></div><p>Overall, I'd say the Extreme Edition 20 is a stronger package than the 2024 Azoth Extreme, coming with the poll rate booster, plus tons of extra bits, a palm rest, and an upgraded battery life. The NX mechanical switches feel great under the fingers, but you are paying $100 for that upgrade. </p><p>One problem I do have with the Azoth Extreme Edition 20 is a pretty common one, as far as keyboards go. The keycaps that don't have translucent tops have white lettering on black, which can be quite tough to make out in the dark. Some keyboard manufacturers get around this by making lettering translucent and shining RGB through it (like the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/logitech-g915-x-lightspeed-review/" target="_blank">Logitech G915 X Lightspeed</a>), but that makes them harder to see under natural light. This means when there's little light on the keyboard, I have to make out keys through feel. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ecYk7mva9J5cKFVMrovC5B" name="IMG_0015" alt="Asus ROG Azoth Extreme Edition 20 with rgb on, in the dark" src="https://cdn.mos.cms.futurecdn.net/ecYk7mva9J5cKFVMrovC5B-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">How the keyboard looks, in the dark </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Unfortunately, Asus's software continues to be a problem. It worked fine when I first set it up but, it suddenly just stopped working when I tried to swap the OLED screen animation. The web app requires an extra bit of software to actually run, and it soon stopped as it said I didn't have the software, despite me installing it. A fresh install did not fix this problem, either. In Armoury Crate, it simply refuses to recognise the keyboard, even with multiple restarts and a fresh batch of software. </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 an uber luxurious keeb: </strong> It's a gorgeous keyboard, and an improvement on the standard Azoth (for a fifth more)</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 just want great specs: </strong>The Azoth Extreme has great specs, but you can get almost everything it has for much, much less</p></div></div><p>Software problems aren't unique, but the Azoth Extreme 20 is a glorious keyboard with golden highlights and a breadth of extra little goodies included in the box. It feels like a limousine coming to pick you up, but inside it turns out to be a plain old Honda Accord. There's nothing wrong with an Accord, but Asus is pulling out the stops for this keyboard, and it simply can't make it down the runway without a hitch. </p><p>Stating that the Azoth Extreme Edition 20 is expensive feels so obvious it's almost not worth saying. That might be kinda the point here: it's a limited edition bit of tech that comes with a thank you card, extra switches, a switch and keycap puller, a polling rate booster, the aforementioned nameplate, a cleaning cloth, and all manner of little extras. It is extravagant and meant to feel that way. </p><p>As such, comparing it to a standard gaming keyboard is a bit hard, as you don't walk into a Walmart and think 'I wonder if that's worth it'. It's more of a piece of hardware you search out, and if you're prepared to part with all of that money, you are getting a truly lovely bit of tech. I just couldn't ever see myself being prepared to spend that much on it.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Turtle Beach Command Series KB7 TKL gaming keyboard review ]]></title>
                                                                                                <dc:content><![CDATA[ <div data-widget-type="review" data-model-name="Turtle Beach Command Series KB7 TKL"></div><p>As we know, Turtle Beach loves to put a big ol' screen on its peripherals and this decadent Hall effect keyboard is probably the apotheosis of "big screen on otherwise screen-less thing" design. It's a big 4.3-inch color touchscreen affair that does little more than what can already be achieved on the monitor directly in front of you. But it can definitely do it <em>quicker.</em></p><p>More on that screen later but yes, it does confer an added level of prestige to this slab, which is no slouch in the looks department. Weighing in at just under a kilo without a palm rest, it has a weapon-like and stylish aluminium veneer body and, it almost goes without saying, RGB that's customisable on a key-by-key basis. The gun metal grey veneer gives it a slightly gritty quality, but tastefully so: it's a hardcore keyboard, but it's not overtly a hardcore <em>gaming </em>keyboard unless, of course, you have the Counter-Strike touchscreen template blaring on that display.</p><p>The elephant in the room is that the Command Series KB7 has Hall effect switches. If you pay attention to modern gamepad design you're probably accustomed to assuming that Hall effect equals better. Where keyboards are concerned, the truth is a touch more complicated. Mechanical keyboards trigger inputs physically whereas Hall effect keyboards do so digitally. Ultimately, it means Hall effect switches can be triggered more quickly and in rapid succession. They are, in other words, super low-latency keyboards. </p><div ><table><caption>Command Series KB7 TKL specs</caption><tbody><tr><td class="firstcol " ><p><strong>Form factor</strong></p></td><td  ><p>TKL</p></td></tr><tr><td class="firstcol " ><p><strong>Switch</strong></p></td><td  ><p>Hall Effect switches with Rapid Trigger and adjustable actuation</p></td></tr><tr><td class="firstcol " ><p><strong>Keycaps</strong></p></td><td  ><p>Double-shot PBT (hot-swappable)</p></td></tr><tr><td class="firstcol " ><p><strong>Lighting</strong></p></td><td  ><p>RGB, keyboard- or software-controllable, per-key</p></td></tr><tr><td class="firstcol " ><p><strong>Connection type</strong></p></td><td  ><p>USB Type-C wired</p></td></tr><tr><td class="firstcol " ><p><strong>Polling</strong></p></td><td  ><p>Up to 8,000 Hz</p></td></tr><tr><td class="firstcol " ><p><strong>Cable</strong></p></td><td  ><p>USB Type-C/USB Type-A, detachable</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>858g / 1120g (with palm rest)</p></td></tr><tr><td class="firstcol " ><p><strong>Colours</strong></p></td><td  ><p>Black or White</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p><a href="https://www.turtlebeach.com/products/command-series-kb7-keyboard" target="_blank">$199.99</a> / <a href="https://uk.turtlebeach.com/products/command-series-kb7-keyboard" target="_blank">£189.99</a> / AU$349.95</p></td></tr></tbody></table></div><p>There's every chance you've never noticed any meaningful latency in your (likely wired) gaming keyboard. With 8K polling, the response time on these keys is a blinding 0.125ms, but that's been achievable on mechanical slabs for a while. But among other less showy benefits, Hall effect keyboards offer a huge amount of customisation when it comes to actuation: one can adjust this metric—which basically measures how sensitive a key is to the user's press—on a key-by-key basis. </p><p>Using the Turtle Beach Swarm 2 app, actuation can also be tweaked globally on a scale of 0.1ms to 3.2ms: Drag it all the way up to 0.1ms and you'll probably start to ssssound liiike a hissssssing sssnake during moment-to-moment typing. Lower actuation can lead to accidental inputs, but where there's a will there's a way, and if you want ultra-sensitivity I'm sure you'll adapt. If you're the kind of person who slams A and D when strafing in a first-person shooter, a lower actuation may make sense. The freedom to tinker is what Hall effect keyboards are really all about, and doing so here is a breeze—especially with five onboard profiles to muck around with.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="yNGMopws3vRCgHijCY8wi9" name="Turtle Beach Command Series KB7 TKL Hall-Effect Wired Keyboard" alt="Turtle Beach Command Series KB7 TKL Hall-Effect Wired Keyboard" src="https://cdn.mos.cms.futurecdn.net/yNGMopws3vRCgHijCY8wi9-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" 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 screen seems a bit superfluous and showy at first, but over time its flexibility blossoms. Using the Turtle Swarm software I can load a bunch of pre-made templates into the onboard memory. These templates come in the form of three-by-four grids of buttons—like the missing numpad—including shortcuts for OBS, Discord, Counter-Strike, Teams, Zoom, League of Legends, Streamlab, and Photoshop.</p><p>I did miss onboard shortcuts—with useful glyphs—for Steam, which would seem to make more sense than dedicated buttons for Microsoft's Gamebar. I had to make do with creating macros which I could then assign to the touchscreen, though there's no way to customise the icon of said macros, so if I create too many there's no simple visual identifier to distinguish them: they just show as New Macro. Meanwhile, there are dozens of pre-fab macros in the Swarm 2 app that you can use, ranging from obvious choices like Apex Legends and Dota 2 through to BioShock 2 (but not 1) for some reason.</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:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="r65hE37Vby557CirYRxi6m" name="Turtle Beach Command Series KB7 TKL Hall-Effect Wired Keyboard" alt="Turtle Beach Command Series KB7 TKL Hall-Effect Wired Keyboard" src="https://cdn.mos.cms.futurecdn.net/r65hE37Vby557CirYRxi6m-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" 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>Other shortcuts, for things like cut, copy, paste, undo, redo and Microsoft's Gamebar have shortcut glyphs, but I struggle to imagine anyone wanting to access them via touchscreen instead of keyboard shortcuts we've built up the muscle memory for over decades. If you're a streamer there are very obvious benefits to having OBS and Streamlab shortcuts available at a single button press without having to mess with what's displaying on your monitor, or investing in a separate peripheral.</p><p>Even as a non-streamer though, over the month I've spent using the KB7, I have started to lean on some of the touchscreen's functionality. I love that I can add shortcuts to websites (I now have an emergency <a href="http://www.pcgamer.com">www.pcgamer.com</a> button) and even to folders—a single button to access my Downloads folder, or the folder where Steam screenshots are kept—is something I started to use a lot. Also: you can add your very own background image. Whether you opt for Bathtub Geralt or, well, anything else really, I'm sure you'll agree this level of customisation is fun.</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:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="NY4z4nFCADbLzYuDUEWSwd" name="Turtle Beach Command Series KB7 TKL Hall-Effect Wired Keyboard" alt="The screen on the Turtle Beach Command Series KB7 TKL Hall-Effect Wired Keyboard" src="https://cdn.mos.cms.futurecdn.net/NY4z4nFCADbLzYuDUEWSwd-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" 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 that actuation and rapid-trigger configuration can be handled on the screen itself, even though you might want to use the Swarm software instead. The latter isn't terrible—it does the job and the UI, nowadays, is straightforward and easy to use—though I did experience a few crashes. </p><p>The typing experience on the KB7 is brilliant but if, like me, you're accustomed to years of using mechanical keyboards, it'll probably take a day or so for Hall effect keys to <em>click</em>. The snap and crackle of a full fat mechanical slab is replaced here by a slightly more muted but still tactile sonic feedback from the low-profile keys, which are equipped with Titan switches.</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:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="QDpSBEbxuBUvQyXibeNcjP" name="Turtle Beach Command Series KB7 TKL Hall-Effect Wired Keyboard" alt="Turtle Beach Command Series KB7 TKL Hall-Effect Wired Keyboard - view of under the keys" src="https://cdn.mos.cms.futurecdn.net/QDpSBEbxuBUvQyXibeNcjP-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" 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="fancy-box"><div class="fancy_box-title">Buy if...</div><div class="fancy_box_body"><p class="fancy-box__body-text">✅ <strong>You're obsessed with reducing latency: </strong>A 8,000Hz polling rate and adjustable actuation leaves a lot of room for customization.<br><br>✅ <strong>You love the screen: </strong>The screen has a variety of nice use cases and once you've had it, you may forever miss it.</p></div></div><div  class="fancy-box"><div class="fancy_box-title">Don't buy if...</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>❌ You don't need a screen: </strong>Well, arguably <em>no one </em>needs a screen on their keyboard. If it's just a Hall effect 8k keyboard you're after, you can get a good one cheaper without the big panel on the right.</p></div></div><p>I was at first concerned that my hands would brush across that big boi screen but this effectively works as a 65%er with the system keys (print screen, screenlock etc) replaced by the display. The media control knobs and switches are well-situated, while the triangular keys along the top switch profiles at a single button press, mute and unmute the mic, and toggle on and off the KB7's RGB trimmings.</p><p>And look: at $200 it's pricey, but it does beat the competition in this department. The Corsair Vanguard Pro 96 is a Hall effect keyboard with a smaller screen that retails for $240 (though it can be had for cheaper if you look). The difference, of course, is that the present Turtle Beach is a tenkeyless affair if you're not counting the ten keys it's possible to assign to the display, but if you want that extra set of physical keys you can get the KP7 add-on for an extra $100. If you must have the tenkeys and accompanying status display, that does increase the overall price significantly.</p><p>In many ways the KB7 kinda transcends its status as a mere keyboard: it's also basically a workstation. If you do buy that KP7 attachment, you may feel like you're seated at a control panel or mixing desk. I can definitely see why streamers and content creators would want to fork out for the whole kit and caboodle. As for the rest of us, once you've used the touchscreen you may struggle to live without it. Whether you want to introduce another must-have into your life is up to you, but this KB7 definitely provides me something I didn't know I wanted.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-keyboards/turtle-beach-command-series-kb7-tkl-review/</link>
                                                                            <description>
                            <![CDATA[ Turtle Beach puts a screen on another screenless PC mainstay. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">iHzgHfbNTjfDwcV3YWffkL</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/vKQcrwr43mZvxAaNLbjepM-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 30 Jun 2026 14:06:39 +0000</pubDate>                                                                                                                                <updated>Mon, 06 Jul 2026 14:37:23 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming Keyboards]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                <author><![CDATA[ shaun.prescott@futurenet.com (Shaun Prescott) ]]></author>                    <dc:creator><![CDATA[ Shaun Prescott ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/W7q4asCziYRHUEennZcpyC-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/vKQcrwr43mZvxAaNLbjepM-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A keyboard on a wooden bench]]></media:description>                                                            <media:text><![CDATA[A keyboard on a wooden bench]]></media:text>
                                <media:title type="plain"><![CDATA[A keyboard on a wooden bench]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/vKQcrwr43mZvxAaNLbjepM-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div data-widget-type="review" data-model-name="Turtle Beach Command Series KB7 TKL"></div><p>As we know, Turtle Beach loves to put a big ol' screen on its peripherals and this decadent Hall effect keyboard is probably the apotheosis of "big screen on otherwise screen-less thing" design. It's a big 4.3-inch color touchscreen affair that does little more than what can already be achieved on the monitor directly in front of you. But it can definitely do it <em>quicker.</em></p><p>More on that screen later but yes, it does confer an added level of prestige to this slab, which is no slouch in the looks department. Weighing in at just under a kilo without a palm rest, it has a weapon-like and stylish aluminium veneer body and, it almost goes without saying, RGB that's customisable on a key-by-key basis. The gun metal grey veneer gives it a slightly gritty quality, but tastefully so: it's a hardcore keyboard, but it's not overtly a hardcore <em>gaming </em>keyboard unless, of course, you have the Counter-Strike touchscreen template blaring on that display.</p><p>The elephant in the room is that the Command Series KB7 has Hall effect switches. If you pay attention to modern gamepad design you're probably accustomed to assuming that Hall effect equals better. Where keyboards are concerned, the truth is a touch more complicated. Mechanical keyboards trigger inputs physically whereas Hall effect keyboards do so digitally. Ultimately, it means Hall effect switches can be triggered more quickly and in rapid succession. They are, in other words, super low-latency keyboards. </p><div ><table><caption>Command Series KB7 TKL specs</caption><tbody><tr><td class="firstcol " ><p><strong>Form factor</strong></p></td><td  ><p>TKL</p></td></tr><tr><td class="firstcol " ><p><strong>Switch</strong></p></td><td  ><p>Hall Effect switches with Rapid Trigger and adjustable actuation</p></td></tr><tr><td class="firstcol " ><p><strong>Keycaps</strong></p></td><td  ><p>Double-shot PBT (hot-swappable)</p></td></tr><tr><td class="firstcol " ><p><strong>Lighting</strong></p></td><td  ><p>RGB, keyboard- or software-controllable, per-key</p></td></tr><tr><td class="firstcol " ><p><strong>Connection type</strong></p></td><td  ><p>USB Type-C wired</p></td></tr><tr><td class="firstcol " ><p><strong>Polling</strong></p></td><td  ><p>Up to 8,000 Hz</p></td></tr><tr><td class="firstcol " ><p><strong>Cable</strong></p></td><td  ><p>USB Type-C/USB Type-A, detachable</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>858g / 1120g (with palm rest)</p></td></tr><tr><td class="firstcol " ><p><strong>Colours</strong></p></td><td  ><p>Black or White</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p><a href="https://www.turtlebeach.com/products/command-series-kb7-keyboard" target="_blank">$199.99</a> / <a href="https://uk.turtlebeach.com/products/command-series-kb7-keyboard" target="_blank">£189.99</a> / AU$349.95</p></td></tr></tbody></table></div><p>There's every chance you've never noticed any meaningful latency in your (likely wired) gaming keyboard. With 8K polling, the response time on these keys is a blinding 0.125ms, but that's been achievable on mechanical slabs for a while. But among other less showy benefits, Hall effect keyboards offer a huge amount of customisation when it comes to actuation: one can adjust this metric—which basically measures how sensitive a key is to the user's press—on a key-by-key basis. </p><p>Using the Turtle Beach Swarm 2 app, actuation can also be tweaked globally on a scale of 0.1ms to 3.2ms: Drag it all the way up to 0.1ms and you'll probably start to ssssound liiike a hissssssing sssnake during moment-to-moment typing. Lower actuation can lead to accidental inputs, but where there's a will there's a way, and if you want ultra-sensitivity I'm sure you'll adapt. If you're the kind of person who slams A and D when strafing in a first-person shooter, a lower actuation may make sense. The freedom to tinker is what Hall effect keyboards are really all about, and doing so here is a breeze—especially with five onboard profiles to muck around with.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="yNGMopws3vRCgHijCY8wi9" name="Turtle Beach Command Series KB7 TKL Hall-Effect Wired Keyboard" alt="Turtle Beach Command Series KB7 TKL Hall-Effect Wired Keyboard" src="https://cdn.mos.cms.futurecdn.net/yNGMopws3vRCgHijCY8wi9-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" 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 screen seems a bit superfluous and showy at first, but over time its flexibility blossoms. Using the Turtle Swarm software I can load a bunch of pre-made templates into the onboard memory. These templates come in the form of three-by-four grids of buttons—like the missing numpad—including shortcuts for OBS, Discord, Counter-Strike, Teams, Zoom, League of Legends, Streamlab, and Photoshop.</p><p>I did miss onboard shortcuts—with useful glyphs—for Steam, which would seem to make more sense than dedicated buttons for Microsoft's Gamebar. I had to make do with creating macros which I could then assign to the touchscreen, though there's no way to customise the icon of said macros, so if I create too many there's no simple visual identifier to distinguish them: they just show as New Macro. Meanwhile, there are dozens of pre-fab macros in the Swarm 2 app that you can use, ranging from obvious choices like Apex Legends and Dota 2 through to BioShock 2 (but not 1) for some reason.</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:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="r65hE37Vby557CirYRxi6m" name="Turtle Beach Command Series KB7 TKL Hall-Effect Wired Keyboard" alt="Turtle Beach Command Series KB7 TKL Hall-Effect Wired Keyboard" src="https://cdn.mos.cms.futurecdn.net/r65hE37Vby557CirYRxi6m-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" 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>Other shortcuts, for things like cut, copy, paste, undo, redo and Microsoft's Gamebar have shortcut glyphs, but I struggle to imagine anyone wanting to access them via touchscreen instead of keyboard shortcuts we've built up the muscle memory for over decades. If you're a streamer there are very obvious benefits to having OBS and Streamlab shortcuts available at a single button press without having to mess with what's displaying on your monitor, or investing in a separate peripheral.</p><p>Even as a non-streamer though, over the month I've spent using the KB7, I have started to lean on some of the touchscreen's functionality. I love that I can add shortcuts to websites (I now have an emergency <a href="http://www.pcgamer.com">www.pcgamer.com</a> button) and even to folders—a single button to access my Downloads folder, or the folder where Steam screenshots are kept—is something I started to use a lot. Also: you can add your very own background image. Whether you opt for Bathtub Geralt or, well, anything else really, I'm sure you'll agree this level of customisation is fun.</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:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="NY4z4nFCADbLzYuDUEWSwd" name="Turtle Beach Command Series KB7 TKL Hall-Effect Wired Keyboard" alt="The screen on the Turtle Beach Command Series KB7 TKL Hall-Effect Wired Keyboard" src="https://cdn.mos.cms.futurecdn.net/NY4z4nFCADbLzYuDUEWSwd-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" 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 that actuation and rapid-trigger configuration can be handled on the screen itself, even though you might want to use the Swarm software instead. The latter isn't terrible—it does the job and the UI, nowadays, is straightforward and easy to use—though I did experience a few crashes. </p><p>The typing experience on the KB7 is brilliant but if, like me, you're accustomed to years of using mechanical keyboards, it'll probably take a day or so for Hall effect keys to <em>click</em>. The snap and crackle of a full fat mechanical slab is replaced here by a slightly more muted but still tactile sonic feedback from the low-profile keys, which are equipped with Titan switches.</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:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="QDpSBEbxuBUvQyXibeNcjP" name="Turtle Beach Command Series KB7 TKL Hall-Effect Wired Keyboard" alt="Turtle Beach Command Series KB7 TKL Hall-Effect Wired Keyboard - view of under the keys" src="https://cdn.mos.cms.futurecdn.net/QDpSBEbxuBUvQyXibeNcjP-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" 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="fancy-box"><div class="fancy_box-title">Buy if...</div><div class="fancy_box_body"><p class="fancy-box__body-text">✅ <strong>You're obsessed with reducing latency: </strong>A 8,000Hz polling rate and adjustable actuation leaves a lot of room for customization.<br><br>✅ <strong>You love the screen: </strong>The screen has a variety of nice use cases and once you've had it, you may forever miss it.</p></div></div><div  class="fancy-box"><div class="fancy_box-title">Don't buy if...</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>❌ You don't need a screen: </strong>Well, arguably <em>no one </em>needs a screen on their keyboard. If it's just a Hall effect 8k keyboard you're after, you can get a good one cheaper without the big panel on the right.</p></div></div><p>I was at first concerned that my hands would brush across that big boi screen but this effectively works as a 65%er with the system keys (print screen, screenlock etc) replaced by the display. The media control knobs and switches are well-situated, while the triangular keys along the top switch profiles at a single button press, mute and unmute the mic, and toggle on and off the KB7's RGB trimmings.</p><p>And look: at $200 it's pricey, but it does beat the competition in this department. The Corsair Vanguard Pro 96 is a Hall effect keyboard with a smaller screen that retails for $240 (though it can be had for cheaper if you look). The difference, of course, is that the present Turtle Beach is a tenkeyless affair if you're not counting the ten keys it's possible to assign to the display, but if you want that extra set of physical keys you can get the KP7 add-on for an extra $100. If you must have the tenkeys and accompanying status display, that does increase the overall price significantly.</p><p>In many ways the KB7 kinda transcends its status as a mere keyboard: it's also basically a workstation. If you do buy that KP7 attachment, you may feel like you're seated at a control panel or mixing desk. I can definitely see why streamers and content creators would want to fork out for the whole kit and caboodle. As for the rest of us, once you've used the touchscreen you may struggle to live without it. Whether you want to introduce another must-have into your life is up to you, but this KB7 definitely provides me something I didn't know I wanted.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Logitech G316 X (tactile) gaming keyboard review ]]></title>
                                                                                                <dc:content><![CDATA[ <div data-widget-type="review" data-model-name="Logitech G316 X" data-widget-title=""></div><p>Logitech has expressed its desire to have its 'G3' products constitute its 'affordable'—but not necessarily budget—range of PC gaming peripherals. Given the general state of the economy and the fact that the quality-but-affordable market is my usual stomping ground, I was naturally excited to get my hands on this G316 X. Alas, what a disappointment.</p><p>My experience here is coloured very much by my experience with this keyboard's white 'tactile' switches, which are the switches in the version I was sent, as apparently this is all that will be available in the UK with a UK layout. The US will be able to get a version with linear switches, which will hopefully be at least somewhat better.</p><p>There are some things to like about this keyboard, such as the lighting and the sturdy keycaps, but it's impossible to look past the awful keypress experience, most pertinently for gaming. There's little more important than key feel for a keyboard, and there's little more important than having a good gaming key-feel experience in, well, a gaming keyboard. And this keyboard unfortunately struggles on the first front and completely fails on the latter.</p><p>On trying the G316 X, my first surprise was that the keys didn't feel tactile at all. Admittedly, it's been a while since I used any tactile switches (for good reason, as linear is king for most kinds of games), but to my memory, 'tactile' is supposed to mean you feel a bump partway down the keypress, and that's when the key actuates. That's good because you can press only that far, then lift back up a little, and press again, all the while being sure that your key has actuated.</p><div  class="fancy-box"><div class="fancy_box-title">G316 X (tactile) 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="iphdtSezxTfgDAq2FNngvT" name="IMG_3164" caption="" alt="A Logitech G316 X gaming keyboard on a wooden desk." src="https://cdn.mos.cms.futurecdn.net/iphdtSezxTfgDAq2FNngvT-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>Switch: </strong>'Tactile' (but no mid-press bump)<br><strong>Keycaps:</strong> Double-shot PBT<br><strong>Lighting:</strong> Per-key RGB and 30-zone light bar<br><strong>Connection: </strong>Wired USB-C to USB-A, detachable<br><strong>Polling:</strong> 1–8 kHz<br><strong>Weight:</strong> 880 g / 1.94 lb (without cable)<br><strong>Price:</strong> <a data-analytics-id="inline-link" href="https://www.logitechg.com/en-us/shop/p/g316-x-98-gaming-keyboard" target="_blank">$120</a> / <a data-analytics-id="inline-link" href="https://www.logitechg.com/en-gb/shop/p/g316-x-98-gaming-keyboard" target="_blank">$110</a> / <a data-analytics-id="inline-link" href="https://www.logitechg.com/en-eu/shop/p/g316-x-98-gaming-keyboard" target="_blank">€120</a></p></div></div><p>That's not what you get here, though. The G316 X's 'tactile' switches essentially feel like linear switches that require a ton of initial force to get them moving. I suppose they feel tactile in the sense that such tremendous initial force is required that you can't help but slam the keys into the keybed, but that's not truly 'tactile' in the original sense of the term.</p><p>It does sound clacky—though not thocky, if that's your jam—which is a genuine plus as long as you don't mind a loud keyboard, but it essentially feels like nothing more than a very stiff membrane keyboard. I wouldn't consider it in the same class of key feel as any other mechanical keyboard I've tried, only membranes. </p><p>If you want the feel of a stiff membrane that also has a bit of clack to it, then you might enjoy it. But even then, I'm not convinced. I spent a couple of days typing on the keyboard during work, and while initially the stiff, clacky keys felt and sounded nice, by the end of the day my fingers were quite fatigued. It does sound great if you prefer more of a 'clack' to a 'thock', but it is probably only worth it if you don't spend extended periods of time typing.</p><p>The stiff switches don't just affect feel, but also in-game performance. I'm used to a linear Hall effect keyboard with rapid trigger, and switching to the G316 X was not a pleasant experience.</p><p>Playing Counter-Strike 2, I struggled more than with a standard linear mechanical keyboard to counter-strafe, which meant I missed a ton of shots and had to play the game completely differently, peeking less. And because the keys require a great amount of initial actuation force, but then not much force for the rest of the keypress, I found myself unable to get used to the amount of tension I should keep on the keys at resting position. </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="cw9yxAuRguMwiZpNC4EgxT" name="IMG_3163" alt="A Logitech G316 X gaming keyboard on a wooden desk." src="https://cdn.mos.cms.futurecdn.net/cw9yxAuRguMwiZpNC4EgxT-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>This meant I accidentally 'jumped'—literally, by hitting the space bar—when entering to re-take a bomb site in a clutch situation, which lost me the round. One of my teammates told me to uninstall the game, and I honestly couldn't blame him.</p><p>So other than the poor keypress experience, what does this keyboard have to offer? Well, the first benefit that I should mention is that its switches are hot swappable. So if you like the look of the keyboard but are rightly put off by my description of how the switches feel, you can buy your own compatible switches and swap them out.</p><p>You might want to do this if you simply like the look of it, with its RGB bar and 'dot matrix LED display'. I can't deny that it does look nice, provided you don't mind the more retro look of the LED display. The light bar has 30 zones and adds a bit of cyberpunk flair, but there aren't as many animations to choose from as I would like in the software. It can also be a little laggy when selecting colours, so I'd recommend typing in the RGB or hex values.</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="KBqAJHSFjg7Qq5G8C4EbvT" name="IMG_3165" alt="A Logitech G316 X gaming keyboard on a wooden desk." src="https://cdn.mos.cms.futurecdn.net/KBqAJHSFjg7Qq5G8C4EbvT-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>Other than the lighting, though, the keyboard is housed in a plain, plastic chassis. It's fairly sturdy, and it doesn't look or feel cheap, but it doesn't exactly look or feel particularly premium, either. Just bang-on average, I'd say.</p><p>I do like my keyboards to have a knob to control the volume, so that's a welcome addition, but I didn't find any need to switch off the volume mode to one of the others. The others, which you can change to by long-pressing the knob, allow you to switch music tracks, turn RGB brightness up or down, or change the polling rate. </p><p>There's also a dedicated button next to it to turn game mode on, which disables the Windows key and any other keys you set up in the software, and the LED screen will show whether capslock or numlock is on/off when you press those keys. Much of this could be done with function buttons, but it is nice having the options there in their own part of the keyboard.</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 like the lighting: </strong>There's no denying the light strip gives this keyboard some flair.<br><br>✅ <strong>You're happy changing switches: </strong>Apart from the poor keypress experience, this keyboard is decent, and thankfully the switches are hot-swappable.</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 type a lot: </strong>These switches are so stiff they can become fatiguing after longer typing sessions<br><br><strong>❌ You want pinpoint control: </strong>I found these keys with tactile switches to be very difficult to control when counter-strafing in Counter-Strike, for example.</p></div></div><p>And that's about all there is to the G316 X. It's quite a peculiar keyboard, especially considering how it's priced. I understand what Logitech was going for—an affordable, but not cheap, gaming-oriented keyboard—but for $120 it really needs to deliver more than this.</p><p>Given the gaming keyboard market today, a regular RGB-laden gaming keyboard is a tough sell at this price. And when you're failing to deliver a keypress experience that lives up to even much cheaper gaming keyboards (any using a standard Cherry or Gateron switch), it's a <em>very </em>tough sell. Especially when there are keyboards with Hall effect for literally a third of the price.</p><p>In all, unless you really like how this thing looks, I'd steer clear of the version with tactile switches at least. If the linear version feels better, then it might be worth a look, but even then, there's <a href="https://www.pcgamer.com/hardware/gaming-keyboards/keychron-k2-he-review/" target="_blank">plenty of competition out there</a> at this price point, and I'm not sure those fights are leaning in this keyboard's favour.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-keyboards/logitech-g316-x-tactile-gaming-keyboard-review/</link>
                                                                            <description>
                            <![CDATA[ Oh what could have been. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">WcYDEAPJkBRVN7qRVyfkfK</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/ggaGW6h7dZ2MJfcYJDpjwT-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 29 Jun 2026 17:02:11 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Keyboards]]></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/ggaGW6h7dZ2MJfcYJDpjwT-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A Logitech G316 X gaming keyboard on a wooden desk.]]></media:description>                                                            <media:text><![CDATA[A Logitech G316 X gaming keyboard on a wooden desk.]]></media:text>
                                <media:title type="plain"><![CDATA[A Logitech G316 X gaming keyboard on a wooden desk.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/ggaGW6h7dZ2MJfcYJDpjwT-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div data-widget-type="review" data-model-name="Logitech G316 X" data-widget-title=""></div><p>Logitech has expressed its desire to have its 'G3' products constitute its 'affordable'—but not necessarily budget—range of PC gaming peripherals. Given the general state of the economy and the fact that the quality-but-affordable market is my usual stomping ground, I was naturally excited to get my hands on this G316 X. Alas, what a disappointment.</p><p>My experience here is coloured very much by my experience with this keyboard's white 'tactile' switches, which are the switches in the version I was sent, as apparently this is all that will be available in the UK with a UK layout. The US will be able to get a version with linear switches, which will hopefully be at least somewhat better.</p><p>There are some things to like about this keyboard, such as the lighting and the sturdy keycaps, but it's impossible to look past the awful keypress experience, most pertinently for gaming. There's little more important than key feel for a keyboard, and there's little more important than having a good gaming key-feel experience in, well, a gaming keyboard. And this keyboard unfortunately struggles on the first front and completely fails on the latter.</p><p>On trying the G316 X, my first surprise was that the keys didn't feel tactile at all. Admittedly, it's been a while since I used any tactile switches (for good reason, as linear is king for most kinds of games), but to my memory, 'tactile' is supposed to mean you feel a bump partway down the keypress, and that's when the key actuates. That's good because you can press only that far, then lift back up a little, and press again, all the while being sure that your key has actuated.</p><div  class="fancy-box"><div class="fancy_box-title">G316 X (tactile) 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="iphdtSezxTfgDAq2FNngvT" name="IMG_3164" caption="" alt="A Logitech G316 X gaming keyboard on a wooden desk." src="https://cdn.mos.cms.futurecdn.net/iphdtSezxTfgDAq2FNngvT-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>Switch: </strong>'Tactile' (but no mid-press bump)<br><strong>Keycaps:</strong> Double-shot PBT<br><strong>Lighting:</strong> Per-key RGB and 30-zone light bar<br><strong>Connection: </strong>Wired USB-C to USB-A, detachable<br><strong>Polling:</strong> 1–8 kHz<br><strong>Weight:</strong> 880 g / 1.94 lb (without cable)<br><strong>Price:</strong> <a data-analytics-id="inline-link" href="https://www.logitechg.com/en-us/shop/p/g316-x-98-gaming-keyboard" target="_blank">$120</a> / <a data-analytics-id="inline-link" href="https://www.logitechg.com/en-gb/shop/p/g316-x-98-gaming-keyboard" target="_blank">$110</a> / <a data-analytics-id="inline-link" href="https://www.logitechg.com/en-eu/shop/p/g316-x-98-gaming-keyboard" target="_blank">€120</a></p></div></div><p>That's not what you get here, though. The G316 X's 'tactile' switches essentially feel like linear switches that require a ton of initial force to get them moving. I suppose they feel tactile in the sense that such tremendous initial force is required that you can't help but slam the keys into the keybed, but that's not truly 'tactile' in the original sense of the term.</p><p>It does sound clacky—though not thocky, if that's your jam—which is a genuine plus as long as you don't mind a loud keyboard, but it essentially feels like nothing more than a very stiff membrane keyboard. I wouldn't consider it in the same class of key feel as any other mechanical keyboard I've tried, only membranes. </p><p>If you want the feel of a stiff membrane that also has a bit of clack to it, then you might enjoy it. But even then, I'm not convinced. I spent a couple of days typing on the keyboard during work, and while initially the stiff, clacky keys felt and sounded nice, by the end of the day my fingers were quite fatigued. It does sound great if you prefer more of a 'clack' to a 'thock', but it is probably only worth it if you don't spend extended periods of time typing.</p><p>The stiff switches don't just affect feel, but also in-game performance. I'm used to a linear Hall effect keyboard with rapid trigger, and switching to the G316 X was not a pleasant experience.</p><p>Playing Counter-Strike 2, I struggled more than with a standard linear mechanical keyboard to counter-strafe, which meant I missed a ton of shots and had to play the game completely differently, peeking less. And because the keys require a great amount of initial actuation force, but then not much force for the rest of the keypress, I found myself unable to get used to the amount of tension I should keep on the keys at resting position. </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="cw9yxAuRguMwiZpNC4EgxT" name="IMG_3163" alt="A Logitech G316 X gaming keyboard on a wooden desk." src="https://cdn.mos.cms.futurecdn.net/cw9yxAuRguMwiZpNC4EgxT-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>This meant I accidentally 'jumped'—literally, by hitting the space bar—when entering to re-take a bomb site in a clutch situation, which lost me the round. One of my teammates told me to uninstall the game, and I honestly couldn't blame him.</p><p>So other than the poor keypress experience, what does this keyboard have to offer? Well, the first benefit that I should mention is that its switches are hot swappable. So if you like the look of the keyboard but are rightly put off by my description of how the switches feel, you can buy your own compatible switches and swap them out.</p><p>You might want to do this if you simply like the look of it, with its RGB bar and 'dot matrix LED display'. I can't deny that it does look nice, provided you don't mind the more retro look of the LED display. The light bar has 30 zones and adds a bit of cyberpunk flair, but there aren't as many animations to choose from as I would like in the software. It can also be a little laggy when selecting colours, so I'd recommend typing in the RGB or hex values.</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="KBqAJHSFjg7Qq5G8C4EbvT" name="IMG_3165" alt="A Logitech G316 X gaming keyboard on a wooden desk." src="https://cdn.mos.cms.futurecdn.net/KBqAJHSFjg7Qq5G8C4EbvT-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>Other than the lighting, though, the keyboard is housed in a plain, plastic chassis. It's fairly sturdy, and it doesn't look or feel cheap, but it doesn't exactly look or feel particularly premium, either. Just bang-on average, I'd say.</p><p>I do like my keyboards to have a knob to control the volume, so that's a welcome addition, but I didn't find any need to switch off the volume mode to one of the others. The others, which you can change to by long-pressing the knob, allow you to switch music tracks, turn RGB brightness up or down, or change the polling rate. </p><p>There's also a dedicated button next to it to turn game mode on, which disables the Windows key and any other keys you set up in the software, and the LED screen will show whether capslock or numlock is on/off when you press those keys. Much of this could be done with function buttons, but it is nice having the options there in their own part of the keyboard.</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 like the lighting: </strong>There's no denying the light strip gives this keyboard some flair.<br><br>✅ <strong>You're happy changing switches: </strong>Apart from the poor keypress experience, this keyboard is decent, and thankfully the switches are hot-swappable.</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 type a lot: </strong>These switches are so stiff they can become fatiguing after longer typing sessions<br><br><strong>❌ You want pinpoint control: </strong>I found these keys with tactile switches to be very difficult to control when counter-strafing in Counter-Strike, for example.</p></div></div><p>And that's about all there is to the G316 X. It's quite a peculiar keyboard, especially considering how it's priced. I understand what Logitech was going for—an affordable, but not cheap, gaming-oriented keyboard—but for $120 it really needs to deliver more than this.</p><p>Given the gaming keyboard market today, a regular RGB-laden gaming keyboard is a tough sell at this price. And when you're failing to deliver a keypress experience that lives up to even much cheaper gaming keyboards (any using a standard Cherry or Gateron switch), it's a <em>very </em>tough sell. Especially when there are keyboards with Hall effect for literally a third of the price.</p><p>In all, unless you really like how this thing looks, I'd steer clear of the version with tactile switches at least. If the linear version feels better, then it might be worth a look, but even then, there's <a href="https://www.pcgamer.com/hardware/gaming-keyboards/keychron-k2-he-review/" target="_blank">plenty of competition out there</a> at this price point, and I'm not sure those fights are leaning in this keyboard's favour.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ With a huge 31% Prime Day discount, this Asus ROG gaming keyboard is a great deal for anyone wanting a fast and feature-rich button basher ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="product"><a data-dimension112="cf04b0d7-0419-45b0-b86e-46e75592af77" data-action="Deal Block" data-label="ROG Falchion Ace 75 HE" data-dimension48="ROG Falchion Ace 75 HE" data-dimension25="$151.99" href="https://www.amazon.com/ASUS-ROG-Falchion-Analog-Keyboard/dp/B0GG49ZNQ7/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1520px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="NEyTxyLZ6MLJq4pPtdctWV" name="asus_rog_falchion_ace_75_he_gaming_keyboard" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/NEyTxyLZ6MLJq4pPtdctWV-1920-80.jpg" mos="" align="middle" fullscreen="" width="1520" height="1520" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/ASUS-ROG-Falchion-Analog-Keyboard/dp/B0GG49ZNQ7/" target="_blank" rel="nofollow" data-dimension112="cf04b0d7-0419-45b0-b86e-46e75592af77" data-action="Deal Block" data-label="ROG Falchion Ace 75 HE" data-dimension48="ROG Falchion Ace 75 HE" data-dimension25="$151.99">ROG Falchion Ace 75 HE: was $219.99 now $151.99</a></strong><br>At its normal price, the Asus ROG Falchion Ace 75 is an excellent but overly expensive gaming keyboard. Slice 31% off the price tag, though, and you've now got something well worth considering. <strong>This deal is for Prime members only.</strong></p><p><strong>Key specs: ROG HFX V2 switches | PBT double-shot caps | RGB lighting | Media wheel | Wired USB Type-C</strong><a class="view-deal button" href="https://www.amazon.com/ASUS-ROG-Falchion-Analog-Keyboard/dp/B0GG49ZNQ7/" target="_blank" rel="nofollow" data-dimension112="cf04b0d7-0419-45b0-b86e-46e75592af77" data-action="Deal Block" data-label="ROG Falchion Ace 75 HE" data-dimension48="ROG Falchion Ace 75 HE" data-dimension25="$151.99">View Deal</a></p></div><p>When it comes to gaming keyboards, Asus generally gets a lot of things right. The latest models are packed with every gaming feature around, such as rapid trigger or 8,000 Hz polling, but these are often countered by the hefty fee you incur for choosing the ROG brand.</p><p>A great example of that is the Asus ROG Falchion Ace 75 HE, which normally costs $220. It's an excellent keyboard, but that's way too much money in comparison to the competition. Well, not any more, because you can bag one for <a href="https://www.amazon.com/ASUS-ROG-Falchion-Analog-Keyboard/dp/B0GG49ZNQ7/" target="_blank">$152 at Amazon</a> right now, and it's the cheapest it's been at that store.</p><ul><li><strong>Join us on </strong><a href="https://whatsapp.com/channel/0029VaZEGnpAu3aYJa8PuS2t" target="_blank"><strong>WhatsApp for daily deals</strong></a><strong>, direct to your phone.</strong></li></ul><p>When <a href="https://www.pcgamer.com/hardware/gaming-keyboards/asus-rog-falchion-ace-75-he-review/" target="_blank">Reese checked out the Falchion Ace 75 HE</a>, he came away very impressed by its super-fast switches, additional controls, and overall build quality. However, he wasn't quite so happy with the price tag, and that's understandable because the $150+ keyboard market is extremely competitive, with <a href="https://www.pcgamer.com/best-gaming-keyboard/" target="_blank">lots of brilliant options to choose from</a>.</p><p>But with a 31% discount, the Falchion Ace 75 HE is far more appealing, and if you don't mind the fact that it's wired-only, you're getting a superb button-basher for the money. Asus' latest Hall effect ROG HFX V2 switches are ridiculously quick, thanks to their short travel, low actuation force, and highly adjustable actuation point.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/DemZCF4MLgKp84MvjEmSWS-1920-80.jpg" alt="The Asus ROG Falchion Ace 75 HE on a desk with the lighting enabled." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/N6nHAJXQLzEtAWcrzyVHVS-1920-80.jpg" alt="The Asus ROG Falchion Ace 75 HE on a desk with the lighting enabled." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ThSTbM3QY8xtn53xG5LAXS-1920-80.jpg" alt="The Asus ROG Falchion Ace 75 HE on a desk with the lighting enabled." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/T9KsVNqDvJMT8bf4DrTrLS-1920-80.jpg" alt="The Asus ROG Falchion Ace 75 HE on a desk with the lighting enabled." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Along with an 8 kHz polling rate (somewhat pointless, but still kinda neat to have) and rapid trigger functionality, this keyboard is ideal for twitchy, competitive shooters and esports in general.</p><p>That said, it's great for any kind of gaming, as well as general use, thanks to the handy media wheel/roller and touch bar on the back, which you can configure for all kinds of roles. This is all done via Gear Link, a web-based app that's light-years ahead of Armoury Crate.</p><p>Yes, 150-odd bucks is a lot of money to throw down for a keyboard, but at least you're not paying over the odds with this deal. </p><h2 id="check-out-all-of-amazon-s-gaming-keyboard-deals-here">👉<a href="https://www.amazon.com/s?k=gaming+keyboard" target="_blank">Check out all of Amazon's gaming keyboard deals here</a>👈</h2> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-keyboards/with-a-huge-31-percent-prime-day-discount-this-asus-rog-gaming-keyboard-is-a-great-deal-for-anyone-wanting-a-fast-and-feature-rich-button-basher/</link>
                                                                            <description>
                            <![CDATA[ It's not wireless but don't let that put you off. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">MzfwWGiRyKrzE5ByztvDGX</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/hQbXWeMERaPfX33QLN8S6F-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 26 Jun 2026 14:18:59 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Keyboards]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Nick Evanson ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/HH5qHxdCSKxFpY2HXp2Q5K-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Nick, gaming, and computers all first met in the early 1980s. After leaving university, he became a physics and IT teacher and started writing about tech in the late 1990s. That resulted in him working with MadOnion to write the help files for 3DMark and PCMark. After a short stint working at Beyond3D.com, Nick joined Futuremark (MadOnion rebranded) full-time, as editor-in-chief for its PC gaming section, YouGamers. After the site shutdown, he became an engineering and computing lecturer for many years, but missed the writing bug. Cue four years at TechSpot.com covering everything and anything to do with tech and PCs. He freely admits to being far too obsessed with GPUs and open-world grindy RPGs, but who isn&#039;t these days?&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/hQbXWeMERaPfX33QLN8S6F-1920-80.jpg">
                                                            <media:credit><![CDATA[Asus]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[An image of an Asus ROG Falchion Ace 75 HE gaming keyboard against a stylized blue background, with Prime Day and a PC Gamer logo on the sides]]></media:description>                                                            <media:text><![CDATA[An image of an Asus ROG Falchion Ace 75 HE gaming keyboard against a stylized blue background, with Prime Day and a PC Gamer logo on the sides]]></media:text>
                                <media:title type="plain"><![CDATA[An image of an Asus ROG Falchion Ace 75 HE gaming keyboard against a stylized blue background, with Prime Day and a PC Gamer logo on the sides]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/hQbXWeMERaPfX33QLN8S6F-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="product"><a data-dimension112="cf04b0d7-0419-45b0-b86e-46e75592af77" data-action="Deal Block" data-label="ROG Falchion Ace 75 HE" data-dimension48="ROG Falchion Ace 75 HE" data-dimension25="$151.99" href="https://www.amazon.com/ASUS-ROG-Falchion-Analog-Keyboard/dp/B0GG49ZNQ7/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1520px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="NEyTxyLZ6MLJq4pPtdctWV" name="asus_rog_falchion_ace_75_he_gaming_keyboard" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/NEyTxyLZ6MLJq4pPtdctWV-1920-80.jpg" mos="" align="middle" fullscreen="" width="1520" height="1520" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/ASUS-ROG-Falchion-Analog-Keyboard/dp/B0GG49ZNQ7/" target="_blank" rel="nofollow" data-dimension112="cf04b0d7-0419-45b0-b86e-46e75592af77" data-action="Deal Block" data-label="ROG Falchion Ace 75 HE" data-dimension48="ROG Falchion Ace 75 HE" data-dimension25="$151.99">ROG Falchion Ace 75 HE: was $219.99 now $151.99</a></strong><br>At its normal price, the Asus ROG Falchion Ace 75 is an excellent but overly expensive gaming keyboard. Slice 31% off the price tag, though, and you've now got something well worth considering. <strong>This deal is for Prime members only.</strong></p><p><strong>Key specs: ROG HFX V2 switches | PBT double-shot caps | RGB lighting | Media wheel | Wired USB Type-C</strong><a class="view-deal button" href="https://www.amazon.com/ASUS-ROG-Falchion-Analog-Keyboard/dp/B0GG49ZNQ7/" target="_blank" rel="nofollow" data-dimension112="cf04b0d7-0419-45b0-b86e-46e75592af77" data-action="Deal Block" data-label="ROG Falchion Ace 75 HE" data-dimension48="ROG Falchion Ace 75 HE" data-dimension25="$151.99">View Deal</a></p></div><p>When it comes to gaming keyboards, Asus generally gets a lot of things right. The latest models are packed with every gaming feature around, such as rapid trigger or 8,000 Hz polling, but these are often countered by the hefty fee you incur for choosing the ROG brand.</p><p>A great example of that is the Asus ROG Falchion Ace 75 HE, which normally costs $220. It's an excellent keyboard, but that's way too much money in comparison to the competition. Well, not any more, because you can bag one for <a href="https://www.amazon.com/ASUS-ROG-Falchion-Analog-Keyboard/dp/B0GG49ZNQ7/" target="_blank">$152 at Amazon</a> right now, and it's the cheapest it's been at that store.</p><ul><li><strong>Join us on </strong><a href="https://whatsapp.com/channel/0029VaZEGnpAu3aYJa8PuS2t" target="_blank"><strong>WhatsApp for daily deals</strong></a><strong>, direct to your phone.</strong></li></ul><p>When <a href="https://www.pcgamer.com/hardware/gaming-keyboards/asus-rog-falchion-ace-75-he-review/" target="_blank">Reese checked out the Falchion Ace 75 HE</a>, he came away very impressed by its super-fast switches, additional controls, and overall build quality. However, he wasn't quite so happy with the price tag, and that's understandable because the $150+ keyboard market is extremely competitive, with <a href="https://www.pcgamer.com/best-gaming-keyboard/" target="_blank">lots of brilliant options to choose from</a>.</p><p>But with a 31% discount, the Falchion Ace 75 HE is far more appealing, and if you don't mind the fact that it's wired-only, you're getting a superb button-basher for the money. Asus' latest Hall effect ROG HFX V2 switches are ridiculously quick, thanks to their short travel, low actuation force, and highly adjustable actuation point.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/DemZCF4MLgKp84MvjEmSWS-1920-80.jpg" alt="The Asus ROG Falchion Ace 75 HE on a desk with the lighting enabled." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/N6nHAJXQLzEtAWcrzyVHVS-1920-80.jpg" alt="The Asus ROG Falchion Ace 75 HE on a desk with the lighting enabled." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ThSTbM3QY8xtn53xG5LAXS-1920-80.jpg" alt="The Asus ROG Falchion Ace 75 HE on a desk with the lighting enabled." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/T9KsVNqDvJMT8bf4DrTrLS-1920-80.jpg" alt="The Asus ROG Falchion Ace 75 HE on a desk with the lighting enabled." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Along with an 8 kHz polling rate (somewhat pointless, but still kinda neat to have) and rapid trigger functionality, this keyboard is ideal for twitchy, competitive shooters and esports in general.</p><p>That said, it's great for any kind of gaming, as well as general use, thanks to the handy media wheel/roller and touch bar on the back, which you can configure for all kinds of roles. This is all done via Gear Link, a web-based app that's light-years ahead of Armoury Crate.</p><p>Yes, 150-odd bucks is a lot of money to throw down for a keyboard, but at least you're not paying over the odds with this deal. </p><h2 id="check-out-all-of-amazon-s-gaming-keyboard-deals-here">👉<a href="https://www.amazon.com/s?k=gaming+keyboard" target="_blank">Check out all of Amazon's gaming keyboard deals here</a>👈</h2>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ This gaming keyboard is a class act, and it's waiting for you this Prime Day with its top hat askew and its monocle popped ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="product"><a data-dimension112="42f6222e-e8d5-4761-9db3-756ed24a8113" data-action="Deal Block" data-label="K2 HE QMK Wireless" data-dimension48="K2 HE QMK Wireless" data-dimension25="$111.99" href="https://www.amazon.com/Keychron-Mechanical-Hot-Swappable-Programmable-Frame-Black/dp/B0DHVPDCXJ/" 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="fwpkjvz5hbbTiZ79ZNdVMC" name="KeychronK2HE (1)" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/fwpkjvz5hbbTiZ79ZNdVMC-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/Keychron-Mechanical-Hot-Swappable-Programmable-Frame-Black/dp/B0DHVPDCXJ/" target="_blank" rel="nofollow" data-dimension112="42f6222e-e8d5-4761-9db3-756ed24a8113" data-action="Deal Block" data-label="K2 HE QMK Wireless" data-dimension48="K2 HE QMK Wireless" data-dimension25="$111.99">K2 HE QMK Wireless: was $139.99 now $111.99</a></strong><br>A gaming keyboard of distinction, the Keychron K2 HE is so classy, it's even got bits of actual wood running down the sides. It's also glorious to type and game on, thanks to some lovely Gateron magnetic switches and chonky, PBT doubleshot keycaps. A sublime device, if you ask me.<br><br><strong>Key specs: 75% | 2.4 GHz wireless + Bluetooth | Hot-swappable Gateron magnetic switches | PBT doubleshot keycaps | RGB</strong><a class="view-deal button" href="https://www.amazon.com/Keychron-Mechanical-Hot-Swappable-Programmable-Frame-Black/dp/B0DHVPDCXJ/" target="_blank" rel="nofollow" data-dimension112="42f6222e-e8d5-4761-9db3-756ed24a8113" data-action="Deal Block" data-label="K2 HE QMK Wireless" data-dimension48="K2 HE QMK Wireless" data-dimension25="$111.99">View Deal</a></p></div><p>What-ho and good morrow to you, dear reader. Should one be wishing for a gaming keyboard with some actual class, rather than something clad in gamer-chic vulgarity, may I humbly suggest the Keychron K2 HE—which is <a href="https://www.amazon.com/Keychron-Mechanical-Hot-Swappable-Programmable-Frame-Black/dp/B0DHVPDCXJ/" target="_blank">currently down to $112</a> as part of the Amazon Prime Day celebrations.</p><p>Wonderful. Anyway, I bloomin' love this keyboard, in all its forms. I recently tested the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/ive-spent-the-past-month-testing-keychrons-concrete-keeb-and-its-absolutely-brilliant-with-one-small-sticking-point/" target="_blank">concrete-framed version</a> and came away incredibly impressed. A large part of that was due to its fantastic Gateron magnetic double rail switches and premium-feeling double-shot PBT keycaps. Concrete or not, this keeb feels absolutely wonderful to type on.</p><ul><li><a href="https://www.pcgamer.com/best-amazon-prime-day-pc-gaming-deals/" target="_blank"><strong>We're curating all the best Prime Day PC gaming deals here</strong></a></li></ul><p>Our Reece agrees wholeheartedly, as he gave the regular model <a href="https://www.pcgamer.com/hardware/gaming-keyboards/keychron-k2-he-review/" target="_blank">a score of 88% in his review</a>. While I loved the concrete frame of my review sample, I would happily pick up this version, as it's got all the same internal hardware that makes it a delight to type and game on.</p><p>Plus, to keep the unusual material theme going, this one's got two strips of actual wood on the sides. I've typed on this very keeb, and can confirm that it feels awesome, looks great, and is pretty much the classiest keyboard you can currently buy. Unfortunately, <a href="https://www.amazon.com/Keychron-Mechanical-Hot-Swappable-Programmable-Frame-Black/dp/B0DHVPBNVQ/" target="_blank">the white version</a> is still at full price, but here are some of our own pics for reference:</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/i6vr9aRTsDkTacStCxsAgX-1920-80.jpg" alt="A Keychron K2 HE gaming keyboard with a wood finish and white keycaps with RGB enabled." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/RqtAYfPeNxhCS2n8PRT3PY-1920-80.jpg" alt="A Keychron K2 HE gaming keyboard with a wood finish and white keycaps with RGB enabled." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/t6tsVNk6y54Dq3mjiwd68W-1920-80.jpg" alt="A Keychron K2 HE gaming keyboard with a wood finish and white keycaps with RGB enabled." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/UJ4EhVZMTTqsCWuWMbtSNW-1920-80.jpg" alt="A Keychron K2 HE gaming keyboard with a wood finish and white keycaps with RGB enabled." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>It's a 75% keeb, so no numpad for you. However, it's got everything most people would need for daily usage, in a form factor that means it's easy to shift around on your desk for a comfortable typing/gaming position.</p><p>It's also got a Bluetooth connection alongside its 2.4 GHz, dongle-based affair, which makes it rather flexible. Not literally, though, as Keychron takes build quality very seriously indeed. There's no deck flex in the chassis design, that's for sure, just a couple of strips of rosewood and a very sturdy frame.</p><p>Wood I buy one? Sorry. But yes, I wood. As for your own pocketbook, I guess that's up to yew. It's very hot in here, okay?</p><h2 id="shop-all-of-amazon-s-prime-day-gaming-keyboard-deals-here">👉<a href="https://www.amazon.com/s?k=gaming+keyboard" target="_blank">Shop all of Amazon's Prime Day gaming keyboard deals here</a>👈</h2> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-keyboards/this-gaming-keyboard-is-a-class-act-and-its-waiting-for-you-this-prime-day-with-its-top-hat-askew-and-its-monocle-popped/</link>
                                                                            <description>
                            <![CDATA[ They don't come much finer than this. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">qbfq2Airj9fjgvVMgJJqnC</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/vD5untoAvntvaoDonveyWA-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 25 Jun 2026 12:05:07 +0000</pubDate>                                                                                                                                <updated>Fri, 26 Jun 2026 13:45:41 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming Keyboards]]></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/vD5untoAvntvaoDonveyWA-1920-80.jpg">
                                                            <media:credit><![CDATA[Keychron]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A Keychron K2 HE gaming keyboard on a blue and red Amazon Prime Day deals background, with the PC Gamer logo in the bottom right]]></media:description>                                                            <media:text><![CDATA[A Keychron K2 HE gaming keyboard on a blue and red Amazon Prime Day deals background, with the PC Gamer logo in the bottom right]]></media:text>
                                <media:title type="plain"><![CDATA[A Keychron K2 HE gaming keyboard on a blue and red Amazon Prime Day deals background, with the PC Gamer logo in the bottom right]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/vD5untoAvntvaoDonveyWA-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="product"><a data-dimension112="42f6222e-e8d5-4761-9db3-756ed24a8113" data-action="Deal Block" data-label="K2 HE QMK Wireless" data-dimension48="K2 HE QMK Wireless" data-dimension25="$111.99" href="https://www.amazon.com/Keychron-Mechanical-Hot-Swappable-Programmable-Frame-Black/dp/B0DHVPDCXJ/" 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="fwpkjvz5hbbTiZ79ZNdVMC" name="KeychronK2HE (1)" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/fwpkjvz5hbbTiZ79ZNdVMC-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/Keychron-Mechanical-Hot-Swappable-Programmable-Frame-Black/dp/B0DHVPDCXJ/" target="_blank" rel="nofollow" data-dimension112="42f6222e-e8d5-4761-9db3-756ed24a8113" data-action="Deal Block" data-label="K2 HE QMK Wireless" data-dimension48="K2 HE QMK Wireless" data-dimension25="$111.99">K2 HE QMK Wireless: was $139.99 now $111.99</a></strong><br>A gaming keyboard of distinction, the Keychron K2 HE is so classy, it's even got bits of actual wood running down the sides. It's also glorious to type and game on, thanks to some lovely Gateron magnetic switches and chonky, PBT doubleshot keycaps. A sublime device, if you ask me.<br><br><strong>Key specs: 75% | 2.4 GHz wireless + Bluetooth | Hot-swappable Gateron magnetic switches | PBT doubleshot keycaps | RGB</strong><a class="view-deal button" href="https://www.amazon.com/Keychron-Mechanical-Hot-Swappable-Programmable-Frame-Black/dp/B0DHVPDCXJ/" target="_blank" rel="nofollow" data-dimension112="42f6222e-e8d5-4761-9db3-756ed24a8113" data-action="Deal Block" data-label="K2 HE QMK Wireless" data-dimension48="K2 HE QMK Wireless" data-dimension25="$111.99">View Deal</a></p></div><p>What-ho and good morrow to you, dear reader. Should one be wishing for a gaming keyboard with some actual class, rather than something clad in gamer-chic vulgarity, may I humbly suggest the Keychron K2 HE—which is <a href="https://www.amazon.com/Keychron-Mechanical-Hot-Swappable-Programmable-Frame-Black/dp/B0DHVPDCXJ/" target="_blank">currently down to $112</a> as part of the Amazon Prime Day celebrations.</p><p>Wonderful. Anyway, I bloomin' love this keyboard, in all its forms. I recently tested the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/ive-spent-the-past-month-testing-keychrons-concrete-keeb-and-its-absolutely-brilliant-with-one-small-sticking-point/" target="_blank">concrete-framed version</a> and came away incredibly impressed. A large part of that was due to its fantastic Gateron magnetic double rail switches and premium-feeling double-shot PBT keycaps. Concrete or not, this keeb feels absolutely wonderful to type on.</p><ul><li><a href="https://www.pcgamer.com/best-amazon-prime-day-pc-gaming-deals/" target="_blank"><strong>We're curating all the best Prime Day PC gaming deals here</strong></a></li></ul><p>Our Reece agrees wholeheartedly, as he gave the regular model <a href="https://www.pcgamer.com/hardware/gaming-keyboards/keychron-k2-he-review/" target="_blank">a score of 88% in his review</a>. While I loved the concrete frame of my review sample, I would happily pick up this version, as it's got all the same internal hardware that makes it a delight to type and game on.</p><p>Plus, to keep the unusual material theme going, this one's got two strips of actual wood on the sides. I've typed on this very keeb, and can confirm that it feels awesome, looks great, and is pretty much the classiest keyboard you can currently buy. Unfortunately, <a href="https://www.amazon.com/Keychron-Mechanical-Hot-Swappable-Programmable-Frame-Black/dp/B0DHVPBNVQ/" target="_blank">the white version</a> is still at full price, but here are some of our own pics for reference:</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/i6vr9aRTsDkTacStCxsAgX-1920-80.jpg" alt="A Keychron K2 HE gaming keyboard with a wood finish and white keycaps with RGB enabled." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/RqtAYfPeNxhCS2n8PRT3PY-1920-80.jpg" alt="A Keychron K2 HE gaming keyboard with a wood finish and white keycaps with RGB enabled." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/t6tsVNk6y54Dq3mjiwd68W-1920-80.jpg" alt="A Keychron K2 HE gaming keyboard with a wood finish and white keycaps with RGB enabled." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/UJ4EhVZMTTqsCWuWMbtSNW-1920-80.jpg" alt="A Keychron K2 HE gaming keyboard with a wood finish and white keycaps with RGB enabled." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>It's a 75% keeb, so no numpad for you. However, it's got everything most people would need for daily usage, in a form factor that means it's easy to shift around on your desk for a comfortable typing/gaming position.</p><p>It's also got a Bluetooth connection alongside its 2.4 GHz, dongle-based affair, which makes it rather flexible. Not literally, though, as Keychron takes build quality very seriously indeed. There's no deck flex in the chassis design, that's for sure, just a couple of strips of rosewood and a very sturdy frame.</p><p>Wood I buy one? Sorry. But yes, I wood. As for your own pocketbook, I guess that's up to yew. It's very hot in here, okay?</p><h2 id="shop-all-of-amazon-s-prime-day-gaming-keyboard-deals-here">👉<a href="https://www.amazon.com/s?k=gaming+keyboard" target="_blank">Shop all of Amazon's Prime Day gaming keyboard deals here</a>👈</h2>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Our pick for the best budget keyboard packs in magnetic switches and an 8K polling rate for only $32 this Prime Day ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="product"><a data-dimension112="03719a59-f3f0-448d-b721-0bc37392ddce" data-action="Deal Block" data-label="NS68" data-dimension48="NS68" data-dimension25="$31.81" href="https://www.amazon.com/GK-GAMAKAY-NaughShark-NS68-Black-Shine/dp/B0F282VSHQ" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:400px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="kbof64GcJTX35cgYbLswDb" name="Gamakay x NaughShark NS68 product image" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/kbof64GcJTX35cgYbLswDb-1920-80.jpg" mos="" align="middle" fullscreen="" width="400" height="400" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/GK-GAMAKAY-NaughShark-NS68-Black-Shine/dp/B0F282VSHQ" target="_blank" rel="nofollow" data-dimension112="03719a59-f3f0-448d-b721-0bc37392ddce" data-action="Deal Block" data-label="NS68" data-dimension48="NS68" data-dimension25="$31.81">NS68: was $37.83 now $31.81</a></strong><br>An 8 KHz polling rate, Hall effect switches, rapid trigger, and nice double-shot PBT keycaps. To think you can get all of this, and a pretty unique aesthetic for comfortably under $40 makes the geeky hardware kid in me very happy. It's noticeably a cheaper keyboard in feel, but those internals truly are phenomenal.</p><p><strong>Key Specs: Bluetooth, 2.4 GHz, and wired | 8 KHz | Hall effect</strong><a class="view-deal button" href="https://www.amazon.com/GK-GAMAKAY-NaughShark-NS68-Black-Shine/dp/B0F282VSHQ" target="_blank" rel="nofollow" data-dimension112="03719a59-f3f0-448d-b721-0bc37392ddce" data-action="Deal Block" data-label="NS68" data-dimension48="NS68" data-dimension25="$31.81">View Deal</a></p></div><p>It doesn't hurt to be just a little sceptical when you stumble across decent-looking hardware at an absurdly low price. Well, I know first-hand that you can dispense with such wariness as far as our <a href="https://www.pcgamer.com/best-gaming-keyboard/#section-the-best-budget-gaming-keyboard" target="_blank">best budget gaming keyboard</a> is concerned, though.</p><p>Even before the Amazon Prime Day sale, the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/gamakay-x-naughshark-ns68-review/" target="_blank">GK Gamakay x NaughShark NS68</a> was already a ridiculously affordable 65% keyboard. Now that the deals are here, this Hall effect keyboard is going for even less thanks to <a href="https://www.amazon.com/GK-GAMAKAY-NaughShark-NS68-Black-Shine/dp/B0F283CWTS" target="_blank">a delectable discount making it only $32</a>.</p><ul><li><a href="https://www.pcgamer.com/best-amazon-prime-day-pc-gaming-deals/" target="_blank"><strong>We're curating all the best Prime Day PC gaming deals here</strong></a></li></ul><p>Now, I know what you may be thinking: 'A $33 gaming keyboard? There ain't no way that doesn't just immediately crumble into microplastic dust in my hands.' To be clear, there's definitely some flex to the board, but overall this affordable hero doesn't feel anywhere near as cheap as it is.</p><p>Don't misunderstand, weighing only 762 g, this is a light-feeling keyboard. However, its Outemu Peach Magnetic key switches and double-shot PBT keycaps go some way to making this an affordable keyb that actually feels nice to type on. In terms of looks, it's almost tasteful—though the strap and RGB lighting leaves little doubt this is one for The Gamers.</p><p>On the subject of gamer-geared flourishes, this board also enjoys an 8K Hz polling rate (yes, really), and Rapid Trigger. As is to be expected of a magnetic keyboard, you can noodle with customisable key actuation points ranging from as light a touch as 0.1 mm all the way up to a smashing 3.7 mm depth. This may be a budget board, but it's not skimping on responsiveness—and the software isn't awful either!</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/nhrCwuUt4dZJUJzV8tTgfK-1920-80.jpg" alt="GAMAKAY x NaughShark NS68 gaming keyboard on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/KafMztmgSoAgvChspFA7fK-1920-80.jpg" alt="GAMAKAY x NaughShark NS68 gaming keyboard on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/V9dLigLtwigrCKCMJRtrfK-1920-80.jpg" alt="GAMAKAY x NaughShark NS68 gaming keyboard on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/df7n8w3D8mL9Ld2LtEW2fK-1920-80.jpg" alt="GAMAKAY x NaughShark NS68 gaming keyboard on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/TU2tbyZiv3P4iL9Ja9nneK-1920-80.jpg" alt="GAMAKAY x NaughShark NS68 gaming keyboard on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/QR9ZgPbFvnAJUtCe6g67fK-1920-80.jpg" alt="GAMAKAY x NaughShark NS68 gaming keyboard on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/6eKuq2BUsMmfVpmsgodreK-1920-80.jpg" alt="GAMAKAY x NaughShark NS68 gaming keyboard on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Wcs4RZ5P87EZTVCSyKgreK-1920-80.jpg" alt="GAMAKAY x NaughShark NS68 gaming keyboard on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/SsfZtRmHd3A47i8DCxiifK-1920-80.jpg" alt="GAMAKAY x NaughShark NS68 gaming keyboard on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>As our Reece surmised in his review, this is "a powerful gaming keyboard that makes a bit of a mockery of more expensive rivals, with beefy Hall effect switches, pleasant physical touches, and decent software."</p><p>The white colourway with the shine-through keycaps and wireless connectivity happens to be the cheapest version going. Personally, I'm quite partial to <a href="https://www.amazon.com/GK-GAMAKAY-NaughShark-NS68-Black-Shine/dp/B0F284TGHY" target="_blank">the classy topographic-inspired design in black with the side-mounted legends</a>. Thankfully, all of the discounted options are understated enough that the GK Gamakay x NaughShark NS68 can take pride of place on your desk at home or at work.</p><h2 id="check-out-all-of-amazon-s-gaming-keyboard-deals">👉<a href="https://www.amazon.com/s?k=PC+Gaming+keyboard&rh=n%3A402052011&ref=nb_sb_noss" target="_blank">Check out all of Amazon's gaming keyboard deals👈</a></h2> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-keyboards/our-pick-for-the-best-budget-keyboard-packs-in-magnetic-switches-and-an-8k-polling-rate-for-only-usd32-this-prime-day/</link>
                                                                            <description>
                            <![CDATA[ How low will this price go? ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">6dpZFjyAp6FM8K59BKVSiP</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/MqR7tqbTBVVYUyS9QZHNs5-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 24 Jun 2026 16:34:09 +0000</pubDate>                                                                                                                                <updated>Fri, 26 Jun 2026 13:11:21 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming Keyboards]]></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/MqR7tqbTBVVYUyS9QZHNs5-1920-80.jpg">
                                                            <media:credit><![CDATA[GK GAMAKAY x NaughShark]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The GK GAMAKAY x NaughShark NS68 magnetic gaming keyboard in white floats in the funky PCG Prime Day deal void.]]></media:description>                                                            <media:text><![CDATA[The GK GAMAKAY x NaughShark NS68 magnetic gaming keyboard in white floats in the funky PCG Prime Day deal void.]]></media:text>
                                <media:title type="plain"><![CDATA[The GK GAMAKAY x NaughShark NS68 magnetic gaming keyboard in white floats in the funky PCG Prime Day deal void.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/MqR7tqbTBVVYUyS9QZHNs5-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="product"><a data-dimension112="03719a59-f3f0-448d-b721-0bc37392ddce" data-action="Deal Block" data-label="NS68" data-dimension48="NS68" data-dimension25="$31.81" href="https://www.amazon.com/GK-GAMAKAY-NaughShark-NS68-Black-Shine/dp/B0F282VSHQ" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:400px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="kbof64GcJTX35cgYbLswDb" name="Gamakay x NaughShark NS68 product image" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/kbof64GcJTX35cgYbLswDb-1920-80.jpg" mos="" align="middle" fullscreen="" width="400" height="400" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/GK-GAMAKAY-NaughShark-NS68-Black-Shine/dp/B0F282VSHQ" target="_blank" rel="nofollow" data-dimension112="03719a59-f3f0-448d-b721-0bc37392ddce" data-action="Deal Block" data-label="NS68" data-dimension48="NS68" data-dimension25="$31.81">NS68: was $37.83 now $31.81</a></strong><br>An 8 KHz polling rate, Hall effect switches, rapid trigger, and nice double-shot PBT keycaps. To think you can get all of this, and a pretty unique aesthetic for comfortably under $40 makes the geeky hardware kid in me very happy. It's noticeably a cheaper keyboard in feel, but those internals truly are phenomenal.</p><p><strong>Key Specs: Bluetooth, 2.4 GHz, and wired | 8 KHz | Hall effect</strong><a class="view-deal button" href="https://www.amazon.com/GK-GAMAKAY-NaughShark-NS68-Black-Shine/dp/B0F282VSHQ" target="_blank" rel="nofollow" data-dimension112="03719a59-f3f0-448d-b721-0bc37392ddce" data-action="Deal Block" data-label="NS68" data-dimension48="NS68" data-dimension25="$31.81">View Deal</a></p></div><p>It doesn't hurt to be just a little sceptical when you stumble across decent-looking hardware at an absurdly low price. Well, I know first-hand that you can dispense with such wariness as far as our <a href="https://www.pcgamer.com/best-gaming-keyboard/#section-the-best-budget-gaming-keyboard" target="_blank">best budget gaming keyboard</a> is concerned, though.</p><p>Even before the Amazon Prime Day sale, the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/gamakay-x-naughshark-ns68-review/" target="_blank">GK Gamakay x NaughShark NS68</a> was already a ridiculously affordable 65% keyboard. Now that the deals are here, this Hall effect keyboard is going for even less thanks to <a href="https://www.amazon.com/GK-GAMAKAY-NaughShark-NS68-Black-Shine/dp/B0F283CWTS" target="_blank">a delectable discount making it only $32</a>.</p><ul><li><a href="https://www.pcgamer.com/best-amazon-prime-day-pc-gaming-deals/" target="_blank"><strong>We're curating all the best Prime Day PC gaming deals here</strong></a></li></ul><p>Now, I know what you may be thinking: 'A $33 gaming keyboard? There ain't no way that doesn't just immediately crumble into microplastic dust in my hands.' To be clear, there's definitely some flex to the board, but overall this affordable hero doesn't feel anywhere near as cheap as it is.</p><p>Don't misunderstand, weighing only 762 g, this is a light-feeling keyboard. However, its Outemu Peach Magnetic key switches and double-shot PBT keycaps go some way to making this an affordable keyb that actually feels nice to type on. In terms of looks, it's almost tasteful—though the strap and RGB lighting leaves little doubt this is one for The Gamers.</p><p>On the subject of gamer-geared flourishes, this board also enjoys an 8K Hz polling rate (yes, really), and Rapid Trigger. As is to be expected of a magnetic keyboard, you can noodle with customisable key actuation points ranging from as light a touch as 0.1 mm all the way up to a smashing 3.7 mm depth. This may be a budget board, but it's not skimping on responsiveness—and the software isn't awful either!</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/nhrCwuUt4dZJUJzV8tTgfK-1920-80.jpg" alt="GAMAKAY x NaughShark NS68 gaming keyboard on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/KafMztmgSoAgvChspFA7fK-1920-80.jpg" alt="GAMAKAY x NaughShark NS68 gaming keyboard on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/V9dLigLtwigrCKCMJRtrfK-1920-80.jpg" alt="GAMAKAY x NaughShark NS68 gaming keyboard on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/df7n8w3D8mL9Ld2LtEW2fK-1920-80.jpg" alt="GAMAKAY x NaughShark NS68 gaming keyboard on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/TU2tbyZiv3P4iL9Ja9nneK-1920-80.jpg" alt="GAMAKAY x NaughShark NS68 gaming keyboard on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/QR9ZgPbFvnAJUtCe6g67fK-1920-80.jpg" alt="GAMAKAY x NaughShark NS68 gaming keyboard on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/6eKuq2BUsMmfVpmsgodreK-1920-80.jpg" alt="GAMAKAY x NaughShark NS68 gaming keyboard on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Wcs4RZ5P87EZTVCSyKgreK-1920-80.jpg" alt="GAMAKAY x NaughShark NS68 gaming keyboard on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/SsfZtRmHd3A47i8DCxiifK-1920-80.jpg" alt="GAMAKAY x NaughShark NS68 gaming keyboard on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>As our Reece surmised in his review, this is "a powerful gaming keyboard that makes a bit of a mockery of more expensive rivals, with beefy Hall effect switches, pleasant physical touches, and decent software."</p><p>The white colourway with the shine-through keycaps and wireless connectivity happens to be the cheapest version going. Personally, I'm quite partial to <a href="https://www.amazon.com/GK-GAMAKAY-NaughShark-NS68-Black-Shine/dp/B0F284TGHY" target="_blank">the classy topographic-inspired design in black with the side-mounted legends</a>. Thankfully, all of the discounted options are understated enough that the GK Gamakay x NaughShark NS68 can take pride of place on your desk at home or at work.</p><h2 id="check-out-all-of-amazon-s-gaming-keyboard-deals">👉<a href="https://www.amazon.com/s?k=PC+Gaming+keyboard&rh=n%3A402052011&ref=nb_sb_noss" target="_blank">Check out all of Amazon's gaming keyboard deals👈</a></h2>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ This lubed-up optical gaming keyboard has been my daily driver for two years, and it beats out boards three times its price at just $80 ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="product"><a data-dimension112="f63070be-8b42-41bc-af06-7d6724da82e2" data-action="Deal Block" data-label="ROG Strix Scope II RX" data-dimension48="ROG Strix Scope II RX" data-dimension25="$79.99" href="https://www.newegg.com/asus-xa12-rog-strix-scope-ii-rx-rxrd-ca-abs-rog-strix-scope-ii-rx-gaming-keyboard-mechanical-keyboard-linear/p/N82E16823193169" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2400px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="yJmJPNPBf6FfrcNEEWPTCQ" name="8E2D8455-BE85-46D7-8BE6-17E9A0E96F5C" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/yJmJPNPBf6FfrcNEEWPTCQ-1920-80.png" mos="" align="middle" fullscreen="" width="2400" height="2400" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.newegg.com/asus-xa12-rog-strix-scope-ii-rx-rxrd-ca-abs-rog-strix-scope-ii-rx-gaming-keyboard-mechanical-keyboard-linear/p/N82E16823193169" target="_blank" rel="nofollow" data-dimension112="f63070be-8b42-41bc-af06-7d6724da82e2" data-action="Deal Block" data-label="ROG Strix Scope II RX" data-dimension48="ROG Strix Scope II RX" data-dimension25="$79.99">ROG Strix Scope II RX: was $119.99 now $79.99</a></strong><br>It's my daily driver and the optical sound-dampened pre-lubed keyboard I compare every keyboard against. With ROG LX linear optical switches, an impressive build quality, combined with slick styling, lovely RGB lighting and PBT doubleshot key caps, it's an absolute king at the best of times, and at $80, well, it's a hard argument to ignore.</p><p><strong>Key specs: Full-size | ROG RX pre-lubed linear optical | PBT doubleshot | per-key RGB | sound-dampened | wired USB-C</strong><a class="view-deal button" href="https://www.newegg.com/asus-xa12-rog-strix-scope-ii-rx-rxrd-ca-abs-rog-strix-scope-ii-rx-gaming-keyboard-mechanical-keyboard-linear/p/N82E16823193169" target="_blank" rel="nofollow" data-dimension112="f63070be-8b42-41bc-af06-7d6724da82e2" data-action="Deal Block" data-label="ROG Strix Scope II RX" data-dimension48="ROG Strix Scope II RX" data-dimension25="$79.99">View Deal</a></p></div><p>You know I've tested a lot of mechanical keyboards over the years. In fact, I started my clicky switch love way back in 2013, with the OG <a href="https://www.pcgamer.com/corsair-vengeance-k70-review/" target="_blank">Corsair K70 Vengeance</a> and a Cherry MX Red switch, but nothing, and I mean nothing, has come close to the Asus ROG Strix Scope II RX for me. Even with its silly and ridiculous name, that seems to grow ever longer. I reviewed it for another publication in about 2024, and was just blown away by the build quality, the switches, the sound dampening, the fact Asus had pre-lubed everything to death. And it was clean too, stupidly so, it looked and still looks gorgeous. I set up the RGB once, two years ago, and I haven't changed it since.</p><p>Back then, it averaged $120 on retail. Today, <a href="https://www.newegg.com/asus-xa12-rog-strix-scope-ii-rx-rxrd-ca-abs-rog-strix-scope-ii-rx-gaming-keyboard-mechanical-keyboard-linear/p/N82E16823193169" target="_blank">Newegg's got it listed with a 33% discount at $80</a> (with the promo code: <strong>FTTF283</strong>).</p><ul><li><a href="https://www.pcgamer.com/best-amazon-prime-day-pc-gaming-deals/" target="_blank"><strong>We're curating all the best Prime Day PC gaming deals here</strong></a></li></ul><p>Like complete honest truth with you, I actually recently took a look at <a href="https://www.pcgamer.com/hardware/gaming-keyboards/corsair-brings-hall-effect-to-its-dinky-enthusiast-gaming-keyboard-in-the-form-of-the-makr-pro-75/" target="_blank">Corsair's Makr Pro 75</a> line as well. A similarly sound-dampened premium pre-lubed affair, albeit with Hall effect switches, and even though I enjoyed it, I just ended up gravitating straight back to this beauty. The Makr Pro 75 now sits diligently on a shelf again in its box, whereas my slightly dusty ROG Strix Scope II hogs the limelight. </p><p>I could wax lyrical about it all day. The build quality on it is exceptional. It's not particularly heavy by modern standards, and there's no nonsense marketing hype either. I see so many manufacturers just adding layers of foam, brace plates, gaskets, for the sake of it, so they can make the numbers bigger on the product page, or tell you exactly how each spring is specifically chosen based on its acoustic time signature or some bs, and it just feels unnecessary. All of it adds extra cost at diminishing returns, and we end up paying the price. You have to draw a line somewhere.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/QYyAoN3coaB9V9vBZUQXQA-1920-80.jpg" alt="a beautifully lit picture of an Asus ROG Strix Scope II RX gaming keyboard, at night" /><figcaption><small role="credit">Future / Techradar</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/GXbnG5794n7LtYh4WEAQrK-1920-80.jpg" alt="Shots of the Asus ROG Strix Scope II RX gaming keyboard in use" /><figcaption><small role="credit">Future / Techradar</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/uDL9RuUVFTSPAfxB77cVsK-1920-80.jpg" alt="Shots of the Asus ROG Strix Scope II RX gaming keyboard in use" /><figcaption><small role="credit">Future / Techradar</small></figcaption></figure></figure><p>That's why the <a href="https://www.pcgamer.com/asus-rog-strix-scope-ii-96-wireless-review/" target="_blank">Scope II 96 wireless</a> sat at the top of our <a href="https://www.pcgamer.com/best-gaming-keyboard/" target="_blank">best gaming keyboard list<u> </u></a>for so long as well, and why its wired sibling packs in all the same traits, albeit at a slightly larger form factor, and still dominates two years on. </p><p>Millions of words I've typed on this thing, over years, spillages, food, dirt, dust, debris, sweat, blood, the lot. It's endured it all and held up against all of it. Not a single switch failure. Not a single moment where I've gone "man, I wish I could try something new". If that ain't high praise, I don't know what is, and when it costs damn near a third as much as the big boys' latest bounties, well, if I lived in the US it'd already be in my basket (as a back-up, you know, ya boy's got needs).</p><h2 id="check-out-all-of-amazon-s-gaming-peripheral-deals"><a href="https://www.pcgamer.com/hardware/amazon-prime-day-keyboard-mouse-controller-deals/" target="_blank">👉Check out all of Amazon's gaming peripheral deals👈</a></h2> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/this-lubed-up-optical-gaming-keyboard-has-been-my-daily-driver-for-two-years-and-it-beats-out-boards-three-times-its-price-at-just-usd80/</link>
                                                                            <description>
                            <![CDATA[ Two years old? Yeah sure. But it still beats out some of the best aftermarket keyboards out there, especially with that discount. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">wi5pAgNasg3GcffGesvQ4A</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/Q6jfeMxQczjCFJpcReB725-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 23 Jun 2026 14:15:09 +0000</pubDate>                                                                                                                                <updated>Tue, 23 Jun 2026 14:24:26 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming Keyboards]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Zak Storey ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/guqkECd487mnnd23T3pQac-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;After graduating from the University of Derby in 2014, Zak joined the PC Format and Maximum PC team as its resident staff writer. Specializing in PC building, and all forms of hardware and componentry, he soon worked his way up to editor-in-chief, leading the publication through the covid dark times. Since then, he’s dabbled in PR, working for Corsair for a while as its UK PR specialist, before returning to the fold as a tech journalist once again. &lt;/p&gt;&lt;p&gt;He now operates as a freelance tech editor, writing for all manner of publications, including PC Gamer, Maximum PC, Techradar, Gamesradar, PCGamesN, and Trusted Reviews as well. If there’s something happening in the tech industry it’s highly likely Zak has a strong opinion on it.&lt;/p&gt;&lt;p&gt;Outside of the world of silicon transistors, Zak also moonlights as first barista and head of coffee, at a local independent cafe in the Forest of Dean. In his spare time, you can find him training calisthenics, or out in the Wye Valley shooting longbows with his field archery club.&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/Q6jfeMxQczjCFJpcReB725-1920-80.jpg">
                                                            <media:credit><![CDATA[Asus]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[An Asus ROG Strix Scope II RX sat floating in PC Gamer&#039;s Prime Day deals background]]></media:description>                                                            <media:text><![CDATA[An Asus ROG Strix Scope II RX sat floating in PC Gamer&#039;s Prime Day deals background]]></media:text>
                                <media:title type="plain"><![CDATA[An Asus ROG Strix Scope II RX sat floating in PC Gamer&#039;s Prime Day deals background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/Q6jfeMxQczjCFJpcReB725-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="product"><a data-dimension112="f63070be-8b42-41bc-af06-7d6724da82e2" data-action="Deal Block" data-label="ROG Strix Scope II RX" data-dimension48="ROG Strix Scope II RX" data-dimension25="$79.99" href="https://www.newegg.com/asus-xa12-rog-strix-scope-ii-rx-rxrd-ca-abs-rog-strix-scope-ii-rx-gaming-keyboard-mechanical-keyboard-linear/p/N82E16823193169" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2400px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="yJmJPNPBf6FfrcNEEWPTCQ" name="8E2D8455-BE85-46D7-8BE6-17E9A0E96F5C" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/yJmJPNPBf6FfrcNEEWPTCQ-1920-80.png" mos="" align="middle" fullscreen="" width="2400" height="2400" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.newegg.com/asus-xa12-rog-strix-scope-ii-rx-rxrd-ca-abs-rog-strix-scope-ii-rx-gaming-keyboard-mechanical-keyboard-linear/p/N82E16823193169" target="_blank" rel="nofollow" data-dimension112="f63070be-8b42-41bc-af06-7d6724da82e2" data-action="Deal Block" data-label="ROG Strix Scope II RX" data-dimension48="ROG Strix Scope II RX" data-dimension25="$79.99">ROG Strix Scope II RX: was $119.99 now $79.99</a></strong><br>It's my daily driver and the optical sound-dampened pre-lubed keyboard I compare every keyboard against. With ROG LX linear optical switches, an impressive build quality, combined with slick styling, lovely RGB lighting and PBT doubleshot key caps, it's an absolute king at the best of times, and at $80, well, it's a hard argument to ignore.</p><p><strong>Key specs: Full-size | ROG RX pre-lubed linear optical | PBT doubleshot | per-key RGB | sound-dampened | wired USB-C</strong><a class="view-deal button" href="https://www.newegg.com/asus-xa12-rog-strix-scope-ii-rx-rxrd-ca-abs-rog-strix-scope-ii-rx-gaming-keyboard-mechanical-keyboard-linear/p/N82E16823193169" target="_blank" rel="nofollow" data-dimension112="f63070be-8b42-41bc-af06-7d6724da82e2" data-action="Deal Block" data-label="ROG Strix Scope II RX" data-dimension48="ROG Strix Scope II RX" data-dimension25="$79.99">View Deal</a></p></div><p>You know I've tested a lot of mechanical keyboards over the years. In fact, I started my clicky switch love way back in 2013, with the OG <a href="https://www.pcgamer.com/corsair-vengeance-k70-review/" target="_blank">Corsair K70 Vengeance</a> and a Cherry MX Red switch, but nothing, and I mean nothing, has come close to the Asus ROG Strix Scope II RX for me. Even with its silly and ridiculous name, that seems to grow ever longer. I reviewed it for another publication in about 2024, and was just blown away by the build quality, the switches, the sound dampening, the fact Asus had pre-lubed everything to death. And it was clean too, stupidly so, it looked and still looks gorgeous. I set up the RGB once, two years ago, and I haven't changed it since.</p><p>Back then, it averaged $120 on retail. Today, <a href="https://www.newegg.com/asus-xa12-rog-strix-scope-ii-rx-rxrd-ca-abs-rog-strix-scope-ii-rx-gaming-keyboard-mechanical-keyboard-linear/p/N82E16823193169" target="_blank">Newegg's got it listed with a 33% discount at $80</a> (with the promo code: <strong>FTTF283</strong>).</p><ul><li><a href="https://www.pcgamer.com/best-amazon-prime-day-pc-gaming-deals/" target="_blank"><strong>We're curating all the best Prime Day PC gaming deals here</strong></a></li></ul><p>Like complete honest truth with you, I actually recently took a look at <a href="https://www.pcgamer.com/hardware/gaming-keyboards/corsair-brings-hall-effect-to-its-dinky-enthusiast-gaming-keyboard-in-the-form-of-the-makr-pro-75/" target="_blank">Corsair's Makr Pro 75</a> line as well. A similarly sound-dampened premium pre-lubed affair, albeit with Hall effect switches, and even though I enjoyed it, I just ended up gravitating straight back to this beauty. The Makr Pro 75 now sits diligently on a shelf again in its box, whereas my slightly dusty ROG Strix Scope II hogs the limelight. </p><p>I could wax lyrical about it all day. The build quality on it is exceptional. It's not particularly heavy by modern standards, and there's no nonsense marketing hype either. I see so many manufacturers just adding layers of foam, brace plates, gaskets, for the sake of it, so they can make the numbers bigger on the product page, or tell you exactly how each spring is specifically chosen based on its acoustic time signature or some bs, and it just feels unnecessary. All of it adds extra cost at diminishing returns, and we end up paying the price. You have to draw a line somewhere.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/QYyAoN3coaB9V9vBZUQXQA-1920-80.jpg" alt="a beautifully lit picture of an Asus ROG Strix Scope II RX gaming keyboard, at night" /><figcaption><small role="credit">Future / Techradar</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/GXbnG5794n7LtYh4WEAQrK-1920-80.jpg" alt="Shots of the Asus ROG Strix Scope II RX gaming keyboard in use" /><figcaption><small role="credit">Future / Techradar</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/uDL9RuUVFTSPAfxB77cVsK-1920-80.jpg" alt="Shots of the Asus ROG Strix Scope II RX gaming keyboard in use" /><figcaption><small role="credit">Future / Techradar</small></figcaption></figure></figure><p>That's why the <a href="https://www.pcgamer.com/asus-rog-strix-scope-ii-96-wireless-review/" target="_blank">Scope II 96 wireless</a> sat at the top of our <a href="https://www.pcgamer.com/best-gaming-keyboard/" target="_blank">best gaming keyboard list<u> </u></a>for so long as well, and why its wired sibling packs in all the same traits, albeit at a slightly larger form factor, and still dominates two years on. </p><p>Millions of words I've typed on this thing, over years, spillages, food, dirt, dust, debris, sweat, blood, the lot. It's endured it all and held up against all of it. Not a single switch failure. Not a single moment where I've gone "man, I wish I could try something new". If that ain't high praise, I don't know what is, and when it costs damn near a third as much as the big boys' latest bounties, well, if I lived in the US it'd already be in my basket (as a back-up, you know, ya boy's got needs).</p><h2 id="check-out-all-of-amazon-s-gaming-peripheral-deals"><a href="https://www.pcgamer.com/hardware/amazon-prime-day-keyboard-mouse-controller-deals/" target="_blank">👉Check out all of Amazon's gaming peripheral deals👈</a></h2>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Melgeek Real81 review ]]></title>
                                                                                                <dc:content><![CDATA[ <div data-widget-type="review" data-model-name="Melgeek Real 81" data-widget-title=""></div><p>I recently had the chance to test two different Melgeek keyboards at the same time. They are the space-themed <a href="https://www.pcgamer.com/hardware/gaming-keyboards/melgeek-centauri-80-review/" target="_blank">Centauri 80</a> and the black and gold Real 81. Though they're made by the same company, they couldn't be more different in approach. </p><p>The Centauri 80 is heavy, flashy, with a built-in OLED screen, and it costs $360. The Real 81, on the other hand, is more practical at $140, or at least as practical as you can get from a competitive gaming keyboard. </p><p>If I could compare it to keyboards I've tried before, I'd say it's a similar feel and design to Lemokey, specifically the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/lemokey-l4-review/" target="_blank">Lemokey L4</a>. It's small but blocky and a little chunky. It's the type of keyboard you could throw into a backpack, but you probably wouldn't want to because it's pretty heavy. Still, I don't think I'd fear it breaking on the train. </p><p>It also comes with many of the features you would want out of a competitive keyboard. It can go all the way up to 8,000 Hz (should you have the reaction speed for that to matter), and its keys are all rapid trigger capable, which means they can register presses and unregister presses based on a specific actuation. In practice, this means being able to stop walking quicker or button bash more effectively.</p><div  class="fancy-box"><div class="fancy_box-title">MelGeek Real81 specs</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>Switches: </strong>Honey magnetic switches<br><strong>Keycaps: </strong>Transparent<br><strong>Lighting:</strong> Yes<br><strong>Polling rate:</strong> 8,000 Hz<br><strong>Connection type:</strong> Wired<br><strong>Layout:</strong> 81 keys<br><strong>Weight:</strong> 1.1 kg<br><strong>Price:</strong> <a data-analytics-id="inline-link" href="https://www.melgeek.com/en-eu/products/melgeek-real81-gaming-keyboard" target="_blank">$139</a></p></div></div><p>Immediately, it's a more attractive package for the average gamer than the Centauri 80. Where the Centauri shows up in the looks department and feels impressive, the Real 81 is simpler in approach. It doesn't have any gimmicks and comes in at a reasonably competitive price. </p><p>Naturally, I still wouldn't call $140 cheap, or even budget, but the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/gamakay-x-naughshark-ns68-review/" target="_blank">Gamakay x NaughShark NS68</a> sits in a league of its own for 8,000 Hz pricing. And Gamakay give up build quality in return for that super cheap price point. $140 feels about right for the keyboard I've had my mitts on, factoring specs and build. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/nVyzXwgwbcxHHVRFdXoshY-1920-80.jpg" alt="Melgeek Real 81 gaming keyboard outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/WgnRahUjTWMCp9G7utk5tY-1920-80.jpg" alt="Melgeek Real 81 gaming keyboard outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ADJQPVPVeFZTqBc4rKjgfY-1920-80.jpg" alt="Melgeek Real 81 gaming keyboard outside" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>In the looks department, the Real 81 has a few flourishes, with a gold trim and a small LED bar down the bottom right, but it's not too flashy either. It's all black otherwise, and the keys have a dark gold lettering. </p><p>Unfortunately, like the Centauri 80, the Real 81 is quite hard to make out in a dark environment. If I don't have at least a light on in the room, I have to rely mostly on feel to make out where the keys are. This isn't a huge problem for me, as I'm fairly familiar with where to put my hands, but it's still an odd issue to have. Keys are, thankfully, well spaced and easy to get to, though. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/Va6ENR3pi8nLcneGV4pznY-1920-80.jpg" alt="Melgeek Real 81 gaming keyboard on a desk, from the front, showing off its RGB lighting" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/89Pu8VBmMAsUc3HcBGVqLY-1920-80.jpg" alt="Melgeek Real 81 gaming keyboard on a desk, from the front, showing off its RGB lighting" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/rRmeHt7jvFPmNrvYJ6KqLY-1920-80.jpg" alt="Melgeek Real 81 gaming keyboard on a desk, from the front, showing off its RGB lighting" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The RGB underneath keys does look pretty good, and that's because its keys are translucent. It even has per-key RGB, which can be adjusted in Melgeek's own software. That software can also be used to set custom controls, which does help make up for the lack of any media buttons on the keyboard itself. You can download that software, or use it on the web, and the web app is super solid. I like that customisation is straightforward and easy here. The Real 81 is simple to use out of the box and doesn't even require software, past the first update. </p><p>As far as typing feel is concerned, the Real 81 performs okay. Keys are a tad springy for my liking, and are less smooth than I would have hoped. I feel like I'm simply putting in a little more effort than I expect when trying to bash them down in a flurry for a piece of news. Mine came equipped with Melgeek's Honey magnetic switches, and Honey is an apt name, as they just feel a tad sticky. The space bar and caps lock also have an uncomfortable clack feeling, which is less nice than the somewhat muted sounds of the rest of the keyboard. I wouldn't say it's bad, as far as sound is concerned, but just inconsistent.</p><p>Melgeek employs a 5-layer sound-dampening gasket mount to help flatten that sound, and it's mostly rather satisfying. The majority of keys have a 'tick' sound that's just quite enough that it hasn't bothered my partner on a late night when inspiration has suddenly struck me. The feel of the keys would certainly send me to bed before the sound would, anyway. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/ADJQPVPVeFZTqBc4rKjgfY-1920-80.jpg" alt="Melgeek Real 81 gaming keyboard outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/p2M7AD2mkzHc6TUNTViKnY-1920-80.jpg" alt="Melgeek Real 81 gaming keyboard outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Dobd4UAW6k4fHaQMSSjsaY-1920-80.jpg" alt="Melgeek Real 81 gaming keyboard outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ccZMSicdk2Eakgzn3tzcnY-1920-80.jpg" alt="Melgeek Real 81 gaming keyboard outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/9xt6VFo35ZWyimeqELidhY-1920-80.jpg" alt="Melgeek Real 81 gaming keyboard outside" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>In games, the Real 81 does perform pretty well, though. Keys are responsive and super quick in Counter-Strike 2, and I can stop walking nearly instantaneously. Your reticule is smaller when standing still in Counter-Strike 2, so this feels like a boon to me. I'd say competitive games overall perform quite nicely. The slightly tougher keys are actually pretty solid in the likes of Battlefield, where a stray misclick is rather common.</p><div  class="fancy-box"><div class="fancy_box-title">Buy if...</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>✅ You're a competitive player who wants a chunky board:</strong> Thanks to 8,000 Hz polling and snappy rapid trigger switches, the Real 81 is a solid competitive pick. It's also blocky, heavy, and with little flex, so you could theoretically throw it around the room.</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 type a lot:</strong> Though not awful, I found the honey switches to be a tad cumbersome to use, and not as smooth as I'd want for a day of typing<br><br><strong>❌ You can't touch type:</strong> In the dark, the Real 81's keys are genuinely quite tough to make out.</p></div></div><p>In more casual single-player games, I find the Real 81 does its job, but it's less comfortable to use after a few hours than other keyboards I've had my hands on. That's because the springy keys just require a bit more effort. Longer gaming sessions feel ever so slightly tiresome. </p><p>I noticed this after a few hours with roguelite city builder <a href="https://www.pcgamer.com/games/strategy/roguelite-city-builder-super-fantasy-kingdom-has-been-a-big-success-and-now-its-developer-can-afford-a-luxury-hes-always-dreamed-of-a-real-winter-jacket/" target="_blank">Super Fantasy Kingdom</a>, where I just wished I could control it all from my mouse, as the combination of its hardy keys and my leaned posture made it feel like a little more effort than necessary. </p><p>Most keyboards have to make compromises, but I can't help but feel like Melgeek's compromises are by accident here. It's a solid set of competitive keys, but not amazing for everyday typing. It has vibrant RGB and gold lettering…which you will struggle to see in the dark. It has a solid dampening solution that works well… but not on every key. </p><p>The Real 81's monkey paw curls on almost every good side, and there's certainly enough good to outweigh the bad points, but there's still far more bad than I was expecting. Or hoping for. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-keyboards/melgeek-real81-review/</link>
                                                                            <description>
                            <![CDATA[ A competitive keyboard that stumbles in more casual settings. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">gw8kodEU7U8aFntXGVMRcK</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/UQoKbXr85QopFn23S5qEgY-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 18 Jun 2026 15:54:15 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Keyboards]]></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/UQoKbXr85QopFn23S5qEgY-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Melgeek Real 81 gaming keyboard outside]]></media:description>                                                            <media:text><![CDATA[Melgeek Real 81 gaming keyboard outside]]></media:text>
                                <media:title type="plain"><![CDATA[Melgeek Real 81 gaming keyboard outside]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/UQoKbXr85QopFn23S5qEgY-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div data-widget-type="review" data-model-name="Melgeek Real 81" data-widget-title=""></div><p>I recently had the chance to test two different Melgeek keyboards at the same time. They are the space-themed <a href="https://www.pcgamer.com/hardware/gaming-keyboards/melgeek-centauri-80-review/" target="_blank">Centauri 80</a> and the black and gold Real 81. Though they're made by the same company, they couldn't be more different in approach. </p><p>The Centauri 80 is heavy, flashy, with a built-in OLED screen, and it costs $360. The Real 81, on the other hand, is more practical at $140, or at least as practical as you can get from a competitive gaming keyboard. </p><p>If I could compare it to keyboards I've tried before, I'd say it's a similar feel and design to Lemokey, specifically the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/lemokey-l4-review/" target="_blank">Lemokey L4</a>. It's small but blocky and a little chunky. It's the type of keyboard you could throw into a backpack, but you probably wouldn't want to because it's pretty heavy. Still, I don't think I'd fear it breaking on the train. </p><p>It also comes with many of the features you would want out of a competitive keyboard. It can go all the way up to 8,000 Hz (should you have the reaction speed for that to matter), and its keys are all rapid trigger capable, which means they can register presses and unregister presses based on a specific actuation. In practice, this means being able to stop walking quicker or button bash more effectively.</p><div  class="fancy-box"><div class="fancy_box-title">MelGeek Real81 specs</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>Switches: </strong>Honey magnetic switches<br><strong>Keycaps: </strong>Transparent<br><strong>Lighting:</strong> Yes<br><strong>Polling rate:</strong> 8,000 Hz<br><strong>Connection type:</strong> Wired<br><strong>Layout:</strong> 81 keys<br><strong>Weight:</strong> 1.1 kg<br><strong>Price:</strong> <a data-analytics-id="inline-link" href="https://www.melgeek.com/en-eu/products/melgeek-real81-gaming-keyboard" target="_blank">$139</a></p></div></div><p>Immediately, it's a more attractive package for the average gamer than the Centauri 80. Where the Centauri shows up in the looks department and feels impressive, the Real 81 is simpler in approach. It doesn't have any gimmicks and comes in at a reasonably competitive price. </p><p>Naturally, I still wouldn't call $140 cheap, or even budget, but the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/gamakay-x-naughshark-ns68-review/" target="_blank">Gamakay x NaughShark NS68</a> sits in a league of its own for 8,000 Hz pricing. And Gamakay give up build quality in return for that super cheap price point. $140 feels about right for the keyboard I've had my mitts on, factoring specs and build. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/nVyzXwgwbcxHHVRFdXoshY-1920-80.jpg" alt="Melgeek Real 81 gaming keyboard outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/WgnRahUjTWMCp9G7utk5tY-1920-80.jpg" alt="Melgeek Real 81 gaming keyboard outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ADJQPVPVeFZTqBc4rKjgfY-1920-80.jpg" alt="Melgeek Real 81 gaming keyboard outside" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>In the looks department, the Real 81 has a few flourishes, with a gold trim and a small LED bar down the bottom right, but it's not too flashy either. It's all black otherwise, and the keys have a dark gold lettering. </p><p>Unfortunately, like the Centauri 80, the Real 81 is quite hard to make out in a dark environment. If I don't have at least a light on in the room, I have to rely mostly on feel to make out where the keys are. This isn't a huge problem for me, as I'm fairly familiar with where to put my hands, but it's still an odd issue to have. Keys are, thankfully, well spaced and easy to get to, though. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/Va6ENR3pi8nLcneGV4pznY-1920-80.jpg" alt="Melgeek Real 81 gaming keyboard on a desk, from the front, showing off its RGB lighting" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/89Pu8VBmMAsUc3HcBGVqLY-1920-80.jpg" alt="Melgeek Real 81 gaming keyboard on a desk, from the front, showing off its RGB lighting" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/rRmeHt7jvFPmNrvYJ6KqLY-1920-80.jpg" alt="Melgeek Real 81 gaming keyboard on a desk, from the front, showing off its RGB lighting" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The RGB underneath keys does look pretty good, and that's because its keys are translucent. It even has per-key RGB, which can be adjusted in Melgeek's own software. That software can also be used to set custom controls, which does help make up for the lack of any media buttons on the keyboard itself. You can download that software, or use it on the web, and the web app is super solid. I like that customisation is straightforward and easy here. The Real 81 is simple to use out of the box and doesn't even require software, past the first update. </p><p>As far as typing feel is concerned, the Real 81 performs okay. Keys are a tad springy for my liking, and are less smooth than I would have hoped. I feel like I'm simply putting in a little more effort than I expect when trying to bash them down in a flurry for a piece of news. Mine came equipped with Melgeek's Honey magnetic switches, and Honey is an apt name, as they just feel a tad sticky. The space bar and caps lock also have an uncomfortable clack feeling, which is less nice than the somewhat muted sounds of the rest of the keyboard. I wouldn't say it's bad, as far as sound is concerned, but just inconsistent.</p><p>Melgeek employs a 5-layer sound-dampening gasket mount to help flatten that sound, and it's mostly rather satisfying. The majority of keys have a 'tick' sound that's just quite enough that it hasn't bothered my partner on a late night when inspiration has suddenly struck me. The feel of the keys would certainly send me to bed before the sound would, anyway. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/ADJQPVPVeFZTqBc4rKjgfY-1920-80.jpg" alt="Melgeek Real 81 gaming keyboard outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/p2M7AD2mkzHc6TUNTViKnY-1920-80.jpg" alt="Melgeek Real 81 gaming keyboard outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Dobd4UAW6k4fHaQMSSjsaY-1920-80.jpg" alt="Melgeek Real 81 gaming keyboard outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ccZMSicdk2Eakgzn3tzcnY-1920-80.jpg" alt="Melgeek Real 81 gaming keyboard outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/9xt6VFo35ZWyimeqELidhY-1920-80.jpg" alt="Melgeek Real 81 gaming keyboard outside" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>In games, the Real 81 does perform pretty well, though. Keys are responsive and super quick in Counter-Strike 2, and I can stop walking nearly instantaneously. Your reticule is smaller when standing still in Counter-Strike 2, so this feels like a boon to me. I'd say competitive games overall perform quite nicely. The slightly tougher keys are actually pretty solid in the likes of Battlefield, where a stray misclick is rather common.</p><div  class="fancy-box"><div class="fancy_box-title">Buy if...</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>✅ You're a competitive player who wants a chunky board:</strong> Thanks to 8,000 Hz polling and snappy rapid trigger switches, the Real 81 is a solid competitive pick. It's also blocky, heavy, and with little flex, so you could theoretically throw it around the room.</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 type a lot:</strong> Though not awful, I found the honey switches to be a tad cumbersome to use, and not as smooth as I'd want for a day of typing<br><br><strong>❌ You can't touch type:</strong> In the dark, the Real 81's keys are genuinely quite tough to make out.</p></div></div><p>In more casual single-player games, I find the Real 81 does its job, but it's less comfortable to use after a few hours than other keyboards I've had my hands on. That's because the springy keys just require a bit more effort. Longer gaming sessions feel ever so slightly tiresome. </p><p>I noticed this after a few hours with roguelite city builder <a href="https://www.pcgamer.com/games/strategy/roguelite-city-builder-super-fantasy-kingdom-has-been-a-big-success-and-now-its-developer-can-afford-a-luxury-hes-always-dreamed-of-a-real-winter-jacket/" target="_blank">Super Fantasy Kingdom</a>, where I just wished I could control it all from my mouse, as the combination of its hardy keys and my leaned posture made it feel like a little more effort than necessary. </p><p>Most keyboards have to make compromises, but I can't help but feel like Melgeek's compromises are by accident here. It's a solid set of competitive keys, but not amazing for everyday typing. It has vibrant RGB and gold lettering…which you will struggle to see in the dark. It has a solid dampening solution that works well… but not on every key. </p><p>The Real 81's monkey paw curls on almost every good side, and there's certainly enough good to outweigh the bad points, but there's still far more bad than I was expecting. Or hoping for. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I was genuinely surprised by the discounted price of Logitech's Genshin Impact-themed TKL gaming keyboard, thanks to a 56% price cut at Amazon ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="product"><a data-dimension112="ecfe686f-0a9c-4eb4-8cf8-8f3acb3eca0c" data-action="Deal Block" data-label="G515 Wireless TKL" data-dimension48="G515 Wireless TKL" data-dimension25="$69.99" href="https://www.amazon.com/Logitech-LIGHTSYNC-Tenkeyless-Double-Shot-Mechanical/dp/B0FLF81R4J/ref=sr_1_19" 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="mSngcsZXFHBy4ZVCVYNZF5" name="1781521507.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/mSngcsZXFHBy4ZVCVYNZF5-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/Logitech-LIGHTSYNC-Tenkeyless-Double-Shot-Mechanical/dp/B0FLF81R4J/ref=sr_1_19" target="_blank" rel="nofollow" data-dimension112="ecfe686f-0a9c-4eb4-8cf8-8f3acb3eca0c" data-action="Deal Block" data-label="G515 Wireless TKL" data-dimension48="G515 Wireless TKL" data-dimension25="$69.99">G515 Wireless TKL: was $159.99 now $69.99</a></strong><br>This compact keyboard is especially affordable in this light purple colorway. We reviewed the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/logitech-g515-rapid-tkl-review/" target="_blank">wired Rapid version with magnetic switches a while back</a> and thought it just okay for the money, but this is the wireless version with standard keys for much, much less cash.</p><p><strong>Key specs: Wireless | Low-profile | PBT keycaps</strong><a class="view-deal button" href="https://www.amazon.com/Logitech-LIGHTSYNC-Tenkeyless-Double-Shot-Mechanical/dp/B0FLF81R4J/ref=sr_1_19" target="_blank" rel="nofollow" data-dimension112="ecfe686f-0a9c-4eb4-8cf8-8f3acb3eca0c" data-action="Deal Block" data-label="G515 Wireless TKL" data-dimension48="G515 Wireless TKL" data-dimension25="$69.99">View Deal</a></p></div><p>With Prime Day just around the corner, we have started to see some deals pop up, but I was surprised to see Logitech offering some of the steepest and most surprising discounts so far. </p><p>If you want a pretty, Genshin-themed gaming keybaord that's wireless and TKL, the <a href="https://www.amazon.com/Logitech-LIGHTSYNC-Tenkeyless-Double-Shot-Mechanical/dp/B0FLF81R4J/ref=sr_1_19?th=1" target="_blank">Logitech G515 is down to just $70</a>. That's a whopping 56% discount on its full price, and the lowest price I've ever seen this keyboard go for. </p><ul><li><a href="https://www.pcgamer.com/best-amazon-prime-day-pc-gaming-deals/" target="_blank"><strong>We're keeping track of all the early Amazon Prime Day PC gaming deals here</strong></a></li></ul><p>The main difference between the G515 and the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/logitech-g515-rapid-tkl-review/">G515 Rapid TKL</a> that we reviewed late last year is that this one is missing rapid trigger switches. Instead, the keyb is fitted with brown tactile switches, but it's still got lovely RGB, a sweet white aesthetic, and Double-Shot PBT keycaps.</p><p>This one is Genshin Impact themed (or more specifically, it's styled after Kamisato Ayaka), but thankfully, it's not gauche at all. It has some lovely accents and the odd sprinkling of decals. Overall, it's quite subtle and pretty even to the eye of this casual Genshin player.  </p><p>Being low profile and TKL, it's short and easy to pop on a desk. Its build quality is still strong, though, and it's not super light either. Wireless connectivity is perhaps less useful than in a mouse or headset, but it's still nice to have the option, and you're getting around 36 hours of charge out of it, 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:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="JGVPvoFweBQJofc7xonzo" name="genshinayaka.jpg" alt="Ayaka in Genshin Impact" src="https://cdn.mos.cms.futurecdn.net/JGVPvoFweBQJofc7xonzo-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: miHoYo)</span></figcaption></figure><p>Thanks to its lightspeed connectivity mode and 1,000 Hz polling rate, it's a pretty fast set of keys too. You are missing some modern features like Rapid trigger and 8,000 Hz polling (who really needs that anyway?), but for its price, this is a killer deal. The <a href="https://www.amazon.com/GK-GAMAKAY-NaughShark-NS68-Mechanical/dp/B0F284TGHY" target="_blank">Gamakay x NaughShark NS68</a> does offer both 8,000 Hz and rapid trigger for cheaper, but the Logitech still beats it on build quality and looks. </p><p>If you're in need of a sturdy low-profile gaming keyboard and want something to pair with your all-white rig, this Logitech keyboard surprised me with how good value it is right now, and I can't see it going lower this side of Black Friday. </p><h2 id="check-out-the-rest-of-amazon-s-gaming-keyboard-deals">👉 <a href="https://www.amazon.com/s?k=gaming+keyboard&i=electronics&crid=YIJCOP1QTZ2U&sprefix=gaming+keyboar%2Celectronics%2C183&ref=nb_sb_noss_2" target="_blank">Check out the rest of Amazon's gaming keyboard deals</a> 👈</h2> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-keyboards/i-was-genuinely-surprised-by-the-discounted-price-of-logitechs-genshin-impact-themed-tkl-gaming-keyboard-thanks-to-a-56-percent-price-cut-at-amazon/</link>
                                                                            <description>
                            <![CDATA[ Either that or about 5,000 Primogems. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">cjSeNLQRojBrjwy7VdbE3m</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/yiQx8CEmwUs3ky3GeXwTcS-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 17 Jun 2026 13:00:58 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Keyboards]]></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/yiQx8CEmwUs3ky3GeXwTcS-1920-80.jpg">
                                                            <media:credit><![CDATA[Logitech]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Logitech G515 TKL on a pink deals background]]></media:description>                                                            <media:text><![CDATA[Logitech G515 TKL on a pink deals background]]></media:text>
                                <media:title type="plain"><![CDATA[Logitech G515 TKL on a pink deals background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/yiQx8CEmwUs3ky3GeXwTcS-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="product"><a data-dimension112="ecfe686f-0a9c-4eb4-8cf8-8f3acb3eca0c" data-action="Deal Block" data-label="G515 Wireless TKL" data-dimension48="G515 Wireless TKL" data-dimension25="$69.99" href="https://www.amazon.com/Logitech-LIGHTSYNC-Tenkeyless-Double-Shot-Mechanical/dp/B0FLF81R4J/ref=sr_1_19" 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="mSngcsZXFHBy4ZVCVYNZF5" name="1781521507.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/mSngcsZXFHBy4ZVCVYNZF5-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/Logitech-LIGHTSYNC-Tenkeyless-Double-Shot-Mechanical/dp/B0FLF81R4J/ref=sr_1_19" target="_blank" rel="nofollow" data-dimension112="ecfe686f-0a9c-4eb4-8cf8-8f3acb3eca0c" data-action="Deal Block" data-label="G515 Wireless TKL" data-dimension48="G515 Wireless TKL" data-dimension25="$69.99">G515 Wireless TKL: was $159.99 now $69.99</a></strong><br>This compact keyboard is especially affordable in this light purple colorway. We reviewed the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/logitech-g515-rapid-tkl-review/" target="_blank">wired Rapid version with magnetic switches a while back</a> and thought it just okay for the money, but this is the wireless version with standard keys for much, much less cash.</p><p><strong>Key specs: Wireless | Low-profile | PBT keycaps</strong><a class="view-deal button" href="https://www.amazon.com/Logitech-LIGHTSYNC-Tenkeyless-Double-Shot-Mechanical/dp/B0FLF81R4J/ref=sr_1_19" target="_blank" rel="nofollow" data-dimension112="ecfe686f-0a9c-4eb4-8cf8-8f3acb3eca0c" data-action="Deal Block" data-label="G515 Wireless TKL" data-dimension48="G515 Wireless TKL" data-dimension25="$69.99">View Deal</a></p></div><p>With Prime Day just around the corner, we have started to see some deals pop up, but I was surprised to see Logitech offering some of the steepest and most surprising discounts so far. </p><p>If you want a pretty, Genshin-themed gaming keybaord that's wireless and TKL, the <a href="https://www.amazon.com/Logitech-LIGHTSYNC-Tenkeyless-Double-Shot-Mechanical/dp/B0FLF81R4J/ref=sr_1_19?th=1" target="_blank">Logitech G515 is down to just $70</a>. That's a whopping 56% discount on its full price, and the lowest price I've ever seen this keyboard go for. </p><ul><li><a href="https://www.pcgamer.com/best-amazon-prime-day-pc-gaming-deals/" target="_blank"><strong>We're keeping track of all the early Amazon Prime Day PC gaming deals here</strong></a></li></ul><p>The main difference between the G515 and the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/logitech-g515-rapid-tkl-review/">G515 Rapid TKL</a> that we reviewed late last year is that this one is missing rapid trigger switches. Instead, the keyb is fitted with brown tactile switches, but it's still got lovely RGB, a sweet white aesthetic, and Double-Shot PBT keycaps.</p><p>This one is Genshin Impact themed (or more specifically, it's styled after Kamisato Ayaka), but thankfully, it's not gauche at all. It has some lovely accents and the odd sprinkling of decals. Overall, it's quite subtle and pretty even to the eye of this casual Genshin player.  </p><p>Being low profile and TKL, it's short and easy to pop on a desk. Its build quality is still strong, though, and it's not super light either. Wireless connectivity is perhaps less useful than in a mouse or headset, but it's still nice to have the option, and you're getting around 36 hours of charge out of it, 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:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="JGVPvoFweBQJofc7xonzo" name="genshinayaka.jpg" alt="Ayaka in Genshin Impact" src="https://cdn.mos.cms.futurecdn.net/JGVPvoFweBQJofc7xonzo-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: miHoYo)</span></figcaption></figure><p>Thanks to its lightspeed connectivity mode and 1,000 Hz polling rate, it's a pretty fast set of keys too. You are missing some modern features like Rapid trigger and 8,000 Hz polling (who really needs that anyway?), but for its price, this is a killer deal. The <a href="https://www.amazon.com/GK-GAMAKAY-NaughShark-NS68-Mechanical/dp/B0F284TGHY" target="_blank">Gamakay x NaughShark NS68</a> does offer both 8,000 Hz and rapid trigger for cheaper, but the Logitech still beats it on build quality and looks. </p><p>If you're in need of a sturdy low-profile gaming keyboard and want something to pair with your all-white rig, this Logitech keyboard surprised me with how good value it is right now, and I can't see it going lower this side of Black Friday. </p><h2 id="check-out-the-rest-of-amazon-s-gaming-keyboard-deals">👉 <a href="https://www.amazon.com/s?k=gaming+keyboard&i=electronics&crid=YIJCOP1QTZ2U&sprefix=gaming+keyboar%2Celectronics%2C183&ref=nb_sb_noss_2" target="_blank">Check out the rest of Amazon's gaming keyboard deals</a> 👈</h2>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Thanks to a substantial 27% discount, this ROG Falchion gaming keyboard is a seriously tempting deal for anyone aiming for an all-white theme ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="product"><a data-dimension112="cf04b0d7-0419-45b0-b86e-46e75592af77" data-action="Deal Block" data-label="ROG Falchion Ace 75 HE" data-dimension48="ROG Falchion Ace 75 HE" data-dimension25="$159.99" href="https://www.amazon.com/ASUS-ROG-Keyboard-V2X-PBT/dp/B0GRM5GWD7/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1550px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="CFWkpEDspAiqGhiJ6QhZDV" name="asus_rog_falchion_ace_75_he_gaming_keyboard" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/CFWkpEDspAiqGhiJ6QhZDV-1920-80.jpg" mos="" align="middle" fullscreen="" width="1550" height="1550" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/ASUS-ROG-Keyboard-V2X-PBT/dp/B0GRM5GWD7/" target="_blank" rel="nofollow" data-dimension112="cf04b0d7-0419-45b0-b86e-46e75592af77" data-action="Deal Block" data-label="ROG Falchion Ace 75 HE" data-dimension48="ROG Falchion Ace 75 HE" data-dimension25="$159.99">ROG Falchion Ace 75 HE: was $219.99 now $159.99</a></strong><br>At its normal price, the Asus ROG Falchion Ace 75 is an excellent but overly expensive gaming keyboard. Slice 27% off the price tag, though, and you've now got something well worth considering.</p><p><strong>Key specs: ROG HFX V2 switches | PBT double-shot caps | RGB lighting | Media wheel | Wired USB Type-C</strong><a class="view-deal button" href="https://www.amazon.com/ASUS-ROG-Keyboard-V2X-PBT/dp/B0GRM5GWD7/" target="_blank" rel="nofollow" data-dimension112="cf04b0d7-0419-45b0-b86e-46e75592af77" data-action="Deal Block" data-label="ROG Falchion Ace 75 HE" data-dimension48="ROG Falchion Ace 75 HE" data-dimension25="$159.99">View Deal</a></p></div><p>Let's imagine that you've been working hard at creating an all-white theme for your gaming den, and there's just one item left to tick off the list: a super-nice white keyboard. There are lots to choose from, but many of the really great keyboards sport excessively high price tags.</p><p>A great example of that is the Asus ROG Falchion Ace 75 HE, which normally costs $220. It's an excellent keyboard, but that's way too much money in comparison to the competition. Well, not any more, because you can bag one for <a href="https://www.amazon.com/ASUS-ROG-Keyboard-V2X-PBT/dp/B0GRM5GWD7/" target="_blank">$160 at Amazon</a> right now.</p><ul><li><strong>Join us on </strong><a href="https://whatsapp.com/channel/0029VaZEGnpAu3aYJa8PuS2t" target="_blank"><strong>WhatsApp for daily deals</strong></a><strong>, direct to your phone.</strong></li></ul><p>When <a href="https://www.pcgamer.com/hardware/gaming-keyboards/asus-rog-falchion-ace-75-he-review/" target="_blank">Reese checked out the black version of the Falchion Ace 75 HE</a>, he came away very impressed by its super-fast switches, additional controls, and overall build quality. However, he wasn't quite so happy with the price tag, and that's understandable because the $150+ keyboard market is extremely competitive, with <a href="https://www.pcgamer.com/best-gaming-keyboard/" target="_blank">lots of brilliant options to choose from</a>.</p><p>But with a 27% discount, the Falchion Ace 75 HE is far more appealing, and if you don't mind the fact that it's wired-only, you're getting a superb button-basher for the money. Asus' latest Hall effect ROG HFX V2 switches are ridiculously quick, thanks to their short travel, low actuation force, and highly adjustable actuation point.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/DemZCF4MLgKp84MvjEmSWS-1920-80.jpg" alt="The Asus ROG Falchion Ace 75 HE on a desk with the lighting enabled." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/N6nHAJXQLzEtAWcrzyVHVS-1920-80.jpg" alt="The Asus ROG Falchion Ace 75 HE on a desk with the lighting enabled." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ThSTbM3QY8xtn53xG5LAXS-1920-80.jpg" alt="The Asus ROG Falchion Ace 75 HE on a desk with the lighting enabled." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/T9KsVNqDvJMT8bf4DrTrLS-1920-80.jpg" alt="The Asus ROG Falchion Ace 75 HE on a desk with the lighting enabled." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Along with an 8 kHz polling rate (somewhat pointless, but still kinda neat to have) and rapid trigger functionality, this keyboard is ideal for twitchy, competitive shooters and esports in general.</p><p>That said, it's great for any kind of gaming, as well as general use, thanks to the handy media wheel/roller and touch bar on the back, which you can configure for all kinds of roles. This is all done via Gear Link, a web-based app that's light-years ahead of Armoury Crate.</p><p>Yes, $160 is a lot of money to throw down for a keyboard, but at least you're not paying over the odds with this deal. </p><h2 id="check-out-all-of-amazon-s-gaming-keyboard-deals-here-2">👉<a href="https://www.amazon.com/s?k=gaming+keyboard" target="_blank">Check out all of Amazon's gaming keyboard deals here</a>👈</h2> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-keyboards/thanks-to-a-substantial-27-percent-discount-this-rog-falchion-gaming-keyboard-is-a-seriously-tempting-deal-for-anyone-aiming-for-an-all-white-theme/</link>
                                                                            <description>
                            <![CDATA[ It's wired-only, but don't let that put you off. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">WtdX7EcZ7gP3MGQNeQtWGK</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/2cBbLSipHFpoD2P7uADYF3-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 11 Jun 2026 11:28:37 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Keyboards]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Nick Evanson ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/HH5qHxdCSKxFpY2HXp2Q5K-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Nick, gaming, and computers all first met in the early 1980s. After leaving university, he became a physics and IT teacher and started writing about tech in the late 1990s. That resulted in him working with MadOnion to write the help files for 3DMark and PCMark. After a short stint working at Beyond3D.com, Nick joined Futuremark (MadOnion rebranded) full-time, as editor-in-chief for its PC gaming section, YouGamers. After the site shutdown, he became an engineering and computing lecturer for many years, but missed the writing bug. Cue four years at TechSpot.com covering everything and anything to do with tech and PCs. He freely admits to being far too obsessed with GPUs and open-world grindy RPGs, but who isn&#039;t these days?&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/2cBbLSipHFpoD2P7uADYF3-1920-80.jpg">
                                                            <media:credit><![CDATA[Asus]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[An image of an Asus ROG Falchion Ace 75 HE gaming keyboard, against a colorful background with a &#039;Deals&#039; phrase and a PC Gamer logo on the right]]></media:description>                                                            <media:text><![CDATA[An image of an Asus ROG Falchion Ace 75 HE gaming keyboard, against a colorful background with a &#039;Deals&#039; phrase and a PC Gamer logo on the right]]></media:text>
                                <media:title type="plain"><![CDATA[An image of an Asus ROG Falchion Ace 75 HE gaming keyboard, against a colorful background with a &#039;Deals&#039; phrase and a PC Gamer logo on the right]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/2cBbLSipHFpoD2P7uADYF3-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="product"><a data-dimension112="cf04b0d7-0419-45b0-b86e-46e75592af77" data-action="Deal Block" data-label="ROG Falchion Ace 75 HE" data-dimension48="ROG Falchion Ace 75 HE" data-dimension25="$159.99" href="https://www.amazon.com/ASUS-ROG-Keyboard-V2X-PBT/dp/B0GRM5GWD7/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1550px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="CFWkpEDspAiqGhiJ6QhZDV" name="asus_rog_falchion_ace_75_he_gaming_keyboard" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/CFWkpEDspAiqGhiJ6QhZDV-1920-80.jpg" mos="" align="middle" fullscreen="" width="1550" height="1550" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/ASUS-ROG-Keyboard-V2X-PBT/dp/B0GRM5GWD7/" target="_blank" rel="nofollow" data-dimension112="cf04b0d7-0419-45b0-b86e-46e75592af77" data-action="Deal Block" data-label="ROG Falchion Ace 75 HE" data-dimension48="ROG Falchion Ace 75 HE" data-dimension25="$159.99">ROG Falchion Ace 75 HE: was $219.99 now $159.99</a></strong><br>At its normal price, the Asus ROG Falchion Ace 75 is an excellent but overly expensive gaming keyboard. Slice 27% off the price tag, though, and you've now got something well worth considering.</p><p><strong>Key specs: ROG HFX V2 switches | PBT double-shot caps | RGB lighting | Media wheel | Wired USB Type-C</strong><a class="view-deal button" href="https://www.amazon.com/ASUS-ROG-Keyboard-V2X-PBT/dp/B0GRM5GWD7/" target="_blank" rel="nofollow" data-dimension112="cf04b0d7-0419-45b0-b86e-46e75592af77" data-action="Deal Block" data-label="ROG Falchion Ace 75 HE" data-dimension48="ROG Falchion Ace 75 HE" data-dimension25="$159.99">View Deal</a></p></div><p>Let's imagine that you've been working hard at creating an all-white theme for your gaming den, and there's just one item left to tick off the list: a super-nice white keyboard. There are lots to choose from, but many of the really great keyboards sport excessively high price tags.</p><p>A great example of that is the Asus ROG Falchion Ace 75 HE, which normally costs $220. It's an excellent keyboard, but that's way too much money in comparison to the competition. Well, not any more, because you can bag one for <a href="https://www.amazon.com/ASUS-ROG-Keyboard-V2X-PBT/dp/B0GRM5GWD7/" target="_blank">$160 at Amazon</a> right now.</p><ul><li><strong>Join us on </strong><a href="https://whatsapp.com/channel/0029VaZEGnpAu3aYJa8PuS2t" target="_blank"><strong>WhatsApp for daily deals</strong></a><strong>, direct to your phone.</strong></li></ul><p>When <a href="https://www.pcgamer.com/hardware/gaming-keyboards/asus-rog-falchion-ace-75-he-review/" target="_blank">Reese checked out the black version of the Falchion Ace 75 HE</a>, he came away very impressed by its super-fast switches, additional controls, and overall build quality. However, he wasn't quite so happy with the price tag, and that's understandable because the $150+ keyboard market is extremely competitive, with <a href="https://www.pcgamer.com/best-gaming-keyboard/" target="_blank">lots of brilliant options to choose from</a>.</p><p>But with a 27% discount, the Falchion Ace 75 HE is far more appealing, and if you don't mind the fact that it's wired-only, you're getting a superb button-basher for the money. Asus' latest Hall effect ROG HFX V2 switches are ridiculously quick, thanks to their short travel, low actuation force, and highly adjustable actuation point.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/DemZCF4MLgKp84MvjEmSWS-1920-80.jpg" alt="The Asus ROG Falchion Ace 75 HE on a desk with the lighting enabled." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/N6nHAJXQLzEtAWcrzyVHVS-1920-80.jpg" alt="The Asus ROG Falchion Ace 75 HE on a desk with the lighting enabled." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ThSTbM3QY8xtn53xG5LAXS-1920-80.jpg" alt="The Asus ROG Falchion Ace 75 HE on a desk with the lighting enabled." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/T9KsVNqDvJMT8bf4DrTrLS-1920-80.jpg" alt="The Asus ROG Falchion Ace 75 HE on a desk with the lighting enabled." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Along with an 8 kHz polling rate (somewhat pointless, but still kinda neat to have) and rapid trigger functionality, this keyboard is ideal for twitchy, competitive shooters and esports in general.</p><p>That said, it's great for any kind of gaming, as well as general use, thanks to the handy media wheel/roller and touch bar on the back, which you can configure for all kinds of roles. This is all done via Gear Link, a web-based app that's light-years ahead of Armoury Crate.</p><p>Yes, $160 is a lot of money to throw down for a keyboard, but at least you're not paying over the odds with this deal. </p><h2 id="check-out-all-of-amazon-s-gaming-keyboard-deals-here-2">👉<a href="https://www.amazon.com/s?k=gaming+keyboard" target="_blank">Check out all of Amazon's gaming keyboard deals here</a>👈</h2>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Father's Day is fast approaching, so I've picked out 12 awesome gift ideas for gaming dads without a single pair of socks to be found ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Father's Day is on <strong>Sunday, June 21</strong> this year, and if you're anything like me, you're already scrambling to think of something to buy. I've got good news for gaming dads, though—I've found 12 PC gaming gift ideas that would make any of them very, very happy indeed.</p><p>From mouse pads and tool sets to gaming controllers, mice, and chairs, there's definitely something here that will suit any gamer dad down to the ground. And indeed, suit any budget. Because whether you're looking for a high-end gift they'll cherish for years, or something small and affordable that'll demonstrate how much you've been paying attention to their hobbies, this list should pretty much cover it all.</p><p>Should you wish to really flash your cash this Father's Day, I'll also point you towards our <a href="https://www.pcgamer.com/gaming-laptop-deals/" target="_blank">cheap gaming laptop deals</a> and <a href="https://www.pcgamer.com/best-cheap-gaming-pc/" target="_blank">cheap gaming PC deals</a> pages. But for the rest of us looking for something more affordable, I reckon any of the 12 items below are perfect for the gamer dad in your life. And none of them are socks, I promise.</p><h3 class="article-body__section" id="section-pc-gaming-gifts-for-father-s-day"><span>PC gaming gifts for Father's Day</span></h3>        <div class="featured_product_block featured_block_hero" data-id="da38a603-3522-4734-9e4e-024588866aec">            <a href="https://www.amazon.com/CORSAIR-CH-9100020-WW-High-Performance-Optimized-Designed/dp/B01MS4C5WX/" data-model-name="MM100 Cloth Mouse Pad" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/TcHrXMmJxHi3eVx6xQu2SG.jpg" alt="A Corsair MM100 cloth mouse pad on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Corsair</div>                                        <div class="featured__title">MM100 Cloth Mouse Pad</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="840a488c-4762-4d54-a971-b5f747b5975a">            <a href="https://www.amazon.com/Precision-Screwdriver-Security-Cleaning-Doorbell/dp/B09PY8WQHJ/" data-model-name="40pcs Small Precision Magnetic Screwdriver Set" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:133.37%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/g7tVEDvp9o5vrvMRUeK5WQ.jpg" alt="A Jorest 40-piece small precision electronic screwdriver set in orange and black, on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Jorest</div>                                        <div class="featured__title">40pcs Small Precision Magnetic Screwdriver Set</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="50958f75-3b32-427c-bda9-c129733ba8b3">            <a href="https://www.amazon.com/Anchor-ORIGINAL-Under-Desk-Headphone-Stand/dp/B00P31BMHG/" data-model-name="The Anchor™ - Under-Desk Headphone Holder" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/488A2DNRve9Dufgp8UCf7e.jpg" alt="The Anchor under-desk headphone holder, on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Elevation Lab</div>                                        <div class="featured__title">The Anchor™ - Under-Desk Headphone Holder</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="0feec9e2-964a-4d4b-8768-d8a3456138a8">            <a href="https://www.amazon.com/Govee-Brighter-Million-Controlled-Kitchen/dp/B07N1CMGQQ/" data-model-name="Smart RGB LED Strip Lights" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:133.37%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/nXTRwbkuN2vHRVf2n2CamV.jpg" alt="A Govee Smart RGB LED strip light kit, with smartphone controls"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Govee</div>                                        <div class="featured__title">Smart RGB LED Strip Lights</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="69f92473-68dd-4436-b8b4-d0fae5b78c1e">            <a href="https://www.amazon.com/GameSir-Wireless-Controller-Bluetooth-Vibration/dp/B0CMCQ6WMC/" data-model-name="Nova Lite 2.4 GHz Wireless Controller" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:133.37%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/2bsh3ofwbGDMyduLRNBA6o.jpg" alt="A GameSir Nova Lite gaming controller in white with 2.4 GHz dongle, on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>GameSir</div>                                        <div class="featured__title">Nova Lite 2.4 GHz Wireless Controller</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="34ab16f6-68ff-4625-931b-bbb403cecf09">            <a href="https://www.amazon.com/Logitech-G502-Performance-Gaming-Mouse/dp/B07GBZ4Q68/" data-model-name="G502 Hero Wired Gaming Mouse, " data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/uLARxS2csE52fvupn5TRcG.jpg" alt="A Logitech G502 Hero wired gaming mouse on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Logitech</div>                                        <div class="featured__title">G502 Hero Wired Gaming Mouse, </div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="2998e2c9-d76d-4176-b130-1552f246dc82">            <a href="https://www.amazon.com/Razer-Firefly-Gaming-Mouse-Built/dp/B07ZDWHL4M/" data-model-name="Firefly V2 Hardtop RGB Gaming Mouse Pad" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/zj9ykQdxFBTbjHJhgHMZEH.jpg" alt="A Razer Firefly V2 hard gaming mouse pad with RGB lighting on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Razer</div>                                        <div class="featured__title">Firefly V2 Hardtop RGB Gaming Mouse Pad</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="490228c4-d43d-48e7-a887-9204506aa8cf">            <a href="https://www.amazon.com/Ultimate-Controller-Gaming-Joysticks-Switchable-Console/dp/B0DR8S2DQY/" data-model-name="Ultimate 2 Wireless Controller" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:133.37%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/7c9tzEEypwafSSRErHPtXW.jpg" alt="An 8BitDo Ultimate 2 Wireless controller on its dock, on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>8BitDo</div>                                        <div class="featured__title">Ultimate 2 Wireless Controller</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="5779fd2b-2f21-4a6d-a01d-ec95299582ea">            <a href="https://www.amazon.com/SteelSeries-Apex-RGB-Gaming-Keyboard/dp/B07ZGDPT4M/" data-model-name="Apex 3 RGB Gaming Keyboard" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/G2XhMRfBzHq38pqDhndsif.jpg" alt="A SteelSeries Apex 3 full-size gaming keyboard, with RGB lighting lit up in rainbow colours on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>SteelSeries</div>                                        <div class="featured__title">Apex 3 RGB Gaming Keyboard</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="e7e5887e-0870-410b-8d9e-13418b5dfe1c">            <a href="https://www.amazon.com/Razer-BlackShark-HyperSpeed-Wireless-Headset/dp/B0FH5YWH7B/" data-model-name="Blackshark V3 X HyperSpeed Wireless Gaming Headset" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/NhUg5QXvm4NuPfjGyRKte.jpg" alt="A Razer BlackShark V3X HyperSpeed wireless gaming headset on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Razer</div>                                        <div class="featured__title">Blackshark V3 X HyperSpeed Wireless Gaming Headset</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="674d6870-da44-480f-8d4f-458ebdbac574">            <a href="https://www.amazon.com/Razer-Viper-Wireless-Esports-Gaming/dp/B0CW25XR5R/" data-model-name="Viper V3 Pro Wireless Gaming Mouse" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/HMmAgtzXuaAonobZxWrFxG.jpg" alt="A Razer Viper V3 Pro gaming mouse on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Razer</div>                                        <div class="featured__title">Viper V3 Pro Wireless Gaming Mouse</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="fe2e48fd-ac17-4273-bb11-a4318c8d0c9a">            <a href="https://www.amazon.com/Corsair-TC100-Relaxed-Gaming-Chair/dp/B0BN6RRD5V/" data-model-name="TC100 Relaxed Gaming Chair" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/qz4uQF4pL5eoX8MdRMRwXd.jpg" alt="A Corsair TC100 Relaxed gaming chair on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Corsair</div>                                        <div class="featured__title">TC100 Relaxed Gaming Chair</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/fathers-day-is-fast-approaching-so-ive-picked-out-12-awesome-gift-ideas-for-gaming-dads-without-a-single-pair-of-socks-to-be-found/</link>
                                                                            <description>
                            <![CDATA[ Dad does not need more socks. Dad needs PC gaming gear. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">u2aopUq2ZHjGsRThG47co9</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/RBUJarZ8iNjYTra89VY8jS-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 09 Jun 2026 14:22:57 +0000</pubDate>                                                                                                                                <updated>Tue, 09 Jun 2026 14:23:14 +0000</updated>
                                                                                                                                            <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Andy Edser ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE-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/RBUJarZ8iNjYTra89VY8jS-1920-80.jpg">
                                                            <media:credit><![CDATA[Corsair, Razer, GameSir, SteelSeries]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A gaming chair, gaming mouse, gaming keyboard, headset, mouse pad and game controller on a grey background]]></media:description>                                                            <media:text><![CDATA[A gaming chair, gaming mouse, gaming keyboard, headset, mouse pad and game controller on a grey background]]></media:text>
                                <media:title type="plain"><![CDATA[A gaming chair, gaming mouse, gaming keyboard, headset, mouse pad and game controller on a grey background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/RBUJarZ8iNjYTra89VY8jS-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Father's Day is on <strong>Sunday, June 21</strong> this year, and if you're anything like me, you're already scrambling to think of something to buy. I've got good news for gaming dads, though—I've found 12 PC gaming gift ideas that would make any of them very, very happy indeed.</p><p>From mouse pads and tool sets to gaming controllers, mice, and chairs, there's definitely something here that will suit any gamer dad down to the ground. And indeed, suit any budget. Because whether you're looking for a high-end gift they'll cherish for years, or something small and affordable that'll demonstrate how much you've been paying attention to their hobbies, this list should pretty much cover it all.</p><p>Should you wish to really flash your cash this Father's Day, I'll also point you towards our <a href="https://www.pcgamer.com/gaming-laptop-deals/" target="_blank">cheap gaming laptop deals</a> and <a href="https://www.pcgamer.com/best-cheap-gaming-pc/" target="_blank">cheap gaming PC deals</a> pages. But for the rest of us looking for something more affordable, I reckon any of the 12 items below are perfect for the gamer dad in your life. And none of them are socks, I promise.</p><h3 class="article-body__section" id="section-pc-gaming-gifts-for-father-s-day"><span>PC gaming gifts for Father's Day</span></h3>        <div class="featured_product_block featured_block_hero" data-id="da38a603-3522-4734-9e4e-024588866aec">            <a href="https://www.amazon.com/CORSAIR-CH-9100020-WW-High-Performance-Optimized-Designed/dp/B01MS4C5WX/" data-model-name="MM100 Cloth Mouse Pad" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/TcHrXMmJxHi3eVx6xQu2SG.jpg" alt="A Corsair MM100 cloth mouse pad on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Corsair</div>                                        <div class="featured__title">MM100 Cloth Mouse Pad</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="840a488c-4762-4d54-a971-b5f747b5975a">            <a href="https://www.amazon.com/Precision-Screwdriver-Security-Cleaning-Doorbell/dp/B09PY8WQHJ/" data-model-name="40pcs Small Precision Magnetic Screwdriver Set" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:133.37%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/g7tVEDvp9o5vrvMRUeK5WQ.jpg" alt="A Jorest 40-piece small precision electronic screwdriver set in orange and black, on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Jorest</div>                                        <div class="featured__title">40pcs Small Precision Magnetic Screwdriver Set</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="50958f75-3b32-427c-bda9-c129733ba8b3">            <a href="https://www.amazon.com/Anchor-ORIGINAL-Under-Desk-Headphone-Stand/dp/B00P31BMHG/" data-model-name="The Anchor™ - Under-Desk Headphone Holder" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/488A2DNRve9Dufgp8UCf7e.jpg" alt="The Anchor under-desk headphone holder, on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Elevation Lab</div>                                        <div class="featured__title">The Anchor™ - Under-Desk Headphone Holder</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="0feec9e2-964a-4d4b-8768-d8a3456138a8">            <a href="https://www.amazon.com/Govee-Brighter-Million-Controlled-Kitchen/dp/B07N1CMGQQ/" data-model-name="Smart RGB LED Strip Lights" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:133.37%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/nXTRwbkuN2vHRVf2n2CamV.jpg" alt="A Govee Smart RGB LED strip light kit, with smartphone controls"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Govee</div>                                        <div class="featured__title">Smart RGB LED Strip Lights</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="69f92473-68dd-4436-b8b4-d0fae5b78c1e">            <a href="https://www.amazon.com/GameSir-Wireless-Controller-Bluetooth-Vibration/dp/B0CMCQ6WMC/" data-model-name="Nova Lite 2.4 GHz Wireless Controller" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:133.37%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/2bsh3ofwbGDMyduLRNBA6o.jpg" alt="A GameSir Nova Lite gaming controller in white with 2.4 GHz dongle, on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>GameSir</div>                                        <div class="featured__title">Nova Lite 2.4 GHz Wireless Controller</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="34ab16f6-68ff-4625-931b-bbb403cecf09">            <a href="https://www.amazon.com/Logitech-G502-Performance-Gaming-Mouse/dp/B07GBZ4Q68/" data-model-name="G502 Hero Wired Gaming Mouse, " data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/uLARxS2csE52fvupn5TRcG.jpg" alt="A Logitech G502 Hero wired gaming mouse on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Logitech</div>                                        <div class="featured__title">G502 Hero Wired Gaming Mouse, </div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="2998e2c9-d76d-4176-b130-1552f246dc82">            <a href="https://www.amazon.com/Razer-Firefly-Gaming-Mouse-Built/dp/B07ZDWHL4M/" data-model-name="Firefly V2 Hardtop RGB Gaming Mouse Pad" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/zj9ykQdxFBTbjHJhgHMZEH.jpg" alt="A Razer Firefly V2 hard gaming mouse pad with RGB lighting on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Razer</div>                                        <div class="featured__title">Firefly V2 Hardtop RGB Gaming Mouse Pad</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="490228c4-d43d-48e7-a887-9204506aa8cf">            <a href="https://www.amazon.com/Ultimate-Controller-Gaming-Joysticks-Switchable-Console/dp/B0DR8S2DQY/" data-model-name="Ultimate 2 Wireless Controller" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:133.37%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/7c9tzEEypwafSSRErHPtXW.jpg" alt="An 8BitDo Ultimate 2 Wireless controller on its dock, on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>8BitDo</div>                                        <div class="featured__title">Ultimate 2 Wireless Controller</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="5779fd2b-2f21-4a6d-a01d-ec95299582ea">            <a href="https://www.amazon.com/SteelSeries-Apex-RGB-Gaming-Keyboard/dp/B07ZGDPT4M/" data-model-name="Apex 3 RGB Gaming Keyboard" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/G2XhMRfBzHq38pqDhndsif.jpg" alt="A SteelSeries Apex 3 full-size gaming keyboard, with RGB lighting lit up in rainbow colours on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>SteelSeries</div>                                        <div class="featured__title">Apex 3 RGB Gaming Keyboard</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="e7e5887e-0870-410b-8d9e-13418b5dfe1c">            <a href="https://www.amazon.com/Razer-BlackShark-HyperSpeed-Wireless-Headset/dp/B0FH5YWH7B/" data-model-name="Blackshark V3 X HyperSpeed Wireless Gaming Headset" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/NhUg5QXvm4NuPfjGyRKte.jpg" alt="A Razer BlackShark V3X HyperSpeed wireless gaming headset on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Razer</div>                                        <div class="featured__title">Blackshark V3 X HyperSpeed Wireless Gaming Headset</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="674d6870-da44-480f-8d4f-458ebdbac574">            <a href="https://www.amazon.com/Razer-Viper-Wireless-Esports-Gaming/dp/B0CW25XR5R/" data-model-name="Viper V3 Pro Wireless Gaming Mouse" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/HMmAgtzXuaAonobZxWrFxG.jpg" alt="A Razer Viper V3 Pro gaming mouse on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Razer</div>                                        <div class="featured__title">Viper V3 Pro Wireless Gaming Mouse</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="fe2e48fd-ac17-4273-bb11-a4318c8d0c9a">            <a href="https://www.amazon.com/Corsair-TC100-Relaxed-Gaming-Chair/dp/B0BN6RRD5V/" data-model-name="TC100 Relaxed Gaming Chair" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/qz4uQF4pL5eoX8MdRMRwXd.jpg" alt="A Corsair TC100 Relaxed gaming chair on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Corsair</div>                                        <div class="featured__title">TC100 Relaxed Gaming Chair</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ MSI's new Strike Alloy has almost every gaming keyboard buzzword thrown at it, with TMR, 8k, and rapid trigger, and you can even use it underwater ]]></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/3dZzJxSmhSc" allowfullscreen></iframe></div></div><p>As gaming keyboards get more advanced, we have to learn new words just to understand them. We've had to learn what polling rates <em>really</em> mean and how much is too much for the average gamer (8k, btw), what the advantage of rapid trigger is, and why someone would want TMR. And not only has MSI thrown every single gaming keyboard buzzword at its new keyboard, but it dunked the keyboard underwater at this year's <a href="https://www.pcgamer.com/hardware/live/news/computex-2026-live-all-the-best-pc-gaming-hardware-announcements-at-this-years-show/" target="_blank">Computex</a> to prove it will still work. </p><p>That's as shown off by <a href="https://www.youtube.com/watch?v=3dZzJxSmhSc" target="_blank">We Do Tech</a>, who saw MSI plunge the keyboard. Reportedly, the wired keyboard still works even when submerged (though the water resistance may cut down your reaction time).</p><p>That's a fun bit of marketing and a way of showing off how durable the keyboard is, though you are very unlikely to actually want to use the keyboard underwater. Still, at least I know if I spill water on it, it should be fine. </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>The keyboard itself is pretty impressive, too. It has TMR switches, which offer super-low latency gameplay and very precise controls. Think Hall effect, but better. TMR (tunnelling magnetoresistance) also happens to be more power efficient, but that efficiency is lost on a wired keyboard.</p><p>You get 8,000 Hz polling here, too, which means it is sending data to your rig every 0.125 milliseconds. For context, 1,000 Hz polling is once every millisecond. Generally speaking, this is far too much for anyone but the highest-level gamer, but it's still a nice feature to have. </p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2062710674556649933"><p lang="en" dir="ltr">COMPUTEXのMSIブースでちょっと面白いゲーミングキーボードのデモ機が展開されていました。防滴仕様の「STRIKE ALLOY TMR & STRIKE NEXUS」の基板部分を半分水に沈め、動作に問題がないことを視覚的にアピール。防水になっている部分が本当に水に強いのかこう見るとわかりやすいですね。 pic.twitter.com/hcoTIwpAHO<a href="https://twitter.com/cantworkitout/status/2062710674556649933">June 5, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>It has rapid trigger too, which means it will stop registering a key press the moment you let go, rather than after hitting an arbitrary threshold. This means you can stop moving or button-bash quicker, if that's your sort of thing. </p><p>Impressively, its switch beds are also hot-swappable between TMR and mechanical switches, which is a neat level of flexibility reminiscent of the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/logitech-g512-x-review/" target="_blank">Logitech G512 X</a>. This is all topped off with a magnesium-aluminium alloy and a five-layer gasket mount for sound dampening. </p><p>All of this is mighty impressive, but the most important question goes unanswered. We don't yet have a price point on this dunkable beast. We are also missing any sort of release date. Still, the likelihood is that if I'm going for any MSI gaming keyboard right now, it's the <a href="https://www.msi.com/Gaming-Gear/FORGE-TKL-WIRELESS-FRIEREN-EDITION" target="_blank">Frieren collab Forge TKL.</a> That thing sure is purty. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-keyboards/msis-new-strike-alloy-has-almost-every-gaming-keyboard-buzzword-thrown-at-it-with-tmr-8k-and-rapid-trigger-and-you-can-even-use-it-underwater/</link>
                                                                            <description>
                            <![CDATA[ H2Oh, that's kinda neat. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">RrK8C69UqfpnahQSboqAaB</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/xZNyhbFtZ2nVWq7MCWfJG8-1920-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Fri, 05 Jun 2026 15:01:02 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Keyboards]]></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/xZNyhbFtZ2nVWq7MCWfJG8-1920-80.png">
                                                            <media:credit><![CDATA[We Do Tech]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[MSI Strike Alloy submerged in water, taken from We Do Tech&#039;s video on it]]></media:description>                                                            <media:text><![CDATA[MSI Strike Alloy submerged in water, taken from We Do Tech&#039;s video on it]]></media:text>
                                <media:title type="plain"><![CDATA[MSI Strike Alloy submerged in water, taken from We Do Tech&#039;s video on it]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/xZNyhbFtZ2nVWq7MCWfJG8-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/3dZzJxSmhSc" allowfullscreen></iframe></div></div><p>As gaming keyboards get more advanced, we have to learn new words just to understand them. We've had to learn what polling rates <em>really</em> mean and how much is too much for the average gamer (8k, btw), what the advantage of rapid trigger is, and why someone would want TMR. And not only has MSI thrown every single gaming keyboard buzzword at its new keyboard, but it dunked the keyboard underwater at this year's <a href="https://www.pcgamer.com/hardware/live/news/computex-2026-live-all-the-best-pc-gaming-hardware-announcements-at-this-years-show/" target="_blank">Computex</a> to prove it will still work. </p><p>That's as shown off by <a href="https://www.youtube.com/watch?v=3dZzJxSmhSc" target="_blank">We Do Tech</a>, who saw MSI plunge the keyboard. Reportedly, the wired keyboard still works even when submerged (though the water resistance may cut down your reaction time).</p><p>That's a fun bit of marketing and a way of showing off how durable the keyboard is, though you are very unlikely to actually want to use the keyboard underwater. Still, at least I know if I spill water on it, it should be fine. </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>The keyboard itself is pretty impressive, too. It has TMR switches, which offer super-low latency gameplay and very precise controls. Think Hall effect, but better. TMR (tunnelling magnetoresistance) also happens to be more power efficient, but that efficiency is lost on a wired keyboard.</p><p>You get 8,000 Hz polling here, too, which means it is sending data to your rig every 0.125 milliseconds. For context, 1,000 Hz polling is once every millisecond. Generally speaking, this is far too much for anyone but the highest-level gamer, but it's still a nice feature to have. </p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2062710674556649933"><p lang="en" dir="ltr">COMPUTEXのMSIブースでちょっと面白いゲーミングキーボードのデモ機が展開されていました。防滴仕様の「STRIKE ALLOY TMR & STRIKE NEXUS」の基板部分を半分水に沈め、動作に問題がないことを視覚的にアピール。防水になっている部分が本当に水に強いのかこう見るとわかりやすいですね。 pic.twitter.com/hcoTIwpAHO<a href="https://twitter.com/cantworkitout/status/2062710674556649933">June 5, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>It has rapid trigger too, which means it will stop registering a key press the moment you let go, rather than after hitting an arbitrary threshold. This means you can stop moving or button-bash quicker, if that's your sort of thing. </p><p>Impressively, its switch beds are also hot-swappable between TMR and mechanical switches, which is a neat level of flexibility reminiscent of the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/logitech-g512-x-review/" target="_blank">Logitech G512 X</a>. This is all topped off with a magnesium-aluminium alloy and a five-layer gasket mount for sound dampening. </p><p>All of this is mighty impressive, but the most important question goes unanswered. We don't yet have a price point on this dunkable beast. We are also missing any sort of release date. Still, the likelihood is that if I'm going for any MSI gaming keyboard right now, it's the <a href="https://www.msi.com/Gaming-Gear/FORGE-TKL-WIRELESS-FRIEREN-EDITION" target="_blank">Frieren collab Forge TKL.</a> That thing sure is purty. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ The best quiet gaming keyboard we've tried is getting a smaller TKL version this year ]]></title>
                                                                                                <dc:content><![CDATA[ <p>If you're looking for a 'quiet' gaming keyboard that is actually quiet, Be Quiet!'s Light Mount is a truly excellent gaming keyboard (and one we gave it <a href="https://www.pcgamer.com/hardware/gaming-keyboards/be-quiet-light-mount-review/" target="_blank">93% in our review</a> last year). However, if that one is simply too big to fit comfortably on your desk, the gaming brand is putting out a TKL model this year. </p><p>Announced at Computex, the Be Quiet! Light Mount TKL is like the normal one, but, well, smaller. We're told it's expected to launch at some point in August this year, but we don't yet have a price point. TKLs tend to be a little cheaper than their full-length counterparts—though that isn't always the case and sometimes they even cost more—so I'm hoping it's tens of dollars cheaper than the $170 full-sized keeb. </p><p>If you are unfamiliar, the Be Quiet! Light Mount employs three layers of sound-dampening foam and factory-lubricated switches. In her review of the original, our Jess said, "though by no means silent, I'm definitely a fan of the sound-dampened clacks on Be Quiet's Light Mount. It lives up to its name in more ways than one, too, boasting vibrant, head-turning per-key RGB lighting—even the software offers few reasons to complain!" </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>It's a gaming keyboard that's impressive for more than just its sound, too. It comes with hot swappable 5-pin switch support, per-key RGB, and a neat media wheel. There's not a huge pile to complain about, as you'll see from our review. </p><p>Alongside this, Be Quiet! Has also announced the Mousepad XL, which is a 900 x 500 m mousepad designed to accommodate your mouse and gaming keyboard. It also comes with a 3 mm anti-slip rubber base to ensure it doesn't move while gaming. Be Quiet! says the "Optimised soft and smooth fabric ensures precise tracking, effortless glide and lasting comfort for both mouse and wrists"</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/rGBFdbCZ9GVL6ir32vsUi8-1920-80.jpg" alt="Be Quiet! Light Mount TKL gaming keyboard on a desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/QKnY93UUMUTLw989yCgqYJ-1920-80.jpg" alt="Be Quiet! Pure Base 803 and 803 LX pc cases on a black desk" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>But, alas, many mousepads are pretty similar in approach, so it will have to win in feel or price to stand out. We know neither of these two just yet. </p><p>On the show floor, we also got our eyes on the Pure Base 803, which is a huge Be Quiet! Case with support for back-connect motherboards, up to 7 HDDs (<a href="https://www.pcgamer.com/hardware/memory/ram-and-storage-is-ridiculously-expensive-right-now-because-of-drumroll-ai-of-course-and-theres-little-reason-to-think-prices-will-drop-any-time-soon/" target="_blank">assuming you can afford them</a>), up to 3 x 420 mm radiators and 2 x 140 rear fans. </p><p>There seem to be no gaming mouse updates to go with the mousepad and gaming keyboard at Computex. That's a shame, as I got to test the <a href="https://www.pcgamer.com/hardware/gaming-mice/be-quiet-dark-perk-ergo-review/" target="_blank">Be Quiet! Dark Perk Ergo</a> a few months ago and think it's good enough to make me excited for what it's got cooking next, but not quite good enough for me to actually recommend at its price. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-keyboards/the-best-quiet-gaming-keyboard-weve-tried-is-getting-a-smaller-tkl-version-this-year/</link>
                                                                            <description>
                            <![CDATA[ Here's hoping the price is lighter. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">eCEN7mU58ZvLQfZysfkAVU</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/uJoLtQf8ki3H7pvibiiY97-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 04 Jun 2026 15:07:40 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Keyboards]]></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/uJoLtQf8ki3H7pvibiiY97-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Be Quiet! Light Mount TKL gaming keyboard on a desk]]></media:description>                                                            <media:text><![CDATA[Be Quiet! Light Mount TKL gaming keyboard on a desk]]></media:text>
                                <media:title type="plain"><![CDATA[Be Quiet! Light Mount TKL gaming keyboard on a desk]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/uJoLtQf8ki3H7pvibiiY97-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>If you're looking for a 'quiet' gaming keyboard that is actually quiet, Be Quiet!'s Light Mount is a truly excellent gaming keyboard (and one we gave it <a href="https://www.pcgamer.com/hardware/gaming-keyboards/be-quiet-light-mount-review/" target="_blank">93% in our review</a> last year). However, if that one is simply too big to fit comfortably on your desk, the gaming brand is putting out a TKL model this year. </p><p>Announced at Computex, the Be Quiet! Light Mount TKL is like the normal one, but, well, smaller. We're told it's expected to launch at some point in August this year, but we don't yet have a price point. TKLs tend to be a little cheaper than their full-length counterparts—though that isn't always the case and sometimes they even cost more—so I'm hoping it's tens of dollars cheaper than the $170 full-sized keeb. </p><p>If you are unfamiliar, the Be Quiet! Light Mount employs three layers of sound-dampening foam and factory-lubricated switches. In her review of the original, our Jess said, "though by no means silent, I'm definitely a fan of the sound-dampened clacks on Be Quiet's Light Mount. It lives up to its name in more ways than one, too, boasting vibrant, head-turning per-key RGB lighting—even the software offers few reasons to complain!" </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>It's a gaming keyboard that's impressive for more than just its sound, too. It comes with hot swappable 5-pin switch support, per-key RGB, and a neat media wheel. There's not a huge pile to complain about, as you'll see from our review. </p><p>Alongside this, Be Quiet! Has also announced the Mousepad XL, which is a 900 x 500 m mousepad designed to accommodate your mouse and gaming keyboard. It also comes with a 3 mm anti-slip rubber base to ensure it doesn't move while gaming. Be Quiet! says the "Optimised soft and smooth fabric ensures precise tracking, effortless glide and lasting comfort for both mouse and wrists"</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/rGBFdbCZ9GVL6ir32vsUi8-1920-80.jpg" alt="Be Quiet! Light Mount TKL gaming keyboard on a desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/QKnY93UUMUTLw989yCgqYJ-1920-80.jpg" alt="Be Quiet! Pure Base 803 and 803 LX pc cases on a black desk" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>But, alas, many mousepads are pretty similar in approach, so it will have to win in feel or price to stand out. We know neither of these two just yet. </p><p>On the show floor, we also got our eyes on the Pure Base 803, which is a huge Be Quiet! Case with support for back-connect motherboards, up to 7 HDDs (<a href="https://www.pcgamer.com/hardware/memory/ram-and-storage-is-ridiculously-expensive-right-now-because-of-drumroll-ai-of-course-and-theres-little-reason-to-think-prices-will-drop-any-time-soon/" target="_blank">assuming you can afford them</a>), up to 3 x 420 mm radiators and 2 x 140 rear fans. </p><p>There seem to be no gaming mouse updates to go with the mousepad and gaming keyboard at Computex. That's a shame, as I got to test the <a href="https://www.pcgamer.com/hardware/gaming-mice/be-quiet-dark-perk-ergo-review/" target="_blank">Be Quiet! Dark Perk Ergo</a> a few months ago and think it's good enough to make me excited for what it's got cooking next, but not quite good enough for me to actually recommend at its price. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ We got eyes on Ducky's sleek Year of the Horse gaming keyboard, and I can say I like it more than its last horse one ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Ah, it's that time of year. With Computex comes the announcement of a Chinese Zodiac-themed gaming keyboard, and this year, it's celebrating the Year of the Horse. It's probably what you're expecting based on the name, except with 30% more fire. </p><p>Our Jacob managed to get his eyes on it, on the Computex show floor, and it's a bit of an over-the-top beauty. It's not every day you get a black keyboard with a big red horse slapped in the middle, covered in gold, red, and orange. </p><p>That's all before mentioning that it doesn't appear to have any lettering on its 100 keycaps. But, not having to make it legible does give some creative room to make the keyboard pop, and pop it does. </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>We don't really have too much information on the keyboard yet, but last year's sold for around the $200 mark, and was limited to 2025 units. We know this year's version is limited to 999 units, but we don't have a price point. Speaking of last year's, the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/duckys-year-of-the-snake-keyboard-is-my-favourite-shown-off-at-computex-so-far-and-its-limited-to-just-2025-units/" target="_blank">Year of the Snake model</a> may be my favourite Ducky Zodiac release, as it is covered in reds and pinks. It has text on the keycaps, though it's not very legible to my eyes. </p><p>Ducky's Chinese Zodiac keyboards do seem intended to be more ornamental, hence the limited supply and loud looks, and on the Computex show floor, the keyboard does look pretty nice behind glass. It's got some light accenting up at the top corners that catches the light well. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/2SLjKJT9qryKZc2WBSsT26-1920-80.jpg" alt="Ducky Year of the Horse (2026) gaming keyboard on a desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/zg2ZGzDMdNi3kuwBDfqytF-1920-80.jpg" alt="Ducky Year of the Horse (2026) gaming keyboard on a desk in front of its box" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Bo5j4m6a6YWo6cF7bUScKX-1920-80.jpg" alt="Ducky's Year of the Snake edition keyboard" /><figcaption>The Year of the Snake model from last year<small role="credit">Future</small></figcaption></figure></figure><p>We've had some fun Zodiac keyboards from Ducky over the years. In 2020, we got the <a href="https://www.reddit.com/r/MechanicalKeyboards/comments/kjyesx/ducky_year_of_the_rat_w_glorious_pandas_design/" target="_blank">Year of the Rat</a> one, which looks a bit like a cartoon sewer, and the <a href="https://kurogaming.com/a/ducky-year-of-the-pig-cherry-mx-speed-silver-000104?srsltid=AfmBOop5LahZ5majPKVNZukh39ZeyugEEbyGEpdyskUnfDyvDoDtAOIO" target="_blank">Year of the Pig</a> one is mostly pink with a black base. </p><p>Though last year's was more my style than this year, I can say that I prefer the new Year of the Horse keyboard to <a href="https://x-tremesolution.com/products/ducky-mini-year-of-the-horse-full-aluminium-edition" target="_blank">Ducky's previous attempt back in 2014</a>. The old version is a pretty simple white base, with black keys and a small horse on the space bar. Due to the shinethrough RGB, it does highlight the horse nicely, but I'd take the new one any day. </p><p>Ducky has become one of my favourite brands to keep an eye on at Computex purely to see its yearly keyboard offering, and here's hoping the Year of the Goat model is really out there. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-keyboards/we-got-eyes-on-duckys-sleek-year-of-the-horse-gaming-keyboard-and-i-can-say-i-like-it-more-than-its-last-horse-one/</link>
                                                                            <description>
                            <![CDATA[ Though the lack of lettering looks like a bit of a mare. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">GH6dnGVvesuq8orouohAKf</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/sWxQ7ZuiVqG9GWF58hDPPn-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 03 Jun 2026 14:31:35 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Keyboards]]></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/sWxQ7ZuiVqG9GWF58hDPPn-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Ducky Year of the Horse (2026) gaming keyboard in a glass box]]></media:description>                                                            <media:text><![CDATA[Ducky Year of the Horse (2026) gaming keyboard in a glass box]]></media:text>
                                <media:title type="plain"><![CDATA[Ducky Year of the Horse (2026) gaming keyboard in a glass box]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/sWxQ7ZuiVqG9GWF58hDPPn-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Ah, it's that time of year. With Computex comes the announcement of a Chinese Zodiac-themed gaming keyboard, and this year, it's celebrating the Year of the Horse. It's probably what you're expecting based on the name, except with 30% more fire. </p><p>Our Jacob managed to get his eyes on it, on the Computex show floor, and it's a bit of an over-the-top beauty. It's not every day you get a black keyboard with a big red horse slapped in the middle, covered in gold, red, and orange. </p><p>That's all before mentioning that it doesn't appear to have any lettering on its 100 keycaps. But, not having to make it legible does give some creative room to make the keyboard pop, and pop it does. </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>We don't really have too much information on the keyboard yet, but last year's sold for around the $200 mark, and was limited to 2025 units. We know this year's version is limited to 999 units, but we don't have a price point. Speaking of last year's, the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/duckys-year-of-the-snake-keyboard-is-my-favourite-shown-off-at-computex-so-far-and-its-limited-to-just-2025-units/" target="_blank">Year of the Snake model</a> may be my favourite Ducky Zodiac release, as it is covered in reds and pinks. It has text on the keycaps, though it's not very legible to my eyes. </p><p>Ducky's Chinese Zodiac keyboards do seem intended to be more ornamental, hence the limited supply and loud looks, and on the Computex show floor, the keyboard does look pretty nice behind glass. It's got some light accenting up at the top corners that catches the light well. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/2SLjKJT9qryKZc2WBSsT26-1920-80.jpg" alt="Ducky Year of the Horse (2026) gaming keyboard on a desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/zg2ZGzDMdNi3kuwBDfqytF-1920-80.jpg" alt="Ducky Year of the Horse (2026) gaming keyboard on a desk in front of its box" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Bo5j4m6a6YWo6cF7bUScKX-1920-80.jpg" alt="Ducky's Year of the Snake edition keyboard" /><figcaption>The Year of the Snake model from last year<small role="credit">Future</small></figcaption></figure></figure><p>We've had some fun Zodiac keyboards from Ducky over the years. In 2020, we got the <a href="https://www.reddit.com/r/MechanicalKeyboards/comments/kjyesx/ducky_year_of_the_rat_w_glorious_pandas_design/" target="_blank">Year of the Rat</a> one, which looks a bit like a cartoon sewer, and the <a href="https://kurogaming.com/a/ducky-year-of-the-pig-cherry-mx-speed-silver-000104?srsltid=AfmBOop5LahZ5majPKVNZukh39ZeyugEEbyGEpdyskUnfDyvDoDtAOIO" target="_blank">Year of the Pig</a> one is mostly pink with a black base. </p><p>Though last year's was more my style than this year, I can say that I prefer the new Year of the Horse keyboard to <a href="https://x-tremesolution.com/products/ducky-mini-year-of-the-horse-full-aluminium-edition" target="_blank">Ducky's previous attempt back in 2014</a>. The old version is a pretty simple white base, with black keys and a small horse on the space bar. Due to the shinethrough RGB, it does highlight the horse nicely, but I'd take the new one any day. </p><p>Ducky has become one of my favourite brands to keep an eye on at Computex purely to see its yearly keyboard offering, and here's hoping the Year of the Goat model is really out there. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Cherry attempts to change my mind about wireless gaming keyboards with world's first Ultra-Wideband button basher ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Wireless is wonderful for, say, your gaming mouse, headset, and controller but less so for your keyboard. Between managing input latency and battery life, a wireless keyboard would have to be something pretty special to win me over. Well, Cherry is trying their chances with what is likely the world's first Ultra-Wideband gaming keyboard.</p><p>Revealed during Computex, the Cherry XTRFY K63W Pro Compact is a 70% wireless gaming keyboard. The favoured 2.4 GHz connection of many wireless PC peripherals can make for a cluttered band of the radio spectrum, potentially leading to connection issues between your devices. The K63W Pro Compact's Ultra-Wideband connection attempts to sidestep all of that.</p><p>That said, I can't say I've personally fallen afoul of a cluttered 2.4 GHz frequency at my own setup, and I suspect this Ultra-Wideband functionality may have niche appeal. We've seen the wireless tech predominantly in <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">8 kHz gaming mice</a> before this, such as the <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">still unreleased Steelseries Rival Pro Mini</a>. The wireless tech affords the same high polling rate on the Cherry XTRFY K63W Pro Compact too, but again, that seems like overkill to me.</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>It's also worth noting that an Ultra-Wideband connection lacks the same long range as a 2.4 GHz link. That's fine for deskbound peripherals like mice and keyboards, but potentially less great news if you love to lounge and operate your PC at a distance.</p><p>On the subject of 'overkill', though, the Cherry XTRFY K63W Pro Compact also enjoys a 6000 mAh battery that the company claims could potentially last you up to 1,100 hours (obviously, hours of heavy use with the RGB at max brightness and the polling rate set to the 8k maximum will whittle that figure down a bit). Such a generous battery certainly draws my sceptical eye.</p><p>This board also enjoys Cherry's MX Low Profile 2.0 switches. I'm personally not a fan of keys that are on the shallower side, but reducing the distance between you and your keys' actuation point by even mere millimetres is bound to appeal to the esports fiends.</p><p>Cherry also touts the XTRFY K63W Pro Compact's "carefully tuned gasket construction" which, combined with those low-profile switches, apparently makes for "softer keystrokes, deeper acoustics, and a more satisfying typing experience in a slim form factor." The <a href="https://cherryxtrfy.com/keyboards/k63w-pro-compact-ultra-wideband/" target="_blank">Cherry XTRFY K63W Pro Compact</a> is slated for release in the US this August and will retail for $170. If you're based in the EU, you can pick it up from July for €180.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-keyboards/cherry-attempts-to-change-my-mind-about-wireless-gaming-keyboards-with-worlds-first-ultra-wideband-button-basher/</link>
                                                                            <description>
                            <![CDATA[ A clacking good time? ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">ddMgG4QmAS4WDpJbma747c</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/GPvQ5v9FzM9ZgWT6R5CD9-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 03 Jun 2026 13:44:06 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Keyboards]]></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/GPvQ5v9FzM9ZgWT6R5CD9-1920-80.jpg">
                                                            <media:credit><![CDATA[Cherry]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Cherry XTRFY K63W Pro Compact 70% Ultra-Wideband wireless gaming keyboard floats in a gradient void.]]></media:description>                                                            <media:text><![CDATA[The Cherry XTRFY K63W Pro Compact 70% Ultra-Wideband wireless gaming keyboard floats in a gradient void.]]></media:text>
                                <media:title type="plain"><![CDATA[The Cherry XTRFY K63W Pro Compact 70% Ultra-Wideband wireless gaming keyboard floats in a gradient void.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/GPvQ5v9FzM9ZgWT6R5CD9-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Wireless is wonderful for, say, your gaming mouse, headset, and controller but less so for your keyboard. Between managing input latency and battery life, a wireless keyboard would have to be something pretty special to win me over. Well, Cherry is trying their chances with what is likely the world's first Ultra-Wideband gaming keyboard.</p><p>Revealed during Computex, the Cherry XTRFY K63W Pro Compact is a 70% wireless gaming keyboard. The favoured 2.4 GHz connection of many wireless PC peripherals can make for a cluttered band of the radio spectrum, potentially leading to connection issues between your devices. The K63W Pro Compact's Ultra-Wideband connection attempts to sidestep all of that.</p><p>That said, I can't say I've personally fallen afoul of a cluttered 2.4 GHz frequency at my own setup, and I suspect this Ultra-Wideband functionality may have niche appeal. We've seen the wireless tech predominantly in <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">8 kHz gaming mice</a> before this, such as the <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">still unreleased Steelseries Rival Pro Mini</a>. The wireless tech affords the same high polling rate on the Cherry XTRFY K63W Pro Compact too, but again, that seems like overkill to me.</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>It's also worth noting that an Ultra-Wideband connection lacks the same long range as a 2.4 GHz link. That's fine for deskbound peripherals like mice and keyboards, but potentially less great news if you love to lounge and operate your PC at a distance.</p><p>On the subject of 'overkill', though, the Cherry XTRFY K63W Pro Compact also enjoys a 6000 mAh battery that the company claims could potentially last you up to 1,100 hours (obviously, hours of heavy use with the RGB at max brightness and the polling rate set to the 8k maximum will whittle that figure down a bit). Such a generous battery certainly draws my sceptical eye.</p><p>This board also enjoys Cherry's MX Low Profile 2.0 switches. I'm personally not a fan of keys that are on the shallower side, but reducing the distance between you and your keys' actuation point by even mere millimetres is bound to appeal to the esports fiends.</p><p>Cherry also touts the XTRFY K63W Pro Compact's "carefully tuned gasket construction" which, combined with those low-profile switches, apparently makes for "softer keystrokes, deeper acoustics, and a more satisfying typing experience in a slim form factor." The <a href="https://cherryxtrfy.com/keyboards/k63w-pro-compact-ultra-wideband/" target="_blank">Cherry XTRFY K63W Pro Compact</a> is slated for release in the US this August and will retail for $170. If you're based in the EU, you can pick it up from July for €180.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Gigabyte's new gaming mouse and keyboard look great and all, but can we get a round of applause for its web software ]]></title>
                                                                                                <dc:content><![CDATA[ <p>For Computex 2026, Gigabyte has <a href="https://www.gigabyte.com/press/news/2401" target="_blank">just announced</a> a new gaming keyboard called the Aorus K10 Infinity and a similarly named Aorus M10 Infinity gaming mouse, alongside some new web-based software for them. Both the mouse and keyboard are available in black or white. To my eyes, at least, they both look in line with what we'd want from serious gaming peripherals in 2026, at least in terms of design and specs. We'll have to wait and see if they actually deliver the goods regarding performance and feel, though.  </p><p>The TKL keyboard will have "tactical" magnetic switches, apparently: "Built with tactical magnetic switches, it supports 0.1 mm trigger-point adjustment, multi-stage trigger settings, custom macros, an 8000 Hz polling rate, and a 100-million-time keystroke lifespan."</p><p>More notable than this, though—and certainly more notable than the 8k polling, which is overkill even for esports—is the triple-button space bar. Split space bars are something we're starting to see more often, and our Jacob Ridley <a href="https://www.pcgamer.com/hardware/gaming-keyboards/split-spacebars-are-surely-the-next-big-gaming-keyboard-trend/" target="_blank">reckons they're gonna be the next big thing</a>. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XmAkPX"></div>                            </div>                            <script src="https://kwizly.com/embed/XmAkPX.js" async></script><p>The idea is to be able to have a couple of extra keys free once you figure out which thumb you use to press the space bar and bind 'space' to just that side. I'm not so sure, myself, because even while writing these last couple of paragraphs, I've noticed I do <em>sometimes </em>use my right thumb even though I mostly use my left. But I've not tried a split keeb, so I can't say for sure.</p><p>The keyboard has an OLED touchscreen, too, which apparently is best used for its "built-in Combat Power feature." Which "allows users to monitor Actions Per Minute (APM), key mileage, precision, and error count in real time, turning the keyboard into an active interface for gameplay adjustment and self-analysis."</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:896px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="YFbPN7V4qSk2H77roFT6La" name="image (53)" alt="Two Gigabyte Aorus Infinity gaming mice" src="https://cdn.mos.cms.futurecdn.net/YFbPN7V4qSk2H77roFT6La-1920-80.jpg" mos="" align="middle" fullscreen="" width="896" height="504" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Gigabyte)</span></figcaption></figure><p>It also has 6, 8, and 13-degree tilt adjustment options. I'm a bit of a 'keep it flat' man, myself, but I know some like to have their keyboards tilted, and the more adjustment the better, I say.</p><p>So much for the keyboard. The Aorus M10 Infinity gaming mouse looks a little bit Razer Viper-shaped to me, but that's a very speculative guess based on a single top-down picture. The shadows seem to show a little flaring to the buttons, and the rear end of the mouse seems a little bulbous—more-so than a Viper.</p><div id="crow-inpage-content"><style>    @import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');    @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');        /* Reset & Base */    #fv-chart-1774006938410-o7y5q2bug *, #fv-chart-1774006938410-o7y5q2bug *:before, #fv-chart-1774006938410-o7y5q2bug *:after, #fv-chart-1774006938410-o7y5q2bug-slideshow *, #fv-chart-1774006938410-o7y5q2bug-slideshow *:before, #fv-chart-1774006938410-o7y5q2bug-slideshow *:after {        box-sizing: border-box !important; margin: 0; padding: 0; border: 0;        font-size: 100%; font: inherit; vertical-align: baseline;    }    #fv-chart-1774006938410-o7y5q2bug, #fv-chart-1774006938410-o7y5q2bug-slideshow { font-family: 'Open Sans', sans-serif !important; }    /* Main Wrappers */    #fv-chart-1774006938410-o7y5q2bug {        position: relative !important; overflow: visible !important;        --riv-primary: #E33235;    }    #fv-chart-1774006938410-o7y5q2bug .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;    }            /* Slideshow Styles */    #fv-chart-1774006938410-o7y5q2bug-slideshow {        position: relative !important;        width: 100% !important;        margin: 1rem 0 !important;        --riv-primary: #E33235;    }    #fv-chart-1774006938410-o7y5q2bug-slideshow .fv-slides-wrapper {        position: relative !important;        width: 100% !important;    }    #fv-chart-1774006938410-o7y5q2bug-slideshow .fv-slide {        width: 100% !important;        animation: fv-fade-in 0.3s ease-in-out;    }      @keyframes fv-fade-in {        from { opacity: 0; }        to { opacity: 1; }    }        /* Top Navigation Row (Redesign) */    #fv-chart-1774006938410-o7y5q2bug-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-1774006938410-o7y5q2bug-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-1774006938410-o7y5q2bug-slideshow .fv-nav-btn svg {        width: 18px !important;        height: 18px !important;        stroke-width: 3px !important;        filter: none !important;    }    #fv-chart-1774006938410-o7y5q2bug-slideshow .fv-nav-btn:hover {        opacity: 0.9 !important;        transform: translateY(-1px) !important;    }        #fv-chart-1774006938410-o7y5q2bug-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-1774006938410-o7y5q2bug-slideshow .fv-slide-counter {        font-family: 'Poppins', sans-serif !important;        font-size: 14px !important;        font-weight: 600 !important;        color: #4B5563 !important;        text-align: center !important;        user-select: none !important;        min-width: 40px !important;        background-color: rgba(255,255,255,0.8) !important;        padding: 2px 8px !important;        border-radius: 10px !important;    }        /* Slideshow Dropdown Navigation */    #fv-chart-1774006938410-o7y5q2bug-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-1774006938410-o7y5q2bug-slideshow .fv-slideshow-select:focus {        outline: 2px solid #E33235 !important;        border-color: #E33235 !important;    }        /* Typography */    #fv-chart-1774006938410-o7y5q2bug .fv-chart-title {         font-weight: bold !important;         text-align: center !important;         margin-bottom: 0.5rem !important;         color: #1F2937 !important;         font-size: 1.25rem !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-1774006938410-o7y5q2bug .fv-chart-subhead {         font-size: 1rem !important;         font-weight: 500 !important;         text-align: center !important;         margin-bottom: 2rem !important;         color: #6B7280 !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-1774006938410-o7y5q2bug .rv-chart-caption { font-size: 15px !important; color: #6B7280 !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-1774006938410-o7y5q2bug .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; }    /* Footer */    #fv-chart-1774006938410-o7y5q2bug .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }    #fv-chart-1774006938410-o7y5q2bug .fv-footer-content { text-align: center !important; width: 100% !important; }    #fv-chart-1774006938410-o7y5q2bug .fv-logo {         display: block !important;         margin: 0 auto !important;         width: 120px !important;         min-width: 120px !important;        max-width: 120px !important;         height: auto !important;         object-fit: contain !important;         flex-shrink: 0 !important;    }    /* Display Mode Controls */    #fv-chart-1774006938410-o7y5q2bug .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }    #fv-chart-1774006938410-o7y5q2bug .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }    #fv-chart-1774006938410-o7y5q2bug .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-1774006938410-o7y5q2bug .fv-dropdown-title:focus { outline: none !important; }    #fv-chart-1774006938410-o7y5q2bug .fv-dropdown-title::-ms-expand { display: none !important; }        #fv-chart-1774006938410-o7y5q2bug .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-1774006938410-o7y5q2bug .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-1774006938410-o7y5q2bug .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: 13px !important; color: #6b7280 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;    }    #fv-chart-1774006938410-o7y5q2bug .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }    #fv-chart-1774006938410-o7y5q2bug .fv-carousel-counter { font-size: 14px !important; color: #6b7280 !important; text-align: center !important; margin-top: 1rem !important; }        /* Legend */    #fv-chart-1774006938410-o7y5q2bug .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-1774006938410-o7y5q2bug .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #4B5563 !important; }    #fv-chart-1774006938410-o7y5q2bug .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }    /* Multi-Value Legend */    #fv-chart-1774006938410-o7y5q2bug .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-1774006938410-o7y5q2bug .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #4B5563 !important; font-weight: 500 !important; }    #fv-chart-1774006938410-o7y5q2bug .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }    /* Chart Core Styles */    #fv-chart-1774006938410-o7y5q2bug .fv-benchmark-group { margin-bottom: 1rem !important; }    #fv-chart-1774006938410-o7y5q2bug .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-1774006938410-o7y5q2bug .fv-bar-row, #fv-chart-1774006938410-o7y5q2bug .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; }    #fv-chart-1774006938410-o7y5q2bug .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #4B5563 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }    #fv-chart-1774006938410-o7y5q2bug .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-1774006938410-o7y5q2bug .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-1774006938410-o7y5q2bug .fv-bar:hover { opacity: 0.8 !important; }    #fv-chart-1774006938410-o7y5q2bug .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; color: white !important; font-size: 14px !important; font-weight: bold !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; overflow: hidden !important; }    #fv-chart-1774006938410-o7y5q2bug .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }    #fv-chart-1774006938410-o7y5q2bug .fv-bar-inner-value { flex-shrink: 0 !important; }    #fv-chart-1774006938410-o7y5q2bug .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #4B5563 !important; white-space: nowrap !important; }    #fv-chart-1774006938410-o7y5q2bug .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }    /* Multi-Value Bar Logic */    #fv-chart-1774006938410-o7y5q2bug .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }    #fv-chart-1774006938410-o7y5q2bug .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }        /* Stacked Bar */    #fv-chart-1774006938410-o7y5q2bug .fv-stacked-bar { display: flex !important; overflow: hidden !important; }    #fv-chart-1774006938410-o7y5q2bug .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-1774006938410-o7y5q2bug .fv-stacked-segment:last-child { border-right: none !important; }    #fv-chart-1774006938410-o7y5q2bug .fv-segment-value { font-size: 14px !important; font-weight: bold !important; color: white !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; }    /* Grouped Bar */    #fv-chart-1774006938410-o7y5q2bug .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }    #fv-chart-1774006938410-o7y5q2bug .fv-grouped-product-title-wrapper { padding-left: 150px !important; }    #fv-chart-1774006938410-o7y5q2bug .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: #4B5563 !important; text-transform: none !important; }    #fv-chart-1774006938410-o7y5q2bug .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }    #fv-chart-1774006938410-o7y5q2bug .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }    #fv-chart-1774006938410-o7y5q2bug .fv-bar-cluster .fv-bar-container { height: 20px !important; }        /* Line Chart Grid */    #fv-chart-1774006938410-o7y5q2bug .riv-grid line {        stroke: #D1D5DB !important;        stroke-dasharray: 3 3 !important;    }    /* X-Axis */    #fv-chart-1774006938410-o7y5q2bug .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }    #fv-chart-1774006938410-o7y5q2bug .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }    #fv-chart-1774006938410-o7y5q2bug .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }    #fv-chart-1774006938410-o7y5q2bug .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }    #fv-chart-1774006938410-o7y5q2bug .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }     #fv-chart-1774006938410-o7y5q2bug .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #6B7280 !important; }    #fv-chart-1774006938410-o7y5q2bug .fv-x-axis-ticks span { position: relative !important; }    #fv-chart-1774006938410-o7y5q2bug .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-1774006938410-o7y5q2bug .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #6B7280 !important; margin-top: 8px !important; display: block !important; }    #fv-chart-1774006938410-o7y5q2bug .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #6B7280 !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-1774006938410-o7y5q2bug .fv-y-axis-title {        font-size: 15px !important;        color: #6B7280 !important;        line-height: 1.5 !important;        text-align: left !important;        padding-left: 5.83% !important; /* Aligns with Y-axis line inside SVG (35/600) */        margin-bottom: 4px !important;        display: block !important;        font-weight: bold !important;    }    /* Mobile / Forced Mobile View / Labels on Top */    #fv-chart-1774006938410-o7y5q2bug.mobile-view .fv-pie-container,    #fv-chart-1774006938410-o7y5q2bug.labels-on-top .fv-pie-container {        flex-direction: column !important; gap: 1rem !important;    }#fv-chart-1774006938410-o7y5q2bug.mobile-view .fv-grouped-product-title-wrapper,    #fv-chart-1774006938410-o7y5q2bug.labels-on-top .fv-grouped-product-title-wrapper {        padding-left: 0 !important;    }#fv-chart-1774006938410-o7y5q2bug.mobile-view .fv-bar-row, .fv-stacked-product, .fv-grouped-bar-product,    #fv-chart-1774006938410-o7y5q2bug.labels-on-top .fv-bar-row, .fv-stacked-product, .fv-grouped-bar-product {        flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;    }#fv-chart-1774006938410-o7y5q2bug.mobile-view .fv-bar-label:not(.fv-grouped-product-title),    #fv-chart-1774006938410-o7y5q2bug.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-1774006938410-o7y5q2bug.mobile-view .fv-bar-label, .fv-grouped-product-title,    #fv-chart-1774006938410-o7y5q2bug.labels-on-top .fv-bar-label, .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-1774006938410-o7y5q2bug.mobile-view .fv-bar-container, .fv-bar-cluster,    #fv-chart-1774006938410-o7y5q2bug.labels-on-top .fv-bar-container, .fv-bar-cluster {        width: 100% !important;    }#fv-chart-1774006938410-o7y5q2bug.mobile-view .fv-x-axis-wrapper,    #fv-chart-1774006938410-o7y5q2bug.labels-on-top .fv-x-axis-wrapper {        margin-left: 0 !important;    }#fv-chart-1774006938410-o7y5q2bug.mobile-view .fv-x-axis-label-space,    #fv-chart-1774006938410-o7y5q2bug.labels-on-top .fv-x-axis-label-space {        display: none !important;    }#fv-chart-1774006938410-o7y5q2bug.mobile-view .fv-x-axis-chart-space,    #fv-chart-1774006938410-o7y5q2bug.labels-on-top .fv-x-axis-chart-space {        padding-right: 0 !important;    }#fv-chart-1774006938410-o7y5q2bug.mobile-view .fv-benchmark-title,    #fv-chart-1774006938410-o7y5q2bug.labels-on-top .fv-benchmark-title {        font-size: 13px !important;    }#fv-chart-1774006938410-o7y5q2bug.mobile-view .fv-dropdown-title,    #fv-chart-1774006938410-o7y5q2bug.labels-on-top .fv-dropdown-title {        font-size: 14px !important;    }#fv-chart-1774006938410-o7y5q2bug.mobile-view .fv-carousel-nav-btn,    #fv-chart-1774006938410-o7y5q2bug.labels-on-top .fv-carousel-nav-btn {        padding: 6px 8px !important; font-size: 11px !important;    }    @media (max-width: 500px) {         #fv-chart-1774006938410-o7y5q2bug .fv-pie-container { flex-direction: column !important; gap: 1rem !important; }        #fv-chart-1774006938410-o7y5q2bug .fv-grouped-product-title-wrapper {            padding-left: 0 !important;        }        #fv-chart-1774006938410-o7y5q2bug .fv-bar-row,        #fv-chart-1774006938410-o7y5q2bug .fv-stacked-product {            flex-direction: column !important;            align-items: flex-start !important;            margin-bottom: 1.25rem !important;        }        #fv-chart-1774006938410-o7y5q2bug .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-1774006938410-o7y5q2bug .fv-bar-container {            width: 100% !important;        }        #fv-chart-1774006938410-o7y5q2bug .fv-x-axis-wrapper {            margin-left: 0 !important;        }        #fv-chart-1774006938410-o7y5q2bug .fv-x-axis-label-space {            display: none !important;        }        #fv-chart-1774006938410-o7y5q2bug .fv-x-axis-chart-space {            padding-right: 0 !important;        }        #fv-chart-1774006938410-o7y5q2bug .fv-benchmark-title {             font-size: 13px !important;            width: 100% !important;        }        #fv-chart-1774006938410-o7y5q2bug .fv-dropdown-title-container .fv-dropdown-title {             font-size: 14px !important;         }        #fv-chart-1774006938410-o7y5q2bug .fv-carousel-nav-btn { padding: 6px 8px !important; font-size: 11px !important; }        #fv-chart-1774006938410-o7y5q2bug .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }        #fv-chart-1774006938410-o7y5q2bug.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": "Mouse software RAM usage",  "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-03-20T11:42:18.410Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Razer",    "SteelSeries",    "Logitech",    "Corsair",    "Pulsar",    "Glorious",    "Mchose",    "Akko",    "Mouse software RAM usage",    "RAM (MB)",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Akko â Mouse software RAM usage",      "value": 67,      "unitText": "RAM usage"    },    {      "@type": "PropertyValue",      "name": "Corsair (web) â Mouse software RAM usage",      "value": 210,      "unitText": "RAM usage"    },    {      "@type": "PropertyValue",      "name": "Glorious â Mouse software RAM usage",      "value": 150,      "unitText": "RAM usage"    },    {      "@type": "PropertyValue",      "name": "Logitech â Mouse software RAM usage",      "value": 230,      "unitText": "RAM usage"    },    {      "@type": "PropertyValue",      "name": "Mchose (web) â Mouse software RAM usage",      "value": 142,      "unitText": "RAM usage"    },    {      "@type": "PropertyValue",      "name": "Pulsar (web) â Mouse software RAM usage",      "value": 159,      "unitText": "RAM usage"    },    {      "@type": "PropertyValue",      "name": "Razer â Mouse software RAM usage",      "value": 712,      "unitText": "RAM usage"    },    {      "@type": "PropertyValue",      "name": "SteelSeries â Mouse software RAM usage",      "value": 515,      "unitText": "RAM usage"    }  ]}</script><div id="fv-chart-1774006938410-o7y5q2bug" class="fv-chart-wrapper  " data-bar-labels-on-top="false">        <div class="fv-inner-wrapper">            <h3 class="fv-chart-title">Mouse software RAM usage</h3>            <p class="fv-chart-subhead"></p>                        <div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1774006938410-o7y5q2bug-bar-Mouse software RAM usage" data-chart-type="Bar" data-title="RAM (MB)" data-subhead="" data-caption="" style=""><div class="fv-benchmark-group"><h4 class="fv-benchmark-title">RAM (MB)</h4><div class="fv-bar-row" title="Razer - RAM (MB): 712 RAM usage">                    <div class="fv-bar-label ">Razer</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 89%; background-color: #B5282A;" data-target-width="89">        <div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important;"><span></span><span class="fv-bar-inner-value">712</span></div>    </div>                    </div>                </div><div class="fv-bar-row" title="SteelSeries - RAM (MB): 515 RAM usage">                    <div class="fv-bar-label ">SteelSeries</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 64.375%; background-color: #D07F46;" data-target-width="64.375">        <div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important;"><span></span><span class="fv-bar-inner-value">515</span></div>    </div>                    </div>                </div><div class="fv-bar-row" title="Logitech - RAM (MB): 230 RAM usage">                    <div class="fv-bar-label ">Logitech</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 28.749999999999996%; background-color: #EB6F71;" data-target-width="28.749999999999996">        <div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important;"><span></span><span class="fv-bar-inner-value">230</span></div>    </div>                    </div>                </div><div class="fv-bar-row" title="Corsair (web) - RAM (MB): 210 RAM usage">                    <div class="fv-bar-label ">Corsair (web)</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 26.25%; background-color: #FE9F58;" data-target-width="26.25">        <div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important;"><span></span><span class="fv-bar-inner-value">210</span></div>    </div>                    </div>                </div><div class="fv-bar-row" title="Pulsar (web) - RAM (MB): 159 RAM usage">                    <div class="fv-bar-label ">Pulsar (web)</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 19.875%; background-color: #66C5D7;" data-target-width="19.875">        <div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important;"><span></span><span class="fv-bar-inner-value">159</span></div>    </div>                    </div>                </div><div class="fv-bar-row" title="Glorious - RAM (MB): 150 RAM usage">                    <div class="fv-bar-label ">Glorious</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 18.75%; background-color: #1CA9C4;" data-target-width="18.75">        <div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important;"><span></span><span class="fv-bar-inner-value">150</span></div>    </div>                    </div>                </div><div class="fv-bar-row" title="Mchose (web) - RAM (MB): 142 RAM usage">                    <div class="fv-bar-label ">Mchose (web)</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 17.75%; background-color: #FFC08B;" data-target-width="17.75">        <div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important;"><span></span><span class="fv-bar-inner-value">142</span></div>    </div>                    </div>                </div><div class="fv-bar-row" title="Akko - RAM (MB): 67 RAM usage">                    <div class="fv-bar-label ">Akko</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 8.375%; background-color: #E33235;" data-target-width="8.375">            </div><span class="fv-bar-value-outside">67</span>                    </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>200</span><span>400</span><span>600</span><span>800</span></div>            <div class="fv-x-axis-unit">RAM usage</div>        </div>    </div>        <table class="sr-only">            <caption>RAM (MB) Data</caption>            <thead><tr><th>Product</th><th>Value</th></tr></thead>            <tbody><tr>                <td>Razer</td>                <td>712</td>            </tr><tr>                <td>SteelSeries</td>                <td>515</td>            </tr><tr>                <td>Logitech</td>                <td>230</td>            </tr><tr>                <td>Corsair (web)</td>                <td>210</td>            </tr><tr>                <td>Pulsar (web)</td>                <td>159</td>            </tr><tr>                <td>Glorious</td>                <td>150</td>            </tr><tr>                <td>Mchose (web)</td>                <td>142</td>            </tr><tr>                <td>Akko</td>                <td>67</td>            </tr></tbody>        </table></div></div></div>                              <div class="fv-bottom-bar" style="display: flex">                    <div class="fv-footer-content" style="display: none;">                <div class="rv-chart-caption"></div>            </div>        <img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo">      </div>            </div>    </div>        <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async></script>    <script>          (function() {      // Global animation function for slideshow re-use      window.fvAnimateCharts = function(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                // Reset to 0 first to ensure animation triggers                bar.style.width = '0%';                bar.style.transition = 'none';                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                // Force reflow                void bar.offsetWidth;                                 setTimeout(function() {                    bar.style.transition = 'opacity 0.2s ease, width 0.8s ease-out';                    bar.style.width = targetWidth + '%';                }, index * 50 + 50); // Reduced initial delay            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }            // Execute            var charts = chartWrapper.querySelectorAll('.fv-chart-item');                        charts.forEach(function(chart) {                // If in carousel/dropdown mode, hidden charts are display:none.                // We only animate what is visible.                if (window.getComputedStyle(chart).display === 'none') return;                                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                }            });      };            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);                // In slideshow mode, 'root' will be null because the container has '-slideshow' suffix.        // We handle that logic below.        if (!root && !isSlideshow) return;                // Setup internal interactions (Carousel/Dropdown/LineChart) for a specific chart wrapper        function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        // Legend interactions            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        // Carousel & Dropdown Logic            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        // Text Elements            var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType === 'Line') {                                 // Line chart animations if needed                             } else if (cType !== 'Pie') {                                 window.fvAnimateCharts(chartWrapper);                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        // Update Subhead and Caption                    var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) captionEl.textContent = newCaption || '';                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }            // Initial Animation            window.fvAnimateCharts(chartWrapper);        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1774006938410-o7y5q2bug', false); });      } else {        initialize('fv-chart-1774006938410-o7y5q2bug', false);      }    })();      </script></div><p>Gigabyte says it has optical switches and 8 kHz polling, though the latter is absolutely unnecessary even for high-level competitive FPS gaming. Still, it's what all mice seem to be aiming for these days.</p><p>More than the actual hardware, though, I'm excited by the fact that Gigabyte has also launched a web version of its GiMate software that you can use to adjust all the settings. Apparently, you'll be able to use it for "easier control, performance monitoring, and lighting customization across the AORUS peripheral experience." </p><p>I've <a href="https://www.pcgamer.com/hardware/gaming-mice/gaming-mouse-software-should-stay-out-of-your-way-and-its-the-smaller-manufacturers-that-seem-to-have-received-that-memo/" target="_blank">tested a bunch of different software</a> for gaming mice, and my main conclusion is that any gaming mouse that launches these days should come with web software—it's just much more convenient and keeps your machine bloat-free. So there's definitely a big plus here in that respect, at least. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-keyboards/gigabytes-new-gaming-mouse-and-keyboard-look-great-and-all-but-can-we-get-a-round-of-applause-for-its-web-software/</link>
                                                                            <description>
                            <![CDATA[ And yes, that's a split space bar, too. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">UqRDYDPqwugqVnD2KzymRf</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/3ksfV8jPySbWqYvzKQzD2Q-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 03 Jun 2026 10:46:55 +0000</pubDate>                                                                                                                                <updated>Thu, 04 Jun 2026 15:15:00 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming Keyboards]]></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/3ksfV8jPySbWqYvzKQzD2Q-1920-80.jpg">
                                                            <media:credit><![CDATA[Gigabyte]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Two Gigabyte Aorus K10 Infinity keyboards.]]></media:description>                                                            <media:text><![CDATA[Two Gigabyte Aorus K10 Infinity keyboards.]]></media:text>
                                <media:title type="plain"><![CDATA[Two Gigabyte Aorus K10 Infinity keyboards.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/3ksfV8jPySbWqYvzKQzD2Q-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>For Computex 2026, Gigabyte has <a href="https://www.gigabyte.com/press/news/2401" target="_blank">just announced</a> a new gaming keyboard called the Aorus K10 Infinity and a similarly named Aorus M10 Infinity gaming mouse, alongside some new web-based software for them. Both the mouse and keyboard are available in black or white. To my eyes, at least, they both look in line with what we'd want from serious gaming peripherals in 2026, at least in terms of design and specs. We'll have to wait and see if they actually deliver the goods regarding performance and feel, though.  </p><p>The TKL keyboard will have "tactical" magnetic switches, apparently: "Built with tactical magnetic switches, it supports 0.1 mm trigger-point adjustment, multi-stage trigger settings, custom macros, an 8000 Hz polling rate, and a 100-million-time keystroke lifespan."</p><p>More notable than this, though—and certainly more notable than the 8k polling, which is overkill even for esports—is the triple-button space bar. Split space bars are something we're starting to see more often, and our Jacob Ridley <a href="https://www.pcgamer.com/hardware/gaming-keyboards/split-spacebars-are-surely-the-next-big-gaming-keyboard-trend/" target="_blank">reckons they're gonna be the next big thing</a>. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XmAkPX"></div>                            </div>                            <script src="https://kwizly.com/embed/XmAkPX.js" async></script><p>The idea is to be able to have a couple of extra keys free once you figure out which thumb you use to press the space bar and bind 'space' to just that side. I'm not so sure, myself, because even while writing these last couple of paragraphs, I've noticed I do <em>sometimes </em>use my right thumb even though I mostly use my left. But I've not tried a split keeb, so I can't say for sure.</p><p>The keyboard has an OLED touchscreen, too, which apparently is best used for its "built-in Combat Power feature." Which "allows users to monitor Actions Per Minute (APM), key mileage, precision, and error count in real time, turning the keyboard into an active interface for gameplay adjustment and self-analysis."</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:896px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="YFbPN7V4qSk2H77roFT6La" name="image (53)" alt="Two Gigabyte Aorus Infinity gaming mice" src="https://cdn.mos.cms.futurecdn.net/YFbPN7V4qSk2H77roFT6La-1920-80.jpg" mos="" align="middle" fullscreen="" width="896" height="504" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Gigabyte)</span></figcaption></figure><p>It also has 6, 8, and 13-degree tilt adjustment options. I'm a bit of a 'keep it flat' man, myself, but I know some like to have their keyboards tilted, and the more adjustment the better, I say.</p><p>So much for the keyboard. The Aorus M10 Infinity gaming mouse looks a little bit Razer Viper-shaped to me, but that's a very speculative guess based on a single top-down picture. The shadows seem to show a little flaring to the buttons, and the rear end of the mouse seems a little bulbous—more-so than a Viper.</p><div id="crow-inpage-content"><style>    @import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');    @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');        /* Reset & Base */    #fv-chart-1774006938410-o7y5q2bug *, #fv-chart-1774006938410-o7y5q2bug *:before, #fv-chart-1774006938410-o7y5q2bug *:after, #fv-chart-1774006938410-o7y5q2bug-slideshow *, #fv-chart-1774006938410-o7y5q2bug-slideshow *:before, #fv-chart-1774006938410-o7y5q2bug-slideshow *:after {        box-sizing: border-box !important; margin: 0; padding: 0; border: 0;        font-size: 100%; font: inherit; vertical-align: baseline;    }    #fv-chart-1774006938410-o7y5q2bug, #fv-chart-1774006938410-o7y5q2bug-slideshow { font-family: 'Open Sans', sans-serif !important; }    /* Main Wrappers */    #fv-chart-1774006938410-o7y5q2bug {        position: relative !important; overflow: visible !important;        --riv-primary: #E33235;    }    #fv-chart-1774006938410-o7y5q2bug .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;    }            /* Slideshow Styles */    #fv-chart-1774006938410-o7y5q2bug-slideshow {        position: relative !important;        width: 100% !important;        margin: 1rem 0 !important;        --riv-primary: #E33235;    }    #fv-chart-1774006938410-o7y5q2bug-slideshow .fv-slides-wrapper {        position: relative !important;        width: 100% !important;    }    #fv-chart-1774006938410-o7y5q2bug-slideshow .fv-slide {        width: 100% !important;        animation: fv-fade-in 0.3s ease-in-out;    }      @keyframes fv-fade-in {        from { opacity: 0; }        to { opacity: 1; }    }        /* Top Navigation Row (Redesign) */    #fv-chart-1774006938410-o7y5q2bug-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-1774006938410-o7y5q2bug-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-1774006938410-o7y5q2bug-slideshow .fv-nav-btn svg {        width: 18px !important;        height: 18px !important;        stroke-width: 3px !important;        filter: none !important;    }    #fv-chart-1774006938410-o7y5q2bug-slideshow .fv-nav-btn:hover {        opacity: 0.9 !important;        transform: translateY(-1px) !important;    }        #fv-chart-1774006938410-o7y5q2bug-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-1774006938410-o7y5q2bug-slideshow .fv-slide-counter {        font-family: 'Poppins', sans-serif !important;        font-size: 14px !important;        font-weight: 600 !important;        color: #4B5563 !important;        text-align: center !important;        user-select: none !important;        min-width: 40px !important;        background-color: rgba(255,255,255,0.8) !important;        padding: 2px 8px !important;        border-radius: 10px !important;    }        /* Slideshow Dropdown Navigation */    #fv-chart-1774006938410-o7y5q2bug-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-1774006938410-o7y5q2bug-slideshow .fv-slideshow-select:focus {        outline: 2px solid #E33235 !important;        border-color: #E33235 !important;    }        /* Typography */    #fv-chart-1774006938410-o7y5q2bug .fv-chart-title {         font-weight: bold !important;         text-align: center !important;         margin-bottom: 0.5rem !important;         color: #1F2937 !important;         font-size: 1.25rem !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-1774006938410-o7y5q2bug .fv-chart-subhead {         font-size: 1rem !important;         font-weight: 500 !important;         text-align: center !important;         margin-bottom: 2rem !important;         color: #6B7280 !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-1774006938410-o7y5q2bug .rv-chart-caption { font-size: 15px !important; color: #6B7280 !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-1774006938410-o7y5q2bug .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; }    /* Footer */    #fv-chart-1774006938410-o7y5q2bug .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }    #fv-chart-1774006938410-o7y5q2bug .fv-footer-content { text-align: center !important; width: 100% !important; }    #fv-chart-1774006938410-o7y5q2bug .fv-logo {         display: block !important;         margin: 0 auto !important;         width: 120px !important;         min-width: 120px !important;        max-width: 120px !important;         height: auto !important;         object-fit: contain !important;         flex-shrink: 0 !important;    }    /* Display Mode Controls */    #fv-chart-1774006938410-o7y5q2bug .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }    #fv-chart-1774006938410-o7y5q2bug .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }    #fv-chart-1774006938410-o7y5q2bug .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-1774006938410-o7y5q2bug .fv-dropdown-title:focus { outline: none !important; }    #fv-chart-1774006938410-o7y5q2bug .fv-dropdown-title::-ms-expand { display: none !important; }        #fv-chart-1774006938410-o7y5q2bug .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-1774006938410-o7y5q2bug .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-1774006938410-o7y5q2bug .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: 13px !important; color: #6b7280 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;    }    #fv-chart-1774006938410-o7y5q2bug .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }    #fv-chart-1774006938410-o7y5q2bug .fv-carousel-counter { font-size: 14px !important; color: #6b7280 !important; text-align: center !important; margin-top: 1rem !important; }        /* Legend */    #fv-chart-1774006938410-o7y5q2bug .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-1774006938410-o7y5q2bug .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #4B5563 !important; }    #fv-chart-1774006938410-o7y5q2bug .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }    /* Multi-Value Legend */    #fv-chart-1774006938410-o7y5q2bug .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-1774006938410-o7y5q2bug .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #4B5563 !important; font-weight: 500 !important; }    #fv-chart-1774006938410-o7y5q2bug .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }    /* Chart Core Styles */    #fv-chart-1774006938410-o7y5q2bug .fv-benchmark-group { margin-bottom: 1rem !important; }    #fv-chart-1774006938410-o7y5q2bug .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-1774006938410-o7y5q2bug .fv-bar-row, #fv-chart-1774006938410-o7y5q2bug .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; }    #fv-chart-1774006938410-o7y5q2bug .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #4B5563 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }    #fv-chart-1774006938410-o7y5q2bug .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-1774006938410-o7y5q2bug .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-1774006938410-o7y5q2bug .fv-bar:hover { opacity: 0.8 !important; }    #fv-chart-1774006938410-o7y5q2bug .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; color: white !important; font-size: 14px !important; font-weight: bold !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; overflow: hidden !important; }    #fv-chart-1774006938410-o7y5q2bug .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }    #fv-chart-1774006938410-o7y5q2bug .fv-bar-inner-value { flex-shrink: 0 !important; }    #fv-chart-1774006938410-o7y5q2bug .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #4B5563 !important; white-space: nowrap !important; }    #fv-chart-1774006938410-o7y5q2bug .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }    /* Multi-Value Bar Logic */    #fv-chart-1774006938410-o7y5q2bug .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }    #fv-chart-1774006938410-o7y5q2bug .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }        /* Stacked Bar */    #fv-chart-1774006938410-o7y5q2bug .fv-stacked-bar { display: flex !important; overflow: hidden !important; }    #fv-chart-1774006938410-o7y5q2bug .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-1774006938410-o7y5q2bug .fv-stacked-segment:last-child { border-right: none !important; }    #fv-chart-1774006938410-o7y5q2bug .fv-segment-value { font-size: 14px !important; font-weight: bold !important; color: white !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important; }    /* Grouped Bar */    #fv-chart-1774006938410-o7y5q2bug .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }    #fv-chart-1774006938410-o7y5q2bug .fv-grouped-product-title-wrapper { padding-left: 150px !important; }    #fv-chart-1774006938410-o7y5q2bug .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: #4B5563 !important; text-transform: none !important; }    #fv-chart-1774006938410-o7y5q2bug .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }    #fv-chart-1774006938410-o7y5q2bug .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }    #fv-chart-1774006938410-o7y5q2bug .fv-bar-cluster .fv-bar-container { height: 20px !important; }        /* Line Chart Grid */    #fv-chart-1774006938410-o7y5q2bug .riv-grid line {        stroke: #D1D5DB !important;        stroke-dasharray: 3 3 !important;    }    /* X-Axis */    #fv-chart-1774006938410-o7y5q2bug .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }    #fv-chart-1774006938410-o7y5q2bug .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }    #fv-chart-1774006938410-o7y5q2bug .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }    #fv-chart-1774006938410-o7y5q2bug .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }    #fv-chart-1774006938410-o7y5q2bug .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }     #fv-chart-1774006938410-o7y5q2bug .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #6B7280 !important; }    #fv-chart-1774006938410-o7y5q2bug .fv-x-axis-ticks span { position: relative !important; }    #fv-chart-1774006938410-o7y5q2bug .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-1774006938410-o7y5q2bug .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #6B7280 !important; margin-top: 8px !important; display: block !important; }    #fv-chart-1774006938410-o7y5q2bug .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #6B7280 !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-1774006938410-o7y5q2bug .fv-y-axis-title {        font-size: 15px !important;        color: #6B7280 !important;        line-height: 1.5 !important;        text-align: left !important;        padding-left: 5.83% !important; /* Aligns with Y-axis line inside SVG (35/600) */        margin-bottom: 4px !important;        display: block !important;        font-weight: bold !important;    }    /* Mobile / Forced Mobile View / Labels on Top */    #fv-chart-1774006938410-o7y5q2bug.mobile-view .fv-pie-container,    #fv-chart-1774006938410-o7y5q2bug.labels-on-top .fv-pie-container {        flex-direction: column !important; gap: 1rem !important;    }#fv-chart-1774006938410-o7y5q2bug.mobile-view .fv-grouped-product-title-wrapper,    #fv-chart-1774006938410-o7y5q2bug.labels-on-top .fv-grouped-product-title-wrapper {        padding-left: 0 !important;    }#fv-chart-1774006938410-o7y5q2bug.mobile-view .fv-bar-row, .fv-stacked-product, .fv-grouped-bar-product,    #fv-chart-1774006938410-o7y5q2bug.labels-on-top .fv-bar-row, .fv-stacked-product, .fv-grouped-bar-product {        flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;    }#fv-chart-1774006938410-o7y5q2bug.mobile-view .fv-bar-label:not(.fv-grouped-product-title),    #fv-chart-1774006938410-o7y5q2bug.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-1774006938410-o7y5q2bug.mobile-view .fv-bar-label, .fv-grouped-product-title,    #fv-chart-1774006938410-o7y5q2bug.labels-on-top .fv-bar-label, .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-1774006938410-o7y5q2bug.mobile-view .fv-bar-container, .fv-bar-cluster,    #fv-chart-1774006938410-o7y5q2bug.labels-on-top .fv-bar-container, .fv-bar-cluster {        width: 100% !important;    }#fv-chart-1774006938410-o7y5q2bug.mobile-view .fv-x-axis-wrapper,    #fv-chart-1774006938410-o7y5q2bug.labels-on-top .fv-x-axis-wrapper {        margin-left: 0 !important;    }#fv-chart-1774006938410-o7y5q2bug.mobile-view .fv-x-axis-label-space,    #fv-chart-1774006938410-o7y5q2bug.labels-on-top .fv-x-axis-label-space {        display: none !important;    }#fv-chart-1774006938410-o7y5q2bug.mobile-view .fv-x-axis-chart-space,    #fv-chart-1774006938410-o7y5q2bug.labels-on-top .fv-x-axis-chart-space {        padding-right: 0 !important;    }#fv-chart-1774006938410-o7y5q2bug.mobile-view .fv-benchmark-title,    #fv-chart-1774006938410-o7y5q2bug.labels-on-top .fv-benchmark-title {        font-size: 13px !important;    }#fv-chart-1774006938410-o7y5q2bug.mobile-view .fv-dropdown-title,    #fv-chart-1774006938410-o7y5q2bug.labels-on-top .fv-dropdown-title {        font-size: 14px !important;    }#fv-chart-1774006938410-o7y5q2bug.mobile-view .fv-carousel-nav-btn,    #fv-chart-1774006938410-o7y5q2bug.labels-on-top .fv-carousel-nav-btn {        padding: 6px 8px !important; font-size: 11px !important;    }    @media (max-width: 500px) {         #fv-chart-1774006938410-o7y5q2bug .fv-pie-container { flex-direction: column !important; gap: 1rem !important; }        #fv-chart-1774006938410-o7y5q2bug .fv-grouped-product-title-wrapper {            padding-left: 0 !important;        }        #fv-chart-1774006938410-o7y5q2bug .fv-bar-row,        #fv-chart-1774006938410-o7y5q2bug .fv-stacked-product {            flex-direction: column !important;            align-items: flex-start !important;            margin-bottom: 1.25rem !important;        }        #fv-chart-1774006938410-o7y5q2bug .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-1774006938410-o7y5q2bug .fv-bar-container {            width: 100% !important;        }        #fv-chart-1774006938410-o7y5q2bug .fv-x-axis-wrapper {            margin-left: 0 !important;        }        #fv-chart-1774006938410-o7y5q2bug .fv-x-axis-label-space {            display: none !important;        }        #fv-chart-1774006938410-o7y5q2bug .fv-x-axis-chart-space {            padding-right: 0 !important;        }        #fv-chart-1774006938410-o7y5q2bug .fv-benchmark-title {             font-size: 13px !important;            width: 100% !important;        }        #fv-chart-1774006938410-o7y5q2bug .fv-dropdown-title-container .fv-dropdown-title {             font-size: 14px !important;         }        #fv-chart-1774006938410-o7y5q2bug .fv-carousel-nav-btn { padding: 6px 8px !important; font-size: 11px !important; }        #fv-chart-1774006938410-o7y5q2bug .fv-y-axis-title { padding-left: 5% !important; /* (30/600) for mobile view */ }        #fv-chart-1774006938410-o7y5q2bug.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": "Mouse software RAM usage",  "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-03-20T11:42:18.410Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Razer",    "SteelSeries",    "Logitech",    "Corsair",    "Pulsar",    "Glorious",    "Mchose",    "Akko",    "Mouse software RAM usage",    "RAM (MB)",    "benchmark",    "comparison",    "performance",    "review",    "PC Gamer"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": [    {      "@type": "PropertyValue",      "name": "Akko â Mouse software RAM usage",      "value": 67,      "unitText": "RAM usage"    },    {      "@type": "PropertyValue",      "name": "Corsair (web) â Mouse software RAM usage",      "value": 210,      "unitText": "RAM usage"    },    {      "@type": "PropertyValue",      "name": "Glorious â Mouse software RAM usage",      "value": 150,      "unitText": "RAM usage"    },    {      "@type": "PropertyValue",      "name": "Logitech â Mouse software RAM usage",      "value": 230,      "unitText": "RAM usage"    },    {      "@type": "PropertyValue",      "name": "Mchose (web) â Mouse software RAM usage",      "value": 142,      "unitText": "RAM usage"    },    {      "@type": "PropertyValue",      "name": "Pulsar (web) â Mouse software RAM usage",      "value": 159,      "unitText": "RAM usage"    },    {      "@type": "PropertyValue",      "name": "Razer â Mouse software RAM usage",      "value": 712,      "unitText": "RAM usage"    },    {      "@type": "PropertyValue",      "name": "SteelSeries â Mouse software RAM usage",      "value": 515,      "unitText": "RAM usage"    }  ]}</script><div id="fv-chart-1774006938410-o7y5q2bug" class="fv-chart-wrapper  " data-bar-labels-on-top="false">        <div class="fv-inner-wrapper">            <h3 class="fv-chart-title">Mouse software RAM usage</h3>            <p class="fv-chart-subhead"></p>                        <div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1774006938410-o7y5q2bug-bar-Mouse software RAM usage" data-chart-type="Bar" data-title="RAM (MB)" data-subhead="" data-caption="" style=""><div class="fv-benchmark-group"><h4 class="fv-benchmark-title">RAM (MB)</h4><div class="fv-bar-row" title="Razer - RAM (MB): 712 RAM usage">                    <div class="fv-bar-label ">Razer</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 89%; background-color: #B5282A;" data-target-width="89">        <div class="fv-bar-inner-content" style="color: #ffffff !important; text-shadow: 1px 1px 1px rgba(0,0,0,0.3) !important;"><span></span><span class="fv-bar-inner-value">712</span></div>    </div>                    </div>                </div><div class="fv-bar-row" title="SteelSeries - RAM (MB): 515 RAM usage">                    <div class="fv-bar-label ">SteelSeries</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 64.375%; background-color: #D07F46;" data-target-width="64.375">        <div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important;"><span></span><span class="fv-bar-inner-value">515</span></div>    </div>                    </div>                </div><div class="fv-bar-row" title="Logitech - RAM (MB): 230 RAM usage">                    <div class="fv-bar-label ">Logitech</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 28.749999999999996%; background-color: #EB6F71;" data-target-width="28.749999999999996">        <div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important;"><span></span><span class="fv-bar-inner-value">230</span></div>    </div>                    </div>                </div><div class="fv-bar-row" title="Corsair (web) - RAM (MB): 210 RAM usage">                    <div class="fv-bar-label ">Corsair (web)</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 26.25%; background-color: #FE9F58;" data-target-width="26.25">        <div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important;"><span></span><span class="fv-bar-inner-value">210</span></div>    </div>                    </div>                </div><div class="fv-bar-row" title="Pulsar (web) - RAM (MB): 159 RAM usage">                    <div class="fv-bar-label ">Pulsar (web)</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 19.875%; background-color: #66C5D7;" data-target-width="19.875">        <div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important;"><span></span><span class="fv-bar-inner-value">159</span></div>    </div>                    </div>                </div><div class="fv-bar-row" title="Glorious - RAM (MB): 150 RAM usage">                    <div class="fv-bar-label ">Glorious</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 18.75%; background-color: #1CA9C4;" data-target-width="18.75">        <div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important;"><span></span><span class="fv-bar-inner-value">150</span></div>    </div>                    </div>                </div><div class="fv-bar-row" title="Mchose (web) - RAM (MB): 142 RAM usage">                    <div class="fv-bar-label ">Mchose (web)</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 17.75%; background-color: #FFC08B;" data-target-width="17.75">        <div class="fv-bar-inner-content" style="color: #1F2937 !important; text-shadow: none !important;"><span></span><span class="fv-bar-inner-value">142</span></div>    </div>                    </div>                </div><div class="fv-bar-row" title="Akko - RAM (MB): 67 RAM usage">                    <div class="fv-bar-label ">Akko</div>                    <div class="fv-bar-container">                        <div class="fv-bar" style="width: 8.375%; background-color: #E33235;" data-target-width="8.375">            </div><span class="fv-bar-value-outside">67</span>                    </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>200</span><span>400</span><span>600</span><span>800</span></div>            <div class="fv-x-axis-unit">RAM usage</div>        </div>    </div>        <table class="sr-only">            <caption>RAM (MB) Data</caption>            <thead><tr><th>Product</th><th>Value</th></tr></thead>            <tbody><tr>                <td>Razer</td>                <td>712</td>            </tr><tr>                <td>SteelSeries</td>                <td>515</td>            </tr><tr>                <td>Logitech</td>                <td>230</td>            </tr><tr>                <td>Corsair (web)</td>                <td>210</td>            </tr><tr>                <td>Pulsar (web)</td>                <td>159</td>            </tr><tr>                <td>Glorious</td>                <td>150</td>            </tr><tr>                <td>Mchose (web)</td>                <td>142</td>            </tr><tr>                <td>Akko</td>                <td>67</td>            </tr></tbody>        </table></div></div></div>                              <div class="fv-bottom-bar" style="display: flex">                    <div class="fv-footer-content" style="display: none;">                <div class="rv-chart-caption"></div>            </div>        <img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/bkwSqn4ocKYaQwBeFt2HHb.png" alt="PC Gamer Logo">      </div>            </div>    </div>        <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async></script>    <script>          (function() {      // Global animation function for slideshow re-use      window.fvAnimateCharts = function(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                // Reset to 0 first to ensure animation triggers                bar.style.width = '0%';                bar.style.transition = 'none';                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                // Force reflow                void bar.offsetWidth;                                 setTimeout(function() {                    bar.style.transition = 'opacity 0.2s ease, width 0.8s ease-out';                    bar.style.width = targetWidth + '%';                }, index * 50 + 50); // Reduced initial delay            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }            // Execute            var charts = chartWrapper.querySelectorAll('.fv-chart-item');                        charts.forEach(function(chart) {                // If in carousel/dropdown mode, hidden charts are display:none.                // We only animate what is visible.                if (window.getComputedStyle(chart).display === 'none') return;                                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                }            });      };            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);                // In slideshow mode, 'root' will be null because the container has '-slideshow' suffix.        // We handle that logic below.        if (!root && !isSlideshow) return;                // Setup internal interactions (Carousel/Dropdown/LineChart) for a specific chart wrapper        function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        // Legend interactions            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        // Carousel & Dropdown Logic            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        // Text Elements            var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType === 'Line') {                                 // Line chart animations if needed                             } else if (cType !== 'Pie') {                                 window.fvAnimateCharts(chartWrapper);                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        // Update Subhead and Caption                    var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) captionEl.textContent = newCaption || '';                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }            // Initial Animation            window.fvAnimateCharts(chartWrapper);        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1774006938410-o7y5q2bug', false); });      } else {        initialize('fv-chart-1774006938410-o7y5q2bug', false);      }    })();      </script></div><p>Gigabyte says it has optical switches and 8 kHz polling, though the latter is absolutely unnecessary even for high-level competitive FPS gaming. Still, it's what all mice seem to be aiming for these days.</p><p>More than the actual hardware, though, I'm excited by the fact that Gigabyte has also launched a web version of its GiMate software that you can use to adjust all the settings. Apparently, you'll be able to use it for "easier control, performance monitoring, and lighting customization across the AORUS peripheral experience." </p><p>I've <a href="https://www.pcgamer.com/hardware/gaming-mice/gaming-mouse-software-should-stay-out-of-your-way-and-its-the-smaller-manufacturers-that-seem-to-have-received-that-memo/" target="_blank">tested a bunch of different software</a> for gaming mice, and my main conclusion is that any gaming mouse that launches these days should come with web software—it's just much more convenient and keeps your machine bloat-free. So there's definitely a big plus here in that respect, at least. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Wooting's big knob is much more than a volume dial, set to arrive later this year for 80 HE ]]></title>
                                                                                                <dc:content><![CDATA[ <p>At last year's Computex tech show, Wooting announced that it was <a href="https://www.pcgamer.com/hardware/gaming-keyboards/wooting-is-adding-knobs-to-its-gaming-keyboards-and-the-good-news-is-existing-wooting-owners-can-knob-themselves-too/" target="_blank">developing a knob</a> for its popular analogue gaming keyboard, the 80 HE. This year, that knob is almost ready to go.</p><p>It's called the Lekker Knob large. It replaces the block of four navigation keys above the arrow keys on the 80 HE. It's a good spot for a volume wheel, but speaking to Wooting's lead software engineer, Simon Whyte, there's much more it can offer than that.</p><p>In Wooting's software, the Wootility, there are four main ways to programme the knob. Relative, which fires an action based on which way you turn the dial; Absolute, which sets the dial to a fixed value at each point in the rotation; Zoned, which subdivides the knob into smaller slices, each with its own action when the centre button is pressed; and Analog, which will increase the input strength the further you turn.</p><p>It's designed in such a way that the software can tell which position it's in at any given time, ie, it's analogue, which offers a wider range of functionality than a traditional dial.</p><p>Furthermore, there are programmable layers in the Wootility. Turn the knob and it does whatever is programmed to the main layer. Press, say, Ctrl and turn the knob, it will do something different if you've programmed it as such. Or go one step further, press Ctrl, Alt, and turn the knob to access yet another layer.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/NGYPZ4s7M2LGmSBv84oUwR-1920-80.jpg" alt="Wooting's new knob on display at its booth at Computex 2026." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/RCbLnJgoHtdGvL4AzHPWsR-1920-80.jpg" alt="Wooting's new knob on display at its booth at Computex 2026." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Whyte tells me they're even playing around with the idea of using the knob as a steering wheel input in a racing game—though he's quick to point out that this is currently just an experiment.</p><p>There's surprisingly a lot to it. More than I had initially expected. It is becoming much more of a full media control dial than a standard volume wheel. Whyte explains that Wooting has been working on it for three years.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/crxCkSprsdKHJwAzASHNYQ-1920-80.jpg" alt="Wooting's new knob on display at its booth at Computex 2026." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/QUmfpbtyexyxFuEXqj28dQ-1920-80.jpg" alt="Wooting's new knob on display at its booth at Computex 2026." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/AvxdacMHepzwayutJvUU7Q-1920-80.jpg" alt="Wooting's new knob on display at its booth at Computex 2026." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Xp9v2MhkEefCpfd2jWCCvP-1920-80.jpg" alt="Wooting's new knob on display at its booth at Computex 2026." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/LqZzv4Tgy5iwBk2V8R4F8R-1920-80.jpg" alt="Wooting's new knob on display at its booth at Computex 2026." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Demanding keys in an ortholinear fashion, eg, in a straight line, it's intended for the 80 HE alone, as it can only sit in the position above the arrow keys. Though Wooting is working on a smaller single key-sized knob that can be used on its other keyboards, but this was under lock and key at the show as it still has a ways to go.</p><p>As for the Lekker Knob, Wooting currently expects it to be ready by the end of this year, but I'm told that's a rough estimate.</p><p>Wooting is also rolling out some updates to the Wootility in the summer that will let users remap keys with preset hotkeys, like Alt + F4, if you're a masochist. Wooting's partnerships manager Max Janssen tells me the team play a game of Alt + F4 roulette with the new knob, with various emojis assigned to all but one zone, which is set to Alt + F4. Anyways, this update is going to be available to all users.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-keyboards/wootings-big-knob-is-much-more-than-a-volume-dial-set-to-arrive-later-this-year-for-80-he/</link>
                                                                            <description>
                            <![CDATA[ There's more to this knob than meets the eye. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">uxXu2PzG7C6z2cDBU7PKvE</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/hijFshPEWTgvawrhziMyaP-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 03 Jun 2026 09:29:11 +0000</pubDate>                                                                                                                                <updated>Wed, 03 Jun 2026 16:15:03 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming Keyboards]]></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/hijFshPEWTgvawrhziMyaP-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Wooting&#039;s new knob on display at its booth at Computex 2026.]]></media:description>                                                            <media:text><![CDATA[Wooting&#039;s new knob on display at its booth at Computex 2026.]]></media:text>
                                <media:title type="plain"><![CDATA[Wooting&#039;s new knob on display at its booth at Computex 2026.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/hijFshPEWTgvawrhziMyaP-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>At last year's Computex tech show, Wooting announced that it was <a href="https://www.pcgamer.com/hardware/gaming-keyboards/wooting-is-adding-knobs-to-its-gaming-keyboards-and-the-good-news-is-existing-wooting-owners-can-knob-themselves-too/" target="_blank">developing a knob</a> for its popular analogue gaming keyboard, the 80 HE. This year, that knob is almost ready to go.</p><p>It's called the Lekker Knob large. It replaces the block of four navigation keys above the arrow keys on the 80 HE. It's a good spot for a volume wheel, but speaking to Wooting's lead software engineer, Simon Whyte, there's much more it can offer than that.</p><p>In Wooting's software, the Wootility, there are four main ways to programme the knob. Relative, which fires an action based on which way you turn the dial; Absolute, which sets the dial to a fixed value at each point in the rotation; Zoned, which subdivides the knob into smaller slices, each with its own action when the centre button is pressed; and Analog, which will increase the input strength the further you turn.</p><p>It's designed in such a way that the software can tell which position it's in at any given time, ie, it's analogue, which offers a wider range of functionality than a traditional dial.</p><p>Furthermore, there are programmable layers in the Wootility. Turn the knob and it does whatever is programmed to the main layer. Press, say, Ctrl and turn the knob, it will do something different if you've programmed it as such. Or go one step further, press Ctrl, Alt, and turn the knob to access yet another layer.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/NGYPZ4s7M2LGmSBv84oUwR-1920-80.jpg" alt="Wooting's new knob on display at its booth at Computex 2026." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/RCbLnJgoHtdGvL4AzHPWsR-1920-80.jpg" alt="Wooting's new knob on display at its booth at Computex 2026." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Whyte tells me they're even playing around with the idea of using the knob as a steering wheel input in a racing game—though he's quick to point out that this is currently just an experiment.</p><p>There's surprisingly a lot to it. More than I had initially expected. It is becoming much more of a full media control dial than a standard volume wheel. Whyte explains that Wooting has been working on it for three years.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/crxCkSprsdKHJwAzASHNYQ-1920-80.jpg" alt="Wooting's new knob on display at its booth at Computex 2026." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/QUmfpbtyexyxFuEXqj28dQ-1920-80.jpg" alt="Wooting's new knob on display at its booth at Computex 2026." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/AvxdacMHepzwayutJvUU7Q-1920-80.jpg" alt="Wooting's new knob on display at its booth at Computex 2026." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Xp9v2MhkEefCpfd2jWCCvP-1920-80.jpg" alt="Wooting's new knob on display at its booth at Computex 2026." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/LqZzv4Tgy5iwBk2V8R4F8R-1920-80.jpg" alt="Wooting's new knob on display at its booth at Computex 2026." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Demanding keys in an ortholinear fashion, eg, in a straight line, it's intended for the 80 HE alone, as it can only sit in the position above the arrow keys. Though Wooting is working on a smaller single key-sized knob that can be used on its other keyboards, but this was under lock and key at the show as it still has a ways to go.</p><p>As for the Lekker Knob, Wooting currently expects it to be ready by the end of this year, but I'm told that's a rough estimate.</p><p>Wooting is also rolling out some updates to the Wootility in the summer that will let users remap keys with preset hotkeys, like Alt + F4, if you're a masochist. Wooting's partnerships manager Max Janssen tells me the team play a game of Alt + F4 roulette with the new knob, with various emojis assigned to all but one zone, which is set to Alt + F4. Anyways, this update is going to be available to all users.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Keychron's carbon fiber concept is the skinniest keyboard I've ever typed on ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Keychron's not really officially at Computex this year, but I did manage to catch up with its CEO, Nick Xu, in a corner of the show and got a sneak peek at some of its upcoming and <em>potentially</em> upcoming keyboard goodies.</p><p>The most striking is the carbon fiber concept keeb—I mean, just look at the thing: it's barely there. But, given that it's a carbon fiber shell it still feels pretty darned solid. But yes, it is just a concept piece brought along to show just how low Keychron can go. I'm told there is a chance that we might see it actually become a product sometime next year, however.</p><p>What isn't a concept piece, however, is the new Keychron ultra-low profile magnetic keyboard, something they claim is "the world's thinnest optical or magnetic keyboard, you don't even notice it's magnetic."</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>Though you will if you take a look at the switches, or start to type on it. There's a level of travel on the switches that you just don't get with a scissor switch or membrane keyboard. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/BjDjDztybjJFE2jajaGFP5-1920-80.jpg" alt="Keychron low-profile keyboards" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/YZf7pSjQj68LzosvaaBUJ5-1920-80.jpg" alt="Keychron low-profile keyboards" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Though it isn't a concept, the unit I'm holding in my hands <em>is </em>an unnamed prototype, which you can tell because there are a few rough edges that you don't normally see with Keychron's reliably solid boards.</p><p>But we should see the some time around the end of the year, and hopefully by then it will actually have a name.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-keyboards/keychrons-carbon-fiber-concept-is-the-skinniest-keyboard-ive-ever-typed-on/</link>
                                                                            <description>
                            <![CDATA[ Not content with that, Keychron is also rocking the world's lowest of low-profile magnetic keyboards. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">cB8yZJyAziCYv2qRMMcYC9</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/dDyKteUuChEbzHMGSzvQQ5-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 02 Jun 2026 13:14:00 +0000</pubDate>                                                                                                                                <updated>Tue, 02 Jun 2026 14:35:23 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming Keyboards]]></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/dDyKteUuChEbzHMGSzvQQ5-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Keychron low-profile keyboards]]></media:description>                                                            <media:text><![CDATA[Keychron low-profile keyboards]]></media:text>
                                <media:title type="plain"><![CDATA[Keychron low-profile keyboards]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/dDyKteUuChEbzHMGSzvQQ5-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Keychron's not really officially at Computex this year, but I did manage to catch up with its CEO, Nick Xu, in a corner of the show and got a sneak peek at some of its upcoming and <em>potentially</em> upcoming keyboard goodies.</p><p>The most striking is the carbon fiber concept keeb—I mean, just look at the thing: it's barely there. But, given that it's a carbon fiber shell it still feels pretty darned solid. But yes, it is just a concept piece brought along to show just how low Keychron can go. I'm told there is a chance that we might see it actually become a product sometime next year, however.</p><p>What isn't a concept piece, however, is the new Keychron ultra-low profile magnetic keyboard, something they claim is "the world's thinnest optical or magnetic keyboard, you don't even notice it's magnetic."</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>Though you will if you take a look at the switches, or start to type on it. There's a level of travel on the switches that you just don't get with a scissor switch or membrane keyboard. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/BjDjDztybjJFE2jajaGFP5-1920-80.jpg" alt="Keychron low-profile keyboards" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/YZf7pSjQj68LzosvaaBUJ5-1920-80.jpg" alt="Keychron low-profile keyboards" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Though it isn't a concept, the unit I'm holding in my hands <em>is </em>an unnamed prototype, which you can tell because there are a few rough edges that you don't normally see with Keychron's reliably solid boards.</p><p>But we should see the some time around the end of the year, and hopefully by then it will actually have a name.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Asus is releasing 'mystery' mini loot boxes with the most peculiar little keycaps I've ever seen ]]></title>
                                                                                                <dc:content><![CDATA[ <p>We've seen all manner of keycaps over the years, from <a href="https://www.pcgamer.com/kerbal-space-program-artisan-keycaps/" target="_blank">Kerbals</a> to <a href="https://www.pcgamer.com/hardware/gaming-keyboards/if-you-hurry-you-can-pick-up-a-set-of-these-sweet-artisan-keycaps-in-all-sorts-of-delicious-combinations/" target="_blank">desserts</a> and just about everything in between. But I don't think I've seen any quite so peculiar as those <a href="https://rog.asus.com/keyboards/accessories/rog-keycap-mystery-box-edition-20/" target="_blank">just announced from Asus ROG</a>.</p><p>They come in a 'Mystery Box Edition 20', with the latter part of this referring to the company's 20th anniversary line-up. We've already seen an absolute <a href="https://www.pcgamer.com/hardware/graphics-cards/as-if-rog-astral-50-series-graphics-cards-could-get-any-beefier-asus-has-just-announced-a-chonky-anniversary-update/" target="_blank">chonker of a GPU</a> under this moniker, so I guess it makes sense to have something small in the range too like keycaps.</p><p>It <a href="https://www.youtube.com/shorts/wuakP_6YUeU" target="_blank">looks like</a> they are literally mystery boxes, in which you don't know which keycaps you're getting. In one box you get 6x mystery keycaps. And what are the keycaps, exactly? Well, it's all ROG peripherals, of course.</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>Each keycap sits on top of a bed of stalagmite crystals. To start with, there's a <a href="https://www.pcgamer.com/you-can-extend-the-life-of-this-gaming-mouse-by-swapping-out-the-switches/" target="_blank">Gladius mouse</a>, a <a href="https://www.pcgamer.com/hardware/controllers/asus-announces-the-raikiri-ii-controller-with-anti-drift-tmr-joysticks-and-1000-hz-wireless-polling-which-should-make-the-razer-wolverine-v3-pro-look-up-from-its-breakfast/" target="_blank">Raikiri controller</a>, an <a href="https://www.pcgamer.com/hardware/gaming-headsets/asus-rog-delta-ii-gaming-headset-review/" target="_blank">Asus Delta headset</a>, alongside a couple of different versions of the ROG logo.</p><p>The last couple are the most interest of the bunch, though. There's the <a href="https://rog.asus.com/uk/apparel-bags-gear/gear/rog-chariot-gaming-chair-model/" target="_blank">Chariot chair</a> which, erm, spins around. Not on its own, you have to spin it yourself, but still. Peculiar. Then there's the <a href="https://www.pcgamer.com/asus-rog-keyboard-combines-rgb-lighting-with-a-detachable-numpad/" target="_blank">Claymore keyboard</a> which is split into two. The left side has the bulk of the keyboard, while the right has the numpad, and both can be pressed independently. Y'know, just 'cause.</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="fQxf9riVzo46Tmt58Pia6B" name="Asuskeycaps" alt="Images of ROG Keycap Mystery Box Edition 20 designs, including a spinning gaming chair and a keyboard on a keycap" src="https://cdn.mos.cms.futurecdn.net/fQxf9riVzo46Tmt58Pia6B-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/fQxf9riVzo46Tmt58Pia6B-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 only thing that I think would make it better would be if there were a little keyboard keycap on the keyboard keycap. But alas, we're just a single order of magnitude into bonkers territory here.</p><p>It's a bit silly, but it's also just a bit of fun, so I'm not too against it. The company has announced plenty of more serious products at this year's Computex, including an <a href="https://www.pcgamer.com/hardware/gaming-monitors/this-could-be-the-competitive-panel-of-my-dreams-the-worlds-first-esport-oled-monitor-looks-to-be-a-540-hz-24-5-inch-beast/" target="_blank">esports OLED monitor</a> I quite like the look of, so I'll forgive Asus for the frivolity here. Though much will depend on just how rare the fancier keycaps are, because I wouldn't much fancy having to rack up dozens of spares just to collect them all.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-keyboards/asus-is-releasing-mystery-mini-loot-boxes-with-the-most-peculiar-little-keycaps-ive-ever-seen/</link>
                                                                            <description>
                            <![CDATA[ Mysterious indeed. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">SnFXBAAyWoCynpbgEcVTD9</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/WdYfa9drMT8tRc2Fz5By5i-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 02 Jun 2026 10:22:43 +0000</pubDate>                                                                                                                                <updated>Thu, 04 Jun 2026 15:16:59 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming Keyboards]]></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/WdYfa9drMT8tRc2Fz5By5i-1920-80.jpg">
                                                            <media:credit><![CDATA[Asus ROG]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The keycaps in an Asus ROG Keycap Mystery Box Edition 20.]]></media:description>                                                            <media:text><![CDATA[The keycaps in an Asus ROG Keycap Mystery Box Edition 20.]]></media:text>
                                <media:title type="plain"><![CDATA[The keycaps in an Asus ROG Keycap Mystery Box Edition 20.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/WdYfa9drMT8tRc2Fz5By5i-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>We've seen all manner of keycaps over the years, from <a href="https://www.pcgamer.com/kerbal-space-program-artisan-keycaps/" target="_blank">Kerbals</a> to <a href="https://www.pcgamer.com/hardware/gaming-keyboards/if-you-hurry-you-can-pick-up-a-set-of-these-sweet-artisan-keycaps-in-all-sorts-of-delicious-combinations/" target="_blank">desserts</a> and just about everything in between. But I don't think I've seen any quite so peculiar as those <a href="https://rog.asus.com/keyboards/accessories/rog-keycap-mystery-box-edition-20/" target="_blank">just announced from Asus ROG</a>.</p><p>They come in a 'Mystery Box Edition 20', with the latter part of this referring to the company's 20th anniversary line-up. We've already seen an absolute <a href="https://www.pcgamer.com/hardware/graphics-cards/as-if-rog-astral-50-series-graphics-cards-could-get-any-beefier-asus-has-just-announced-a-chonky-anniversary-update/" target="_blank">chonker of a GPU</a> under this moniker, so I guess it makes sense to have something small in the range too like keycaps.</p><p>It <a href="https://www.youtube.com/shorts/wuakP_6YUeU" target="_blank">looks like</a> they are literally mystery boxes, in which you don't know which keycaps you're getting. In one box you get 6x mystery keycaps. And what are the keycaps, exactly? Well, it's all ROG peripherals, of course.</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>Each keycap sits on top of a bed of stalagmite crystals. To start with, there's a <a href="https://www.pcgamer.com/you-can-extend-the-life-of-this-gaming-mouse-by-swapping-out-the-switches/" target="_blank">Gladius mouse</a>, a <a href="https://www.pcgamer.com/hardware/controllers/asus-announces-the-raikiri-ii-controller-with-anti-drift-tmr-joysticks-and-1000-hz-wireless-polling-which-should-make-the-razer-wolverine-v3-pro-look-up-from-its-breakfast/" target="_blank">Raikiri controller</a>, an <a href="https://www.pcgamer.com/hardware/gaming-headsets/asus-rog-delta-ii-gaming-headset-review/" target="_blank">Asus Delta headset</a>, alongside a couple of different versions of the ROG logo.</p><p>The last couple are the most interest of the bunch, though. There's the <a href="https://rog.asus.com/uk/apparel-bags-gear/gear/rog-chariot-gaming-chair-model/" target="_blank">Chariot chair</a> which, erm, spins around. Not on its own, you have to spin it yourself, but still. Peculiar. Then there's the <a href="https://www.pcgamer.com/asus-rog-keyboard-combines-rgb-lighting-with-a-detachable-numpad/" target="_blank">Claymore keyboard</a> which is split into two. The left side has the bulk of the keyboard, while the right has the numpad, and both can be pressed independently. Y'know, just 'cause.</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="fQxf9riVzo46Tmt58Pia6B" name="Asuskeycaps" alt="Images of ROG Keycap Mystery Box Edition 20 designs, including a spinning gaming chair and a keyboard on a keycap" src="https://cdn.mos.cms.futurecdn.net/fQxf9riVzo46Tmt58Pia6B-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/fQxf9riVzo46Tmt58Pia6B-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 only thing that I think would make it better would be if there were a little keyboard keycap on the keyboard keycap. But alas, we're just a single order of magnitude into bonkers territory here.</p><p>It's a bit silly, but it's also just a bit of fun, so I'm not too against it. The company has announced plenty of more serious products at this year's Computex, including an <a href="https://www.pcgamer.com/hardware/gaming-monitors/this-could-be-the-competitive-panel-of-my-dreams-the-worlds-first-esport-oled-monitor-looks-to-be-a-540-hz-24-5-inch-beast/" target="_blank">esports OLED monitor</a> I quite like the look of, so I'll forgive Asus for the frivolity here. Though much will depend on just how rare the fancier keycaps are, because I wouldn't much fancy having to rack up dozens of spares just to collect them all.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ MelGeek Centauri 80 review  ]]></title>
                                                                                                <dc:content><![CDATA[ <p>I've never quite understood car people, but the closest I think I've come is my love of gaming keyboards. The first time I took the MelGeek Centauri 80 out of its <del>shuttle </del>packaging, I felt myself exclaim and didn't even realise I'd done it. Like a geeky Patrick Bateman describing the differences between business cards, I felt myself in awe of the shape, aesthetic, and build of the keyboard.</p><p>But alas, I know what it is. It's a showpiece, and not necessarily one I'd actually recommend buying. Though I'd certainly get a few sneaky glances if your rich friend picks one up instead.</p><p>The Centauri 80, as you might be able to guess from the name, is a keyboard obsessed with space. With a white and silver aesthetic, it almost looks like a space shuttle. The caps lock icon is a 'status' bar with a silver wrapping, and an extra key and dial over the right-hand side have the same detailing. This is before mentioning the OLED touchscreen. It could have been ripped straight out of Starfield, Blade Runner, or an actual space station. It also comes with a themed wire and key puller, which is a neat touch.</p><p>To top off the look, all the keys are see-through, with RGB backlights, and it has a stripe of RGB all around the side. It lights up in a dark room, but also looks gorgeous when it's not on. Unfortunately, though, that can make it a little hard to read if it's dark enough. See-through keys don't give much background for the white lettering to contrast with, making it tough to parse with both RGB and without. </p><div  class="fancy-box"><div class="fancy_box-title">MelGeek Centauri 80 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="8eo2XCF6gAJHRhbVtpBrKL" name="IMG_9336" caption="" alt="MelGeek Centauri 80 from the front, outside" src="https://cdn.mos.cms.futurecdn.net/8eo2XCF6gAJHRhbVtpBrKL-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>Switches: </strong>Magnetic white switches<br><strong>Keycaps: </strong>Transparent<br><strong>Lighting:</strong> Yes<br><strong>Polling rate:</strong> 8,000 Hz<br><strong>Connection type:</strong> Wired<br><strong>Layout:</strong> 83 keys<br><strong>Extra:</strong> 1.78-inch OLED touchscreen<br><strong>Weight:</strong> 1.87 kg<br><strong>Price:</strong> <a data-analytics-id="inline-link" href="https://www.melgeek.com/en-eu/products/centauri-hall-effect-gaming-keyboard" target="_blank">$359</a></p></div></div><p>It's a gaming keyboard I've spent almost as much time admiring as I have gaming—and I've spent a lot of time gaming with it. It's even admirable in terms of sound. With layers under those keys, it sounds thocky but in a very satisfying way, and keys go down smoothly with little resistance. There's clearly a lot of love put into the design and build quality here, but love alone is not a reason to spend $350. </p><p>In games, it performs well. Keys are comfortable to press, they sound good, and the switches are super snappy. The Centauri 80 can go all the way up to 8,000 Hz in terms of polling rate, which is certainly nice, though for 99% of people it's far too high to see any benefit. It's got Hall effect switches with rapid trigger, so keys register the moment you let go, rather than the second they hit a threshold. This means you can spam them quicker if you'd like to, or for tactical shooters, you can stop moving and get a smaller reticule just a moment earlier. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/mBqpjCiLyDYmfWKc94kmQL-1920-80.jpg" alt="MelGeek Centauri 80 from the right hand side, outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/gjiYQoGK7RiY3ApQmcetRL-1920-80.jpg" alt="MelGeek Centauri 80 from the left side, outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/VHgGcqj4zuUqpeSKrZSpGL-1920-80.jpg" alt="MelGeek Centauri 80 Screen and right hand side" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/9e82gsuiHTBMha6o9B2bHL-1920-80.jpg" alt="MelGeek Centauri 80" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>That is exactly the case in Valorant, where you are more accurate the second you stop walking. I found the spacing between keys to be solid here, and it's just generally easy to use. With 83 keys total, I didn't find myself in need of an extra one in any of the games I played. From shooters to RPGs, from first to third person, it doesn't let up, and its super sturdy chassis means it practically never moves on my desk. </p><p>At just under 2 kg, the keyboard is super chonky. The case is built from an aluminium alloy, and I doubt my ability to dent the shell even if I wanted to (which I definitely don't). This hefty weight does make popping it in a backpack pretty difficult, but the Centauri 80 is more something you'd pop behind a glass panel than something you'd bust out on the train. </p><p>As far as typing feel is concerned, the Centauri 80 is great. It feels smooth to use, and I like the TTC x MelGeek magnetic white switches. Key hits feel commanding thanks to strong feedback, but not hard to do at the same time. Despite not always being able to see the keycaps when it's dark enough, I almost never struggled to hit the right key without looking. It's well-proportioned, and everything feels very natural. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/SypdiYYwvAHPufv95nyVtF-1920-80.jpg" alt="Melgeek Centauri 80 keycaps up close" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/taBePFY7FhgTmEszFstDoF-1920-80.jpg" alt="Melgeek Centauri 80 keycaps up close" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Two things I'm not a fan of is the enter and space bar. The space bar says "Back to the space" and enter says "Enter to the universe" on it. I get that these keys are supposed to tie into the space theme, but I actually think the specific choice of wording is just a little <em>off</em>.</p><p>It only comes in a wired variant, but wireless keyboards feel a tad less useful to me than wireless gaming headsets, wireless mice, and wireless controllers. It's mostly designed to sit in one spot, so a rogue cable has never really bothered me. </p><p>One peculiarity I did find with the keyboard is that many of my USB Type-C cables refused to work with it. It does come with a nice braided white one in the box, but casually bringing it with me to plug into a different rig with a different cable resulted in the keyboard refusing to turn on. Not only do some cables not provide enough power to run it, but the USB port is quite recessed, and some of my cables simply can't get far enough into the base to connect to it. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/nUg8KgoVkBso4C9rhkjQLL-1920-80.jpg" alt="MelGeek Centauri 80" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/EiPYP7ZzN4RrVMcHLPhdLL-1920-80.jpg" alt="MelGeek Centauri 80" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/3vcitnpDJR2zZm36bep3qK-1920-80.jpg" alt="MelGeek Centauri 80 OLED scren saying "abnormal voltage detected"" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/VTwrDrpUhrhzqRifqnrb9L-1920-80.jpg" alt="MelGeek Centauri 80 OLED screen updating" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/De7rKZF6GyA6dBkeHDJ5KL-1920-80.jpg" alt="MelGeek Centauri 80 from the back right, outside" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The OLED touchscreen is nice and bright, and even comes in colour, so you can pop your own GIFs or images in there in all their full-coloured glory. Its use cases are perhaps a little niche, but it looks good at pretty much all times. Effectively, when you don't touch the media dial, the screen will display one thing (a gif of your choice, a status bar, key actuation display, etc.), then when the media dial is active, it changes the screen into a whole new set of functions.</p><div><blockquote><p>As far as typing feel is concerned, the Centauri 80 is great.</p></blockquote></div><p>Those functions correspond to the dial underneath it. When set to volume mode, it makes the dial adjust the volume of your rig. Media control makes the dial play, pause, go to the next song, or go to the previous one. That means that, though there is a single media control on the entire keyboard, it has solid versatility. </p><p>Just under that dial is an orange button that immediately takes you to the MelGeek web app. This can also be changed, but I find accessing a web app with a shortcut is a neat use of the button. MelGeek's web-based software is a little slow, but solid otherwise. From it, you can adjust lighting, set custom controls, activate rapid trigger, get updates, and more. It does a good job of making it so you don't have to download the software, which is kind of the point of a web app.</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 need your keyboard to make a statement: </strong>The Centauri 80 is eye-catching in a truly great sense, and the thunk as it hits your desk could clear all the dust out, too.<br><br>✅ <strong> You really like space: </strong>This keyboard is so committed to its space aesthetic that it's admirable in a very geeky way.</p></div></div><div  class="fancy-box"><div class="fancy_box-title">Don't Buy if…</div><div class="fancy_box_body"><p class="fancy-box__body-text">❌ <strong> You don't need the Centauri 80 specifically:</strong> The aesthetic and touchscreen are unique, but there are equally viable keyboard choices at half its price. <br><br>❌ <strong>You stare at your keyboard as you game:</strong> The transparent keys look neat, especially with RGB shining through them, but that makes it hard to make out at night.</p></div></div><p>MelGeek says the Centauri 80 comes with smart voltage monitoring to combat fluctuating voltages, and this apparently even allows it to warn you when it detects moisture, which is pretty neat. If it's going to be a showcase piece, it helps that it seems built to last in many ways. </p><p>That price will be the biggest sticking point for the Centauri 80, and for good reason. For $150 less, you can pick up weighty and impressive keyboards like the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/wooting-80he-review/" target="_blank">Wooting 80HE</a> or the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/logitech-g512-x-review/" target="_blank">Logitech G512 X</a>, which I'd argue is also a showpiece (and comes with 8K polling too). Though it doesn't offer colour, the OLED screen in the $220 <a href="https://www.pcgamer.com/hardware/gaming-keyboards/steelseries-apex-pro-tkl-gen-3-review/" target="_blank">Steelseries Apex Pro TKL Gen 3</a> is very pretty, and the keyboard is lovely too. </p><p>And if you are simply looking for rapid trigger Hall effect switches, the likes of the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/gamakay-x-naughshark-ns68-review/" target="_blank">Gamakay X NaughShark NS68</a> offer it for almost ten times less. The MelGeek Centauri 80 doesn't offer anything in specs or feel that can't be found cheaper, and even with better feel (or key visibility) elsewhere. </p><p>However, its aesthetic and build quality are undeniably top-notch, and I feel at least a little lucky to have got my grubby mitts / grubby eyeballs all over it. If you're looking for value, you won't find it here— but the Centauri 80 does feel truly unique despite it. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-keyboards/melgeek-centauri-80-review/</link>
                                                                            <description>
                            <![CDATA[ A lovely keyboard I couldn't actually recommend buying, unless you're a big space nerd in need of a touchscreen. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">iSxVKWkNTUgDkFbXRUG259</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/NJL54WqHVfV4GetNebzSPL-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 28 May 2026 15:01:08 +0000</pubDate>                                                                                                                                <updated>Fri, 29 May 2026 16:27:36 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming Keyboards]]></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/NJL54WqHVfV4GetNebzSPL-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[MelGeek Centauri 80 from the front left, outside]]></media:description>                                                            <media:text><![CDATA[MelGeek Centauri 80 from the front left, outside]]></media:text>
                                <media:title type="plain"><![CDATA[MelGeek Centauri 80 from the front left, outside]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/NJL54WqHVfV4GetNebzSPL-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I've never quite understood car people, but the closest I think I've come is my love of gaming keyboards. The first time I took the MelGeek Centauri 80 out of its <del>shuttle </del>packaging, I felt myself exclaim and didn't even realise I'd done it. Like a geeky Patrick Bateman describing the differences between business cards, I felt myself in awe of the shape, aesthetic, and build of the keyboard.</p><p>But alas, I know what it is. It's a showpiece, and not necessarily one I'd actually recommend buying. Though I'd certainly get a few sneaky glances if your rich friend picks one up instead.</p><p>The Centauri 80, as you might be able to guess from the name, is a keyboard obsessed with space. With a white and silver aesthetic, it almost looks like a space shuttle. The caps lock icon is a 'status' bar with a silver wrapping, and an extra key and dial over the right-hand side have the same detailing. This is before mentioning the OLED touchscreen. It could have been ripped straight out of Starfield, Blade Runner, or an actual space station. It also comes with a themed wire and key puller, which is a neat touch.</p><p>To top off the look, all the keys are see-through, with RGB backlights, and it has a stripe of RGB all around the side. It lights up in a dark room, but also looks gorgeous when it's not on. Unfortunately, though, that can make it a little hard to read if it's dark enough. See-through keys don't give much background for the white lettering to contrast with, making it tough to parse with both RGB and without. </p><div  class="fancy-box"><div class="fancy_box-title">MelGeek Centauri 80 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="8eo2XCF6gAJHRhbVtpBrKL" name="IMG_9336" caption="" alt="MelGeek Centauri 80 from the front, outside" src="https://cdn.mos.cms.futurecdn.net/8eo2XCF6gAJHRhbVtpBrKL-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>Switches: </strong>Magnetic white switches<br><strong>Keycaps: </strong>Transparent<br><strong>Lighting:</strong> Yes<br><strong>Polling rate:</strong> 8,000 Hz<br><strong>Connection type:</strong> Wired<br><strong>Layout:</strong> 83 keys<br><strong>Extra:</strong> 1.78-inch OLED touchscreen<br><strong>Weight:</strong> 1.87 kg<br><strong>Price:</strong> <a data-analytics-id="inline-link" href="https://www.melgeek.com/en-eu/products/centauri-hall-effect-gaming-keyboard" target="_blank">$359</a></p></div></div><p>It's a gaming keyboard I've spent almost as much time admiring as I have gaming—and I've spent a lot of time gaming with it. It's even admirable in terms of sound. With layers under those keys, it sounds thocky but in a very satisfying way, and keys go down smoothly with little resistance. There's clearly a lot of love put into the design and build quality here, but love alone is not a reason to spend $350. </p><p>In games, it performs well. Keys are comfortable to press, they sound good, and the switches are super snappy. The Centauri 80 can go all the way up to 8,000 Hz in terms of polling rate, which is certainly nice, though for 99% of people it's far too high to see any benefit. It's got Hall effect switches with rapid trigger, so keys register the moment you let go, rather than the second they hit a threshold. This means you can spam them quicker if you'd like to, or for tactical shooters, you can stop moving and get a smaller reticule just a moment earlier. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/mBqpjCiLyDYmfWKc94kmQL-1920-80.jpg" alt="MelGeek Centauri 80 from the right hand side, outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/gjiYQoGK7RiY3ApQmcetRL-1920-80.jpg" alt="MelGeek Centauri 80 from the left side, outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/VHgGcqj4zuUqpeSKrZSpGL-1920-80.jpg" alt="MelGeek Centauri 80 Screen and right hand side" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/9e82gsuiHTBMha6o9B2bHL-1920-80.jpg" alt="MelGeek Centauri 80" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>That is exactly the case in Valorant, where you are more accurate the second you stop walking. I found the spacing between keys to be solid here, and it's just generally easy to use. With 83 keys total, I didn't find myself in need of an extra one in any of the games I played. From shooters to RPGs, from first to third person, it doesn't let up, and its super sturdy chassis means it practically never moves on my desk. </p><p>At just under 2 kg, the keyboard is super chonky. The case is built from an aluminium alloy, and I doubt my ability to dent the shell even if I wanted to (which I definitely don't). This hefty weight does make popping it in a backpack pretty difficult, but the Centauri 80 is more something you'd pop behind a glass panel than something you'd bust out on the train. </p><p>As far as typing feel is concerned, the Centauri 80 is great. It feels smooth to use, and I like the TTC x MelGeek magnetic white switches. Key hits feel commanding thanks to strong feedback, but not hard to do at the same time. Despite not always being able to see the keycaps when it's dark enough, I almost never struggled to hit the right key without looking. It's well-proportioned, and everything feels very natural. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/SypdiYYwvAHPufv95nyVtF-1920-80.jpg" alt="Melgeek Centauri 80 keycaps up close" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/taBePFY7FhgTmEszFstDoF-1920-80.jpg" alt="Melgeek Centauri 80 keycaps up close" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Two things I'm not a fan of is the enter and space bar. The space bar says "Back to the space" and enter says "Enter to the universe" on it. I get that these keys are supposed to tie into the space theme, but I actually think the specific choice of wording is just a little <em>off</em>.</p><p>It only comes in a wired variant, but wireless keyboards feel a tad less useful to me than wireless gaming headsets, wireless mice, and wireless controllers. It's mostly designed to sit in one spot, so a rogue cable has never really bothered me. </p><p>One peculiarity I did find with the keyboard is that many of my USB Type-C cables refused to work with it. It does come with a nice braided white one in the box, but casually bringing it with me to plug into a different rig with a different cable resulted in the keyboard refusing to turn on. Not only do some cables not provide enough power to run it, but the USB port is quite recessed, and some of my cables simply can't get far enough into the base to connect to it. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/nUg8KgoVkBso4C9rhkjQLL-1920-80.jpg" alt="MelGeek Centauri 80" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/EiPYP7ZzN4RrVMcHLPhdLL-1920-80.jpg" alt="MelGeek Centauri 80" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/3vcitnpDJR2zZm36bep3qK-1920-80.jpg" alt="MelGeek Centauri 80 OLED scren saying "abnormal voltage detected"" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/VTwrDrpUhrhzqRifqnrb9L-1920-80.jpg" alt="MelGeek Centauri 80 OLED screen updating" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/De7rKZF6GyA6dBkeHDJ5KL-1920-80.jpg" alt="MelGeek Centauri 80 from the back right, outside" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The OLED touchscreen is nice and bright, and even comes in colour, so you can pop your own GIFs or images in there in all their full-coloured glory. Its use cases are perhaps a little niche, but it looks good at pretty much all times. Effectively, when you don't touch the media dial, the screen will display one thing (a gif of your choice, a status bar, key actuation display, etc.), then when the media dial is active, it changes the screen into a whole new set of functions.</p><div><blockquote><p>As far as typing feel is concerned, the Centauri 80 is great.</p></blockquote></div><p>Those functions correspond to the dial underneath it. When set to volume mode, it makes the dial adjust the volume of your rig. Media control makes the dial play, pause, go to the next song, or go to the previous one. That means that, though there is a single media control on the entire keyboard, it has solid versatility. </p><p>Just under that dial is an orange button that immediately takes you to the MelGeek web app. This can also be changed, but I find accessing a web app with a shortcut is a neat use of the button. MelGeek's web-based software is a little slow, but solid otherwise. From it, you can adjust lighting, set custom controls, activate rapid trigger, get updates, and more. It does a good job of making it so you don't have to download the software, which is kind of the point of a web app.</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 need your keyboard to make a statement: </strong>The Centauri 80 is eye-catching in a truly great sense, and the thunk as it hits your desk could clear all the dust out, too.<br><br>✅ <strong> You really like space: </strong>This keyboard is so committed to its space aesthetic that it's admirable in a very geeky way.</p></div></div><div  class="fancy-box"><div class="fancy_box-title">Don't Buy if…</div><div class="fancy_box_body"><p class="fancy-box__body-text">❌ <strong> You don't need the Centauri 80 specifically:</strong> The aesthetic and touchscreen are unique, but there are equally viable keyboard choices at half its price. <br><br>❌ <strong>You stare at your keyboard as you game:</strong> The transparent keys look neat, especially with RGB shining through them, but that makes it hard to make out at night.</p></div></div><p>MelGeek says the Centauri 80 comes with smart voltage monitoring to combat fluctuating voltages, and this apparently even allows it to warn you when it detects moisture, which is pretty neat. If it's going to be a showcase piece, it helps that it seems built to last in many ways. </p><p>That price will be the biggest sticking point for the Centauri 80, and for good reason. For $150 less, you can pick up weighty and impressive keyboards like the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/wooting-80he-review/" target="_blank">Wooting 80HE</a> or the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/logitech-g512-x-review/" target="_blank">Logitech G512 X</a>, which I'd argue is also a showpiece (and comes with 8K polling too). Though it doesn't offer colour, the OLED screen in the $220 <a href="https://www.pcgamer.com/hardware/gaming-keyboards/steelseries-apex-pro-tkl-gen-3-review/" target="_blank">Steelseries Apex Pro TKL Gen 3</a> is very pretty, and the keyboard is lovely too. </p><p>And if you are simply looking for rapid trigger Hall effect switches, the likes of the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/gamakay-x-naughshark-ns68-review/" target="_blank">Gamakay X NaughShark NS68</a> offer it for almost ten times less. The MelGeek Centauri 80 doesn't offer anything in specs or feel that can't be found cheaper, and even with better feel (or key visibility) elsewhere. </p><p>However, its aesthetic and build quality are undeniably top-notch, and I feel at least a little lucky to have got my grubby mitts / grubby eyeballs all over it. If you're looking for value, you won't find it here— but the Centauri 80 does feel truly unique despite it. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Framework says its Wireless Touchpad Keyboard 'is by far our most waitlisted product' ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Framework, the company known for <a href="https://www.pcgamer.com/hardware/gaming-laptops/framework-13-amd-ai-300-series-review/" target="_blank">ultra-repairable laptops</a> and <a href="https://www.pcgamer.com/hardware/gaming-pcs/framework-desktop-pc-review/" target="_blank">desktop PCs</a>, is launching a <a href="https://www.pcgamer.com/hardware/gaming-keyboards/framework-is-building-its-own-keyboard-and-will-even-help-you-make-your-own/" target="_blank">wireless touchpad keyboard</a>, and it has become the company's most waitlisted item. When you consider the company is not traditionally known for accessories, it's strange to think that's the device people really want. </p><p>As announced on the <a href="https://x.com/FrameworkPuter/status/2055038422268707027" target="_blank">company's X page today</a>, the "Framework wireless touchpad keyboard is by far our most waitlisted product! We may need to increase our plans for production capacity." Given that Framework created this new keyboard having become frustrated with a certain Logitech option while designing and testing the Framework Desktop, you might recognise a recognisable board in the bin behind it in the picture above.</p><p>For what it's worth, the waitlist is what you get put on if you choose to fill in your email on the <a href="https://frame.work/gb/en/products/framework-wireless-touchpad-keyboard" target="_blank">site for the keyboard</a>. Framework will notify you when it is in stock, giving you the option to buy it. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eM7mDO"></div>                            </div>                            <script src="https://kwizly.com/embed/eM7mDO.js" async></script><p>In fairness, the keyboard does seem very cool. It comes with "an integrated touchpad that you don't hate", according to the company, making it supposedly ideal for sim rig and living room use. Effectively, it will allow you to  easily use a computer from afar without needing a mouse or the likes of the <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">Steam Controller</a>. </p><p>Thanks to its open-source CAD design and ZMK-based firmware, it's designed to be very moddable—the control board can also be purchased separately, should you want to make your own keyboard. The standard built keyboard has a 68.8 x 865.6 mm touchpad with multi-touch support and 1.5 mm key travel. The keyboard can be connected with a wire, via Bluetooth, or with its USB-A dongle. No price point has been announced yet, though. </p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2055038422268707027"><p lang="en" dir="ltr">Framework Wireless Touchpad Keyboard is by far our most waitlisted product!  We may need to increase our plans for production capacity. pic.twitter.com/JQx2d2ZNvO<a href="https://twitter.com/cantworkitout/status/2055038422268707027">May 14, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Not much more is known about the keyboard yet, but it doesn't seem to be designed for gamers. The touchpad naturally won't be great for gaming, and we don't know much about the keys themselves yet. </p><p>However, should you want to run your rig from a distance, there's a clear selling point. And it seems, based on the waitlist, I'm not the only one who thinks that. </p><p>Still, to think a PC and Laptop manufacturer doesn't have a PC or laptop as its most-waitlisted device speaks volumes about the current market, and the <a href="https://www.pcgamer.com/hardware/memory/ram-and-storage-is-ridiculously-expensive-right-now-because-of-drumroll-ai-of-course-and-theres-little-reason-to-think-prices-will-drop-any-time-soon/" target="_blank">troubles of the memory crisis. </a></p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-keyboards/framework-says-its-wireless-touchpad-keyboard-is-by-far-our-most-waitlisted-product/</link>
                                                                            <description>
                            <![CDATA[ Might be a bit galling for a company that's better known for making laptops. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">hm2wmgLzNzrrsPHrtogkJD</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/9tqPCFPbr5c2UCaq9igSSM-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 15 May 2026 16:39:26 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Keyboards]]></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/9tqPCFPbr5c2UCaq9igSSM-1920-80.jpg">
                                                            <media:credit><![CDATA[Framework]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Framework&#039;s Wireless Touchpad Keyboard with a keyboard in the bin behind it.]]></media:description>                                                            <media:text><![CDATA[Framework&#039;s Wireless Touchpad Keyboard with a keyboard in the bin behind it.]]></media:text>
                                <media:title type="plain"><![CDATA[Framework&#039;s Wireless Touchpad Keyboard with a keyboard in the bin behind it.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/9tqPCFPbr5c2UCaq9igSSM-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Framework, the company known for <a href="https://www.pcgamer.com/hardware/gaming-laptops/framework-13-amd-ai-300-series-review/" target="_blank">ultra-repairable laptops</a> and <a href="https://www.pcgamer.com/hardware/gaming-pcs/framework-desktop-pc-review/" target="_blank">desktop PCs</a>, is launching a <a href="https://www.pcgamer.com/hardware/gaming-keyboards/framework-is-building-its-own-keyboard-and-will-even-help-you-make-your-own/" target="_blank">wireless touchpad keyboard</a>, and it has become the company's most waitlisted item. When you consider the company is not traditionally known for accessories, it's strange to think that's the device people really want. </p><p>As announced on the <a href="https://x.com/FrameworkPuter/status/2055038422268707027" target="_blank">company's X page today</a>, the "Framework wireless touchpad keyboard is by far our most waitlisted product! We may need to increase our plans for production capacity." Given that Framework created this new keyboard having become frustrated with a certain Logitech option while designing and testing the Framework Desktop, you might recognise a recognisable board in the bin behind it in the picture above.</p><p>For what it's worth, the waitlist is what you get put on if you choose to fill in your email on the <a href="https://frame.work/gb/en/products/framework-wireless-touchpad-keyboard" target="_blank">site for the keyboard</a>. Framework will notify you when it is in stock, giving you the option to buy it. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eM7mDO"></div>                            </div>                            <script src="https://kwizly.com/embed/eM7mDO.js" async></script><p>In fairness, the keyboard does seem very cool. It comes with "an integrated touchpad that you don't hate", according to the company, making it supposedly ideal for sim rig and living room use. Effectively, it will allow you to  easily use a computer from afar without needing a mouse or the likes of the <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">Steam Controller</a>. </p><p>Thanks to its open-source CAD design and ZMK-based firmware, it's designed to be very moddable—the control board can also be purchased separately, should you want to make your own keyboard. The standard built keyboard has a 68.8 x 865.6 mm touchpad with multi-touch support and 1.5 mm key travel. The keyboard can be connected with a wire, via Bluetooth, or with its USB-A dongle. No price point has been announced yet, though. </p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2055038422268707027"><p lang="en" dir="ltr">Framework Wireless Touchpad Keyboard is by far our most waitlisted product!  We may need to increase our plans for production capacity. pic.twitter.com/JQx2d2ZNvO<a href="https://twitter.com/cantworkitout/status/2055038422268707027">May 14, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Not much more is known about the keyboard yet, but it doesn't seem to be designed for gamers. The touchpad naturally won't be great for gaming, and we don't know much about the keys themselves yet. </p><p>However, should you want to run your rig from a distance, there's a clear selling point. And it seems, based on the waitlist, I'm not the only one who thinks that. </p><p>Still, to think a PC and Laptop manufacturer doesn't have a PC or laptop as its most-waitlisted device speaks volumes about the current market, and the <a href="https://www.pcgamer.com/hardware/memory/ram-and-storage-is-ridiculously-expensive-right-now-because-of-drumroll-ai-of-course-and-theres-little-reason-to-think-prices-will-drop-any-time-soon/" target="_blank">troubles of the memory crisis. </a></p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Sit down, relax, and see how a magnetic keyboard switch is made with Wooting's CEO ]]></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/SpnqmsSbBzM" allowfullscreen></iframe></div></div><p>Remember that TV show 'How It's Made'? Whenever I would feel a little under the weather, I'd sit down in front of the TV and watch the step-by-step process of making a golf ball. Good television, that. Wooting has since put together something similar for keyboard nerds: a rundown on how a Hall effect key switch is made.</p><p>Wooting CEO Calder Limmen <a href="https://www.youtube.com/watch?v=SpnqmsSbBzM" target="_blank">leads the tour</a>, following the Lekker Tikken switch through the manufacturing process. Be warned, there are some choice sound effects used throughout.</p><p>It starts with plastic injection, which is used for the top case, bottom case, and stem. The machine takes plastic pellets and injects them into a mould, with a cavity in the shape of the final plastic component.</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>Interestingly, any unused material from the process is not recycled back into the machine to be reused. As Calder notes, "For the Lekker Tikken switches, we don't use any recycled material to make sure the mechanical properties are better so we get less wobble, more consistency and just a better product overall for your switches."</p><p>Next up is switch assembly. No prizes for guessing what goes on here. It's one of the more satisfying machines in the video: a series of tumblers and mechanical arms that work to piece together the switch, starting with the top case. Into that lands the stem. This is also when lubricant is applied to the stem and top case—lubricant being useful for smooth operation of the switch <em>and </em>assembling the switch. </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:3510px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="5Wm39n8bdhJ4oVJuHwqeyH" name="wooting" alt="Wooting's tour around where it gets its switches made." src="https://cdn.mos.cms.futurecdn.net/5Wm39n8bdhJ4oVJuHwqeyH-1920-80.png" mos="" align="middle" fullscreen="" width="3510" height="1975" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Wooting)</span></figcaption></figure><p>Next, the switch earns its Hall effect credentials with a magnet pushed down into the stem. That's all there is to a Hall effect (or TMR) switch—a sensor on the keyboard PCB does the rest. With that in place, the all-important 22 mm spring can be added to the stem, along with the bottom case, which also gets a dosing of lube for good measure. All that's left to do is add the LED diffuser into the switch, which takes place elsewhere.</p><p>Then it's onto testing. Each switch gets tested for the gram force (gf) of the switch (the Lekker Tikken is rated to 54 cN, which is sorta 54 gf) and the gauss value of the magnet, which measures the strength of the magnetic field. Magnets are not actually that easy to make with a high degree of consistency so I imagine this is pretty key.</p><p>If the switch passes, it goes on to the final assembly to be sold as either an individual switch or bundled with a <a href="https://www.pcgamer.com/hardware/gaming-keyboards/wooting-60he-v2-review/" target="_blank">Wooting 60HE v2</a>. If not, it goes in the bad bucket. </p><p>And that's how a switch is made. Hey, wake up!</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-keyboards/sit-down-relax-and-see-how-a-magnetic-keyboard-switch-is-made-with-wootings-ceo/</link>
                                                                            <description>
                            <![CDATA[ Now that's my kinda doc. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">svfWfCdCvVdnnuZq9xJmPJ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/XuD32hHbpJgQWz82NKrnk-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 05 May 2026 15:33:56 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Keyboards]]></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/XuD32hHbpJgQWz82NKrnk-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Wooting 60HE v2 at various stages of being built.]]></media:description>                                                            <media:text><![CDATA[The Wooting 60HE v2 at various stages of being built.]]></media:text>
                                <media:title type="plain"><![CDATA[The Wooting 60HE v2 at various stages of being built.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/XuD32hHbpJgQWz82NKrnk-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/SpnqmsSbBzM" allowfullscreen></iframe></div></div><p>Remember that TV show 'How It's Made'? Whenever I would feel a little under the weather, I'd sit down in front of the TV and watch the step-by-step process of making a golf ball. Good television, that. Wooting has since put together something similar for keyboard nerds: a rundown on how a Hall effect key switch is made.</p><p>Wooting CEO Calder Limmen <a href="https://www.youtube.com/watch?v=SpnqmsSbBzM" target="_blank">leads the tour</a>, following the Lekker Tikken switch through the manufacturing process. Be warned, there are some choice sound effects used throughout.</p><p>It starts with plastic injection, which is used for the top case, bottom case, and stem. The machine takes plastic pellets and injects them into a mould, with a cavity in the shape of the final plastic component.</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>Interestingly, any unused material from the process is not recycled back into the machine to be reused. As Calder notes, "For the Lekker Tikken switches, we don't use any recycled material to make sure the mechanical properties are better so we get less wobble, more consistency and just a better product overall for your switches."</p><p>Next up is switch assembly. No prizes for guessing what goes on here. It's one of the more satisfying machines in the video: a series of tumblers and mechanical arms that work to piece together the switch, starting with the top case. Into that lands the stem. This is also when lubricant is applied to the stem and top case—lubricant being useful for smooth operation of the switch <em>and </em>assembling the switch. </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:3510px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="5Wm39n8bdhJ4oVJuHwqeyH" name="wooting" alt="Wooting's tour around where it gets its switches made." src="https://cdn.mos.cms.futurecdn.net/5Wm39n8bdhJ4oVJuHwqeyH-1920-80.png" mos="" align="middle" fullscreen="" width="3510" height="1975" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Wooting)</span></figcaption></figure><p>Next, the switch earns its Hall effect credentials with a magnet pushed down into the stem. That's all there is to a Hall effect (or TMR) switch—a sensor on the keyboard PCB does the rest. With that in place, the all-important 22 mm spring can be added to the stem, along with the bottom case, which also gets a dosing of lube for good measure. All that's left to do is add the LED diffuser into the switch, which takes place elsewhere.</p><p>Then it's onto testing. Each switch gets tested for the gram force (gf) of the switch (the Lekker Tikken is rated to 54 cN, which is sorta 54 gf) and the gauss value of the magnet, which measures the strength of the magnetic field. Magnets are not actually that easy to make with a high degree of consistency so I imagine this is pretty key.</p><p>If the switch passes, it goes on to the final assembly to be sold as either an individual switch or bundled with a <a href="https://www.pcgamer.com/hardware/gaming-keyboards/wooting-60he-v2-review/" target="_blank">Wooting 60HE v2</a>. If not, it goes in the bad bucket. </p><p>And that's how a switch is made. Hey, wake up!</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I've spent the past month testing Keychron's concrete keeb and it's absolutely brilliant, with one small sticking point ]]></title>
                                                                                                <dc:content><![CDATA[ <div  class="fancy-box"><div class="fancy_box-title">Andy Edser, 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="ZGont4SjJV38V5HWmjfNAE" name="PCG Writer Illustrations 2026 Teal23 - Andy Edser" caption="" alt="PC Gamer headshot - Andy Edesr" src="https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE-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 month I've been:</strong> Testing an extremely heavy keyboard while benchmarking many, many graphics cards. Also, a spot of <a data-analytics-id="inline-link" href="https://www.pcgamer.com/hardware/graphics-cards/yes-you-can-overclock-8-gb-graphics-cards-to-bring-the-benchmark-performance-in-line-with-the-16-gb-versions-but-thats-not-quite-the-whole-story/" target="_blank">overclocking</a>. Nothing caught fire. Victory!</p></div></div><p>When I first learned of the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/keychrons-made-a-concrete-keeb-each-keystroke-carries-industrial-rhythm-elevating-the-experience-with-marble-like-smoothness-and-auditory-visual-harmony/" target="_blank">Keychron K2 HE Concrete Edition</a>, I was both intrigued and confused. On the one hand, I was aware of the existence of the standard keeb and that we'd given it <a href="https://www.pcgamer.com/hardware/gaming-keyboards/keychron-k2-he-review/" target="_blank">a massive 88% in our review</a>. The addition of a concrete shell for extra heft? Sounds interesting.</p><p>On the other hand, the marketing copy is outrageous. Try this on for size: "Each keystroke carries industrial rhythm, preserving the concrete's solid core while elevating the experience with marble-like smoothness and auditory-visual harmony."</p><p>With a description like that, I knew I had to try one for myself. So, I duly requested a review sample, and boy howdy is it heavy. Its 1.74 kg weight was compounded by the fact that my test model was sent to the office, which meant I had to stick it in my backpack to take home. On the train. With a long walk home from the station at the other end.</p><p>I am not a clever man. Anyway, I've spent the past month using the Keychron concrete keeb, and I imagine you're expecting me to say that it's a silly idea. A pure marketing gimmick. Something you definitely shouldn't consider dropping $200 on. </p><p>But in all honesty, I think it's one of the best keyboards I've ever used. And yes, the concrete shell is definitely a factor.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/rWwwiwzq7ZmPtp3JgmWyMg-1920-80.jpg" alt="A Keychron K2 HE Concrete Edition keyboard on a wooden desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/y5ad3Ft7Zi6Z9SdDH6d4Z-1920-80.jpg" alt="Various angles of a Keychron K2 HE Concrete Edition keyboard lit up in RGB lighting" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/SM7py39QVrjKrB38FaKKZ-1920-80.jpg" alt="Various angles of a Keychron K2 HE Concrete Edition keyboard lit up in RGB lighting" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>We want our gaming mice to be light. A concrete gaming mouse would be a silly device, even for someone like me who doesn't mind a touch of extra heft in a squeaker. But when it comes to <a href="https://www.pcgamer.com/best-gaming-keyboard/" target="_blank">gaming keyboards</a>, I think a dose of extra weight is actually a plus. Keychron is known for making remarkably well-built keebs, and the K2 HE Concrete Edition feels like the ultimate example of that. </p><p>The concrete outer shell is perfectly formed, with nary a moulding mark in sight. The OSA double-shot keycaps feel rounded yet crisp, heavy in their own right, and extremely satisfying under my fingertips. The side-mounted switches for the connection options (USB Type-C, Bluetooth and 2.4 GHz wireless, if you were wondering) are super positive.</p><p>It's about as heavy-duty as keyboards come, but it doesn't feel clumsy or overbuilt. Instead, it feels purposeful. Like a piece of industrial equipment that's had just enough of the rough edges rounded off to make for a compelling design.</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="sV6R4HTeY7qtHYoKLfLjW" name="Keychronkeeb3" alt="Various angles of a Keychron K2 HE Concrete Edition keyboard lit up in RGB lighting" src="https://cdn.mos.cms.futurecdn.net/sV6R4HTeY7qtHYoKLfLjW-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 weight also means that it really, really wants to stay anchored to my desk, even under panicked gaming conditions. My usual keyboard, a <a href="https://www.pcgamer.com/hardware/gaming-keyboards/glorious-gmmk-3-he-keyboard-review/#:~:text=Image%20credit%3A%20Future)-,Well%2C%20you%20get%20this,-.%20This%20stunning%2C%20fabulous" target="_blank">custom Glorious GMMK 3</a> with a brass plate in the bottom, is pretty good at staying where it is during a fast-paced FPS session. But the Keychron? I'm pretty sure it's pinning my entire setup down at this point.</p><p>Does it sound much different to a regular keeb? No, not really. But the switch feel is so good, and the keyboard so stable, I don't really mind. The included <a href="https://www.keychron.com/products/gateron-double-rail-magnetic-switch?variant=40784600694873" target="_blank">Gateron Double-Rail magnetic switches</a> come pre-lubed and have an actuation range of 0.2-3.8 mm, with a starting force of 40 g. </p>                    <div class= "tiktok-wrapper" style="min-height: 750px;"><blockquote class="tiktok-embed" cite="https://www.tiktok.com/@pcgamer_mag/video/7611652834479721761" data-video-id="7611652834479721761" style="max-width: 605px; min-width: 325px;">                        <section>                            <a target="_blank" title="@pcgamer_mag" href="https://www.tiktok.com/@pcgamer_mag">@pcgamer_mag</a>                            <p></p><a target="_blank" title="♬ original sound  - PC Gamer" href="https://www.tiktok.com/music/original-sound-PC-Gamer-7611652874585606945">♬ original sound  - PC Gamer</a></section>                    </blockquote></div>                <p>I'm aware those numbers mean little on paper, but trust me, you want a set of these. The resistance is perfect, with a delicious weight that ups my typing accuracy considerably—and they're still ultra-quick for gaming, too. This keyboard and switch combo also supports dynamic rapid trigger, last key priority, and adjustable actuation points, all of which can be tweaked to your heart's content.</p><div><blockquote><p>...if you're a fan of the shade, I'd say you should definitely consider a K2 HE Concrete Edition for yourself</p></blockquote></div><p>In practice, I care little for such things. I care about how it feels underneath my fingers, and these switches, in combination with the excellent keycaps and overall weight, make for a keyboard that I'm convinced is nothing short of magnificent.</p><p>There is one thing holding me back from switching it in as my permanent daily driver, though, and you're probably going to think it's silly. But I really don't like the colour.</p><p>Concrete is not the most aesthetic of materials when it comes to colour tone, and while Keychron has gone to the effort of making the PBT keycaps match the frame, the whole thing ends up being a shade of grey I don't particularly enjoy. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="KgXWVS54MoThmXM7TvFUDe" name="keychronkeeb7" alt="A Keychron K2 HE Concrete Edition gaming keyboard on a desk, next to a gaming PC" src="https://cdn.mos.cms.futurecdn.net/KgXWVS54MoThmXM7TvFUDe-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>Plus, my setup is all black and red, and the K2 HE looks... well, out of place when it's all put together. It's also got some pretty tame RGB lighting, and simply isn't a match for my other models in the looks department. Ashamed as I am to admit it, I'm enough of a neurotic human being for that to bother me. Or really shallow, you pick. </p><p>Sitting here now, staring at the keeb in front of me, I might be able to get past it. Time will tell, I suppose.</p><p>But if you're a fan of the shade, I'd say you should definitely consider a K2 HE Concrete Edition for yourself. Even the <a href="https://www.keychron.com/collections/keychron-k-he-landing-page/products/keychron-k2-he-wireless-magnetic-switch-custom-keyboard-concrete-edition" target="_blank">$200 price tag</a> is pretty bearable, given the quality of what you end up receiving and the fact that <a href="https://www.pcgamer.com/hardware/gaming-keyboards/asus-rog-azoth-extreme-review/" target="_blank">some other high-end gaming keyboards</a> can be priced into the stratosphere.</p><p>Can those models be used as boat anchors in a pinch? I think not. Now, if Keychron would spray one down in black paint (and boost the RGB), I think I'd be truly happy. Yes, I'm picky when it comes to gaming hardware. In this job, are you really that surprised?</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-keyboards/ive-spent-the-past-month-testing-keychrons-concrete-keeb-and-its-absolutely-brilliant-with-one-small-sticking-point/</link>
                                                                            <description>
                            <![CDATA[ A matter of taste. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">gHGtDY9d4GLFroYVxwCCsn</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/AzmudhnvqjcskxPy6AnfzV-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 02 May 2026 13:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Keyboards]]></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/AzmudhnvqjcskxPy6AnfzV-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A Keychron K2 HE Concrete Edition keyboard shot from above]]></media:description>                                                            <media:text><![CDATA[A Keychron K2 HE Concrete Edition keyboard shot from above]]></media:text>
                                <media:title type="plain"><![CDATA[A Keychron K2 HE Concrete Edition keyboard shot from above]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/AzmudhnvqjcskxPy6AnfzV-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div  class="fancy-box"><div class="fancy_box-title">Andy Edser, 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="ZGont4SjJV38V5HWmjfNAE" name="PCG Writer Illustrations 2026 Teal23 - Andy Edser" caption="" alt="PC Gamer headshot - Andy Edesr" src="https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE-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 month I've been:</strong> Testing an extremely heavy keyboard while benchmarking many, many graphics cards. Also, a spot of <a data-analytics-id="inline-link" href="https://www.pcgamer.com/hardware/graphics-cards/yes-you-can-overclock-8-gb-graphics-cards-to-bring-the-benchmark-performance-in-line-with-the-16-gb-versions-but-thats-not-quite-the-whole-story/" target="_blank">overclocking</a>. Nothing caught fire. Victory!</p></div></div><p>When I first learned of the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/keychrons-made-a-concrete-keeb-each-keystroke-carries-industrial-rhythm-elevating-the-experience-with-marble-like-smoothness-and-auditory-visual-harmony/" target="_blank">Keychron K2 HE Concrete Edition</a>, I was both intrigued and confused. On the one hand, I was aware of the existence of the standard keeb and that we'd given it <a href="https://www.pcgamer.com/hardware/gaming-keyboards/keychron-k2-he-review/" target="_blank">a massive 88% in our review</a>. The addition of a concrete shell for extra heft? Sounds interesting.</p><p>On the other hand, the marketing copy is outrageous. Try this on for size: "Each keystroke carries industrial rhythm, preserving the concrete's solid core while elevating the experience with marble-like smoothness and auditory-visual harmony."</p><p>With a description like that, I knew I had to try one for myself. So, I duly requested a review sample, and boy howdy is it heavy. Its 1.74 kg weight was compounded by the fact that my test model was sent to the office, which meant I had to stick it in my backpack to take home. On the train. With a long walk home from the station at the other end.</p><p>I am not a clever man. Anyway, I've spent the past month using the Keychron concrete keeb, and I imagine you're expecting me to say that it's a silly idea. A pure marketing gimmick. Something you definitely shouldn't consider dropping $200 on. </p><p>But in all honesty, I think it's one of the best keyboards I've ever used. And yes, the concrete shell is definitely a factor.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/rWwwiwzq7ZmPtp3JgmWyMg-1920-80.jpg" alt="A Keychron K2 HE Concrete Edition keyboard on a wooden desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/y5ad3Ft7Zi6Z9SdDH6d4Z-1920-80.jpg" alt="Various angles of a Keychron K2 HE Concrete Edition keyboard lit up in RGB lighting" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/SM7py39QVrjKrB38FaKKZ-1920-80.jpg" alt="Various angles of a Keychron K2 HE Concrete Edition keyboard lit up in RGB lighting" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>We want our gaming mice to be light. A concrete gaming mouse would be a silly device, even for someone like me who doesn't mind a touch of extra heft in a squeaker. But when it comes to <a href="https://www.pcgamer.com/best-gaming-keyboard/" target="_blank">gaming keyboards</a>, I think a dose of extra weight is actually a plus. Keychron is known for making remarkably well-built keebs, and the K2 HE Concrete Edition feels like the ultimate example of that. </p><p>The concrete outer shell is perfectly formed, with nary a moulding mark in sight. The OSA double-shot keycaps feel rounded yet crisp, heavy in their own right, and extremely satisfying under my fingertips. The side-mounted switches for the connection options (USB Type-C, Bluetooth and 2.4 GHz wireless, if you were wondering) are super positive.</p><p>It's about as heavy-duty as keyboards come, but it doesn't feel clumsy or overbuilt. Instead, it feels purposeful. Like a piece of industrial equipment that's had just enough of the rough edges rounded off to make for a compelling design.</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="sV6R4HTeY7qtHYoKLfLjW" name="Keychronkeeb3" alt="Various angles of a Keychron K2 HE Concrete Edition keyboard lit up in RGB lighting" src="https://cdn.mos.cms.futurecdn.net/sV6R4HTeY7qtHYoKLfLjW-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 weight also means that it really, really wants to stay anchored to my desk, even under panicked gaming conditions. My usual keyboard, a <a href="https://www.pcgamer.com/hardware/gaming-keyboards/glorious-gmmk-3-he-keyboard-review/#:~:text=Image%20credit%3A%20Future)-,Well%2C%20you%20get%20this,-.%20This%20stunning%2C%20fabulous" target="_blank">custom Glorious GMMK 3</a> with a brass plate in the bottom, is pretty good at staying where it is during a fast-paced FPS session. But the Keychron? I'm pretty sure it's pinning my entire setup down at this point.</p><p>Does it sound much different to a regular keeb? No, not really. But the switch feel is so good, and the keyboard so stable, I don't really mind. The included <a href="https://www.keychron.com/products/gateron-double-rail-magnetic-switch?variant=40784600694873" target="_blank">Gateron Double-Rail magnetic switches</a> come pre-lubed and have an actuation range of 0.2-3.8 mm, with a starting force of 40 g. </p>                    <div class= "tiktok-wrapper" style="min-height: 750px;"><blockquote class="tiktok-embed" cite="https://www.tiktok.com/@pcgamer_mag/video/7611652834479721761" data-video-id="7611652834479721761" style="max-width: 605px; min-width: 325px;">                        <section>                            <a target="_blank" title="@pcgamer_mag" href="https://www.tiktok.com/@pcgamer_mag">@pcgamer_mag</a>                            <p></p><a target="_blank" title="♬ original sound  - PC Gamer" href="https://www.tiktok.com/music/original-sound-PC-Gamer-7611652874585606945">♬ original sound  - PC Gamer</a></section>                    </blockquote></div>                <p>I'm aware those numbers mean little on paper, but trust me, you want a set of these. The resistance is perfect, with a delicious weight that ups my typing accuracy considerably—and they're still ultra-quick for gaming, too. This keyboard and switch combo also supports dynamic rapid trigger, last key priority, and adjustable actuation points, all of which can be tweaked to your heart's content.</p><div><blockquote><p>...if you're a fan of the shade, I'd say you should definitely consider a K2 HE Concrete Edition for yourself</p></blockquote></div><p>In practice, I care little for such things. I care about how it feels underneath my fingers, and these switches, in combination with the excellent keycaps and overall weight, make for a keyboard that I'm convinced is nothing short of magnificent.</p><p>There is one thing holding me back from switching it in as my permanent daily driver, though, and you're probably going to think it's silly. But I really don't like the colour.</p><p>Concrete is not the most aesthetic of materials when it comes to colour tone, and while Keychron has gone to the effort of making the PBT keycaps match the frame, the whole thing ends up being a shade of grey I don't particularly enjoy. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="KgXWVS54MoThmXM7TvFUDe" name="keychronkeeb7" alt="A Keychron K2 HE Concrete Edition gaming keyboard on a desk, next to a gaming PC" src="https://cdn.mos.cms.futurecdn.net/KgXWVS54MoThmXM7TvFUDe-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>Plus, my setup is all black and red, and the K2 HE looks... well, out of place when it's all put together. It's also got some pretty tame RGB lighting, and simply isn't a match for my other models in the looks department. Ashamed as I am to admit it, I'm enough of a neurotic human being for that to bother me. Or really shallow, you pick. </p><p>Sitting here now, staring at the keeb in front of me, I might be able to get past it. Time will tell, I suppose.</p><p>But if you're a fan of the shade, I'd say you should definitely consider a K2 HE Concrete Edition for yourself. Even the <a href="https://www.keychron.com/collections/keychron-k-he-landing-page/products/keychron-k2-he-wireless-magnetic-switch-custom-keyboard-concrete-edition" target="_blank">$200 price tag</a> is pretty bearable, given the quality of what you end up receiving and the fact that <a href="https://www.pcgamer.com/hardware/gaming-keyboards/asus-rog-azoth-extreme-review/" target="_blank">some other high-end gaming keyboards</a> can be priced into the stratosphere.</p><p>Can those models be used as boat anchors in a pinch? I think not. Now, if Keychron would spray one down in black paint (and boost the RGB), I think I'd be truly happy. Yes, I'm picky when it comes to gaming hardware. In this job, are you really that surprised?</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Logitech G512 X review ]]></title>
                                                                                                <dc:content><![CDATA[ <div data-widget-type="review" data-model-name="Logitech G512 X" data-widget-title=""></div><p>In February, we reviewed the impeccable <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">Logitech G Pro X2 Superstrike</a> and called it the '<a href="https://www.youtube.com/watch?v=XPgujnriEIU" target="_blank">biggest gaming mouse innovation in a decade</a>'. That's a pretty big win for Logitech, and though the Logitech G512 X doesn't feel like as much of a revolution for its market, it does feel like it could be just as important. That's for a multitude of reasons. </p><p>The first is its 'Dual Swap' functionality. This means that 39 of its switch beds can be swapped between analogue and mechanical switches, thanks to the tunnelling magnetoresistance (TMR) sensors lying beneath. This means you can trade some switches for better precision, custom actuation, and rapid trigger, and leave other keys as mechanical for that classic typing feel and feedback. It also gives you a broader range of switches to use, which is a good thing in my book.</p><p>If you have found the perfect mechanical switch in your current keyboard, this new switch bed technology means you can pop your old switches in, and still get the sweet, sweet benefits of analogue in keys that benefit the most from it. The biggest benefit of Dual Swap to me is not the ability to add analogue switches to an otherwise mechanical keyboard, but instead mechanical switches to an otherwise analogue one.</p><p>In practice, I found the perfect setup for me was to pop analogue switches on WASD, and maybe the space bar, and use mechanical ones for the rest. </p><div  class="fancy-box"><div class="fancy_box-title">Logitech G512 X 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="GxmLE6K4PdX5WV8PM7MigT" name="IMG_8889" caption="" alt="The Logitech G512 X gaming keyboard from the bottom on a black table" src="https://cdn.mos.cms.futurecdn.net/GxmLE6K4PdX5WV8PM7MigT-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>Switches included:</strong> Mechanical (98 keys) + analogue (9 keys)<br><strong>Mechanical switch: </strong>Linear or tactile<br><strong>Analogue switch:</strong> Gateron KS-20<br><strong>Analogue switch beds:</strong> 39<br><strong>Keycaps:</strong> PBT, double-shot<br><strong>Lighting:</strong> RGB, controllable in software<br><strong>Connection type:</strong> Wired, USB Type-C<br><strong>Layout:</strong> 98 key (75 also available)<br><strong>Extra: </strong>SAPP rings, keycap/switch puller storage, two media dials<br><strong>Weight: </strong>1000 g<br><strong>Price: </strong>$200 | £200</p></div></div><p>This is a bit of magic to me. The caps and switches come out easily, and they're even hot swappable, so you don't need to unplug the keyboard before you can start using the keys again. The keyboard has a small 'scan' button at the top left, which not only registers which switches you're using but highlights them with RGB so you can remember them. </p><p>The G512 X comes with nine analogue switches in the box/keyboard: Gateron's KS-20. One thing worth noting is that the likes of the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/wooting-80he-review/" target="_blank">Wooting 80HE</a> have all analogue switches, so you can get more for less/equal money (though they're Hall effect rather than TMR). Personally, though, I never really found a need to use all 39 Dual Swap switch beds in the G512 X, even if I had more switches available. </p><p>The G512 X includes a handful of SAPP (second actuation pressure point) rings, which are small rubber rings that sit underneath the keycap, offering resistance as you hit 2 mm actuation. This is designed for multipoint actuation, so you can set the likes of the W key to both walk and sprint, with walk at 0.1 mm to 2 mm and sprint at 2 mm and above. It's a relatively niche feature, but noticeable in practice. The SAPP rings bring me to the next part of what makes the G512 X feel special: its storage. </p><p>I had a chance to chat with Logitech in its London office just before getting my hands on the board, and I was told its design is an homage to Logitech's Swiss roots. After getting some time with it, I can say that statement feels true. It's just very smartly packed together, clean, and efficient. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/KhGsRwvNV24LjfPSmSDCYT-1920-80.jpg" alt="The Logitech G512 X gaming keyboard from the top, with the switch comparment and extra buttons showing" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/JbDVs44AhmVR6dNLLUC2ST-1920-80.jpg" alt="The Logitech G512 X gaming keyboard from the back, showing a compartment with extra switches" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/WV4WCUSMq8hdAGyXD4aouS-1920-80.jpg" alt="The Logitech G512 X gaming keyboard, from the back, showing that the switch puller is its feet" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/PEMgfP3ZQee3UxZXZXTu5T-1920-80.jpg" alt="The Logitech G512 X gaming keyboard spare switches and SAPP rings" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>At the top of the keyboard is a small storage space for nine switches. Then, underneath that is space for five SAPP rings. The feet of the keyboard double as switch and key pullers, and not one inch of it looks out of place. I have been testing the 98-key black and purple model, and I can say the Evangelion fan in me is very happy. </p><p>Speaking of looks, the G512 X has a light bar down the bottom of the keyboard, and each key is individually lit. The light bar consists of 33 different lights, making it super customizable in Logitech's software. It's a lovely look, and one of the dials on the top right is automatically set to control RGB, making it easy to tone down when you want a little less visual oomph. </p><p>It's actually important that the keyboard's RGB looks pretty and stands out, as it's almost necessary on much of Logitech's gear. The keys are hard to make out, especially in darker rooms, without it. Luckily, I see no reason to go without here. </p><p>Logitech tells me that the G512 X completes an aesthetic ecosystem in the G5 range. That includes the <a href="https://www.pcgamer.com/hardware/gaming-headsets/logitech-g522-lightspeed-gaming-headset-review/" target="_blank">G522</a> gaming headset and the G502 X Plus gaming mouse. The mouse is missing the purple, but it does have a pretty RGB streak down the centre, and the G522 gaming headset's purple band and lit-up side certainly fit the aesthetic. They do look pretty together, though I'm happy for my gear not to match if it looks appealing by itself. The G522's microphone is certainly standout, but the G512 X is the obvious standout here in both quality and look. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/kEHviJ9HjcpJniBCWggJmT-1920-80.jpg" alt="The Logitech G512 X gaming keyboard" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/8KRrxA6C7Uu2YSNaZGx3nT-1920-80.jpg" alt="The Logitech G512 X gaming keyboard from the bottom, with the palm rest" /><figcaption>It's a simple palm rest but effective at enhancing the light bar.<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/CGBgCDPfKN3bJUaSsRSLeT-1920-80.jpg" alt="The Logitech G512 X gaming keyboard from the bottom, showing the light bar" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/PTQJFp4H2texfKQ5FZM7hS-1920-80.jpg" alt="The Logitech G512 X gaming keyboard with RGB on without a handful of keycaps" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>I've also managed to get my grubby mitts on the G512 X palm rest, which costs $45 for the 98-key model. The palm rest doesn't click into place as many do and instead sits just below the light bar. Made from acrylic, the light bar shines through it, and as much as it might pain me to say about a $45 palm rest, I get the vision. </p><p>It further accentuates the lights from the keyboard and feels comfortable under the palm, even though it can technically move about as you play. The benefit of it being acrylic is that it's easy to wash, too, should you find yourself mucking up your palm rests (wouldn't be me). I think I'd struggle to justify this cost if I'd just bought the keyboard myself, but it does contribute to the look and feel. </p><p>Speaking of feel, the G512 X is comfortable to type on. The switches are slightly muted, and the double-shot keycaps are smooth to press. The lighting certainly helps when I've lost my position on the keyboard, and I don't have any complaints in this regard. Broadly, I'd say it gets nothing wrong in regard to typing feel, sitting around the middle of the pile relative to other keyboards I've tried. </p><p>For gaming, though, the G512 X is a bit of a beast. TMR switches make for a super-precise feel, and all of the software customisation only adds to it. Rapid trigger means I can press quicker than a traditional keyboard, and per-key actuation means hitting the most important keys even quicker. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/mb8ixHE3QZbZUhU5NojLjT-1920-80.jpg" alt="The Logitech G512 X gaming keyboard from the front, outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/FCgsFnWbcUiLbQW75yzXkT-1920-80.jpg" alt="The Logitech G512 X gaming keyboard from the back, showing off the switch compartment" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/5dBoQb3rLvXNb5aDzoidpT-1920-80.jpg" alt="The Logitech G512 X gaming keyboard from the front left, held outside" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>In Counter-Strike 2, I found it easy to stop walking as soon as I let go, which naturally helps with aim, and getting across the keyboard to my grenades and other weapons feels easy to do. The keyboard is well-sized for gaming, and the keys feel distinct. The hybrid switch bed design is used in most of the keys you would use with your left hand, plus the arrow keys, with the rest of the keyboard being standard mechanical. I never found myself wishing others were Dual Swap compatible, so I'd say Logitech has done a good job picking the most important ones. </p><p>I've also been testing out the keyboard in plenty of single-player games like Tides of Tomorrow and Crisol: Theater of Idols, and I've found myself playing for hours with little fatigue. It's a snappy keyboard that truly shines in competitive games, but doesn't hold back in comfort either. </p><div><blockquote><p>As far as build quality is concerned, I'm not concerned.</p></blockquote></div><p>As far as build quality is concerned, I'm not concerned. It's not as weighty and firm as some Wooting / Cherry keyboards I've had time with, but it's certainly not weak. It feels well-balanced for my desk, with it being easy to move on purpose, but hard to move by accident. </p><p>If you feel like you will struggle to remember which keys have Dual Swap, you can just look under the switches. Dual Swap keys have purple in the base underneath them, and plain 'ol mechanical keys are black underneath. Either way, both types of switch beds have a max polling rate of 8,000 Hz.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/R6ZyfFpYMfh4NTt5QDkKnT-1920-80.jpg" alt="The Logitech G512 X gaming keyboard from the side, showing off the switch beds" /><figcaption>Note the two switch beds on the right have black under them, where those to the left are purple.  <small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/DoctJXsyebe5Dq3aupqrfT-1920-80.jpg" alt="The Logitech G512 X gaming keyboard from the top left hand side" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/fPsAhaBhv3aH4NepT4pAiT-1920-80.jpg" alt="The Logitech G512 X gaming keyboard from the bottom, in a hand, outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/KhGsRwvNV24LjfPSmSDCYT-1920-80.jpg" alt="The Logitech G512 X gaming keyboard from the top, with the switch comparment and extra buttons showing" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>This is not the first TMR keyboard I've tried, but it is the first Logitech TMR keyboard. And I can say the G512 X offers a much more appealing package than the likes of the<a href="https://www.pcgamer.com/hardware/gaming-keyboards/cherry-xtrfy-mx-8-2-pro-tmr-tkl-review/" target="_blank"> Cherry Xtrfy MX 8.2 Pro TMR TKL</a> and <a href="https://www.pcgamer.com/hardware/gaming-keyboards/cherry-k5-pro-tmr-compact-review/" target="_blank">Cherry K5 Pro TMR Compact</a>. It looks more appealing, feels better to type on, and for what it offers, it is better priced, too. </p><p>The only thing missing is a wireless variant, but I wouldn't recommend using a wireless keyboard and 8,000 Hz polling at the same time, because the latter uses a lot more power than, say, 1 kHz polling. Given that a keyboard spends most of its time in the same position on your desk, you probably don't want to be dealing with charging it on a regular basis anyway.</p><div  class="fancy-box"><div class="fancy_box-title">Buy if…</div><div class="fancy_box_body"><p class="fancy-box__body-text">✅ <strong>You want a customizable keeb: </strong>From its software to its hardware, the G512 X makes the modding geek in me happy, and does it in an accessible way. <br><br>✅ <strong>You are looking to play competitively: </strong>With TMR switches and 8,000 Hz polling, this gaming keyboard is far more than just a pretty face.</p></div></div><div  class="fancy-box"><div class="fancy_box-title">Don't buy if…</div><div class="fancy_box_body"><p class="fancy-box__body-text">❌ <strong>You're on a budget: </strong>Though it's reasonably priced for the specs, $200 is nothing to sniff at, and certainly not budget. <br><br>❌ <strong>You want wireless: </strong>Neither of the two major models offers a wireless mode, so you will have to look elsewhere if you want to declutter your desk even more.</p></div></div><p>There's an argument to be made for the smaller 75-key G512 X being wireless, though, so you can pop it in a backpack and bring it outside with you. It would be a tad brave of you to bring a $200 keyboard in your backpack, but I can certainly see why one might want it wireless. </p><p>Logitech's own G Hub software is necessary to swap actuation, get updates, and set the keyboard to 8,000 Hz polling, and I can say it has gotten much better over the last few years. Back in 2024, I moved away from Logitech almost entirely, and that's partly down to how much of a problem I would run into with G Hub. Now, it works pretty much as intended, and the G512 X is easy to customise as a result. Each light on the light bar can be configured, giving you access to patterns, and it's all rather neat. </p><p>'Neat' is a good way of describing the G512 X overall. It has plenty of features that I might not use day-to-day, but it allows a level of customisation that feels incredibly rare for major gaming keyboard brands. It makes me feel like a bit of a tinkerer, yet it's much easier to use than anything custom. And, it's offering all those extra features without a price hike either.</p><p>Competitive-level TMR gaming keyboards are already fetching the G512 X's price point, without including all of the great design, plus it has a striking light bar and sweet aesthetic. If the G512 X were in my budget, I can't think of another keyboard that would take its spot. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-keyboards/logitech-g512-x-review/</link>
                                                                            <description>
                            <![CDATA[ Logitech's first foray into TMR switches is a triumph, and easily one of the best gaming keyboards I've used in recent memory. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">KAYVxexYi6KWXooFXNjdni</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/2CFAqkbavRHGfpd2GuKGoT-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 28 Apr 2026 07:01:00 +0000</pubDate>                                                                                                                                <updated>Wed, 29 Apr 2026 11:09:17 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming Keyboards]]></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/2CFAqkbavRHGfpd2GuKGoT-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Logitech G512 X gaming keyboard   from the front left, outside, showing off the light bar]]></media:description>                                                            <media:text><![CDATA[The Logitech G512 X gaming keyboard   from the front left, outside, showing off the light bar]]></media:text>
                                <media:title type="plain"><![CDATA[The Logitech G512 X gaming keyboard   from the front left, outside, showing off the light bar]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/2CFAqkbavRHGfpd2GuKGoT-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div data-widget-type="review" data-model-name="Logitech G512 X" data-widget-title=""></div><p>In February, we reviewed the impeccable <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">Logitech G Pro X2 Superstrike</a> and called it the '<a href="https://www.youtube.com/watch?v=XPgujnriEIU" target="_blank">biggest gaming mouse innovation in a decade</a>'. That's a pretty big win for Logitech, and though the Logitech G512 X doesn't feel like as much of a revolution for its market, it does feel like it could be just as important. That's for a multitude of reasons. </p><p>The first is its 'Dual Swap' functionality. This means that 39 of its switch beds can be swapped between analogue and mechanical switches, thanks to the tunnelling magnetoresistance (TMR) sensors lying beneath. This means you can trade some switches for better precision, custom actuation, and rapid trigger, and leave other keys as mechanical for that classic typing feel and feedback. It also gives you a broader range of switches to use, which is a good thing in my book.</p><p>If you have found the perfect mechanical switch in your current keyboard, this new switch bed technology means you can pop your old switches in, and still get the sweet, sweet benefits of analogue in keys that benefit the most from it. The biggest benefit of Dual Swap to me is not the ability to add analogue switches to an otherwise mechanical keyboard, but instead mechanical switches to an otherwise analogue one.</p><p>In practice, I found the perfect setup for me was to pop analogue switches on WASD, and maybe the space bar, and use mechanical ones for the rest. </p><div  class="fancy-box"><div class="fancy_box-title">Logitech G512 X 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="GxmLE6K4PdX5WV8PM7MigT" name="IMG_8889" caption="" alt="The Logitech G512 X gaming keyboard from the bottom on a black table" src="https://cdn.mos.cms.futurecdn.net/GxmLE6K4PdX5WV8PM7MigT-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>Switches included:</strong> Mechanical (98 keys) + analogue (9 keys)<br><strong>Mechanical switch: </strong>Linear or tactile<br><strong>Analogue switch:</strong> Gateron KS-20<br><strong>Analogue switch beds:</strong> 39<br><strong>Keycaps:</strong> PBT, double-shot<br><strong>Lighting:</strong> RGB, controllable in software<br><strong>Connection type:</strong> Wired, USB Type-C<br><strong>Layout:</strong> 98 key (75 also available)<br><strong>Extra: </strong>SAPP rings, keycap/switch puller storage, two media dials<br><strong>Weight: </strong>1000 g<br><strong>Price: </strong>$200 | £200</p></div></div><p>This is a bit of magic to me. The caps and switches come out easily, and they're even hot swappable, so you don't need to unplug the keyboard before you can start using the keys again. The keyboard has a small 'scan' button at the top left, which not only registers which switches you're using but highlights them with RGB so you can remember them. </p><p>The G512 X comes with nine analogue switches in the box/keyboard: Gateron's KS-20. One thing worth noting is that the likes of the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/wooting-80he-review/" target="_blank">Wooting 80HE</a> have all analogue switches, so you can get more for less/equal money (though they're Hall effect rather than TMR). Personally, though, I never really found a need to use all 39 Dual Swap switch beds in the G512 X, even if I had more switches available. </p><p>The G512 X includes a handful of SAPP (second actuation pressure point) rings, which are small rubber rings that sit underneath the keycap, offering resistance as you hit 2 mm actuation. This is designed for multipoint actuation, so you can set the likes of the W key to both walk and sprint, with walk at 0.1 mm to 2 mm and sprint at 2 mm and above. It's a relatively niche feature, but noticeable in practice. The SAPP rings bring me to the next part of what makes the G512 X feel special: its storage. </p><p>I had a chance to chat with Logitech in its London office just before getting my hands on the board, and I was told its design is an homage to Logitech's Swiss roots. After getting some time with it, I can say that statement feels true. It's just very smartly packed together, clean, and efficient. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/KhGsRwvNV24LjfPSmSDCYT-1920-80.jpg" alt="The Logitech G512 X gaming keyboard from the top, with the switch comparment and extra buttons showing" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/JbDVs44AhmVR6dNLLUC2ST-1920-80.jpg" alt="The Logitech G512 X gaming keyboard from the back, showing a compartment with extra switches" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/WV4WCUSMq8hdAGyXD4aouS-1920-80.jpg" alt="The Logitech G512 X gaming keyboard, from the back, showing that the switch puller is its feet" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/PEMgfP3ZQee3UxZXZXTu5T-1920-80.jpg" alt="The Logitech G512 X gaming keyboard spare switches and SAPP rings" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>At the top of the keyboard is a small storage space for nine switches. Then, underneath that is space for five SAPP rings. The feet of the keyboard double as switch and key pullers, and not one inch of it looks out of place. I have been testing the 98-key black and purple model, and I can say the Evangelion fan in me is very happy. </p><p>Speaking of looks, the G512 X has a light bar down the bottom of the keyboard, and each key is individually lit. The light bar consists of 33 different lights, making it super customizable in Logitech's software. It's a lovely look, and one of the dials on the top right is automatically set to control RGB, making it easy to tone down when you want a little less visual oomph. </p><p>It's actually important that the keyboard's RGB looks pretty and stands out, as it's almost necessary on much of Logitech's gear. The keys are hard to make out, especially in darker rooms, without it. Luckily, I see no reason to go without here. </p><p>Logitech tells me that the G512 X completes an aesthetic ecosystem in the G5 range. That includes the <a href="https://www.pcgamer.com/hardware/gaming-headsets/logitech-g522-lightspeed-gaming-headset-review/" target="_blank">G522</a> gaming headset and the G502 X Plus gaming mouse. The mouse is missing the purple, but it does have a pretty RGB streak down the centre, and the G522 gaming headset's purple band and lit-up side certainly fit the aesthetic. They do look pretty together, though I'm happy for my gear not to match if it looks appealing by itself. The G522's microphone is certainly standout, but the G512 X is the obvious standout here in both quality and look. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/kEHviJ9HjcpJniBCWggJmT-1920-80.jpg" alt="The Logitech G512 X gaming keyboard" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/8KRrxA6C7Uu2YSNaZGx3nT-1920-80.jpg" alt="The Logitech G512 X gaming keyboard from the bottom, with the palm rest" /><figcaption>It's a simple palm rest but effective at enhancing the light bar.<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/CGBgCDPfKN3bJUaSsRSLeT-1920-80.jpg" alt="The Logitech G512 X gaming keyboard from the bottom, showing the light bar" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/PTQJFp4H2texfKQ5FZM7hS-1920-80.jpg" alt="The Logitech G512 X gaming keyboard with RGB on without a handful of keycaps" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>I've also managed to get my grubby mitts on the G512 X palm rest, which costs $45 for the 98-key model. The palm rest doesn't click into place as many do and instead sits just below the light bar. Made from acrylic, the light bar shines through it, and as much as it might pain me to say about a $45 palm rest, I get the vision. </p><p>It further accentuates the lights from the keyboard and feels comfortable under the palm, even though it can technically move about as you play. The benefit of it being acrylic is that it's easy to wash, too, should you find yourself mucking up your palm rests (wouldn't be me). I think I'd struggle to justify this cost if I'd just bought the keyboard myself, but it does contribute to the look and feel. </p><p>Speaking of feel, the G512 X is comfortable to type on. The switches are slightly muted, and the double-shot keycaps are smooth to press. The lighting certainly helps when I've lost my position on the keyboard, and I don't have any complaints in this regard. Broadly, I'd say it gets nothing wrong in regard to typing feel, sitting around the middle of the pile relative to other keyboards I've tried. </p><p>For gaming, though, the G512 X is a bit of a beast. TMR switches make for a super-precise feel, and all of the software customisation only adds to it. Rapid trigger means I can press quicker than a traditional keyboard, and per-key actuation means hitting the most important keys even quicker. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/mb8ixHE3QZbZUhU5NojLjT-1920-80.jpg" alt="The Logitech G512 X gaming keyboard from the front, outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/FCgsFnWbcUiLbQW75yzXkT-1920-80.jpg" alt="The Logitech G512 X gaming keyboard from the back, showing off the switch compartment" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/5dBoQb3rLvXNb5aDzoidpT-1920-80.jpg" alt="The Logitech G512 X gaming keyboard from the front left, held outside" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>In Counter-Strike 2, I found it easy to stop walking as soon as I let go, which naturally helps with aim, and getting across the keyboard to my grenades and other weapons feels easy to do. The keyboard is well-sized for gaming, and the keys feel distinct. The hybrid switch bed design is used in most of the keys you would use with your left hand, plus the arrow keys, with the rest of the keyboard being standard mechanical. I never found myself wishing others were Dual Swap compatible, so I'd say Logitech has done a good job picking the most important ones. </p><p>I've also been testing out the keyboard in plenty of single-player games like Tides of Tomorrow and Crisol: Theater of Idols, and I've found myself playing for hours with little fatigue. It's a snappy keyboard that truly shines in competitive games, but doesn't hold back in comfort either. </p><div><blockquote><p>As far as build quality is concerned, I'm not concerned.</p></blockquote></div><p>As far as build quality is concerned, I'm not concerned. It's not as weighty and firm as some Wooting / Cherry keyboards I've had time with, but it's certainly not weak. It feels well-balanced for my desk, with it being easy to move on purpose, but hard to move by accident. </p><p>If you feel like you will struggle to remember which keys have Dual Swap, you can just look under the switches. Dual Swap keys have purple in the base underneath them, and plain 'ol mechanical keys are black underneath. Either way, both types of switch beds have a max polling rate of 8,000 Hz.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/R6ZyfFpYMfh4NTt5QDkKnT-1920-80.jpg" alt="The Logitech G512 X gaming keyboard from the side, showing off the switch beds" /><figcaption>Note the two switch beds on the right have black under them, where those to the left are purple.  <small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/DoctJXsyebe5Dq3aupqrfT-1920-80.jpg" alt="The Logitech G512 X gaming keyboard from the top left hand side" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/fPsAhaBhv3aH4NepT4pAiT-1920-80.jpg" alt="The Logitech G512 X gaming keyboard from the bottom, in a hand, outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/KhGsRwvNV24LjfPSmSDCYT-1920-80.jpg" alt="The Logitech G512 X gaming keyboard from the top, with the switch comparment and extra buttons showing" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>This is not the first TMR keyboard I've tried, but it is the first Logitech TMR keyboard. And I can say the G512 X offers a much more appealing package than the likes of the<a href="https://www.pcgamer.com/hardware/gaming-keyboards/cherry-xtrfy-mx-8-2-pro-tmr-tkl-review/" target="_blank"> Cherry Xtrfy MX 8.2 Pro TMR TKL</a> and <a href="https://www.pcgamer.com/hardware/gaming-keyboards/cherry-k5-pro-tmr-compact-review/" target="_blank">Cherry K5 Pro TMR Compact</a>. It looks more appealing, feels better to type on, and for what it offers, it is better priced, too. </p><p>The only thing missing is a wireless variant, but I wouldn't recommend using a wireless keyboard and 8,000 Hz polling at the same time, because the latter uses a lot more power than, say, 1 kHz polling. Given that a keyboard spends most of its time in the same position on your desk, you probably don't want to be dealing with charging it on a regular basis anyway.</p><div  class="fancy-box"><div class="fancy_box-title">Buy if…</div><div class="fancy_box_body"><p class="fancy-box__body-text">✅ <strong>You want a customizable keeb: </strong>From its software to its hardware, the G512 X makes the modding geek in me happy, and does it in an accessible way. <br><br>✅ <strong>You are looking to play competitively: </strong>With TMR switches and 8,000 Hz polling, this gaming keyboard is far more than just a pretty face.</p></div></div><div  class="fancy-box"><div class="fancy_box-title">Don't buy if…</div><div class="fancy_box_body"><p class="fancy-box__body-text">❌ <strong>You're on a budget: </strong>Though it's reasonably priced for the specs, $200 is nothing to sniff at, and certainly not budget. <br><br>❌ <strong>You want wireless: </strong>Neither of the two major models offers a wireless mode, so you will have to look elsewhere if you want to declutter your desk even more.</p></div></div><p>There's an argument to be made for the smaller 75-key G512 X being wireless, though, so you can pop it in a backpack and bring it outside with you. It would be a tad brave of you to bring a $200 keyboard in your backpack, but I can certainly see why one might want it wireless. </p><p>Logitech's own G Hub software is necessary to swap actuation, get updates, and set the keyboard to 8,000 Hz polling, and I can say it has gotten much better over the last few years. Back in 2024, I moved away from Logitech almost entirely, and that's partly down to how much of a problem I would run into with G Hub. Now, it works pretty much as intended, and the G512 X is easy to customise as a result. Each light on the light bar can be configured, giving you access to patterns, and it's all rather neat. </p><p>'Neat' is a good way of describing the G512 X overall. It has plenty of features that I might not use day-to-day, but it allows a level of customisation that feels incredibly rare for major gaming keyboard brands. It makes me feel like a bit of a tinkerer, yet it's much easier to use than anything custom. And, it's offering all those extra features without a price hike either.</p><p>Competitive-level TMR gaming keyboards are already fetching the G512 X's price point, without including all of the great design, plus it has a striking light bar and sweet aesthetic. If the G512 X were in my budget, I can't think of another keyboard that would take its spot. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Attention keyboard nerds: This website lets you hear the sound of 36 different mechanical keebs, switches, and more as you type ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Are we all here? Excellent. I've gathered the keyboard nerd community today to show you <a href="https://sheets.works/data-viz/keyboard-sounds" target="_blank">The Listening Museum</a>, a website that allows you to select from 36 different typing devices and switches, and, err, type on them. Well, you get to type in a box, anyway. But <em>it plays the sounds of each keeb/switch in real time. </em></p><p>See, that was worth getting out of bed for, wasn't it? The first keyboard on the list is the truly iconic <a href="https://sheets.works/data-viz/keyboard-sounds#ibm-model-m" target="_blank">IBM Model M</a>, as is right and proper (via <a href="https://www.techspot.com/news/112159-interactive-listening-museum-you-compare-sounds-36-mechanical.html" target="_blank">Techspot</a>). After that comes a whole host of different keebs and switches, which may prove very useful if you're looking to try out something new in the near future.</p><p>It's not just traditional mechanical computer keyboards and switches that are represented, though, as there's also the odd typewriter on the list. I'm a particular fan of the <a href="https://sheets.works/data-viz/keyboard-sounds#kbs-typewriter" target="_blank">IBM Selectric-era typewriter</a>. Yes, that's the sound of Mad Men-era advertising executives writing bizarre copy, and I'm totally here for it. You can almost smell the cigarette smoke and cheap whiskey.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xm4jRO"></div>                            </div>                            <script src="https://kwizly.com/embed/Xm4jRO.js" async></script><p>Each sound gets an onomatopoeic description, too. For the "<a href="https://sheets.works/data-viz/keyboard-sounds#daktilo-typewriter-classic" target="_blank">vintage typewriter</a>" model, it is as follows:</p><p>"Steel typebar slaps a rubber platen through an inked ribbon, inside a steel resonant frame, every strike is a mini-hammer hitting a drum. Carriage return ding is an actual bell. The sound is not comparable to any modern switch."</p><p>Gosh, it's almost poetry. It's unclear if said description was actually typed on each example, but I'm imagining so as it's more fun. Imagine typing this on an <a href="https://www.pcgamer.com/hhkb-professional-hybrid-type-s-review/" target="_blank">HHKB Pro Hybrid</a> with <a href="https://hhkeyboard.us/blog/topre-switches" target="_blank">Topre switches</a>, for example:</p><p>"Capacitive sensing means no physical switch contact, the conical rubber dome absorbs almost all high-frequency energy before the POM slider bottoms on the dome collar, so what you hear is a low, damped thump. </p><p>"PBT domed keycaps + dense chassis reinforce that bass signature. No clicky leaf, no metal-on-metal: pure low-mid thock."</p><p>Yes, you keyboard enthusiasts can be quite intense—and having tested quite a few for this very website, I'd like to count myself among you. Where is the clubhouse, exactly? I was sent to an abandoned warehouse in the middle of Birmingham, and I'm pretty sure the man on the door didn't appreciate my use of the word "creamy". Oh well.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-keyboards/attention-keyboard-nerds-this-website-lets-you-hear-the-sound-of-36-different-mechanical-keebs-switches-and-more-as-you-type/</link>
                                                                            <description>
                            <![CDATA[ Most of them go "clickety clack." Sorry for spoilers. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Nqvwf5Sw9hmh86rzfLohfU</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/9npfj6hFw7Gh3KbdPb2rHJ-1920-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Fri, 24 Apr 2026 15:35:04 +0000</pubDate>                                                                                                                                <updated>Fri, 24 Apr 2026 15:35:24 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming Keyboards]]></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/png" url="https://cdn.mos.cms.futurecdn.net/9npfj6hFw7Gh3KbdPb2rHJ-1920-80.png">
                                                            <media:credit><![CDATA[Button Mash]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Two nervous hands look at a typewriter in Final Sentence, a typing battle royale game.]]></media:description>                                                            <media:text><![CDATA[Two nervous hands look at a typewriter in Final Sentence, a typing battle royale game.]]></media:text>
                                <media:title type="plain"><![CDATA[Two nervous hands look at a typewriter in Final Sentence, a typing battle royale game.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/9npfj6hFw7Gh3KbdPb2rHJ-1920-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Are we all here? Excellent. I've gathered the keyboard nerd community today to show you <a href="https://sheets.works/data-viz/keyboard-sounds" target="_blank">The Listening Museum</a>, a website that allows you to select from 36 different typing devices and switches, and, err, type on them. Well, you get to type in a box, anyway. But <em>it plays the sounds of each keeb/switch in real time. </em></p><p>See, that was worth getting out of bed for, wasn't it? The first keyboard on the list is the truly iconic <a href="https://sheets.works/data-viz/keyboard-sounds#ibm-model-m" target="_blank">IBM Model M</a>, as is right and proper (via <a href="https://www.techspot.com/news/112159-interactive-listening-museum-you-compare-sounds-36-mechanical.html" target="_blank">Techspot</a>). After that comes a whole host of different keebs and switches, which may prove very useful if you're looking to try out something new in the near future.</p><p>It's not just traditional mechanical computer keyboards and switches that are represented, though, as there's also the odd typewriter on the list. I'm a particular fan of the <a href="https://sheets.works/data-viz/keyboard-sounds#kbs-typewriter" target="_blank">IBM Selectric-era typewriter</a>. Yes, that's the sound of Mad Men-era advertising executives writing bizarre copy, and I'm totally here for it. You can almost smell the cigarette smoke and cheap whiskey.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xm4jRO"></div>                            </div>                            <script src="https://kwizly.com/embed/Xm4jRO.js" async></script><p>Each sound gets an onomatopoeic description, too. For the "<a href="https://sheets.works/data-viz/keyboard-sounds#daktilo-typewriter-classic" target="_blank">vintage typewriter</a>" model, it is as follows:</p><p>"Steel typebar slaps a rubber platen through an inked ribbon, inside a steel resonant frame, every strike is a mini-hammer hitting a drum. Carriage return ding is an actual bell. The sound is not comparable to any modern switch."</p><p>Gosh, it's almost poetry. It's unclear if said description was actually typed on each example, but I'm imagining so as it's more fun. Imagine typing this on an <a href="https://www.pcgamer.com/hhkb-professional-hybrid-type-s-review/" target="_blank">HHKB Pro Hybrid</a> with <a href="https://hhkeyboard.us/blog/topre-switches" target="_blank">Topre switches</a>, for example:</p><p>"Capacitive sensing means no physical switch contact, the conical rubber dome absorbs almost all high-frequency energy before the POM slider bottoms on the dome collar, so what you hear is a low, damped thump. </p><p>"PBT domed keycaps + dense chassis reinforce that bass signature. No clicky leaf, no metal-on-metal: pure low-mid thock."</p><p>Yes, you keyboard enthusiasts can be quite intense—and having tested quite a few for this very website, I'd like to count myself among you. Where is the clubhouse, exactly? I was sent to an abandoned warehouse in the middle of Birmingham, and I'm pretty sure the man on the door didn't appreciate my use of the word "creamy". Oh well.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Framework is building its own keyboard and will even help you make your own ]]></title>
                                                                                                <dc:content><![CDATA[ <p>As well as announcing a new object of my affections with the <a href="https://www.pcgamer.com/hardware/gaming-laptops/framework-just-announced-its-own-macbook-pro-for-linux-users" target="_blank">Framework 13 Pro laptop</a>, the eponymous company has done something altogether more unexpected: it's unveiled a new wireless keyboard. A wireless keyboard with a built-in trackpad, specifically for living room or sim rig use.</p><p>Not something I had on my 2026 bingo card at all, but I am absolutely here for it. It came out of the <a href="https://www.pcgamer.com/hardware/gaming-pcs/framework-desktop-pc-review/" target="_blank">Framework Desktop PC</a> testing and using one particular keyboard/touchpad combo that was popular, but one that wasn't particularly well-liked. </p><p>"We knew we could do better, so we did!" So says a blog post shared with us about Framework's new Touchpad Keyboard preview. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W099kO"></div>                            </div>                            <script src="https://kwizly.com/embed/W099kO.js" async></script><p>The new board basically takes the same keyboard and touchpad architecture that the company built into its recent, small-scale Framework 12 laptops. Which does mean there's none of the fancy haptics from the new Framework 13 Pro touchpads, but it does mean you're getting decent chiclet-style low-profile keys with 1.5 mm travel.</p><p>The touchpad itself is a clickable Windows Precision Touchpad, which means you'll get access to all the multi-digit gestures your heart desires from either Windows or Linux operating systems.</p><p>It reminds me a little of the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/kinesis-form-review/" target="_blank">Kinesis Form</a>, another wireless keyboard with a built-in trackpad, though that one's a little fiddly to use because of how narrow the pad is.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/Uh8PzXRtKQyiMXoorhUkFU-1920-80.jpg" alt="Framework Wireless Touchpad Keyboard" /><figcaption><small role="credit">Framework</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/duk7iQpN95V9uHDjdnJZGU-1920-80.jpg" alt="Framework Wireless Touchpad Keyboard" /><figcaption><small role="credit">Framework</small></figcaption></figure></figure><p>Anyway, for you nostalgia sickos out there, you'll be happy to see Framework's gone for a translucent rear cover for the board. So you can see the internal structure and relive those Game Boy Advance days.</p><p>But the keyboard itself isn't the end of the story, because as well as releasing the CAD files so you can create your own mounts for jamming the board into a sim rig setup, Framework is also going to be selling the heart of it via its Marketplace site. The Control Board, which features the Nordic nRF54 radio chip, enables Bluetooth connectivity, alongside a USB Type-A dongle and wired Type-C connection, and you can use that to build your very own wireless keyboard, or stick it into another frame you prefer.</p><p>We don't have any firm timings in terms of when the new keeb is going to be released, with Framework just saying that it will be "available later this year".</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-keyboards/framework-is-building-its-own-keyboard-and-will-even-help-you-make-your-own/</link>
                                                                            <description>
                            <![CDATA[ The new Framework Wireless Touchpad Keyboard can be bought whole or in bits. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">G9E8DmYiQE3MY5wC2ynHWP</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/kzjYssVEZAtNPAJjX2H6JU-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 21 Apr 2026 18:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Keyboards]]></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/kzjYssVEZAtNPAJjX2H6JU-1920-80.jpg">
                                                            <media:credit><![CDATA[Framework]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Framework Wireless Touchpad Keyboard]]></media:description>                                                            <media:text><![CDATA[Framework Wireless Touchpad Keyboard]]></media:text>
                                <media:title type="plain"><![CDATA[Framework Wireless Touchpad Keyboard]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/kzjYssVEZAtNPAJjX2H6JU-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>As well as announcing a new object of my affections with the <a href="https://www.pcgamer.com/hardware/gaming-laptops/framework-just-announced-its-own-macbook-pro-for-linux-users" target="_blank">Framework 13 Pro laptop</a>, the eponymous company has done something altogether more unexpected: it's unveiled a new wireless keyboard. A wireless keyboard with a built-in trackpad, specifically for living room or sim rig use.</p><p>Not something I had on my 2026 bingo card at all, but I am absolutely here for it. It came out of the <a href="https://www.pcgamer.com/hardware/gaming-pcs/framework-desktop-pc-review/" target="_blank">Framework Desktop PC</a> testing and using one particular keyboard/touchpad combo that was popular, but one that wasn't particularly well-liked. </p><p>"We knew we could do better, so we did!" So says a blog post shared with us about Framework's new Touchpad Keyboard preview. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W099kO"></div>                            </div>                            <script src="https://kwizly.com/embed/W099kO.js" async></script><p>The new board basically takes the same keyboard and touchpad architecture that the company built into its recent, small-scale Framework 12 laptops. Which does mean there's none of the fancy haptics from the new Framework 13 Pro touchpads, but it does mean you're getting decent chiclet-style low-profile keys with 1.5 mm travel.</p><p>The touchpad itself is a clickable Windows Precision Touchpad, which means you'll get access to all the multi-digit gestures your heart desires from either Windows or Linux operating systems.</p><p>It reminds me a little of the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/kinesis-form-review/" target="_blank">Kinesis Form</a>, another wireless keyboard with a built-in trackpad, though that one's a little fiddly to use because of how narrow the pad is.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/Uh8PzXRtKQyiMXoorhUkFU-1920-80.jpg" alt="Framework Wireless Touchpad Keyboard" /><figcaption><small role="credit">Framework</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/duk7iQpN95V9uHDjdnJZGU-1920-80.jpg" alt="Framework Wireless Touchpad Keyboard" /><figcaption><small role="credit">Framework</small></figcaption></figure></figure><p>Anyway, for you nostalgia sickos out there, you'll be happy to see Framework's gone for a translucent rear cover for the board. So you can see the internal structure and relive those Game Boy Advance days.</p><p>But the keyboard itself isn't the end of the story, because as well as releasing the CAD files so you can create your own mounts for jamming the board into a sim rig setup, Framework is also going to be selling the heart of it via its Marketplace site. The Control Board, which features the Nordic nRF54 radio chip, enables Bluetooth connectivity, alongside a USB Type-A dongle and wired Type-C connection, and you can use that to build your very own wireless keyboard, or stick it into another frame you prefer.</p><p>We don't have any firm timings in terms of when the new keeb is going to be released, with Framework just saying that it will be "available later this year".</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Keychron has shared the source files for all its keyboard and mice meaning you could almost build an entire kit from scratch ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Keyboard manufacturer Keychron has recently <a href="https://github.com/Keychron/Keychron-Keyboards-Hardware-Design/tree/main" target="_blank">taken to its public GitHub</a> to post the source files for its K, L, P, Q, and V series keyboards, as well as its gaming mice. This means, with a little technical know-how, you can customise its products to your heart's content. </p><p>As spotted by <a href="https://www.digitalfoundry.net/news/2026/04/keychron-is-giving-its-popular-mechanical-keyboard-designs-to-the-community" target="_blank">Digital Foundry</a>, Keychron has been updating its GitHub repository over the last two days, refining and contributing more files, suggesting this will be a long-term project for the manufacturer. </p><p>It's also not just a file dump. The GitHub has a step-by-step guide, linking out how to open files in CAD software, teaching users how to remix or modify designs, and even points them towards the <a href="https://discord.com/invite/HAYbRrTsjN" target="_blank">Keychron community Discord</a>, where fans can ask questions or show off builds. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-X1lxaO"></div>                            </div>                            <script src="https://kwizly.com/embed/X1lxaO.js" async></script><p>With these files, you can find the exact Keychron keyboard you own, then build new cases, plates, keycaps, stabilizers, and all kinds of extra components for it. It's a handy addition to buying a Keychron keyboard that, in the right hands, will get a little more out of each purchase. If you somehow break a part or just get tired of the aesthetics, you can customise it without having to create and implement your own designs from scratch. </p><p>In response to a developer asking about the commercial use of products made from the source code, Keychron updated the page to make it clear that anyone who makes accessories from these designs can freely sell them. However, modifying and selling full keyboards or mice is not permitted, according to its licenses. </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:6000px;"><p class="vanilla-image-block" style="padding-top:56.13%;"><img id="KPT6tXSiM675XNjxbicdra" name="Keychron Q5 HE 9" alt="A Keychron Q5 HE gaming keyboard on a desk with white and blue keycaps." src="https://cdn.mos.cms.futurecdn.net/KPT6tXSiM675XNjxbicdra-1920-80.jpg" mos="" align="middle" fullscreen="" width="6000" height="3368" 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>One notable exclusion here are PCBs. There are no specific files present to create your own so, so you will still have to get those directly from Keychron or source your own. Theoretically, though, you can 3D print most of a Keychron keyboard now, should you choose to. </p><p>It's a great move from Keychron, and one that should allow buyers to make their keyboards truly their own. It's also just a neat step from a repairability standpoint, and will be particularly handy at some point in the future, should the keyboard become discontinued. We've seen efforts from the likes of <a href="https://www.pcgamer.com/hardware/logitech-and-ifixit-team-up-in-repairability-collab-to-make-your-mice-keyboards-and-headphones-last-longer/" target="_blank">Logitech to make its gear more repairable</a>, so here's hoping more manufacturers follow suit. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-keyboards/keychron-has-shared-the-source-files-for-all-its-keyboard-and-mice-meaning-you-could-almost-build-an-entire-kit-from-scratch/</link>
                                                                            <description>
                            <![CDATA[ It even offers a license to sell homemade accessories you make. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">PwBEdwsEa2RdUrAUYkavNV</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/SnkUb7HDTV6RwLaqS2yWw6-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 10 Apr 2026 14:29:56 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Keyboards]]></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/SnkUb7HDTV6RwLaqS2yWw6-1920-80.jpg">
                                                            <media:credit><![CDATA[Keychron]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A Keychron Q16 HE 8K fully ceramic gaming keyboard]]></media:description>                                                            <media:text><![CDATA[A Keychron Q16 HE 8K fully ceramic gaming keyboard]]></media:text>
                                <media:title type="plain"><![CDATA[A Keychron Q16 HE 8K fully ceramic gaming keyboard]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/SnkUb7HDTV6RwLaqS2yWw6-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Keyboard manufacturer Keychron has recently <a href="https://github.com/Keychron/Keychron-Keyboards-Hardware-Design/tree/main" target="_blank">taken to its public GitHub</a> to post the source files for its K, L, P, Q, and V series keyboards, as well as its gaming mice. This means, with a little technical know-how, you can customise its products to your heart's content. </p><p>As spotted by <a href="https://www.digitalfoundry.net/news/2026/04/keychron-is-giving-its-popular-mechanical-keyboard-designs-to-the-community" target="_blank">Digital Foundry</a>, Keychron has been updating its GitHub repository over the last two days, refining and contributing more files, suggesting this will be a long-term project for the manufacturer. </p><p>It's also not just a file dump. The GitHub has a step-by-step guide, linking out how to open files in CAD software, teaching users how to remix or modify designs, and even points them towards the <a href="https://discord.com/invite/HAYbRrTsjN" target="_blank">Keychron community Discord</a>, where fans can ask questions or show off builds. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-X1lxaO"></div>                            </div>                            <script src="https://kwizly.com/embed/X1lxaO.js" async></script><p>With these files, you can find the exact Keychron keyboard you own, then build new cases, plates, keycaps, stabilizers, and all kinds of extra components for it. It's a handy addition to buying a Keychron keyboard that, in the right hands, will get a little more out of each purchase. If you somehow break a part or just get tired of the aesthetics, you can customise it without having to create and implement your own designs from scratch. </p><p>In response to a developer asking about the commercial use of products made from the source code, Keychron updated the page to make it clear that anyone who makes accessories from these designs can freely sell them. However, modifying and selling full keyboards or mice is not permitted, according to its licenses. </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:6000px;"><p class="vanilla-image-block" style="padding-top:56.13%;"><img id="KPT6tXSiM675XNjxbicdra" name="Keychron Q5 HE 9" alt="A Keychron Q5 HE gaming keyboard on a desk with white and blue keycaps." src="https://cdn.mos.cms.futurecdn.net/KPT6tXSiM675XNjxbicdra-1920-80.jpg" mos="" align="middle" fullscreen="" width="6000" height="3368" 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>One notable exclusion here are PCBs. There are no specific files present to create your own so, so you will still have to get those directly from Keychron or source your own. Theoretically, though, you can 3D print most of a Keychron keyboard now, should you choose to. </p><p>It's a great move from Keychron, and one that should allow buyers to make their keyboards truly their own. It's also just a neat step from a repairability standpoint, and will be particularly handy at some point in the future, should the keyboard become discontinued. We've seen efforts from the likes of <a href="https://www.pcgamer.com/hardware/logitech-and-ifixit-team-up-in-repairability-collab-to-make-your-mice-keyboards-and-headphones-last-longer/" target="_blank">Logitech to make its gear more repairable</a>, so here's hoping more manufacturers follow suit. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Cherry K5 Pro TMR Compact magnetic gaming keyboard review ]]></title>
                                                                                                <dc:content><![CDATA[ <div data-widget-type="review" data-model-name="Cherry XTRFY K5 Pro TMR Compact" data-widget-title=""></div><p>I'm not one for snap judgments, but when this keyboard first crossed my desk, I couldn't help but wrinkle my nose. My initial ire centred on the plastic construction and the pricing. To be fair to this 65% gaming keyboard, it's a sturdy bit of kit with minimal flex that also offers TMR switches. That magnetic tech's level of precision goes some way to justifying the $185/£140 price tag, but I wasn't sure if it went quite far enough.</p><p>To state my own biases, the Cherry XTRFY K5 Pro TMR Compact couldn't be more different from the mechanical keyboard that I actually use every day, the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/be-quiet-light-mount-review/" target="_blank">Be Quiet Light Mount</a>. Beginning with the obvious, the K5 Pro TMR is far smaller and far from quiet. The Cherry MK Crystal magnetic switches actuate cleanly and offer plenty of key clack—unfortunately, that comes with a pretty THUNK-y space bar that I do not care for.</p><p>Add to that the fact that its orange stripe design and plastic construction pales in comparison to the Light Mount's brushed aluminium top plate, and you can see why I was so cool on it to begin with.</p><p>Mind you, Cherry isn't calling this 'compact' for nothing. As a 65% design, there's no numpad, dedicated macro keys, or pleasingly tactile media controls to speak of. Credit where credit is due, that allows the layout to feel far from cramped. The direction keys are shuffled inwards towards Enter and Control, with the left arrow key jutting out, but Delete, Page Up, and Page Down are given a few millimetres of breathing room to visually balance the design.</p><div  class="fancy-box"><div class="fancy_box-title">Cherry K5 Pro TMR Compact 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="pzqF5Zu6hc75uAK7yfjGoc" name="Cherry K5 Pro TMR Compact logo" caption="" alt="The Cherry K5 Pro TMR Compact gaming keyboard seen from the back." src="https://cdn.mos.cms.futurecdn.net/pzqF5Zu6hc75uAK7yfjGoc-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>Size:</strong> 65%<br><strong>Switches:</strong> Cherry MK Crystal Magnetic<br><strong>Connectivity:</strong> Wired, via 2-metre detachable USB-C to USB-A cable<br><strong>Keycaps:</strong> Thick ABS<br><strong>Hot-swappable switches: </strong>Yes<br><strong>Anti-ghosting: </strong>Yes<br><strong>Polling rate: </strong>Up to 8,000 Hz<br><strong>Dimensions:</strong> 335 x 120 x 40 mm<br><strong>Weight: </strong>568 g<br><strong>Media controls:</strong> No<br><strong>Price:</strong> $185/£140</p></div></div><p>So far, so far from explosive, but it's this 'compact' design that began to persuade me I'd been a bit quick to judge. As I've previously written about, <a href="https://www.pcgamer.com/hardware/handheld-gaming-pcs/im-already-dreaming-about-the-steam-deck-2-and-the-upgrade-at-the-top-of-my-wishlist-is-a-sleeker-lighter-form-factor/" target="_blank">I have small hands</a> that can make some handheld gaming PCs and peripherals fatiguing to use. As such, I tend to play shooters with a game pad even on PC—that's right, whenever I'm hiding in a bush in <a href="https://www.pcgamer.com/uk/arc-raiders/" target="_blank">Arc Raiders</a>, I am cowering on controller (specifically, the <a href="https://www.pcgamer.com/hardware/controllers/i-enjoy-touching-all-the-hardware-bits-that-pass-through-pcgs-offices-but-this-bit-of-kit-was-all-but-made-for-my-upsettingly-small-baby-hands/" target="_blank">8BitDo Ultimate 2C wireless controller in lilac</a>).</p><p>The reason for this is that I tend to find it a bit uncomfortable to either stretch for the shift key on a full-size board or find I have to awkwardly concertina my pinky under my palm in order to run and gun on a smaller form factor keyboard. It turns out the Cherry XTRFY K5 Pro TMR Compact offers the perfectly spaced key layout for a weird baby-handed freak like me, allowing my pinky to relax more often than not as I elegantly kneeslide into a bush.</p><p>Unlike my daily driver keyboard, the Be Quiet Light Mount, the K5 Pro TMR Compact also offers a ton of gaming-geared features. For starters, TMR key switches offer a greater degree of precision and responsiveness than even the similarly magnetic tech found in Hall effect switches. On a wireless keyboard, they would be even more welcome as they're more power efficient too—however, a wired connection is the only way to play with the K5 Pro TMR Compact.</p><p>Mind you, for someone who'd rather skulk about the shadows of Stella Montis than go ham across <a href="https://www.pcgamer.com/games/fps/marathon-review/" target="_blank">Marathon's</a> Tau Ceti IV, TMR switches don't present not a step up in responsiveness that I can readily appreciate; those with competitive esports ambitions will likely get the most out of the TMR switches here.</p><p>Cherry's Magcrate software also offers an impressive suite of customisation options. There, you can fiddle with everything from the lighting (I'm particularly fond of the 'color block' lighting profile as the ARGB reminds me of a fresh box of crayons), to key switch behaviour.</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="HFRvrp4uNuU6aEtnb2Jfef" name="Cherry K5 Pro TMR Compact rgb 2" alt="The Cherry K5 Pro TMR Compact on a black mousepad with the RGB lights on." src="https://cdn.mos.cms.futurecdn.net/HFRvrp4uNuU6aEtnb2Jfef-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: Future)</span></figcaption></figure><p>Thanks to the TMR switches, Magcrate includes customisable key actuation that can be set between 3.2 mm and 0.1 mm for all 68 keys. You can also tinker with a number of the usual gaming suspects, though they all have slightly different names to what you might expect. For instance, rapid trigger is referred to as 'Toggle Switch' here.</p><p>There's also SnapKey, allowing you to bind two keys so that, when both are pressed, only the last input registers. This is Cherry's take on Snap Tap/SOCD, the tech that's perhaps best known for enabling especially wiggly counter-strafing, and has been <a href="https://www.pcgamer.com/games/fps/valve-says-weve-decided-to-draw-a-clear-line-and-bans-snap-tap-keyboard-automation-from-counter-strike-2/" target="_blank">banned from Counter-Strike 2 since 2024</a>.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/nQv46S9DgBmevz7kfHkRhJ-1920-80.png" alt="The Cherry K5 Pro TMR Compact on a black mousepad with the RGB lights on." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/2qTrn86S2UqXtkdVUT54g6-1920-80.png" alt="The Cherry K5 Pro TMR Compact on a black mousepad with the RGB lights on." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/2Cm7PC6XneWxUSkcSsvfiK-1920-80.png" alt="The Cherry K5 Pro TMR Compact with RGB." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>As useful as the feature is, it's best to leave it off in competitive play, as you'll run the risk of a banhammer timeout in a number of games. Thankfully, you can store up to four onboard keyboard profiles, so you can easily set up something for both competitive play and singleplayer games.</p><p>The Cherry XTRFY K5 Pro TMR Compact also enjoys a surprisingly granular selection of polling modes. Tapping out at 8,000 Hz, you can alternatively set the keyboard's polling rate to 4,000, 2000, 1000, 500, 250, and all the way down to 125 Hz. As this is a wired keyboard with no battery power to savour, I'm not sure <em>why </em>you'd want to lower the polling rate below 1,000 Hertz, let alone down to 125, but the option is there for the sickos.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/hoNFhEG7Z7yHj5XMkwLDEL-1920-80.png" alt="The Cherry K5 Pro TMR Compact seen from the back, with the orange feet flipped out to prop up the gaming keyboard." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/72dSEyEMLtdJPjWtdhyi6K-1920-80.png" alt="The Cherry K5 Pro TMR Compact seen from the back, with the orange feet flipped out to prop up the gaming keyboard." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/TJn5cPen3T5yK6XxwmdJgk-1920-80.png" alt="The Cherry K5 Pro TMR Compact seen from the back, focussing on the orange feet that can be flipped out to prop up the gaming keyboard." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Optional quirks like this aside, the K5 Pro TMR Compact remains a feature-rich and comfortable keyboard—though the point of price has not once left my mind. At this point in time, $185/£140 feels like a lot for even a gaming keyboard…especially when I can secure a wireless keyboard that looks like a purple cat that is also a macaron for some reason for almost half that price (I've been dreaming about the Yunzii C98 Cake Meow ever since I first saw it, can you tell?).</p><p>But before I get too distracted with kitty keebs, let's compare and contrast the Compact to its recently released sibling, the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/cherry-xtrfy-mx-8-2-pro-tmr-tkl-review/" target="_blank">Cherry Xtrfy MX 8.2 Pro TMR TKL</a>. Both boards have TMR sensing with 0.01 mm precision, up to 8,000 Hz polling, and all the gaming-focused features you could want. However, the MX 8.2 Pro TMR TKL is a wireless keyboard with great build quality and 300 hours of battery life that will set you back $250/€230.</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="5VFtZwWcF57BotpYqsXrtK" name="CherryK5ProTMRCompactsidelegends-ezgif.com-png-to-jpg-converter" alt="The Cherry K5 Pro TMR Compact seen from an angle on a blue background." src="https://cdn.mos.cms.futurecdn.net/5VFtZwWcF57BotpYqsXrtK-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 tenkeyless board may appear the wrong side of gaudy for some, but it's definitely way more visually striking than the K5 Pro TMR Compact's understated black and orange look. Still, if you're only after the gaming features and a wireless board doesn't impress you much, the K5 Pro TMR Compact, for about $70 less, makes way more sense of the two.</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've been waiting for a cheaper TMR gaming keyboard: </strong>The Cherry Xtrfy MX 8.2 Pro TMR TKL will have its fans, but the K5 Pro TMR Compact does many of the same things for less.<br></p><p class="fancy-box__body-text"><strong>✅ You have small hands:</strong> The layout and spacing of this 65% gaming keyboard may be the gaming goldilocks zone for those with small mitts.</p></div></div><div  class="fancy-box"><div class="fancy_box-title">Don't buy if...</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>❌ You're on a tight budget: </strong>Though far cheaper than the Cherry Xtrfy MX 8.2 Pro TMR TKL, the K5 Pro TMR Compact is still kinda pricey considering you can get <a data-analytics-id="inline-link" href="https://www.pcgamer.com/hardware/gaming-keyboards/gamakay-x-naughshark-ns68-review/">a Hall effect gaming keyboard for much less</a>.<br></p><p class="fancy-box__body-text"><strong>❌ You're a single-player stan: </strong>TMR offers a level of precision and responsiveness that many mere mortals outside of the competitive crowd simply won't appreciate.</p></div></div><p>But for even less than that, you could instead pick up the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/keychron-k2-he-review/" target="_blank">Keychron K2 HE</a>, which is a 75% wireless keyboard with similarly responsive magnetic switches and, perhaps most importantly, a head-turning wood finish. I'm being only a little bit silly, but it is one of our top picks for the <a href="https://www.pcgamer.com/best-gaming-keyboard" target="_blank">best gaming keyboards</a> for good reason.</p><p>However, if you're on an extremely tight budget, the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/gamakay-x-naughshark-ns68-review/" target="_blank">Gamakay x NaughShark NS68</a> is our best budget pick at only $40/£31. Before this review, it was my go-to whenever I was in-office at PC Gamer Towers because the typing experience is lovely, <em>and </em>it packs in many of the same gaming features as the Cherry XTRFY K5 Pro TMR Compact. To be clear, the NS68 is rocking Hall effect switches, which are arguably slightly less responsive than the Compact's TMR switches, though very few will feel the difference.</p><p>Otherwise, it's really tough to argue with an up to 8,000 Hz polling rate, customisable key actuation, Rapid Trigger, and yes, Snap Tap, all for less than 50 bucks. For that reason, the K5 Pro TMR Compact's $185/£140 price tag continues to be a stumbling block I'm not sure our blossoming relationship can quite overcome. But speaking of blossoming, I spy some foliage with my name on it—here's to one more buttery smooth kneeslide for the road.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-keyboards/cherry-k5-pro-tmr-compact-review/</link>
                                                                            <description>
                            <![CDATA[ It ticks all of the right boxes, but I was left wanting just a little more. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">imTAQLqr4QDeG6qpAUz46V</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/NGvN2pffCkRzZGxW5VKbQ5-1920-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Thu, 09 Apr 2026 10:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Keyboards]]></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/png" url="https://cdn.mos.cms.futurecdn.net/NGvN2pffCkRzZGxW5VKbQ5-1920-80.png">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Cherry K5 Pro TMR Compact gaming keyboard on a blue background.]]></media:description>                                                            <media:text><![CDATA[The Cherry K5 Pro TMR Compact gaming keyboard on a blue background.]]></media:text>
                                <media:title type="plain"><![CDATA[The Cherry K5 Pro TMR Compact gaming keyboard on a blue background.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/NGvN2pffCkRzZGxW5VKbQ5-1920-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div data-widget-type="review" data-model-name="Cherry XTRFY K5 Pro TMR Compact" data-widget-title=""></div><p>I'm not one for snap judgments, but when this keyboard first crossed my desk, I couldn't help but wrinkle my nose. My initial ire centred on the plastic construction and the pricing. To be fair to this 65% gaming keyboard, it's a sturdy bit of kit with minimal flex that also offers TMR switches. That magnetic tech's level of precision goes some way to justifying the $185/£140 price tag, but I wasn't sure if it went quite far enough.</p><p>To state my own biases, the Cherry XTRFY K5 Pro TMR Compact couldn't be more different from the mechanical keyboard that I actually use every day, the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/be-quiet-light-mount-review/" target="_blank">Be Quiet Light Mount</a>. Beginning with the obvious, the K5 Pro TMR is far smaller and far from quiet. The Cherry MK Crystal magnetic switches actuate cleanly and offer plenty of key clack—unfortunately, that comes with a pretty THUNK-y space bar that I do not care for.</p><p>Add to that the fact that its orange stripe design and plastic construction pales in comparison to the Light Mount's brushed aluminium top plate, and you can see why I was so cool on it to begin with.</p><p>Mind you, Cherry isn't calling this 'compact' for nothing. As a 65% design, there's no numpad, dedicated macro keys, or pleasingly tactile media controls to speak of. Credit where credit is due, that allows the layout to feel far from cramped. The direction keys are shuffled inwards towards Enter and Control, with the left arrow key jutting out, but Delete, Page Up, and Page Down are given a few millimetres of breathing room to visually balance the design.</p><div  class="fancy-box"><div class="fancy_box-title">Cherry K5 Pro TMR Compact 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="pzqF5Zu6hc75uAK7yfjGoc" name="Cherry K5 Pro TMR Compact logo" caption="" alt="The Cherry K5 Pro TMR Compact gaming keyboard seen from the back." src="https://cdn.mos.cms.futurecdn.net/pzqF5Zu6hc75uAK7yfjGoc-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>Size:</strong> 65%<br><strong>Switches:</strong> Cherry MK Crystal Magnetic<br><strong>Connectivity:</strong> Wired, via 2-metre detachable USB-C to USB-A cable<br><strong>Keycaps:</strong> Thick ABS<br><strong>Hot-swappable switches: </strong>Yes<br><strong>Anti-ghosting: </strong>Yes<br><strong>Polling rate: </strong>Up to 8,000 Hz<br><strong>Dimensions:</strong> 335 x 120 x 40 mm<br><strong>Weight: </strong>568 g<br><strong>Media controls:</strong> No<br><strong>Price:</strong> $185/£140</p></div></div><p>So far, so far from explosive, but it's this 'compact' design that began to persuade me I'd been a bit quick to judge. As I've previously written about, <a href="https://www.pcgamer.com/hardware/handheld-gaming-pcs/im-already-dreaming-about-the-steam-deck-2-and-the-upgrade-at-the-top-of-my-wishlist-is-a-sleeker-lighter-form-factor/" target="_blank">I have small hands</a> that can make some handheld gaming PCs and peripherals fatiguing to use. As such, I tend to play shooters with a game pad even on PC—that's right, whenever I'm hiding in a bush in <a href="https://www.pcgamer.com/uk/arc-raiders/" target="_blank">Arc Raiders</a>, I am cowering on controller (specifically, the <a href="https://www.pcgamer.com/hardware/controllers/i-enjoy-touching-all-the-hardware-bits-that-pass-through-pcgs-offices-but-this-bit-of-kit-was-all-but-made-for-my-upsettingly-small-baby-hands/" target="_blank">8BitDo Ultimate 2C wireless controller in lilac</a>).</p><p>The reason for this is that I tend to find it a bit uncomfortable to either stretch for the shift key on a full-size board or find I have to awkwardly concertina my pinky under my palm in order to run and gun on a smaller form factor keyboard. It turns out the Cherry XTRFY K5 Pro TMR Compact offers the perfectly spaced key layout for a weird baby-handed freak like me, allowing my pinky to relax more often than not as I elegantly kneeslide into a bush.</p><p>Unlike my daily driver keyboard, the Be Quiet Light Mount, the K5 Pro TMR Compact also offers a ton of gaming-geared features. For starters, TMR key switches offer a greater degree of precision and responsiveness than even the similarly magnetic tech found in Hall effect switches. On a wireless keyboard, they would be even more welcome as they're more power efficient too—however, a wired connection is the only way to play with the K5 Pro TMR Compact.</p><p>Mind you, for someone who'd rather skulk about the shadows of Stella Montis than go ham across <a href="https://www.pcgamer.com/games/fps/marathon-review/" target="_blank">Marathon's</a> Tau Ceti IV, TMR switches don't present not a step up in responsiveness that I can readily appreciate; those with competitive esports ambitions will likely get the most out of the TMR switches here.</p><p>Cherry's Magcrate software also offers an impressive suite of customisation options. There, you can fiddle with everything from the lighting (I'm particularly fond of the 'color block' lighting profile as the ARGB reminds me of a fresh box of crayons), to key switch behaviour.</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="HFRvrp4uNuU6aEtnb2Jfef" name="Cherry K5 Pro TMR Compact rgb 2" alt="The Cherry K5 Pro TMR Compact on a black mousepad with the RGB lights on." src="https://cdn.mos.cms.futurecdn.net/HFRvrp4uNuU6aEtnb2Jfef-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: Future)</span></figcaption></figure><p>Thanks to the TMR switches, Magcrate includes customisable key actuation that can be set between 3.2 mm and 0.1 mm for all 68 keys. You can also tinker with a number of the usual gaming suspects, though they all have slightly different names to what you might expect. For instance, rapid trigger is referred to as 'Toggle Switch' here.</p><p>There's also SnapKey, allowing you to bind two keys so that, when both are pressed, only the last input registers. This is Cherry's take on Snap Tap/SOCD, the tech that's perhaps best known for enabling especially wiggly counter-strafing, and has been <a href="https://www.pcgamer.com/games/fps/valve-says-weve-decided-to-draw-a-clear-line-and-bans-snap-tap-keyboard-automation-from-counter-strike-2/" target="_blank">banned from Counter-Strike 2 since 2024</a>.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/nQv46S9DgBmevz7kfHkRhJ-1920-80.png" alt="The Cherry K5 Pro TMR Compact on a black mousepad with the RGB lights on." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/2qTrn86S2UqXtkdVUT54g6-1920-80.png" alt="The Cherry K5 Pro TMR Compact on a black mousepad with the RGB lights on." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/2Cm7PC6XneWxUSkcSsvfiK-1920-80.png" alt="The Cherry K5 Pro TMR Compact with RGB." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>As useful as the feature is, it's best to leave it off in competitive play, as you'll run the risk of a banhammer timeout in a number of games. Thankfully, you can store up to four onboard keyboard profiles, so you can easily set up something for both competitive play and singleplayer games.</p><p>The Cherry XTRFY K5 Pro TMR Compact also enjoys a surprisingly granular selection of polling modes. Tapping out at 8,000 Hz, you can alternatively set the keyboard's polling rate to 4,000, 2000, 1000, 500, 250, and all the way down to 125 Hz. As this is a wired keyboard with no battery power to savour, I'm not sure <em>why </em>you'd want to lower the polling rate below 1,000 Hertz, let alone down to 125, but the option is there for the sickos.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/hoNFhEG7Z7yHj5XMkwLDEL-1920-80.png" alt="The Cherry K5 Pro TMR Compact seen from the back, with the orange feet flipped out to prop up the gaming keyboard." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/72dSEyEMLtdJPjWtdhyi6K-1920-80.png" alt="The Cherry K5 Pro TMR Compact seen from the back, with the orange feet flipped out to prop up the gaming keyboard." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/TJn5cPen3T5yK6XxwmdJgk-1920-80.png" alt="The Cherry K5 Pro TMR Compact seen from the back, focussing on the orange feet that can be flipped out to prop up the gaming keyboard." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Optional quirks like this aside, the K5 Pro TMR Compact remains a feature-rich and comfortable keyboard—though the point of price has not once left my mind. At this point in time, $185/£140 feels like a lot for even a gaming keyboard…especially when I can secure a wireless keyboard that looks like a purple cat that is also a macaron for some reason for almost half that price (I've been dreaming about the Yunzii C98 Cake Meow ever since I first saw it, can you tell?).</p><p>But before I get too distracted with kitty keebs, let's compare and contrast the Compact to its recently released sibling, the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/cherry-xtrfy-mx-8-2-pro-tmr-tkl-review/" target="_blank">Cherry Xtrfy MX 8.2 Pro TMR TKL</a>. Both boards have TMR sensing with 0.01 mm precision, up to 8,000 Hz polling, and all the gaming-focused features you could want. However, the MX 8.2 Pro TMR TKL is a wireless keyboard with great build quality and 300 hours of battery life that will set you back $250/€230.</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="5VFtZwWcF57BotpYqsXrtK" name="CherryK5ProTMRCompactsidelegends-ezgif.com-png-to-jpg-converter" alt="The Cherry K5 Pro TMR Compact seen from an angle on a blue background." src="https://cdn.mos.cms.futurecdn.net/5VFtZwWcF57BotpYqsXrtK-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 tenkeyless board may appear the wrong side of gaudy for some, but it's definitely way more visually striking than the K5 Pro TMR Compact's understated black and orange look. Still, if you're only after the gaming features and a wireless board doesn't impress you much, the K5 Pro TMR Compact, for about $70 less, makes way more sense of the two.</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've been waiting for a cheaper TMR gaming keyboard: </strong>The Cherry Xtrfy MX 8.2 Pro TMR TKL will have its fans, but the K5 Pro TMR Compact does many of the same things for less.<br></p><p class="fancy-box__body-text"><strong>✅ You have small hands:</strong> The layout and spacing of this 65% gaming keyboard may be the gaming goldilocks zone for those with small mitts.</p></div></div><div  class="fancy-box"><div class="fancy_box-title">Don't buy if...</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>❌ You're on a tight budget: </strong>Though far cheaper than the Cherry Xtrfy MX 8.2 Pro TMR TKL, the K5 Pro TMR Compact is still kinda pricey considering you can get <a data-analytics-id="inline-link" href="https://www.pcgamer.com/hardware/gaming-keyboards/gamakay-x-naughshark-ns68-review/">a Hall effect gaming keyboard for much less</a>.<br></p><p class="fancy-box__body-text"><strong>❌ You're a single-player stan: </strong>TMR offers a level of precision and responsiveness that many mere mortals outside of the competitive crowd simply won't appreciate.</p></div></div><p>But for even less than that, you could instead pick up the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/keychron-k2-he-review/" target="_blank">Keychron K2 HE</a>, which is a 75% wireless keyboard with similarly responsive magnetic switches and, perhaps most importantly, a head-turning wood finish. I'm being only a little bit silly, but it is one of our top picks for the <a href="https://www.pcgamer.com/best-gaming-keyboard" target="_blank">best gaming keyboards</a> for good reason.</p><p>However, if you're on an extremely tight budget, the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/gamakay-x-naughshark-ns68-review/" target="_blank">Gamakay x NaughShark NS68</a> is our best budget pick at only $40/£31. Before this review, it was my go-to whenever I was in-office at PC Gamer Towers because the typing experience is lovely, <em>and </em>it packs in many of the same gaming features as the Cherry XTRFY K5 Pro TMR Compact. To be clear, the NS68 is rocking Hall effect switches, which are arguably slightly less responsive than the Compact's TMR switches, though very few will feel the difference.</p><p>Otherwise, it's really tough to argue with an up to 8,000 Hz polling rate, customisable key actuation, Rapid Trigger, and yes, Snap Tap, all for less than 50 bucks. For that reason, the K5 Pro TMR Compact's $185/£140 price tag continues to be a stumbling block I'm not sure our blossoming relationship can quite overcome. But speaking of blossoming, I spy some foliage with my name on it—here's to one more buttery smooth kneeslide for the road.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Here's a keycap that's also a watch, for the discerning gamer ]]></title>
                                                                                                <dc:content><![CDATA[ <p>I have too many keycaps. I also own too many watches. I'm a real keycap/watch guy. So picture my surprise when the Miyo Watch Keycap came up on my feed last night.</p><p>It's a keycap with an analogue watch built into it. Specifically, a Miyota 5Y20 quartz movement with a dual-tone Super-LimuNova (glow-in-the-dark) dial and hands. Over the top, sapphire glass with an anti-reflecting coating. To the right, a small crown. All of which fits into a tiny 1U keycap—that's equivalent to a single letter key on your keyboard.</p><p>I'm definitely late to the game here, as the <a href="https://sneakbox.com/products/miyo-1u-watch-keycap" target="_blank">Miyo went on sale over at Sneakbox</a> back in October, 2025. That was a limited release of only 150 units, split three-ways between steel, black and rose gold. There are still rose gold ones available but I am being very chill about it.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Oq8PwW"></div>                            </div>                            <script src="https://kwizly.com/embed/Oq8PwW.js" async></script><p>It's probably for the best. The Miyo Watch Keycap costs $300/£227, and despite being a watch guy, I prefer my watches to cost roughly as much as a decent Casio—that is, not very much. Though I was tempted by the dopamine rush that would surely ensue after purchasing an extremely unnecessary object for my keyboard. </p><p>In a <a href="https://www.reddit.com/r/MechanicalKeyboards/comments/1ng0vu6/miyo_1u_functioning_analog_watch_keycap_2_year/" target="_blank">post on Reddit last year</a>, Muji, the keycap's creator and owner of Sneakbox, notes how well received the project has been: "I knew there was a lot of curiosity about this project from the last post, but I didn't anticipate the amount of folk that would actually intend to buy one! Seriously, it's humbling to see this degree of interest being a business-of-one who designs, produces and sells his own stuff. Thank you."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1393px;"><p class="vanilla-image-block" style="padding-top:56.21%;"><img id="BHZULMWtzfyC6uf4sGcGmU" name="IMG_6919_46667ead-90ab-459a-a8ea-099d735f9cb8" alt="Sneakbox's Miyo keycap with a watch face." src="https://cdn.mos.cms.futurecdn.net/BHZULMWtzfyC6uf4sGcGmU-1920-80.jpg" mos="" align="middle" fullscreen="" width="1393" height="783" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Sneakbox)</span></figcaption></figure><p>Muji also notes this keycap is not waterproof but they'd like to work on a waterproof version, perhaps with a diver-style bezel, at a later date.</p><p>If you're annoyed about missing this creation and looking for another keycap hit, I've bought a couple from <a href="https://www.jellykey.com/" target="_blank">Jelly Key</a>. Most of its designs are limited drops and require signing up in a short time period, but I've always been impressed with the quality of what I've received. </p><p>I have a couple koi/fish pond ones, a legally-distinct Mario-style one, and an arcade cabinet one. I'm usually tempted to buy more, and I fear for my sanity after considering purchasing this keycap in the shape of a <a href="https://www.jellykey.com/artisan-keycaps/pillow-craft" target="_blank">soft, plump pillow</a>, but after a while you run out of keyboards to put them on. At least with watches you can wear at least five or six on one wrist and look totally normal.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-keyboards/heres-a-keycap-thats-also-a-watch-for-the-discerning-gamer/</link>
                                                                            <description>
                            <![CDATA[ Two of my favourite things in one adorable unit. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">CMcfMrdeQb63agGj2UYX5F</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/sErA9rxLY66j2Zpe3CjzJB-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 08 Apr 2026 10:38:47 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Keyboards]]></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/sErA9rxLY66j2Zpe3CjzJB-1920-80.jpg">
                                                            <media:credit><![CDATA[Sneakbox]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A Miyo keycap that includes a tiny watch face.]]></media:description>                                                            <media:text><![CDATA[A Miyo keycap that includes a tiny watch face.]]></media:text>
                                <media:title type="plain"><![CDATA[A Miyo keycap that includes a tiny watch face.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/sErA9rxLY66j2Zpe3CjzJB-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I have too many keycaps. I also own too many watches. I'm a real keycap/watch guy. So picture my surprise when the Miyo Watch Keycap came up on my feed last night.</p><p>It's a keycap with an analogue watch built into it. Specifically, a Miyota 5Y20 quartz movement with a dual-tone Super-LimuNova (glow-in-the-dark) dial and hands. Over the top, sapphire glass with an anti-reflecting coating. To the right, a small crown. All of which fits into a tiny 1U keycap—that's equivalent to a single letter key on your keyboard.</p><p>I'm definitely late to the game here, as the <a href="https://sneakbox.com/products/miyo-1u-watch-keycap" target="_blank">Miyo went on sale over at Sneakbox</a> back in October, 2025. That was a limited release of only 150 units, split three-ways between steel, black and rose gold. There are still rose gold ones available but I am being very chill about it.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Oq8PwW"></div>                            </div>                            <script src="https://kwizly.com/embed/Oq8PwW.js" async></script><p>It's probably for the best. The Miyo Watch Keycap costs $300/£227, and despite being a watch guy, I prefer my watches to cost roughly as much as a decent Casio—that is, not very much. Though I was tempted by the dopamine rush that would surely ensue after purchasing an extremely unnecessary object for my keyboard. </p><p>In a <a href="https://www.reddit.com/r/MechanicalKeyboards/comments/1ng0vu6/miyo_1u_functioning_analog_watch_keycap_2_year/" target="_blank">post on Reddit last year</a>, Muji, the keycap's creator and owner of Sneakbox, notes how well received the project has been: "I knew there was a lot of curiosity about this project from the last post, but I didn't anticipate the amount of folk that would actually intend to buy one! Seriously, it's humbling to see this degree of interest being a business-of-one who designs, produces and sells his own stuff. Thank you."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1393px;"><p class="vanilla-image-block" style="padding-top:56.21%;"><img id="BHZULMWtzfyC6uf4sGcGmU" name="IMG_6919_46667ead-90ab-459a-a8ea-099d735f9cb8" alt="Sneakbox's Miyo keycap with a watch face." src="https://cdn.mos.cms.futurecdn.net/BHZULMWtzfyC6uf4sGcGmU-1920-80.jpg" mos="" align="middle" fullscreen="" width="1393" height="783" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Sneakbox)</span></figcaption></figure><p>Muji also notes this keycap is not waterproof but they'd like to work on a waterproof version, perhaps with a diver-style bezel, at a later date.</p><p>If you're annoyed about missing this creation and looking for another keycap hit, I've bought a couple from <a href="https://www.jellykey.com/" target="_blank">Jelly Key</a>. Most of its designs are limited drops and require signing up in a short time period, but I've always been impressed with the quality of what I've received. </p><p>I have a couple koi/fish pond ones, a legally-distinct Mario-style one, and an arcade cabinet one. I'm usually tempted to buy more, and I fear for my sanity after considering purchasing this keycap in the shape of a <a href="https://www.jellykey.com/artisan-keycaps/pillow-craft" target="_blank">soft, plump pillow</a>, but after a while you run out of keyboards to put them on. At least with watches you can wear at least five or six on one wrist and look totally normal.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ You can grab a Hall effect gaming keyboard that we've consistently ranked as one of the best for $112 in Amazon's Big Spring Sale ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="product"><a data-dimension112="3f714ce5-2d92-4c86-9d68-1dba9f20203e" data-action="Deal Block" data-label="K2 HE" data-dimension48="K2 HE" data-dimension25="$111.99" href="https://www.amazon.com/Keychron-Mechanical-Double-Rail-Bluetooth-Compatible/dp/B0DCVPGB9N" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1214px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="KrywBNQMBexB6Wrwo4EABJ" name="1774440516.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/KrywBNQMBexB6Wrwo4EABJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="1214" height="1214" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>We were impressed with the K2 HE in our testing and now it's even more affordable. Hall effect for less. Both black and white options are discounted via the link.</p><p><strong>Key specs: Gateron HE Double Rail | PBT keycaps | 2.4 GHz + Bluetooth</strong><a class="view-deal button" href="https://www.amazon.com/Keychron-Mechanical-Double-Rail-Bluetooth-Compatible/dp/B0DCVPGB9N" target="_blank" rel="nofollow" data-dimension112="3f714ce5-2d92-4c86-9d68-1dba9f20203e" data-action="Deal Block" data-label="K2 HE" data-dimension48="K2 HE" data-dimension25="$111.99">View Deal</a></p></div><p>The Keychron K2 HE is one of our top picks for a gaming keyboard today. It has a lot going for it, with Hall effect switches, PBT keycaps, and wireless connectivity—all for a good price. It's currently cheaper still.</p><p><a href="https://www.pcgamer.com/hardware/live/news/spring-sale-live-2026/" target="_blank">Amazon's Big Spring Sale</a> is now on and I've spotted the Keychron amongst the barrage of discounts. It's currently <a href="https://www.amazon.com/Keychron-Mechanical-Double-Rail-Bluetooth-Compatible/dp/B0DCVPGB9N" target="_blank">on sale for $112</a>.</p><p>That's the lowest this keyboard has been during its time on Amazon. It's not an unusual price for this keyboard, however, as it has been discounted as much over short periods in the past couple months. So, I'd guess if you're not prepared to purchase it now, you may get another chance at a later date.</p><p>The main selling point for this keyboard, at least for gamers, is its Hall effect switches. These are adjustable, unlike regular mechanical switches, and allow you to not only adjust <em>when </em>they actuate, but <em>how </em>they actuate. </p><p>Rapid trigger is the main benefit. This allows you to press a key and then, the moment it is released even a little, reset the key ready to be pressed again. If you're pressing a key over and over again, it means your actions will be relayed that little bit faster in-game.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/Ym4T7mEWYS6CcyhTDBns2Z-1920-80.jpg" alt="A Keychron K2 HE gaming keyboard with a wood finish and white keycaps with RGB enabled." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/SQnyT6UgTGpv6FvWChg7MX-1920-80.jpg" alt="A Keychron K2 HE gaming keyboard with a wood finish and white keycaps with RGB enabled." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/RqtAYfPeNxhCS2n8PRT3PY-1920-80.jpg" alt="A Keychron K2 HE gaming keyboard with a wood finish and white keycaps with RGB enabled." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/UJ4EhVZMTTqsCWuWMbtSNW-1920-80.jpg" alt="A Keychron K2 HE gaming keyboard with a wood finish and white keycaps with RGB enabled." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>There's more we like about the K2 HE. For starters, it's very well built. It has a wood finish on either side of the keys, and these keys are made with PBT, which is a sturdier and nicer-sounding plastic than the usual ABS. The switches beneath are Gateron's HE Double Rail and have proven themselves less prone to wobble than some others we've tested.</p><p>As Reece notes in our <a href="https://www.pcgamer.com/hardware/gaming-keyboards/keychron-k2-he-review/" target="_blank">K2 HE review</a>: "It’s solid and rigid, while also coming with no deck flex even if you tried to tear it to pieces."</p><p>Including both a 2.4 GHz dongle and Bluetooth, you could go without a cable for a cleaner look to your desk. The battery life is surprisingly good, too. It's rated to 72 hours with the per-key RGB lighting enabled, or 240 hours with it disabled.</p><p>It's a solid pick. If you don't want to spend quite so much, we've been very impressed with the Gamakay x NaughShark NS68. It's currently down to <a href="https://www.amazon.com/GK-GAMAKAY-NaughShark-NS68-Black-Shine/dp/B0F283CWTS" target="_blank">$39 at Amazon</a>. It lacks some of the finishing touches found on the K2 HE, but it does offer Hall effect switches for considerably less cash.</p><h3 id="check-out-other-tech-and-gaming-deals-in-amazon-s-big-spring-sale"><a href="https://www.amazon.com/events/bigspringsale/5" target="_blank">👉 Check out other tech and gaming deals in Amazon's Big Spring Sale</a> 👈</h3> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-keyboards/you-can-grab-a-hall-effect-gaming-keyboard-that-weve-consistently-ranked-as-one-of-the-best-for-usd112-in-amazons-big-spring-sale/</link>
                                                                            <description>
                            <![CDATA[ The Keychron K2 HE is pretty classy. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">XQnh4v8jZjgg44ev56Zwe</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/nEQV4rCq7bdMyjeAS8DHuU-1920-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Wed, 25 Mar 2026 12:23:06 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Keyboards]]></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/png" url="https://cdn.mos.cms.futurecdn.net/nEQV4rCq7bdMyjeAS8DHuU-1920-80.png">
                                                            <media:credit><![CDATA[Keychron, Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A Keychron K2 HE on a background with the word &#039;Deals&#039; and the PC Gamer logo.]]></media:description>                                                            <media:text><![CDATA[A Keychron K2 HE on a background with the word &#039;Deals&#039; and the PC Gamer logo.]]></media:text>
                                <media:title type="plain"><![CDATA[A Keychron K2 HE on a background with the word &#039;Deals&#039; and the PC Gamer logo.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/nEQV4rCq7bdMyjeAS8DHuU-1920-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="product"><a data-dimension112="3f714ce5-2d92-4c86-9d68-1dba9f20203e" data-action="Deal Block" data-label="K2 HE" data-dimension48="K2 HE" data-dimension25="$111.99" href="https://www.amazon.com/Keychron-Mechanical-Double-Rail-Bluetooth-Compatible/dp/B0DCVPGB9N" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1214px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="KrywBNQMBexB6Wrwo4EABJ" name="1774440516.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/KrywBNQMBexB6Wrwo4EABJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="1214" height="1214" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>We were impressed with the K2 HE in our testing and now it's even more affordable. Hall effect for less. Both black and white options are discounted via the link.</p><p><strong>Key specs: Gateron HE Double Rail | PBT keycaps | 2.4 GHz + Bluetooth</strong><a class="view-deal button" href="https://www.amazon.com/Keychron-Mechanical-Double-Rail-Bluetooth-Compatible/dp/B0DCVPGB9N" target="_blank" rel="nofollow" data-dimension112="3f714ce5-2d92-4c86-9d68-1dba9f20203e" data-action="Deal Block" data-label="K2 HE" data-dimension48="K2 HE" data-dimension25="$111.99">View Deal</a></p></div><p>The Keychron K2 HE is one of our top picks for a gaming keyboard today. It has a lot going for it, with Hall effect switches, PBT keycaps, and wireless connectivity—all for a good price. It's currently cheaper still.</p><p><a href="https://www.pcgamer.com/hardware/live/news/spring-sale-live-2026/" target="_blank">Amazon's Big Spring Sale</a> is now on and I've spotted the Keychron amongst the barrage of discounts. It's currently <a href="https://www.amazon.com/Keychron-Mechanical-Double-Rail-Bluetooth-Compatible/dp/B0DCVPGB9N" target="_blank">on sale for $112</a>.</p><p>That's the lowest this keyboard has been during its time on Amazon. It's not an unusual price for this keyboard, however, as it has been discounted as much over short periods in the past couple months. So, I'd guess if you're not prepared to purchase it now, you may get another chance at a later date.</p><p>The main selling point for this keyboard, at least for gamers, is its Hall effect switches. These are adjustable, unlike regular mechanical switches, and allow you to not only adjust <em>when </em>they actuate, but <em>how </em>they actuate. </p><p>Rapid trigger is the main benefit. This allows you to press a key and then, the moment it is released even a little, reset the key ready to be pressed again. If you're pressing a key over and over again, it means your actions will be relayed that little bit faster in-game.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/Ym4T7mEWYS6CcyhTDBns2Z-1920-80.jpg" alt="A Keychron K2 HE gaming keyboard with a wood finish and white keycaps with RGB enabled." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/SQnyT6UgTGpv6FvWChg7MX-1920-80.jpg" alt="A Keychron K2 HE gaming keyboard with a wood finish and white keycaps with RGB enabled." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/RqtAYfPeNxhCS2n8PRT3PY-1920-80.jpg" alt="A Keychron K2 HE gaming keyboard with a wood finish and white keycaps with RGB enabled." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/UJ4EhVZMTTqsCWuWMbtSNW-1920-80.jpg" alt="A Keychron K2 HE gaming keyboard with a wood finish and white keycaps with RGB enabled." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>There's more we like about the K2 HE. For starters, it's very well built. It has a wood finish on either side of the keys, and these keys are made with PBT, which is a sturdier and nicer-sounding plastic than the usual ABS. The switches beneath are Gateron's HE Double Rail and have proven themselves less prone to wobble than some others we've tested.</p><p>As Reece notes in our <a href="https://www.pcgamer.com/hardware/gaming-keyboards/keychron-k2-he-review/" target="_blank">K2 HE review</a>: "It’s solid and rigid, while also coming with no deck flex even if you tried to tear it to pieces."</p><p>Including both a 2.4 GHz dongle and Bluetooth, you could go without a cable for a cleaner look to your desk. The battery life is surprisingly good, too. It's rated to 72 hours with the per-key RGB lighting enabled, or 240 hours with it disabled.</p><p>It's a solid pick. If you don't want to spend quite so much, we've been very impressed with the Gamakay x NaughShark NS68. It's currently down to <a href="https://www.amazon.com/GK-GAMAKAY-NaughShark-NS68-Black-Shine/dp/B0F283CWTS" target="_blank">$39 at Amazon</a>. It lacks some of the finishing touches found on the K2 HE, but it does offer Hall effect switches for considerably less cash.</p><h3 id="check-out-other-tech-and-gaming-deals-in-amazon-s-big-spring-sale"><a href="https://www.amazon.com/events/bigspringsale/5" target="_blank">👉 Check out other tech and gaming deals in Amazon's Big Spring Sale</a> 👈</h3>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Asus ROG Strix Morph 96 Wireless review ]]></title>
                                                                                                <dc:content><![CDATA[ <div data-widget-type="review" data-model-name="Asus ROG Strix Morph 96 Wireless" data-widget-title=""></div><p>Asus took the opportunity at CES 2026 earlier this year to unveil two shiny new keyboards: the fast, Hall effect ROG Falchion Ace 75 HE that's focused squarely at gamers; and the one I've had in front of me for the last couple of weeks, the ROG Strix Morph 96 Wireless.</p><p>This is a keyboard that's designed to appeal more to the enthusiast end of the mechanical keyboard market, an area we've seen a burgeoning interest in from a range of mainstream manufacturers over recent years. I'd wager Asus has been the one out of all of them to walk the fine line between 'gaming' and 'enthusiast' the best, especially since the <a href="https://www.pcgamer.com/asus-rog-strix-scope-ii-96-wireless-review/" target="_blank">Asus ROG Strix Scope II 96 Wireless</a> has sat atop our <a href="https://www.pcgamer.com/best-gaming-keyboard/" target="_blank">best gaming keyboards</a> list virtually since its release.</p><p>The fact is that the ROG Strix Morph 96 Wireless feels like a strange product when the Strix Scope II 96 Wireless exists. After all, the two share a lot of features. You've got the same 96 percent, or 1800 layout, that squishes up the number pad and moves the nav cluster to provide a full-size keyboard in a reduced footprint, a similar choice of switches, dual wireless connectivity and some very similar physical touches that make this a bit of a head-scratcher to me. </p><p>I'll return to this point a little later on, but let's have a gander at what's in front of me. Well, um, it's a keyboard. There you go. I'll take my commission now, please, editor, and be off to the bank to cash my cheque (if I had a physical bank to go to—I guess my phone's banking app will have to do).</p><div  class="fancy-box"><div class="fancy_box-title">ROG Strix Morph 96 Wireless specs</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="pakN8wuA96FHzwimusvJ79" name="Asus ROG Strix Morph 96 Wireless 13" caption="" alt="Asus ROG Strix Morph 96 Wireless on a desk mat." src="https://cdn.mos.cms.futurecdn.net/pakN8wuA96FHzwimusvJ79-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>Switch type: </strong>Asus ROG NX Snow V2 or Storm V2<br><strong>Keycaps: </strong>ABS, doubleshot<br><strong>Lighting: </strong>RGB, controllable in software<br><strong>Onboard storage:</strong> 5 profiles<br><strong>Extra ports: </strong>None<br><strong>Connection type: </strong>Wired USB-C/2.4 GHz/Bluetooth 5.0<br><strong>Cable: </strong>USB Type-C/USB Type-A, detachable<br><strong>Weight: </strong>1.125 kg/2.48 lbs<br><strong>Price:</strong> $140/£135</p></div></div><p>Oh, you want more? Oh, alright. I may have to work a little harder to earn a living, I suppose. As I say, we've got the same 96 percent layout as the Strix Scope II 96 Wireless that provides a full-size layout, complete with number pad, arrow keys and nav cluster, in a smaller footprint to save desk space. It's also known as the '1800 layout' after the Cherry G80-1800 keyboard that has been around for at least the last twenty-five years, if not longer by this point, which is where this configuration of keys originated. </p><p>It's a functional choice, and one I wish we'd see a little more from manufacturers, being very easy to live with if you're used to a full-size board. You'll just need to remember to find some of the nav keys above the number pad, rather than next to it.</p><p>Physical touches include doubleshot keycaps with a pleasant texturing to them that aids grip when typing, although I am quite sad to report they're ABS rather than PBT. This is a marker of a cheaper keyboard, even though PBT has made its way down the price ladder to more wallet-friendly options in recent years, such as the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/gamakay-x-naughshark-ns68-review/" target="_blank">Gamakay x NaughShark NS68</a>. There's potential for the ROG Strix Morph 96 Wireless' keycaps to shine after not too long if you're a heavy user—the Strix Scope II 96 Wireless instead has good old PBT. I am pleased about the dual Windows/macOS legends, though, which is very thoughtful.</p><p>The casing here is different to its older brother, too, with a closed shell rather than a skeletal one, which is better because you won't get any ingress of crud, and it keeps the RGB lighting from spilling out. The top case is metal with the underside being plastic, and at 1.125 kg, there's some decent heft here. Unfortunately, I did notice some flex at the corners under some pressure, which leaves a bit of a sour taste. You can also take this keyboard apart with screws in each corner of the top casing, saving the task of turning it over to disassemble. For modders, that's a small but important addition.</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="fqpJ4NtXtzz9QNLcL544A9" name="Asus ROG Strix Morph 96 Wireless 6" alt="Asus ROG Strix Morph 96 Wireless on a desk mat." src="https://cdn.mos.cms.futurecdn.net/fqpJ4NtXtzz9QNLcL544A9-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>On the left, you'll find a multi-function dial that can do everything from controlling volume to changing the RGB lighting brightness level and even scrolling a webpage right out of the box with the function changed by pressing the button further up the left side. </p><p>Both sides are home to additional RGB light bars, while the top side houses a USB-C port for wired use, a toggle switch for connectivity and a cubby for the USB-A receiver. The ROG Strix Morph 96 Wireless also comes with some grippy two-stage feet on the underside for added flexibility of typing angle.</p><p>Inside, you get a choice of switches, with V2 variants of Asus' linear ROG NX Snow or audibly tactile RX Storm switches; my sample shipped with the former. These are a light and responsive 40 g linear switch that benefits from factory lubrication for no scratchiness under finger. To help their gaming credentials, the ROG NX Snow switches have a slightly higher actuation point and a shorter travel than other switches, for a snappier feel.</p><p>For gaming, the ROG NX Snow V2s work well given their lighter force, and have what Asus calls ‘Speed Tap’, which is their version of the SOCD tech found across a lot of manufacturers’ keyboards for unnaturally brisk movement. It is more of a novelty than a feature, given it’s been banned in Counter-Strike 2 online play, for instance.</p><p>Beyond this, though, the ROG Strix Morph 96 Wireless lacks the advanced rapid trigger or analog features that are found on similarly priced gaming keyboards with their Hall effect switches, such as the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/keychron-q5-he-review/" target="_blank">Keychron Q5 HE</a>.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="tdaYJ6ovquRypHD59moJ99" name="Asus ROG Strix Morph 96 Wireless 4" alt="Asus ROG Strix Morph 96 Wireless on a desk mat." src="https://cdn.mos.cms.futurecdn.net/tdaYJ6ovquRypHD59moJ99-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>If you don't like the pre-installed switches inside this keyboard, then it is hotswappable, and surprisingly easy to swap out switches and keycaps with the pullers included in the box. To help its enthusiast credentials, this board also comes with a range of foam and such inside for sound dampening, and there isn't any case rattle or ping in my experience. The ROG Strix Morph 96 Wireless is also gasket-mounted, leading to a slightly bouncier feel under finger.</p><p>Connectivity is versatile, with both Bluetooth and 2.4 GHz supported for wireless flavour. As is typical, it's essentially plug and play, and I had no issues pairing to Bluetooth on my MacBook Pro and using the 2.4 GHz receiver on my main Windows gaming PC. There is also a USB-C port for wired connectivity and charging. The receiver included with this keyboard is the 'Omni' receiver, which can also handle a 2.4 GHz gaming mouse connection for a potent wireless desktop combo over one receiver, freeing up a valuable USB-A port on your PC.</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="xkX2jiXFcLkrgWu2ejYA79" name="Asus ROG Strix Morph 96 Wireless 9" alt="Asus ROG Strix Morph 96 Wireless on a desk mat." src="https://cdn.mos.cms.futurecdn.net/xkX2jiXFcLkrgWu2ejYA79-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>As for battery life, expect to get around 100 hours of battery life with the RGB lighting set to its default state, and virtually 600 hours if you don't want the RGB on. It is more of a subtle underglow than a full-on Pink Floyd gig, given that the keycaps here have solid legends, so it isn't as much of a sore miss to turn it off as you might expect.</p><p>I'm also pleased to report Asus has given the ROG Strix Morph 96 Wireless support for its web-based Gear Link software, which replaces the frankly shoddy Armoury Crate suite. This is only accessible when you have the keyboard plugged in via a cable or the 2.4 GHz receiver, but it provides a much lighter and easier-to-use alternative that gives you a decent amount of customisation.</p><p>Here, you can remap keys, fiddle around with the keyboard's wheel, and mess around with the RGB lighting. Granted, you don't get as much functionality as you would with a Hall effect keyboard, but for the reasons you're likely to dive into software, it's adequate.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/UGZFE76r5nPDMq4rrCCHA9-1920-80.jpg" alt="Asus ROG Strix Morph 96 Wireless on a desk mat." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/GAofj4TuHt8uoBWLSZ2s89-1920-80.jpg" alt="Asus ROG Strix Morph 96 Wireless on a desk mat." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/CWeU4ToNGsxrA7Ye2tai79-1920-80.jpg" alt="Asus ROG Strix Morph 96 Wireless on a desk mat." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/pakN8wuA96FHzwimusvJ79-1920-80.jpg" alt="Asus ROG Strix Morph 96 Wireless on a desk mat." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><div  class="fancy-box"><div class="fancy_box-title">Buy if...</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>✅ You want a decent enthusiast-grade mechanical choice: </strong>The ROG Strix Morph 96 Wireless nails the basics for a mainstream mechanical choice with smooth switches, a functional layout, versatile wireless connectivity and more.</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 your money to go a bit further: </strong>You can save a bit by going for the Strix Scope II 96 Wireless, and net extras such as PBT keycaps, a wristrest and longer battery life.</p></div></div><p>Returning to the point posed at the beginning of the article, the ROG Strix Morph 96 Wireless feels too similar to the Strix Scope II 96 Wireless in some respects to the point I have considered putting the "They've rebadged it, you fool!" quote from Alan Partridge (British reference, sorry) somewhere in here and therefore gets more of a half-hearted recommendation. </p><p>This isn't least as it's possible to get the Strix Scope II 96 Wireless with PBT keycaps, a wristrest and a longer maximum runtime for less than the $140/£135 asking price for this new model.</p><p>At this price point, you can also begin to consider the likes of the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/ducky-zero-6108-review/" target="_blank">Ducky Zero 6108</a>, which offers a sublime core experience with a full-size layout, enthusiast-grade touches and proper Cherry MX2A switches for the sub £100/$100 mark. You do have to make do without any software customisation there, though.</p><p>It leaves the ROG Strix Morph 96 Wireless in a bit of a funny position. Yes, this is a really lovely keyboard that's cheaper than the Strix Scope II 96 Wireless if we're going on retail price alone with newer switches, a different design and a few other extras, but as I can get other mechanical boards with similar feature sets for less than this, it's a harder sell than you might think.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-keyboards/asus-rog-strix-morph-96-wireless-review/</link>
                                                                            <description>
                            <![CDATA[ Not that new. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">tL5CEEuZPBHtPaUrK5y9gK</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/qUG8ZKVvwPehbo9hpJ3WA9-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 24 Mar 2026 16:19:22 +0000</pubDate>                                                                                                                                <updated>Mon, 30 Mar 2026 14:14:47 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming Keyboards]]></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/qUG8ZKVvwPehbo9hpJ3WA9-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Asus ROG Strix Morph 96 Wireless on a desk mat.]]></media:description>                                                            <media:text><![CDATA[Asus ROG Strix Morph 96 Wireless on a desk mat.]]></media:text>
                                <media:title type="plain"><![CDATA[Asus ROG Strix Morph 96 Wireless on a desk mat.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/qUG8ZKVvwPehbo9hpJ3WA9-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div data-widget-type="review" data-model-name="Asus ROG Strix Morph 96 Wireless" data-widget-title=""></div><p>Asus took the opportunity at CES 2026 earlier this year to unveil two shiny new keyboards: the fast, Hall effect ROG Falchion Ace 75 HE that's focused squarely at gamers; and the one I've had in front of me for the last couple of weeks, the ROG Strix Morph 96 Wireless.</p><p>This is a keyboard that's designed to appeal more to the enthusiast end of the mechanical keyboard market, an area we've seen a burgeoning interest in from a range of mainstream manufacturers over recent years. I'd wager Asus has been the one out of all of them to walk the fine line between 'gaming' and 'enthusiast' the best, especially since the <a href="https://www.pcgamer.com/asus-rog-strix-scope-ii-96-wireless-review/" target="_blank">Asus ROG Strix Scope II 96 Wireless</a> has sat atop our <a href="https://www.pcgamer.com/best-gaming-keyboard/" target="_blank">best gaming keyboards</a> list virtually since its release.</p><p>The fact is that the ROG Strix Morph 96 Wireless feels like a strange product when the Strix Scope II 96 Wireless exists. After all, the two share a lot of features. You've got the same 96 percent, or 1800 layout, that squishes up the number pad and moves the nav cluster to provide a full-size keyboard in a reduced footprint, a similar choice of switches, dual wireless connectivity and some very similar physical touches that make this a bit of a head-scratcher to me. </p><p>I'll return to this point a little later on, but let's have a gander at what's in front of me. Well, um, it's a keyboard. There you go. I'll take my commission now, please, editor, and be off to the bank to cash my cheque (if I had a physical bank to go to—I guess my phone's banking app will have to do).</p><div  class="fancy-box"><div class="fancy_box-title">ROG Strix Morph 96 Wireless specs</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="pakN8wuA96FHzwimusvJ79" name="Asus ROG Strix Morph 96 Wireless 13" caption="" alt="Asus ROG Strix Morph 96 Wireless on a desk mat." src="https://cdn.mos.cms.futurecdn.net/pakN8wuA96FHzwimusvJ79-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>Switch type: </strong>Asus ROG NX Snow V2 or Storm V2<br><strong>Keycaps: </strong>ABS, doubleshot<br><strong>Lighting: </strong>RGB, controllable in software<br><strong>Onboard storage:</strong> 5 profiles<br><strong>Extra ports: </strong>None<br><strong>Connection type: </strong>Wired USB-C/2.4 GHz/Bluetooth 5.0<br><strong>Cable: </strong>USB Type-C/USB Type-A, detachable<br><strong>Weight: </strong>1.125 kg/2.48 lbs<br><strong>Price:</strong> $140/£135</p></div></div><p>Oh, you want more? Oh, alright. I may have to work a little harder to earn a living, I suppose. As I say, we've got the same 96 percent layout as the Strix Scope II 96 Wireless that provides a full-size layout, complete with number pad, arrow keys and nav cluster, in a smaller footprint to save desk space. It's also known as the '1800 layout' after the Cherry G80-1800 keyboard that has been around for at least the last twenty-five years, if not longer by this point, which is where this configuration of keys originated. </p><p>It's a functional choice, and one I wish we'd see a little more from manufacturers, being very easy to live with if you're used to a full-size board. You'll just need to remember to find some of the nav keys above the number pad, rather than next to it.</p><p>Physical touches include doubleshot keycaps with a pleasant texturing to them that aids grip when typing, although I am quite sad to report they're ABS rather than PBT. This is a marker of a cheaper keyboard, even though PBT has made its way down the price ladder to more wallet-friendly options in recent years, such as the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/gamakay-x-naughshark-ns68-review/" target="_blank">Gamakay x NaughShark NS68</a>. There's potential for the ROG Strix Morph 96 Wireless' keycaps to shine after not too long if you're a heavy user—the Strix Scope II 96 Wireless instead has good old PBT. I am pleased about the dual Windows/macOS legends, though, which is very thoughtful.</p><p>The casing here is different to its older brother, too, with a closed shell rather than a skeletal one, which is better because you won't get any ingress of crud, and it keeps the RGB lighting from spilling out. The top case is metal with the underside being plastic, and at 1.125 kg, there's some decent heft here. Unfortunately, I did notice some flex at the corners under some pressure, which leaves a bit of a sour taste. You can also take this keyboard apart with screws in each corner of the top casing, saving the task of turning it over to disassemble. For modders, that's a small but important addition.</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="fqpJ4NtXtzz9QNLcL544A9" name="Asus ROG Strix Morph 96 Wireless 6" alt="Asus ROG Strix Morph 96 Wireless on a desk mat." src="https://cdn.mos.cms.futurecdn.net/fqpJ4NtXtzz9QNLcL544A9-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>On the left, you'll find a multi-function dial that can do everything from controlling volume to changing the RGB lighting brightness level and even scrolling a webpage right out of the box with the function changed by pressing the button further up the left side. </p><p>Both sides are home to additional RGB light bars, while the top side houses a USB-C port for wired use, a toggle switch for connectivity and a cubby for the USB-A receiver. The ROG Strix Morph 96 Wireless also comes with some grippy two-stage feet on the underside for added flexibility of typing angle.</p><p>Inside, you get a choice of switches, with V2 variants of Asus' linear ROG NX Snow or audibly tactile RX Storm switches; my sample shipped with the former. These are a light and responsive 40 g linear switch that benefits from factory lubrication for no scratchiness under finger. To help their gaming credentials, the ROG NX Snow switches have a slightly higher actuation point and a shorter travel than other switches, for a snappier feel.</p><p>For gaming, the ROG NX Snow V2s work well given their lighter force, and have what Asus calls ‘Speed Tap’, which is their version of the SOCD tech found across a lot of manufacturers’ keyboards for unnaturally brisk movement. It is more of a novelty than a feature, given it’s been banned in Counter-Strike 2 online play, for instance.</p><p>Beyond this, though, the ROG Strix Morph 96 Wireless lacks the advanced rapid trigger or analog features that are found on similarly priced gaming keyboards with their Hall effect switches, such as the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/keychron-q5-he-review/" target="_blank">Keychron Q5 HE</a>.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="tdaYJ6ovquRypHD59moJ99" name="Asus ROG Strix Morph 96 Wireless 4" alt="Asus ROG Strix Morph 96 Wireless on a desk mat." src="https://cdn.mos.cms.futurecdn.net/tdaYJ6ovquRypHD59moJ99-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>If you don't like the pre-installed switches inside this keyboard, then it is hotswappable, and surprisingly easy to swap out switches and keycaps with the pullers included in the box. To help its enthusiast credentials, this board also comes with a range of foam and such inside for sound dampening, and there isn't any case rattle or ping in my experience. The ROG Strix Morph 96 Wireless is also gasket-mounted, leading to a slightly bouncier feel under finger.</p><p>Connectivity is versatile, with both Bluetooth and 2.4 GHz supported for wireless flavour. As is typical, it's essentially plug and play, and I had no issues pairing to Bluetooth on my MacBook Pro and using the 2.4 GHz receiver on my main Windows gaming PC. There is also a USB-C port for wired connectivity and charging. The receiver included with this keyboard is the 'Omni' receiver, which can also handle a 2.4 GHz gaming mouse connection for a potent wireless desktop combo over one receiver, freeing up a valuable USB-A port on your PC.</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="xkX2jiXFcLkrgWu2ejYA79" name="Asus ROG Strix Morph 96 Wireless 9" alt="Asus ROG Strix Morph 96 Wireless on a desk mat." src="https://cdn.mos.cms.futurecdn.net/xkX2jiXFcLkrgWu2ejYA79-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>As for battery life, expect to get around 100 hours of battery life with the RGB lighting set to its default state, and virtually 600 hours if you don't want the RGB on. It is more of a subtle underglow than a full-on Pink Floyd gig, given that the keycaps here have solid legends, so it isn't as much of a sore miss to turn it off as you might expect.</p><p>I'm also pleased to report Asus has given the ROG Strix Morph 96 Wireless support for its web-based Gear Link software, which replaces the frankly shoddy Armoury Crate suite. This is only accessible when you have the keyboard plugged in via a cable or the 2.4 GHz receiver, but it provides a much lighter and easier-to-use alternative that gives you a decent amount of customisation.</p><p>Here, you can remap keys, fiddle around with the keyboard's wheel, and mess around with the RGB lighting. Granted, you don't get as much functionality as you would with a Hall effect keyboard, but for the reasons you're likely to dive into software, it's adequate.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/UGZFE76r5nPDMq4rrCCHA9-1920-80.jpg" alt="Asus ROG Strix Morph 96 Wireless on a desk mat." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/GAofj4TuHt8uoBWLSZ2s89-1920-80.jpg" alt="Asus ROG Strix Morph 96 Wireless on a desk mat." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/CWeU4ToNGsxrA7Ye2tai79-1920-80.jpg" alt="Asus ROG Strix Morph 96 Wireless on a desk mat." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/pakN8wuA96FHzwimusvJ79-1920-80.jpg" alt="Asus ROG Strix Morph 96 Wireless on a desk mat." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><div  class="fancy-box"><div class="fancy_box-title">Buy if...</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>✅ You want a decent enthusiast-grade mechanical choice: </strong>The ROG Strix Morph 96 Wireless nails the basics for a mainstream mechanical choice with smooth switches, a functional layout, versatile wireless connectivity and more.</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 your money to go a bit further: </strong>You can save a bit by going for the Strix Scope II 96 Wireless, and net extras such as PBT keycaps, a wristrest and longer battery life.</p></div></div><p>Returning to the point posed at the beginning of the article, the ROG Strix Morph 96 Wireless feels too similar to the Strix Scope II 96 Wireless in some respects to the point I have considered putting the "They've rebadged it, you fool!" quote from Alan Partridge (British reference, sorry) somewhere in here and therefore gets more of a half-hearted recommendation. </p><p>This isn't least as it's possible to get the Strix Scope II 96 Wireless with PBT keycaps, a wristrest and a longer maximum runtime for less than the $140/£135 asking price for this new model.</p><p>At this price point, you can also begin to consider the likes of the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/ducky-zero-6108-review/" target="_blank">Ducky Zero 6108</a>, which offers a sublime core experience with a full-size layout, enthusiast-grade touches and proper Cherry MX2A switches for the sub £100/$100 mark. You do have to make do without any software customisation there, though.</p><p>It leaves the ROG Strix Morph 96 Wireless in a bit of a funny position. Yes, this is a really lovely keyboard that's cheaper than the Strix Scope II 96 Wireless if we're going on retail price alone with newer switches, a different design and a few other extras, but as I can get other mechanical boards with similar feature sets for less than this, it's a harder sell than you might think.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Asus ROG Falchion Ace 75 HE review ]]></title>
                                                                                                <dc:content><![CDATA[ <div data-widget-type="review" data-model-name="Asus ROG Falchion Ace 75 HE" data-widget-title=""></div><p>The Asus ROG Falchion Ace 75 HE takes the older ROG Falchion Ace HFX and essentially throws it away. That might seem like an overexaggeration, but it seems to be the truth as Asus has promised revamped switches along with a new sensor, new PBT keycaps, a completely different design and more besides. If that isn't starting fresh, I don't know what is.</p><p>The brand did this recently with the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/asus-rog-azoth-96-he-review/" target="_blank">Azoth 96 HE</a> to great effect, and it seems like this new model has taken some inspiration and elements from it. For instance, we've got the same new ROG HFX V2 switches inside that came on the new Azoth for heightened precision and power against their predecessors.</p><p>For reference, the HFX V2 switches have seen some notable upgrades over the older V1 switches, kitted out to previous Asus keyboards with Hall effect powers. The V2s were first seen on the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/asus-rog-falcata/" target="_blank">Asus ROG Falcata</a>, with optimisations such as a shorter overall travel (3.5 mm vs 4 mm) that's more noticeable in use than you'd think, plus a larger magnet for more precise customisation. It's now possible to set the actuation or reset point in increments of 0.01 mm, which is not something I've seen before on a range of the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/best-hall-effect-keyboards/" target="_blank">best Hall effect keyboards</a> out there.</p><p>In conjunction with the optimisations to accuracy and a shorter travel, the ROG HFX V2 switches carry a lighter actuation force of 32 g against 40 g. I appreciate that sounds like a small change, but it's one that makes a big difference. It essentially makes these switches some of the lightest you'll find on a keyboard from a more 'mainstream' brand. Combined with the shorter travel, it makes these some of the speediest out there, and when the rapid trigger powers are taken into account, it can turn the switches into hair triggers.</p><div  class="fancy-box"><div class="fancy_box-title">Falchion Ace 75 HE 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="L6EhhYUmNo66Si4N9azmWS" name="Asus ROG Falchion Ace 75 HE 2" caption="" alt="The Asus ROG Falchion Ace 75 HE on a desk with the lighting enabled." src="https://cdn.mos.cms.futurecdn.net/L6EhhYUmNo66Si4N9azmWS-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>Switch type:</strong> Asus ROG HFX V2<br><strong>Keycaps:</strong> PBT, doubleshot<br><strong>Lighting:</strong> RGB, controllable in software<br><strong>Onboard storage:</strong> 5 profiles<br><strong>Extra ports: </strong>None<br><strong>Connection type:</strong> Wired USB-C/<br><strong>Cable:</strong> USB Type-C/USB Type-A, detachable<br><strong>Weight: </strong>1.395 kg/3.07 lbs<br><strong>Price:</strong> £220/$220</p></div></div><p>For the HFX V2 switches, Asus has also moved to a POM stem that's lubricated to mean these linear switches are smooth and slick under finger. To help reduce key wobble, there is also a new block stem—I certainly think these are stable switches under finger, and there isn't much in the way of stem wobble. Asus has also kitted the ROG Falchion Ace 75 HE with five layers of sound dampening inside to nullify any case rattle or ping, and it's a sterling effort here.</p><p>The brand also says this keyboard is hotswappable, so it's technically possible to change the switches without the need for any soldering, although it doesn't state which switches work in here besides the HFX V2 and V2X models (the difference between these is that the -X model has an even lighter 30 g force and a -X-style stabiliser assembly for further wobble reduction). It's certainly very rare that you have the option to swap in more traditional three or five-pin MX-style switches in an HE keyboard, after all.</p><p>I dived into my usual testing grounds of Counter Strike 2 to give the ROG Falchion Ace 75 HE a fair go, along with the fast <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">Logitech G Pro X2 Superstrike</a><strong> </strong>I had spare. The result is that this Asus keyboard is smooth and slick with its inputs, especially with hyper-sensitive rapid trigger enabled for innately brisk actuation and reset points. Movement felt especially fast, as did weapon switching and crouching, owing to the buttons I'd set rapid trigger to in the Gear Link software this keyboard utilises.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/DemZCF4MLgKp84MvjEmSWS-1920-80.jpg" alt="The Asus ROG Falchion Ace 75 HE on a desk with the lighting enabled." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/d69VN2FCDVrGLcELr6ttVS-1920-80.jpg" alt="The Asus ROG Falchion Ace 75 HE on a desk with the lighting enabled." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Gear Link is Asus' new web-based software that's a major improvement from the app-based Armoury Crate that I've traditionally felt let the ROG products down for far too long, feeling slow and clunky. Being web-based means Gear Link feels lighter and more responsive for its impressive array of features, including setting actuation and reset points, plus rapid trigger powers, and more advanced mapping such as dynamic keystroke, mod tap and all that jazz if you want to fiddle until your heart's content.</p><p>There is also SOCD tech for unnaturally quick strafing, known here as Speed Tap, although this is more for marking bumf than for real-world use. Use it online, and you'll probably see the almighty ban hammer wielded. You can also fiddle with RGB lighting, plus with the functionality of this keyboard's touch surface on the top side and the roller wheel near the end of the right-hand edge for things such as key travel, RGB lighting brightness and media volume.</p><p>The ROG Falchion Ace 75 HE is entirely wired, meaning a convenient and latency-free connection, plus there's no need to worry about charging it up. You also get the benefit of 8000 Hz polling powers, too, for more frequent reporting of inputs than other, more standard gaming keyboards. It might not be something that mere mortals can benefit from, but for the pros that this board is aimed at, where, to them, every fraction of a second counts, it's a worthwhile addition.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/N6nHAJXQLzEtAWcrzyVHVS-1920-80.jpg" alt="The Asus ROG Falchion Ace 75 HE on a desk with the lighting enabled." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/87mHSVGHDVPWQYr9F8TdWS-1920-80.jpg" alt="The Asus ROG Falchion Ace 75 HE on a desk with the lighting enabled." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/PpdCCV6EAt4V334fFFiTWS-1920-80.jpg" alt="The Asus ROG Falchion Ace 75 HE on a desk with the lighting enabled." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ThSTbM3QY8xtn53xG5LAXS-1920-80.jpg" alt="The Asus ROG Falchion Ace 75 HE on a desk with the lighting enabled." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/YUkYv2DtqFnev8eC2CMBWS-1920-80.jpg" alt="The Asus ROG Falchion Ace 75 HE on a desk with the lighting enabled." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The design of this Asus keyboard has changed a little against the older Falchion models, with this variant moving up to a 75% layout for the added functionality of a function row and single-column nav cluster. The Falchion's trademark touch bar across the top makes a return with this model, as well as a roller in the top right corner. Both can be remapped in software for a variety of functions and give this keyboard a clever means of control besides the actual keyboard part. </p><p>The roller is a particularly ingenious addition, as by default, it's used for fine-tuning actuation point and the sensitivity of the keyboard's rapid trigger without going into software. Plus, there's a toggle switch on the right side that can quickly enable and disable rapid trigger at the flick of a switch.</p><p>The fit and finish here is suitably excellent, with Asus' customary blend of a plastic underside and metal top plate to the chassis for a sturdy feel in-hand. It is possible to get fully machined aluminium cases at this price point, but this is a good mix of materials. In addition, this keyboard has doubleshot PBT keycaps for extra durability and a quality touch.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/mf2ZMYrCUPcpg7mMAPGJUS-1920-80.jpg" alt="The Asus ROG Falchion Ace 75 HE on a desk with the lighting enabled." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/T9KsVNqDvJMT8bf4DrTrLS-1920-80.jpg" alt="The Asus ROG Falchion Ace 75 HE on a desk with the lighting enabled." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><div  class="fancy-box"><div class="fancy_box-title">Buy if...</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>✅ You want a powerful, wired keyboard:</strong> The ROG Falchion Ace 75 HE is a potent keyboard with little compromises on speed and clever physical features.</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 wireless choice: </strong>For a similar outlay to this Asus choice, you can snag a fast wireless keyboard that gives you additional desk freedom.</p></div></div><p>Then, after all this, we come to the price. The ROG Falchion Ace 75 HE is going to leave a £220/$220-shaped hole in your wallet, making it a real premium product. At that price, we're looking at rivals including the larger layout <a href="https://www.pcgamer.com/hardware/gaming-keyboards/keychron-q5-he-review/" target="_blank">Keychron Q5 HE</a> that has a fully machined aluminium case at the expense of lacking slightly more advanced switches and the low-profile <a href="https://www.pcgamer.com/hardware/gaming-keyboards/nuphy-air60-he-review/" target="_blank">NuPhy Air60 HE</a> that trades full-height switches for low-profile ones and retains a lot of the same powers at a lower price tag.</p><p>There is also another thorn in the ROG Falchion Ace 75 HE's armour, with one of our favourite HE keyboards, the wireless <a href="https://www.pcgamer.com/hardware/gaming-keyboards/keychron-k2-he-review/" target="_blank">Keychron K2 HE</a>, which trades wired power for wireless convenience and adds some pleasant wood to the chassis if you get the right version. It too has powerful HE switches, convenient software, and will keep more pounds/dollars/whichever currency in your pocket while doing so.</p><p>The bottom line is simple: the Asus ROG Falchion Ace 75 HE is an excellent HE gaming keyboard, but is beaten by more affordable competition that doesn't sacrifice against it. Bear in mind the usual Asus ROG tax before picking this one up.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-keyboards/asus-rog-falchion-ace-75-he-review/</link>
                                                                            <description>
                            <![CDATA[ An ace keyboard. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">BCntjGcBAR8xbGPsorTDQB</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/RvH7EP8da6Zz4N9bWgWmWS-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 24 Mar 2026 11:46:24 +0000</pubDate>                                                                                                                                <updated>Tue, 24 Mar 2026 13:22:06 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming Keyboards]]></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/RvH7EP8da6Zz4N9bWgWmWS-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Asus ROG Falchion Ace 75 HE on a desk with the lighting enabled.]]></media:description>                                                            <media:text><![CDATA[The Asus ROG Falchion Ace 75 HE on a desk with the lighting enabled.]]></media:text>
                                <media:title type="plain"><![CDATA[The Asus ROG Falchion Ace 75 HE on a desk with the lighting enabled.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/RvH7EP8da6Zz4N9bWgWmWS-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div data-widget-type="review" data-model-name="Asus ROG Falchion Ace 75 HE" data-widget-title=""></div><p>The Asus ROG Falchion Ace 75 HE takes the older ROG Falchion Ace HFX and essentially throws it away. That might seem like an overexaggeration, but it seems to be the truth as Asus has promised revamped switches along with a new sensor, new PBT keycaps, a completely different design and more besides. If that isn't starting fresh, I don't know what is.</p><p>The brand did this recently with the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/asus-rog-azoth-96-he-review/" target="_blank">Azoth 96 HE</a> to great effect, and it seems like this new model has taken some inspiration and elements from it. For instance, we've got the same new ROG HFX V2 switches inside that came on the new Azoth for heightened precision and power against their predecessors.</p><p>For reference, the HFX V2 switches have seen some notable upgrades over the older V1 switches, kitted out to previous Asus keyboards with Hall effect powers. The V2s were first seen on the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/asus-rog-falcata/" target="_blank">Asus ROG Falcata</a>, with optimisations such as a shorter overall travel (3.5 mm vs 4 mm) that's more noticeable in use than you'd think, plus a larger magnet for more precise customisation. It's now possible to set the actuation or reset point in increments of 0.01 mm, which is not something I've seen before on a range of the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/best-hall-effect-keyboards/" target="_blank">best Hall effect keyboards</a> out there.</p><p>In conjunction with the optimisations to accuracy and a shorter travel, the ROG HFX V2 switches carry a lighter actuation force of 32 g against 40 g. I appreciate that sounds like a small change, but it's one that makes a big difference. It essentially makes these switches some of the lightest you'll find on a keyboard from a more 'mainstream' brand. Combined with the shorter travel, it makes these some of the speediest out there, and when the rapid trigger powers are taken into account, it can turn the switches into hair triggers.</p><div  class="fancy-box"><div class="fancy_box-title">Falchion Ace 75 HE 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="L6EhhYUmNo66Si4N9azmWS" name="Asus ROG Falchion Ace 75 HE 2" caption="" alt="The Asus ROG Falchion Ace 75 HE on a desk with the lighting enabled." src="https://cdn.mos.cms.futurecdn.net/L6EhhYUmNo66Si4N9azmWS-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>Switch type:</strong> Asus ROG HFX V2<br><strong>Keycaps:</strong> PBT, doubleshot<br><strong>Lighting:</strong> RGB, controllable in software<br><strong>Onboard storage:</strong> 5 profiles<br><strong>Extra ports: </strong>None<br><strong>Connection type:</strong> Wired USB-C/<br><strong>Cable:</strong> USB Type-C/USB Type-A, detachable<br><strong>Weight: </strong>1.395 kg/3.07 lbs<br><strong>Price:</strong> £220/$220</p></div></div><p>For the HFX V2 switches, Asus has also moved to a POM stem that's lubricated to mean these linear switches are smooth and slick under finger. To help reduce key wobble, there is also a new block stem—I certainly think these are stable switches under finger, and there isn't much in the way of stem wobble. Asus has also kitted the ROG Falchion Ace 75 HE with five layers of sound dampening inside to nullify any case rattle or ping, and it's a sterling effort here.</p><p>The brand also says this keyboard is hotswappable, so it's technically possible to change the switches without the need for any soldering, although it doesn't state which switches work in here besides the HFX V2 and V2X models (the difference between these is that the -X model has an even lighter 30 g force and a -X-style stabiliser assembly for further wobble reduction). It's certainly very rare that you have the option to swap in more traditional three or five-pin MX-style switches in an HE keyboard, after all.</p><p>I dived into my usual testing grounds of Counter Strike 2 to give the ROG Falchion Ace 75 HE a fair go, along with the fast <a href="https://www.pcgamer.com/hardware/gaming-mice/logitech-g-pro-x2-superstrike-review/" target="_blank">Logitech G Pro X2 Superstrike</a><strong> </strong>I had spare. The result is that this Asus keyboard is smooth and slick with its inputs, especially with hyper-sensitive rapid trigger enabled for innately brisk actuation and reset points. Movement felt especially fast, as did weapon switching and crouching, owing to the buttons I'd set rapid trigger to in the Gear Link software this keyboard utilises.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/DemZCF4MLgKp84MvjEmSWS-1920-80.jpg" alt="The Asus ROG Falchion Ace 75 HE on a desk with the lighting enabled." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/d69VN2FCDVrGLcELr6ttVS-1920-80.jpg" alt="The Asus ROG Falchion Ace 75 HE on a desk with the lighting enabled." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Gear Link is Asus' new web-based software that's a major improvement from the app-based Armoury Crate that I've traditionally felt let the ROG products down for far too long, feeling slow and clunky. Being web-based means Gear Link feels lighter and more responsive for its impressive array of features, including setting actuation and reset points, plus rapid trigger powers, and more advanced mapping such as dynamic keystroke, mod tap and all that jazz if you want to fiddle until your heart's content.</p><p>There is also SOCD tech for unnaturally quick strafing, known here as Speed Tap, although this is more for marking bumf than for real-world use. Use it online, and you'll probably see the almighty ban hammer wielded. You can also fiddle with RGB lighting, plus with the functionality of this keyboard's touch surface on the top side and the roller wheel near the end of the right-hand edge for things such as key travel, RGB lighting brightness and media volume.</p><p>The ROG Falchion Ace 75 HE is entirely wired, meaning a convenient and latency-free connection, plus there's no need to worry about charging it up. You also get the benefit of 8000 Hz polling powers, too, for more frequent reporting of inputs than other, more standard gaming keyboards. It might not be something that mere mortals can benefit from, but for the pros that this board is aimed at, where, to them, every fraction of a second counts, it's a worthwhile addition.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/N6nHAJXQLzEtAWcrzyVHVS-1920-80.jpg" alt="The Asus ROG Falchion Ace 75 HE on a desk with the lighting enabled." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/87mHSVGHDVPWQYr9F8TdWS-1920-80.jpg" alt="The Asus ROG Falchion Ace 75 HE on a desk with the lighting enabled." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/PpdCCV6EAt4V334fFFiTWS-1920-80.jpg" alt="The Asus ROG Falchion Ace 75 HE on a desk with the lighting enabled." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ThSTbM3QY8xtn53xG5LAXS-1920-80.jpg" alt="The Asus ROG Falchion Ace 75 HE on a desk with the lighting enabled." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/YUkYv2DtqFnev8eC2CMBWS-1920-80.jpg" alt="The Asus ROG Falchion Ace 75 HE on a desk with the lighting enabled." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The design of this Asus keyboard has changed a little against the older Falchion models, with this variant moving up to a 75% layout for the added functionality of a function row and single-column nav cluster. The Falchion's trademark touch bar across the top makes a return with this model, as well as a roller in the top right corner. Both can be remapped in software for a variety of functions and give this keyboard a clever means of control besides the actual keyboard part. </p><p>The roller is a particularly ingenious addition, as by default, it's used for fine-tuning actuation point and the sensitivity of the keyboard's rapid trigger without going into software. Plus, there's a toggle switch on the right side that can quickly enable and disable rapid trigger at the flick of a switch.</p><p>The fit and finish here is suitably excellent, with Asus' customary blend of a plastic underside and metal top plate to the chassis for a sturdy feel in-hand. It is possible to get fully machined aluminium cases at this price point, but this is a good mix of materials. In addition, this keyboard has doubleshot PBT keycaps for extra durability and a quality touch.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/mf2ZMYrCUPcpg7mMAPGJUS-1920-80.jpg" alt="The Asus ROG Falchion Ace 75 HE on a desk with the lighting enabled." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/T9KsVNqDvJMT8bf4DrTrLS-1920-80.jpg" alt="The Asus ROG Falchion Ace 75 HE on a desk with the lighting enabled." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><div  class="fancy-box"><div class="fancy_box-title">Buy if...</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>✅ You want a powerful, wired keyboard:</strong> The ROG Falchion Ace 75 HE is a potent keyboard with little compromises on speed and clever physical features.</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 wireless choice: </strong>For a similar outlay to this Asus choice, you can snag a fast wireless keyboard that gives you additional desk freedom.</p></div></div><p>Then, after all this, we come to the price. The ROG Falchion Ace 75 HE is going to leave a £220/$220-shaped hole in your wallet, making it a real premium product. At that price, we're looking at rivals including the larger layout <a href="https://www.pcgamer.com/hardware/gaming-keyboards/keychron-q5-he-review/" target="_blank">Keychron Q5 HE</a> that has a fully machined aluminium case at the expense of lacking slightly more advanced switches and the low-profile <a href="https://www.pcgamer.com/hardware/gaming-keyboards/nuphy-air60-he-review/" target="_blank">NuPhy Air60 HE</a> that trades full-height switches for low-profile ones and retains a lot of the same powers at a lower price tag.</p><p>There is also another thorn in the ROG Falchion Ace 75 HE's armour, with one of our favourite HE keyboards, the wireless <a href="https://www.pcgamer.com/hardware/gaming-keyboards/keychron-k2-he-review/" target="_blank">Keychron K2 HE</a>, which trades wired power for wireless convenience and adds some pleasant wood to the chassis if you get the right version. It too has powerful HE switches, convenient software, and will keep more pounds/dollars/whichever currency in your pocket while doing so.</p><p>The bottom line is simple: the Asus ROG Falchion Ace 75 HE is an excellent HE gaming keyboard, but is beaten by more affordable competition that doesn't sacrifice against it. Bear in mind the usual Asus ROG tax before picking this one up.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Corsair Vanguard Air 99 Wireless gaming keyboard review ]]></title>
                                                                                                <dc:content><![CDATA[ <p>There is a specific audience who’ll be over the moon about this keyboard, and happy to pay the $260/£240 Corsair’s asking for it. The thing is, it really is a specific audience. While some of its best assets can be universally enjoyed, like the creamy-smooth key actuation and Corsair’s trademark construction quality, a lot of what you’re paying premium price for here is useful only in very particular use cases and tastes.</p><p>Let’s take the defining spec of the Vanguard Air 99 Wireless, for example: low-profile, optical keys. It’s obvious from the first keypress that Corsair’s design team have lavished all kinds of care and attention on getting the feeling right, from the gasket-mounted design to the 2.5 mm of travel these low-profile keys have, just enough to lend a satisfying feel to each keypress while still fulfilling the low-profile brief. There are apparently five layers of sound-dampening at work to deliver the right sound, and the right feeling. And they got it right.</p><p>Meanwhile, the sector’s increasingly migrating to Hall Effect magnetic analog switches for the adjustable actuation and overall faster inputs they offer. So, in order to enjoy the sound and feel of this board, Corsair’s asking you to forego the latest and greatest in keyboard tech. For $260. </p><p>If that seems a bit uncharitable, it’s probably because I’m looking at the Vanguard Air 99 Wireless’ fairly useless LCD screen as I type it. It doesn’t detract from the experience while playing games or at work, but it also doesn’t add much functionality, either. Displaying when the caps lock is on or off, or indicating when I’m scrolling a web page is not a good tradeoff for the battery life that screen must be gobbling up. </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:3066px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="AqYaEYLMewt33XnxH2CS8W" name="corsair-vanguard-air-99-01.JPG" alt="Corsair Vanguard Air 99 Wireless gaming keyboard on a white desktop" src="https://cdn.mos.cms.futurecdn.net/AqYaEYLMewt33XnxH2CS8W-1920-80.jpg" mos="" align="middle" fullscreen="" width="3066" height="1725" 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><caption>Vanguard Air 99 Wireless specs</caption><tbody><tr><td class="firstcol " ><p><strong>Size</strong></p></td><td  ><p>99%</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>2.4GHz, Bluetooth, USB Type-C</p></td></tr><tr><td class="firstcol " ><p><strong>Keycaps</strong></p></td><td  ><p>PBT</p></td></tr><tr><td class="firstcol " ><p><strong>Switches</strong></p></td><td  ><p>Corsair OPX Low-profile optical</p></td></tr><tr><td class="firstcol " ><p><strong>Hot-swappable</strong></p></td><td  ><p>No</p></td></tr><tr><td class="firstcol " ><p><strong>Media controls</strong></p></td><td  ><p>Yes, clickable scroll wheel</p></td></tr><tr><td class="firstcol " ><p><strong>Lighting</strong></p></td><td  ><p>Full RGB per-key</p></td></tr><tr><td class="firstcol " ><p><strong>Software</strong></p></td><td  ><p>Corsair Web Hub</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p>$250 | £240</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 searching for a specific sensation: </strong>There are significant downsides to this board, but if tactile feel is the be-all and end-all to you then the combo of low-profile optical mechanical switches and a gasket mount might be a winning one.</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 future-proof board: </strong>The screen might look futuristic, but it doesn’t offer much value and certainly doesn’t offset the absence of adjustable actuation or faster input resets that analog switches offer.</p></div></div><p>Elsewhere there’s not much to grumble about. Least of all in the visual appeal and build quality of the board, which are exemplary as always. What a great combination of solid and sleek this low-profile unit is, heavy enough to stay put when you give it a light nudge and with an aluminium shell that’s aesthetically pleasing and nice to touch. </p><p>The PBT keycaps feel great under your fingers, and they’re machined with super-sharp letters and symbols that let the RGB shine through with precision and minimal bleedthrough coming up from the backplate. Er, across most of the board. </p><p>The exception being the directional arrow keys and the bank of six macro/OBS hotkeys on the lefthand side, all of which have translucent keycaps and so emit a lot more light. I’m not sure how I feel about this, personally. On one hand it makes those keys easier to locate. On the other, who’s using the directional arrow keys in 2026?</p><p>That bank of keys on the left can be used as a stream deck. You’ll need to use Stream Deck software with this rather than the Web Hub, but all six buttons can be mapped to Stream Deck functions. That’s also true of any keyboard with a bank of macro/function keys, but if you do stream yourself it’s a handy value-add to have those keys located reasonably ergonomically.  </p><p>On the topic of ergonomics, then. My fingers just don't seem to like this combination of 99% layout, low profile keys and the way those keys are stacked. I’m a week deep into using this keyboard every day for work and games, and somehow my fingers still trip up at times or accidentally hit the macro bank of keys. On the plus side I do appreciate two levels of drop-out feet to adjust the angle with. Elevating the board on the lowest steps helped me a bit, but didn’t make me feel totally comfortable. Your results will, of course, vary, but I find it easier to navigate Logitech’s G515 TKL RAPID when it comes to low-profile boards.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/PNge3GTFuTWmyHBQvjhExV-1920-80.jpg" alt="Corsair Vanguard Air 99 Wireless gaming keyboard on a white desktop" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/JYRoiLp5hcKhDwkbvWAZqV-1920-80.jpg" alt="Corsair Vanguard Air 99 Wireless gaming keyboard on a white desktop" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/rFnnV8TWNLn7ZawrAkUmmV-1920-80.jpg" alt="Corsair Vanguard Air 99 Wireless gaming keyboard on a white desktop" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/GJ2fD9wWpjSdgreSxV9fuV-1920-80.jpg" alt="Corsair Vanguard Air 99 Wireless gaming keyboard on a white desktop" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/QSBbE8sXu6xvVf4Xu5ZQuV-1920-80.jpg" alt="Corsair Vanguard Air 99 Wireless gaming keyboard on a white desktop" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>When I put the Vanguard Air 99 Wireless to work in my favourite keyboard benchmark, Typing of the Dead: Overkill, though, I was pleasantly surprised. 96% precision! That’s up there with some of my favourite boards. Similarly, in Counter-Strike 2 my digits locked in and danced over WASD like Fred Astaire with an AK. I can only surmise that this layout and profile are suited to my fingers when it comes to short bursts of concentration, but less so through a whole day of productivity tasks. And there’s nothing the LCD screen can do about it but show me an animated Corsair logo. </p><p>Here are the reasons I’m persevering with it: a choice of 2.4 GHz wireless, Bluetooth or USB-C wired connections. Wireless operation with up to 8K polling which has never yet dropped out. A PC/Mac mode toggle switch. Easy customisation via Corsair’s browser-based Web Hub. It’s a little slow at times, but vastly preferable to having iCUE installed locally. And above all, the feeling of sturdiness and buttery actuation, even if the layout does trip me up at times. </p><p>And it looks quite cool on my desk. </p><p>As a reviewer, I’m more inclined to this generous mindset than someone who’d paid, say, $260 for it. Price points are hard right now. The global economic market is extremely volatile and prices are rising at every level, for manufacturers and consumers alike. Still, you can’t help but remember the days 2-3 years ago when the equivalent of this keyboard would have been priced well below $200. I’m not saying it’s Corsair’s fault. But in a world that’s asking more and more money from you just to retain access to the basics, I am dubious as to whether this specific actuation feel is really worth this much money.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-keyboards/corsair-vanguard-air-99-wireless-review/</link>
                                                                            <description>
                            <![CDATA[ Low-profile, optical mechanical switches in a 99% form factor with 100% pricing. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">HkGMsrb3kHqazrhGU5T6YH</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/QSBbE8sXu6xvVf4Xu5ZQuV-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 23 Mar 2026 15:00:57 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Keyboards]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Phil Iwaniuk ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/NAYephjpJ45djwWGFJJ4mU-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Phil &#039;the face&#039; Iwaniuk used to work in magazines. Now he wanders the earth, stopping passers-by to tell them about PC games he remembers from 1998 until their polite smiles turn cold. He also makes ads. Veteran hardware smasher and game botherer of PC Format, Official PlayStation Magazine, PCGamesN, Guardian, Eurogamer, IGN, VG247, and What Gramophone? He won an award once, but he doesn&#039;t like to go on about it.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;You can get rid of &#039;the face&#039; bit if you like.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;No -Ed.&lt;/em&gt;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/QSBbE8sXu6xvVf4Xu5ZQuV-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Corsair Vanguard Air 99 Wireless gaming keyboard on a white desktop]]></media:description>                                                            <media:text><![CDATA[Corsair Vanguard Air 99 Wireless gaming keyboard on a white desktop]]></media:text>
                                <media:title type="plain"><![CDATA[Corsair Vanguard Air 99 Wireless gaming keyboard on a white desktop]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/QSBbE8sXu6xvVf4Xu5ZQuV-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>There is a specific audience who’ll be over the moon about this keyboard, and happy to pay the $260/£240 Corsair’s asking for it. The thing is, it really is a specific audience. While some of its best assets can be universally enjoyed, like the creamy-smooth key actuation and Corsair’s trademark construction quality, a lot of what you’re paying premium price for here is useful only in very particular use cases and tastes.</p><p>Let’s take the defining spec of the Vanguard Air 99 Wireless, for example: low-profile, optical keys. It’s obvious from the first keypress that Corsair’s design team have lavished all kinds of care and attention on getting the feeling right, from the gasket-mounted design to the 2.5 mm of travel these low-profile keys have, just enough to lend a satisfying feel to each keypress while still fulfilling the low-profile brief. There are apparently five layers of sound-dampening at work to deliver the right sound, and the right feeling. And they got it right.</p><p>Meanwhile, the sector’s increasingly migrating to Hall Effect magnetic analog switches for the adjustable actuation and overall faster inputs they offer. So, in order to enjoy the sound and feel of this board, Corsair’s asking you to forego the latest and greatest in keyboard tech. For $260. </p><p>If that seems a bit uncharitable, it’s probably because I’m looking at the Vanguard Air 99 Wireless’ fairly useless LCD screen as I type it. It doesn’t detract from the experience while playing games or at work, but it also doesn’t add much functionality, either. Displaying when the caps lock is on or off, or indicating when I’m scrolling a web page is not a good tradeoff for the battery life that screen must be gobbling up. </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:3066px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="AqYaEYLMewt33XnxH2CS8W" name="corsair-vanguard-air-99-01.JPG" alt="Corsair Vanguard Air 99 Wireless gaming keyboard on a white desktop" src="https://cdn.mos.cms.futurecdn.net/AqYaEYLMewt33XnxH2CS8W-1920-80.jpg" mos="" align="middle" fullscreen="" width="3066" height="1725" 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><caption>Vanguard Air 99 Wireless specs</caption><tbody><tr><td class="firstcol " ><p><strong>Size</strong></p></td><td  ><p>99%</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>2.4GHz, Bluetooth, USB Type-C</p></td></tr><tr><td class="firstcol " ><p><strong>Keycaps</strong></p></td><td  ><p>PBT</p></td></tr><tr><td class="firstcol " ><p><strong>Switches</strong></p></td><td  ><p>Corsair OPX Low-profile optical</p></td></tr><tr><td class="firstcol " ><p><strong>Hot-swappable</strong></p></td><td  ><p>No</p></td></tr><tr><td class="firstcol " ><p><strong>Media controls</strong></p></td><td  ><p>Yes, clickable scroll wheel</p></td></tr><tr><td class="firstcol " ><p><strong>Lighting</strong></p></td><td  ><p>Full RGB per-key</p></td></tr><tr><td class="firstcol " ><p><strong>Software</strong></p></td><td  ><p>Corsair Web Hub</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p>$250 | £240</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 searching for a specific sensation: </strong>There are significant downsides to this board, but if tactile feel is the be-all and end-all to you then the combo of low-profile optical mechanical switches and a gasket mount might be a winning one.</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 future-proof board: </strong>The screen might look futuristic, but it doesn’t offer much value and certainly doesn’t offset the absence of adjustable actuation or faster input resets that analog switches offer.</p></div></div><p>Elsewhere there’s not much to grumble about. Least of all in the visual appeal and build quality of the board, which are exemplary as always. What a great combination of solid and sleek this low-profile unit is, heavy enough to stay put when you give it a light nudge and with an aluminium shell that’s aesthetically pleasing and nice to touch. </p><p>The PBT keycaps feel great under your fingers, and they’re machined with super-sharp letters and symbols that let the RGB shine through with precision and minimal bleedthrough coming up from the backplate. Er, across most of the board. </p><p>The exception being the directional arrow keys and the bank of six macro/OBS hotkeys on the lefthand side, all of which have translucent keycaps and so emit a lot more light. I’m not sure how I feel about this, personally. On one hand it makes those keys easier to locate. On the other, who’s using the directional arrow keys in 2026?</p><p>That bank of keys on the left can be used as a stream deck. You’ll need to use Stream Deck software with this rather than the Web Hub, but all six buttons can be mapped to Stream Deck functions. That’s also true of any keyboard with a bank of macro/function keys, but if you do stream yourself it’s a handy value-add to have those keys located reasonably ergonomically.  </p><p>On the topic of ergonomics, then. My fingers just don't seem to like this combination of 99% layout, low profile keys and the way those keys are stacked. I’m a week deep into using this keyboard every day for work and games, and somehow my fingers still trip up at times or accidentally hit the macro bank of keys. On the plus side I do appreciate two levels of drop-out feet to adjust the angle with. Elevating the board on the lowest steps helped me a bit, but didn’t make me feel totally comfortable. Your results will, of course, vary, but I find it easier to navigate Logitech’s G515 TKL RAPID when it comes to low-profile boards.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/PNge3GTFuTWmyHBQvjhExV-1920-80.jpg" alt="Corsair Vanguard Air 99 Wireless gaming keyboard on a white desktop" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/JYRoiLp5hcKhDwkbvWAZqV-1920-80.jpg" alt="Corsair Vanguard Air 99 Wireless gaming keyboard on a white desktop" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/rFnnV8TWNLn7ZawrAkUmmV-1920-80.jpg" alt="Corsair Vanguard Air 99 Wireless gaming keyboard on a white desktop" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/GJ2fD9wWpjSdgreSxV9fuV-1920-80.jpg" alt="Corsair Vanguard Air 99 Wireless gaming keyboard on a white desktop" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/QSBbE8sXu6xvVf4Xu5ZQuV-1920-80.jpg" alt="Corsair Vanguard Air 99 Wireless gaming keyboard on a white desktop" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>When I put the Vanguard Air 99 Wireless to work in my favourite keyboard benchmark, Typing of the Dead: Overkill, though, I was pleasantly surprised. 96% precision! That’s up there with some of my favourite boards. Similarly, in Counter-Strike 2 my digits locked in and danced over WASD like Fred Astaire with an AK. I can only surmise that this layout and profile are suited to my fingers when it comes to short bursts of concentration, but less so through a whole day of productivity tasks. And there’s nothing the LCD screen can do about it but show me an animated Corsair logo. </p><p>Here are the reasons I’m persevering with it: a choice of 2.4 GHz wireless, Bluetooth or USB-C wired connections. Wireless operation with up to 8K polling which has never yet dropped out. A PC/Mac mode toggle switch. Easy customisation via Corsair’s browser-based Web Hub. It’s a little slow at times, but vastly preferable to having iCUE installed locally. And above all, the feeling of sturdiness and buttery actuation, even if the layout does trip me up at times. </p><p>And it looks quite cool on my desk. </p><p>As a reviewer, I’m more inclined to this generous mindset than someone who’d paid, say, $260 for it. Price points are hard right now. The global economic market is extremely volatile and prices are rising at every level, for manufacturers and consumers alike. Still, you can’t help but remember the days 2-3 years ago when the equivalent of this keyboard would have been priced well below $200. I’m not saying it’s Corsair’s fault. But in a world that’s asking more and more money from you just to retain access to the basics, I am dubious as to whether this specific actuation feel is really worth this much money.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Split spacebars are surely the next big gaming keyboard trend ]]></title>
                                                                                                <dc:content><![CDATA[ <div  class="fancy-box"><div class="fancy_box-title">Jacob Ridley, Managing Editor, Hardware</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="2YNigoLXbckPdRPDe3stwA" name="PCG Writer Illustrations 2026 Red16" caption="" alt="PC Gamer's Managing Editor, Hardware, Jacob Ridley on a colourful background and with effect applied." src="https://cdn.mos.cms.futurecdn.net/2YNigoLXbckPdRPDe3stwA-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">When I'm not working for the split spacebar tourism board, I'm usually tinkering in Linux (new user, having a good time) or testing out a <a data-analytics-id="inline-link" href="https://www.pcgamer.com/hardware/cooling/thermaltake-minecube-360-ultra-argb-sync-review/" target="_blank">new liquid cooler with even more screens</a> than the last one.</p></div></div><p>There are countless upgrades you could<em> </em>make to your gaming setup. A wireless this, a bigger that, a faster <em>thing</em>. But how do you know what's going to be a genuine upgrade worth investing in? Personally, I think it might be split spacebars. </p><p>Hear me out.</p><p>A spacebar is greedy. Most keycaps are 1U. Or one unit, in relative terms. The bottom row of a keyboard is usually around 1.25U; one unit in size plus 25%. The right shift key is usually 2.75U. A spacebar is <em>6.25U</em>. It's over six times the size of a standard key. What a hog. All that real estate simply because you might give the key a nubbin' with either left or right thumb.</p><p>Mess with your spacebar, mess with your entire key layout. While it's often very easy to reprogramme your spacebar to do a different action via your keyboard's software, it's a lot harder to reprogramme your brain to hit any other key when you try to jump in game. Spacebar makes you jump. Everyone knows that; it's practically etched onto your brain if you're a long-time mouse and keyboard player.</p><p>So, why does a split spacebar help with that? It comes down to this: once you know which side of a spacebar you tend to thwack with your thumb, you can programme the <em>other </em>side to do whatever you want. I hit the right-side of my spacebar every time when I'm typing. Therefore, when I started using a <a href="https://www.pcgamer.com/hardware/gaming-keyboards/wooting-60he-v2-review/" target="_blank">Wooting 60HE v2</a> with a split spacebar, I set the left-side to be the delete key; the keyboard lacking a dedicated delete key for its 60% size.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/ox6Zt8vMzfBfgn8GoTVPbL-1920-80.jpg" alt="The Wooting 60HE v2 with a split spacebar on a desk alongside the Wooting 80HE with a normal spacebar." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/fmntn4p6AoxSeYfhXVMmpL-1920-80.jpg" alt="The Wooting 60HE v2 with a split spacebar on a desk alongside the Wooting 80HE with a normal spacebar." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Though for gaming, the split spacebar offers much more varied purpose. People do strange things with the WASD keys that I won't litigate here, but I'm pretty sure <em>most </em>gamers use their left thumb to strike the spacebar for gaming. Right? Right. If you fall into this category, you have the option of using the right-side spacebar for things like a chunky melee key, or, my personal favourite, an in-game voice chat key.</p><p>You can do whatever you want, really. Those are two I find almost universally useful for the games that I play, though, of course, have something specific to a game—like counter in Deadlock to the right-hand side so you don't keep forgetting about it—can be pretty useful. My point is, there are options, and you don't really lose anything for having them. Plus, I don't find it as unnatural to move to the spacebar as I do the dedicated macro keys you find on something like the Logitech G915 (or <a href="https://www.pcgamer.com/hardware/gaming-keyboards/logitech-g915-x-lightspeed-review/" target="_blank">G915 X</a> these days), which I still use all the time for my test bench.</p><p>In the case of the Wooting 60HE v2, the company has used the split spacebar wisely by inserting an extra programmable key slap-bang in the middle of the two halves. It's a good move, as I'm yet to accidentally hit this middle key a single time while typing—further proving that part of the space to be a bit of a deadzone; wasted space, at least for my typing style. I've mostly stuck with this as an additional function key for now, as it's more convenient on this mini board for accessing the arrow keys with one hand. Though it's another programmable key within easy reach while gaming.</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="xhBXGHc9nWNVuiGAiD6caL" name="IMG_3607" alt="The Wooting 60HE v2 with a split spacebar on a desk alongside the Wooting 80HE with a normal spacebar." src="https://cdn.mos.cms.futurecdn.net/xhBXGHc9nWNVuiGAiD6caL-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>If you're the type of person to care about how your gaming keyboard sounds, then good news. The lack of one unwieldly large spacebar means you get three smaller, more uniform sounding keys. That's got to be worth something.</p><p>It does seem a bit obvious to split the spacebar in two, with or without the added middle key, so why haven't we seen more of it?</p><p>First off, if you're reading this from behind a keyboard with a split spacebar and wondering if I've been living under a rock for a couple decades; I know, split spacebars are not new. I've used a few keyboards with them in the past, often those which split apart down the middle and necessitating the split spacebar, though some that come with it simply for the love of the game (Keychron offers the very fuss-free <a href="https://www.keychron.com/products/keychron-q15-max-qmk-wireless-custom-mechanical-keyboard" target="_blank">Q15 Max</a>). Some PCBs for custom builds also support the split. Nevertheless, it's more of a thing for enthusiasts than the general gamer. </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="8AKugs4tBLdS4PBrNHzppL" name="IMG_3606" alt="The Wooting 60HE v2 with a split spacebar on a desk alongside the Wooting 80HE with a normal spacebar." src="https://cdn.mos.cms.futurecdn.net/8AKugs4tBLdS4PBrNHzppL-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>But that's the point I'm making: why hasn't this made the jump into more mainstream gaming keyboards yet? It feels like such an easy win. </p><p>Perhaps it's down to adding more switches and stabilisers. For the 60HE v2 here, it adds an extra pair of stabs and two more switches compared to the single spacebar of the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/wooting-80he-review/" target="_blank">Wooting 80HE</a>. Though that hardly feels like a dealbreaker when every major peripheral company now makes a keyboard with a screen on it somewhere. I'd much rather a split spacebar than a screen. There are cheaper options with split spacebars, like this <a href="https://skyloong.vip/products/60-keyboard-gk61-pro" target="_blank">Skyloong GK61 Pro</a>, though I haven't tried it out myself.</p><p>Keyboard manufacturers love a trend and I can see this one getting picked up in the next year or so. I'd be happy if it did, anyways. From the past couple of months using a split spacebar, I feel like it's an upgrade worth considering when the time comes to replace your current gaming keyboard with another.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-keyboards/split-spacebars-are-surely-the-next-big-gaming-keyboard-trend/</link>
                                                                            <description>
                            <![CDATA[ Watch this space. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">vgwpGEkfMpMSGZ9Bh5nSgV</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/JhWgd92nq3vM3F7Eki4hpL-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 15 Mar 2026 16:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Keyboards]]></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/JhWgd92nq3vM3F7Eki4hpL-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Wooting 60HE v2 with a split spacebar on a desk alongside the Wooting 80HE with a normal spacebar.]]></media:description>                                                            <media:text><![CDATA[The Wooting 60HE v2 with a split spacebar on a desk alongside the Wooting 80HE with a normal spacebar.]]></media:text>
                                <media:title type="plain"><![CDATA[The Wooting 60HE v2 with a split spacebar on a desk alongside the Wooting 80HE with a normal spacebar.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/JhWgd92nq3vM3F7Eki4hpL-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div  class="fancy-box"><div class="fancy_box-title">Jacob Ridley, Managing Editor, Hardware</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="2YNigoLXbckPdRPDe3stwA" name="PCG Writer Illustrations 2026 Red16" caption="" alt="PC Gamer's Managing Editor, Hardware, Jacob Ridley on a colourful background and with effect applied." src="https://cdn.mos.cms.futurecdn.net/2YNigoLXbckPdRPDe3stwA-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">When I'm not working for the split spacebar tourism board, I'm usually tinkering in Linux (new user, having a good time) or testing out a <a data-analytics-id="inline-link" href="https://www.pcgamer.com/hardware/cooling/thermaltake-minecube-360-ultra-argb-sync-review/" target="_blank">new liquid cooler with even more screens</a> than the last one.</p></div></div><p>There are countless upgrades you could<em> </em>make to your gaming setup. A wireless this, a bigger that, a faster <em>thing</em>. But how do you know what's going to be a genuine upgrade worth investing in? Personally, I think it might be split spacebars. </p><p>Hear me out.</p><p>A spacebar is greedy. Most keycaps are 1U. Or one unit, in relative terms. The bottom row of a keyboard is usually around 1.25U; one unit in size plus 25%. The right shift key is usually 2.75U. A spacebar is <em>6.25U</em>. It's over six times the size of a standard key. What a hog. All that real estate simply because you might give the key a nubbin' with either left or right thumb.</p><p>Mess with your spacebar, mess with your entire key layout. While it's often very easy to reprogramme your spacebar to do a different action via your keyboard's software, it's a lot harder to reprogramme your brain to hit any other key when you try to jump in game. Spacebar makes you jump. Everyone knows that; it's practically etched onto your brain if you're a long-time mouse and keyboard player.</p><p>So, why does a split spacebar help with that? It comes down to this: once you know which side of a spacebar you tend to thwack with your thumb, you can programme the <em>other </em>side to do whatever you want. I hit the right-side of my spacebar every time when I'm typing. Therefore, when I started using a <a href="https://www.pcgamer.com/hardware/gaming-keyboards/wooting-60he-v2-review/" target="_blank">Wooting 60HE v2</a> with a split spacebar, I set the left-side to be the delete key; the keyboard lacking a dedicated delete key for its 60% size.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/ox6Zt8vMzfBfgn8GoTVPbL-1920-80.jpg" alt="The Wooting 60HE v2 with a split spacebar on a desk alongside the Wooting 80HE with a normal spacebar." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/fmntn4p6AoxSeYfhXVMmpL-1920-80.jpg" alt="The Wooting 60HE v2 with a split spacebar on a desk alongside the Wooting 80HE with a normal spacebar." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Though for gaming, the split spacebar offers much more varied purpose. People do strange things with the WASD keys that I won't litigate here, but I'm pretty sure <em>most </em>gamers use their left thumb to strike the spacebar for gaming. Right? Right. If you fall into this category, you have the option of using the right-side spacebar for things like a chunky melee key, or, my personal favourite, an in-game voice chat key.</p><p>You can do whatever you want, really. Those are two I find almost universally useful for the games that I play, though, of course, have something specific to a game—like counter in Deadlock to the right-hand side so you don't keep forgetting about it—can be pretty useful. My point is, there are options, and you don't really lose anything for having them. Plus, I don't find it as unnatural to move to the spacebar as I do the dedicated macro keys you find on something like the Logitech G915 (or <a href="https://www.pcgamer.com/hardware/gaming-keyboards/logitech-g915-x-lightspeed-review/" target="_blank">G915 X</a> these days), which I still use all the time for my test bench.</p><p>In the case of the Wooting 60HE v2, the company has used the split spacebar wisely by inserting an extra programmable key slap-bang in the middle of the two halves. It's a good move, as I'm yet to accidentally hit this middle key a single time while typing—further proving that part of the space to be a bit of a deadzone; wasted space, at least for my typing style. I've mostly stuck with this as an additional function key for now, as it's more convenient on this mini board for accessing the arrow keys with one hand. Though it's another programmable key within easy reach while gaming.</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="xhBXGHc9nWNVuiGAiD6caL" name="IMG_3607" alt="The Wooting 60HE v2 with a split spacebar on a desk alongside the Wooting 80HE with a normal spacebar." src="https://cdn.mos.cms.futurecdn.net/xhBXGHc9nWNVuiGAiD6caL-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>If you're the type of person to care about how your gaming keyboard sounds, then good news. The lack of one unwieldly large spacebar means you get three smaller, more uniform sounding keys. That's got to be worth something.</p><p>It does seem a bit obvious to split the spacebar in two, with or without the added middle key, so why haven't we seen more of it?</p><p>First off, if you're reading this from behind a keyboard with a split spacebar and wondering if I've been living under a rock for a couple decades; I know, split spacebars are not new. I've used a few keyboards with them in the past, often those which split apart down the middle and necessitating the split spacebar, though some that come with it simply for the love of the game (Keychron offers the very fuss-free <a href="https://www.keychron.com/products/keychron-q15-max-qmk-wireless-custom-mechanical-keyboard" target="_blank">Q15 Max</a>). Some PCBs for custom builds also support the split. Nevertheless, it's more of a thing for enthusiasts than the general gamer. </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="8AKugs4tBLdS4PBrNHzppL" name="IMG_3606" alt="The Wooting 60HE v2 with a split spacebar on a desk alongside the Wooting 80HE with a normal spacebar." src="https://cdn.mos.cms.futurecdn.net/8AKugs4tBLdS4PBrNHzppL-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>But that's the point I'm making: why hasn't this made the jump into more mainstream gaming keyboards yet? It feels like such an easy win. </p><p>Perhaps it's down to adding more switches and stabilisers. For the 60HE v2 here, it adds an extra pair of stabs and two more switches compared to the single spacebar of the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/wooting-80he-review/" target="_blank">Wooting 80HE</a>. Though that hardly feels like a dealbreaker when every major peripheral company now makes a keyboard with a screen on it somewhere. I'd much rather a split spacebar than a screen. There are cheaper options with split spacebars, like this <a href="https://skyloong.vip/products/60-keyboard-gk61-pro" target="_blank">Skyloong GK61 Pro</a>, though I haven't tried it out myself.</p><p>Keyboard manufacturers love a trend and I can see this one getting picked up in the next year or so. I'd be happy if it did, anyways. From the past couple of months using a split spacebar, I feel like it's an upgrade worth considering when the time comes to replace your current gaming keyboard with another.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ The Corsair Vanguard Pro 96 wired gaming keyboard is now only $160, a deal that's all the sweeter when you discover it's a 2-in-1 device perfect for content creators ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="product"><a data-dimension112="4668ff1d-32d7-4b7b-9f22-53a4c68d039a" data-action="Deal Block" data-label="Vanguard Pro 96 | Wired" data-dimension48="Vanguard Pro 96 | Wired" data-dimension25="$159.99" href="https://www.amazon.com/dp/B0FKHPRZ45" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:800px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="jV4y5hTy44q9HERfDUoSdQ" name="Corsair Vanguard Pro 96" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/jV4y5hTy44q9HERfDUoSdQ-1920-80.png" mos="" align="middle" fullscreen="" width="800" height="800" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/dp/B0FKHPRZ45" target="_blank" rel="nofollow" data-dimension112="4668ff1d-32d7-4b7b-9f22-53a4c68d039a" data-action="Deal Block" data-label="Vanguard Pro 96 | Wired" data-dimension48="Vanguard Pro 96 | Wired" data-dimension25="$159.99">Vanguard Pro 96 | Wired: was $229.99 now $159.99</a></strong><br>Compact without feeling crowded, snappy switches, and feature rich. It's tough to argue with any of that, but Stream Deck integration may sweeten the deal for some folks.</p><p><strong>Key Specs: Stream Deck integration | 1.9 inch LCD screen | 6 programmable G-keys | MGX Hyperdrive Hall Effect switches | 8,000 Hz polling rate</strong><a class="view-deal button" href="https://www.amazon.com/dp/B0FKHPRZ45" target="_blank" rel="nofollow" data-dimension112="4668ff1d-32d7-4b7b-9f22-53a4c68d039a" data-action="Deal Block" data-label="Vanguard Pro 96 | Wired" data-dimension48="Vanguard Pro 96 | Wired" data-dimension25="$159.99">View Deal</a></p></div><p>It's not usually hardware worth having that enjoys a deep discount mere months after release. Well, this March alone, <a href="https://www.pcgamer.com/hardware/gaming-headsets/this-logitech-wireless-gaming-headset-has-the-best-mic-you-will-find-for-usd130/" target="_blank">it's not just happened once</a>, but now twice.</p><p>Our Reece was immediately a fan of the Corsair Vanguard Pro 96 wired gaming keyboard simply by virtue of the fact that he could look down at the wee LCD screen in the top-right-hand corner and see the Bullseye logo, but this board's got plenty more going for it besides. Now going for <a href="https://www.amazon.com/dp/B0FKHPRZ45" target="_blank">$160 from Amazon</a>, its price point is bang on target and becomes yet another of its many charms.</p><ul><li><strong>Join us on </strong><a href="https://whatsapp.com/channel/0029VaZEGnpAu3aYJa8PuS2t" target="_blank"><strong>WhatsApp for daily deals</strong></a><strong>, direct to your phone.</strong></li></ul><p>In his <a href="https://www.pcgamer.com/hardware/gaming-keyboards/corsair-vanguard-pro-96-review/" target="_blank">Corsair Vanguard Pro 96 review</a>, Reece found plenty besides novelty to like. For instance, the Corsair Vanguard Pro 96 is a not-quite-full-size keyboard that manages to squeeze in both a volume dial, a 1.9-inch LCD screen, and six macro keys into its appealing, space-saving layout. Reece describes it as "easily one of the most feature-rich keyboards in a physical sense that you're likely to be able to find these days."</p><p>There's still plenty to get into under the hood—specifically, the fact that this is a Hall effect gaming keyboard. Reece writes that the included Corsair MGX Hyperdrive switches, "come with the versatile customisation I've come to expect, with both the actuation and reset point of the switch adjustable across virtually the entire travel, as high as 0.1 mm and as low as 4 mm."</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/nioHZFMC4grUTjAHjysPE8-1920-80.jpg" alt="The Corsair Vanguard Pro 96 gaming keyboard" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/STqrVWzrymLEM77EXUAnD8-1920-80.jpg" alt="The Corsair Vanguard Pro 96 gaming keyboard" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/T5U2vJjsfUQGyyNvKgLYB8-1920-80.jpg" alt="The Corsair Vanguard Pro 96 gaming keyboard" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/5zkFaqFGkzZ8LQQ2QJrZA8-1920-80.jpg" alt="The Corsair Vanguard Pro 96 gaming keyboard" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Ea4tB3a8pDqDxWtQQ4bt88-1920-80.jpg" alt="The Corsair Vanguard Pro 96 gaming keyboard" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/UCEa6ggmcuaDJoVyD6URC8-1920-80.jpg" alt="The Corsair Vanguard Pro 96 gaming keyboard" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The inclusion of Rapid Trigger will be music to the ears of anyone with competitive play in mind. Reece especially enjoyed slapping down low-level bots in Counter-Strike 2, noting that the MGX Hyperdrive is a "smooth and snappy pre-lubricated switch that helps to make the keyboard one of the fastest you'll find in its class."</p><p>There's SOCD-type tech here too, though Reece didn't rate it. He writes, "I maintain that brands put it into the keyboard to add to the spec sheet, as the feature is about as useful as a chocolate fireguard in competitive online play, as it could allow folks to wield the ban hammer against you, as Valve has done with Counter-Strike 2."</p><p>But as Corsair owns Elgato, I'd be remiss if I didn't at least mention what many would regard as the true headline act: Stream Deck integration. Yes, much like the <a href="https://www.pcgamer.com/hardware/gaming-mice/corsair-scimitar-elite-wireless-se-review/" target="_blank">Corsair Scimitar Elite Wireless SE</a> MMO mouse, this is essentially a 2-in-1 device, making that $160 price point exceedingly reasonable. For content creators, it could very well be a real game-changer.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-keyboards/the-corsair-vanguard-pro-96-wired-gaming-keyboard-is-now-only-usd160-a-deal-thats-all-the-sweeter-when-you-discover-its-a-2-in-1-device-perfect-for-content-creators/</link>
                                                                            <description>
                            <![CDATA[ Why choose? ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">bgtUbWXSwXA8HiDMQmJBwB</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/3Vt6Fr3csEgoyWHfj2kFyQ-1920-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Fri, 13 Mar 2026 15:56:25 +0000</pubDate>                                                                                                                                <updated>Fri, 13 Mar 2026 15:56:33 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming Keyboards]]></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/png" url="https://cdn.mos.cms.futurecdn.net/3Vt6Fr3csEgoyWHfj2kFyQ-1920-80.png">
                                                            <media:credit><![CDATA[Corsair]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Corsair Vanguard Pro 96 wired gaming keyboard with a small LCD screen.]]></media:description>                                                            <media:text><![CDATA[The Corsair Vanguard Pro 96 wired gaming keyboard with a small LCD screen.]]></media:text>
                                <media:title type="plain"><![CDATA[The Corsair Vanguard Pro 96 wired gaming keyboard with a small LCD screen.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/3Vt6Fr3csEgoyWHfj2kFyQ-1920-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="product"><a data-dimension112="4668ff1d-32d7-4b7b-9f22-53a4c68d039a" data-action="Deal Block" data-label="Vanguard Pro 96 | Wired" data-dimension48="Vanguard Pro 96 | Wired" data-dimension25="$159.99" href="https://www.amazon.com/dp/B0FKHPRZ45" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:800px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="jV4y5hTy44q9HERfDUoSdQ" name="Corsair Vanguard Pro 96" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/jV4y5hTy44q9HERfDUoSdQ-1920-80.png" mos="" align="middle" fullscreen="" width="800" height="800" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/dp/B0FKHPRZ45" target="_blank" rel="nofollow" data-dimension112="4668ff1d-32d7-4b7b-9f22-53a4c68d039a" data-action="Deal Block" data-label="Vanguard Pro 96 | Wired" data-dimension48="Vanguard Pro 96 | Wired" data-dimension25="$159.99">Vanguard Pro 96 | Wired: was $229.99 now $159.99</a></strong><br>Compact without feeling crowded, snappy switches, and feature rich. It's tough to argue with any of that, but Stream Deck integration may sweeten the deal for some folks.</p><p><strong>Key Specs: Stream Deck integration | 1.9 inch LCD screen | 6 programmable G-keys | MGX Hyperdrive Hall Effect switches | 8,000 Hz polling rate</strong><a class="view-deal button" href="https://www.amazon.com/dp/B0FKHPRZ45" target="_blank" rel="nofollow" data-dimension112="4668ff1d-32d7-4b7b-9f22-53a4c68d039a" data-action="Deal Block" data-label="Vanguard Pro 96 | Wired" data-dimension48="Vanguard Pro 96 | Wired" data-dimension25="$159.99">View Deal</a></p></div><p>It's not usually hardware worth having that enjoys a deep discount mere months after release. Well, this March alone, <a href="https://www.pcgamer.com/hardware/gaming-headsets/this-logitech-wireless-gaming-headset-has-the-best-mic-you-will-find-for-usd130/" target="_blank">it's not just happened once</a>, but now twice.</p><p>Our Reece was immediately a fan of the Corsair Vanguard Pro 96 wired gaming keyboard simply by virtue of the fact that he could look down at the wee LCD screen in the top-right-hand corner and see the Bullseye logo, but this board's got plenty more going for it besides. Now going for <a href="https://www.amazon.com/dp/B0FKHPRZ45" target="_blank">$160 from Amazon</a>, its price point is bang on target and becomes yet another of its many charms.</p><ul><li><strong>Join us on </strong><a href="https://whatsapp.com/channel/0029VaZEGnpAu3aYJa8PuS2t" target="_blank"><strong>WhatsApp for daily deals</strong></a><strong>, direct to your phone.</strong></li></ul><p>In his <a href="https://www.pcgamer.com/hardware/gaming-keyboards/corsair-vanguard-pro-96-review/" target="_blank">Corsair Vanguard Pro 96 review</a>, Reece found plenty besides novelty to like. For instance, the Corsair Vanguard Pro 96 is a not-quite-full-size keyboard that manages to squeeze in both a volume dial, a 1.9-inch LCD screen, and six macro keys into its appealing, space-saving layout. Reece describes it as "easily one of the most feature-rich keyboards in a physical sense that you're likely to be able to find these days."</p><p>There's still plenty to get into under the hood—specifically, the fact that this is a Hall effect gaming keyboard. Reece writes that the included Corsair MGX Hyperdrive switches, "come with the versatile customisation I've come to expect, with both the actuation and reset point of the switch adjustable across virtually the entire travel, as high as 0.1 mm and as low as 4 mm."</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/nioHZFMC4grUTjAHjysPE8-1920-80.jpg" alt="The Corsair Vanguard Pro 96 gaming keyboard" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/STqrVWzrymLEM77EXUAnD8-1920-80.jpg" alt="The Corsair Vanguard Pro 96 gaming keyboard" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/T5U2vJjsfUQGyyNvKgLYB8-1920-80.jpg" alt="The Corsair Vanguard Pro 96 gaming keyboard" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/5zkFaqFGkzZ8LQQ2QJrZA8-1920-80.jpg" alt="The Corsair Vanguard Pro 96 gaming keyboard" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Ea4tB3a8pDqDxWtQQ4bt88-1920-80.jpg" alt="The Corsair Vanguard Pro 96 gaming keyboard" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/UCEa6ggmcuaDJoVyD6URC8-1920-80.jpg" alt="The Corsair Vanguard Pro 96 gaming keyboard" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The inclusion of Rapid Trigger will be music to the ears of anyone with competitive play in mind. Reece especially enjoyed slapping down low-level bots in Counter-Strike 2, noting that the MGX Hyperdrive is a "smooth and snappy pre-lubricated switch that helps to make the keyboard one of the fastest you'll find in its class."</p><p>There's SOCD-type tech here too, though Reece didn't rate it. He writes, "I maintain that brands put it into the keyboard to add to the spec sheet, as the feature is about as useful as a chocolate fireguard in competitive online play, as it could allow folks to wield the ban hammer against you, as Valve has done with Counter-Strike 2."</p><p>But as Corsair owns Elgato, I'd be remiss if I didn't at least mention what many would regard as the true headline act: Stream Deck integration. Yes, much like the <a href="https://www.pcgamer.com/hardware/gaming-mice/corsair-scimitar-elite-wireless-se-review/" target="_blank">Corsair Scimitar Elite Wireless SE</a> MMO mouse, this is essentially a 2-in-1 device, making that $160 price point exceedingly reasonable. For content creators, it could very well be a real game-changer.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Mode claims its upcoming Encore keyboard refresh 'delivers our most satisfying typing experience to date' and has a neat new mounting system to boot ]]></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/YR1xkOp5U1g" allowfullscreen></iframe></div></div><p>Mode, a high-end keyboard maker that allows you to customise caps, add a stabiliser, swap switches, plate material, PCB type, and more at checkout, has just announced a refresh to its Encore keyboard. Made in collaboration with YouTuber and creator Matthew Encina, the <a href="https://www.youtube.com/watch?v=YR1xkOp5U1g" target="_blank">2026 Encore</a> has a neat new crown mounting system and some lovely design features.</p><p>The mounting system is a series of screws you place on the plating before the switches go on. They look lush in gold, and though we've only got a few seconds of footage so far, Mode says it "delivers our most satisfying typing experience to date."</p><p>The Encore is a gorgeous looking 65% keyboard with a split wood top plate. The 2026 refresh will be available in five colours (Black Sesame, Matcha Cream, Studio Light, Mocha Mushroom, and Monterey Dune).</p><p>We don't yet have the pricing of the 2026 Encore, but the <a href="https://modedesigns.com/products/encore-series-3?variant=42152697004114&switches=40677894488146&keycaps=40247431725138" target="_blank">Encore 3</a> isn't cheap. Removing switches, caps, PCB, and top plate, you're still looking at a fee of $269. With the cheapest version of every component above (minus a stabiliser), the Encore 3 will run you $431 right now, not including shipping. </p><p>That price does seem to reflect the quality, though. They look great, and from the short snippet of the 2026 Encore in Mode's latest video, sound great too. Mode says its PCB, mounting system, and keycaps work "in sequence to reduce and isolate vibration transfer for clean typing sounds."</p><p>This is all to say it should sound lovely. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/Xi4GFjfVCen9nHr6hokMLo-1920-80.png" alt="Mode Encore gaming keyboard" /><figcaption><small role="credit">Mode</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/MZaZsMpZeTDW9JmNa5nssn-1920-80.png" alt="Mode Encore gaming keyboard" /><figcaption><small role="credit">Mode</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/9xH9TbsrTf5Zy3NxUnY3V6-1920-80.png" alt="Mode's 2026 Encore gaming keyboard refresh" /><figcaption><small role="credit">Mode</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/HSkYQk3trtJkGFarDtfHKo-1920-80.png" alt="Mode Encore gaming keyboard" /><figcaption><small role="credit">Mode</small></figcaption></figure></figure><p>The new mounting gasket system will not be present in the Mode Sonnet refresh that is also coming this year, but it will be in the <a href="https://www.youtube.com/watch?v=57uH9ijWu_M" target="_blank">Prologue</a>, which is a 98% layout keyboard that the company has been teasing. </p><p>Prologue and the broader range of keyboards this year are pretty big for Mode. Encina says the company was quiet last year as it was "deeply focused on research and development" and it has been "reshaping Mode, the brand, the product, and how we operate."</p><p>Here's hoping the price of the new Encore is a good enough value to get on my Christmas wishlist next year, or the Prologue is impressive enough to justify the cost anyway. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-keyboards/mode-claims-its-upcoming-encore-keyboard-refresh-delivers-our-most-satisfying-typing-experience-to-date-and-has-a-neat-new-mounting-system-to-boot/</link>
                                                                            <description>
                            <![CDATA[ It sounds and looks nice. I'm just afraid of the potential price point. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Vo4WCAsp3jbuRWZ9nUcDo8</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/6hMBbCnWGnyeZqjLBHUT4o-1920-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Mon, 09 Mar 2026 17:48:15 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Keyboards]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/SEb5dKTVfZ5EZF4fEcqdGR-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/6hMBbCnWGnyeZqjLBHUT4o-1920-80.png">
                                                            <media:credit><![CDATA[Mode]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Mode Encore gaming keyboard]]></media:description>                                                            <media:text><![CDATA[Mode Encore gaming keyboard]]></media:text>
                                <media:title type="plain"><![CDATA[Mode Encore gaming keyboard]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/6hMBbCnWGnyeZqjLBHUT4o-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/YR1xkOp5U1g" allowfullscreen></iframe></div></div><p>Mode, a high-end keyboard maker that allows you to customise caps, add a stabiliser, swap switches, plate material, PCB type, and more at checkout, has just announced a refresh to its Encore keyboard. Made in collaboration with YouTuber and creator Matthew Encina, the <a href="https://www.youtube.com/watch?v=YR1xkOp5U1g" target="_blank">2026 Encore</a> has a neat new crown mounting system and some lovely design features.</p><p>The mounting system is a series of screws you place on the plating before the switches go on. They look lush in gold, and though we've only got a few seconds of footage so far, Mode says it "delivers our most satisfying typing experience to date."</p><p>The Encore is a gorgeous looking 65% keyboard with a split wood top plate. The 2026 refresh will be available in five colours (Black Sesame, Matcha Cream, Studio Light, Mocha Mushroom, and Monterey Dune).</p><p>We don't yet have the pricing of the 2026 Encore, but the <a href="https://modedesigns.com/products/encore-series-3?variant=42152697004114&switches=40677894488146&keycaps=40247431725138" target="_blank">Encore 3</a> isn't cheap. Removing switches, caps, PCB, and top plate, you're still looking at a fee of $269. With the cheapest version of every component above (minus a stabiliser), the Encore 3 will run you $431 right now, not including shipping. </p><p>That price does seem to reflect the quality, though. They look great, and from the short snippet of the 2026 Encore in Mode's latest video, sound great too. Mode says its PCB, mounting system, and keycaps work "in sequence to reduce and isolate vibration transfer for clean typing sounds."</p><p>This is all to say it should sound lovely. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/Xi4GFjfVCen9nHr6hokMLo-1920-80.png" alt="Mode Encore gaming keyboard" /><figcaption><small role="credit">Mode</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/MZaZsMpZeTDW9JmNa5nssn-1920-80.png" alt="Mode Encore gaming keyboard" /><figcaption><small role="credit">Mode</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/9xH9TbsrTf5Zy3NxUnY3V6-1920-80.png" alt="Mode's 2026 Encore gaming keyboard refresh" /><figcaption><small role="credit">Mode</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/HSkYQk3trtJkGFarDtfHKo-1920-80.png" alt="Mode Encore gaming keyboard" /><figcaption><small role="credit">Mode</small></figcaption></figure></figure><p>The new mounting gasket system will not be present in the Mode Sonnet refresh that is also coming this year, but it will be in the <a href="https://www.youtube.com/watch?v=57uH9ijWu_M" target="_blank">Prologue</a>, which is a 98% layout keyboard that the company has been teasing. </p><p>Prologue and the broader range of keyboards this year are pretty big for Mode. Encina says the company was quiet last year as it was "deeply focused on research and development" and it has been "reshaping Mode, the brand, the product, and how we operate."</p><p>Here's hoping the price of the new Encore is a good enough value to get on my Christmas wishlist next year, or the Prologue is impressive enough to justify the cost anyway. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Gravastar Mercury V60 Pro review ]]></title>
                                                                                                <dc:content><![CDATA[ <div data-widget-type="review" data-model-name="Gravastar Mercury V60 Pro" data-widget-title=""></div><p>There are a lot of compact gaming keyboards out there but none, so far, has been quite so organic. It’s aluminium, you know it is from the way it feels, but that doesn’t stop it having the look of Cronenbergian moulded flesh about it, one step away from being plugged into an unmentionable part of Jude Law so he can get his gaming jollies. </p><p>The only port you’ll find on the back of the Mercury V60 Pro, however, is a simple USB-C. There's a button at the other extreme, for switching between onboard profiles, and that’s it. It’s a commendable level of simplicity for something that looks so thoroughly sci-fi, the only added complications being the additional Mac modifier symbols printed on two of the keycaps, and the baffling word ‘Clutch’ written in a cursive font across the space bar. </p><p>You can use Fn with various punctuation keys to do things like adjust lighting modes, change brightness, and cycle through speed settings, but everything else is handled by the web interface. That is much better than having to install an app that starts in the background when your PC boots and constantly asks to be updated.</p><p>It’s easy enough to use, and automatically updated the board’s firmware before dropping us straight into the configurator. There are four profiles that can be saved onboard, and you can set the actuation point for each key individually, or set up rapid trigger for just WASD with a few clicks, or add it to every key if you like. You can set dead zones, remap keys, record macros and of course tinker with the lighting across 16 dynamic zones.</p><div  class="fancy-box"><div class="fancy_box-title">Mercury V60 Pro specs</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="yzg6A79rkMjqnkXP6PPvc4" name="Gravastar_Mercury_V60_Pro_01026" caption="" alt="A Gravastar Mercury V60 Pro gaming keyboard with a shiny aluminium shell on a white desk." src="https://cdn.mos.cms.futurecdn.net/yzg6A79rkMjqnkXP6PPvc4-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>Teeth:</strong> 64<br><strong>Bodyplan: </strong>60%<br><strong>Nerve ganglia: </strong>Gravastar UFO Magnetic<br><strong>Bio-port: </strong>USB-C<br><strong>REM rate: </strong>8000 Hz<br><strong>Measurements: </strong>325 x 125.8 x 41 mm<br><strong>Mass: </strong>1.9 lb (0.86 kg)<br><strong>Price: </strong><a data-analytics-id="inline-link" href="https://www.gravastar.com/products/mercury-v60-pro" target="_blank">$220</a>/<a data-analytics-id="inline-link" href="https://gravastar.co.uk/products/mercury-v60-pro" target="_blank">£200</a></p></div></div><p>The board can also emulate a game controller, sending linear button signals and improving control in games that don’t do well with mechanical keyboards and when you’ve left your gamepad at Jude Law’s house.</p><p>There's also a switch for an ‘indicator’ light, which does nothing but light up the word ‘gaming’ in the top left corner of the board, in case you forget why you bought it. You can even adjust the brightness. Why? We’ll never know.</p><p>In the box you get a dust cover, key and switch pullers, cleaning brush, a USB cable (it’s a purely wired board) and—yes!—some stickers. The version sent to PCG for review is a metallic mid-grey called gunmetal, but a chrome silver version is also available if you prefer to run your PC in light mode on the outside as well as in Windows.</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:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ndzWTUqCDrZzv5GSt2Da44" name="Gravastar_Mercury_V60_Pro_01023" alt="A Gravastar Mercury V60 Pro gaming keyboard with a shiny aluminium shell on a white desk." src="https://cdn.mos.cms.futurecdn.net/ndzWTUqCDrZzv5GSt2Da44-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" 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 Hall effect switches are Gravastar’s own, known as UFO Magnetic Gaming Switches, and have a trigger depth that’s adjustable from a tiny 0.005 mm all the way to 3.5 mm to suit different styles of play. Key position scanning at 256 kHz and a polling rate of 8,000 Hz leads to a minimum latency of 0.125 ms, which should be fast enough for anyone. </p><p>It prioritises the most recent keystroke for those moments when you change your mind (also enabling SOCD, which binds two keys so one overrides the other and you can make very fast left to right movements, for example, in shooters that benefit from it), while in the case of simultaneous keypresses it will choose the one that was pressed the deepest, so accidental brushes of the key next door don’t have to ruin your combo. </p><p>Due to the way the Hall effect allows the various parts of the switch to pass one another without touching, like a married couple bored of one another’s company, Gravastar rates the switches for a lifespan of over 100 million clicks. That is a lot.</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:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="WKqz346cjbmgXFD5eDejc4" name="Gravastar_Mercury_V60_Pro_01029" alt="A Gravastar Mercury V60 Pro gaming keyboard with a shiny aluminium shell on a white desk." src="https://cdn.mos.cms.futurecdn.net/WKqz346cjbmgXFD5eDejc4-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" 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 ‘UFO’ part of the switch’s name refers to its shape, and while it does look rather like something that would fly over the hills to intimately probe Jude Law, were he a midwestern farmer (Mr Cronenberg, if you’re reading), this has nothing to do with the way it performs but a lot to do with how much light it can let through. Oddly, the supplied keycaps don’t allow the backlight to emerge through their letterforms, opting instead to spill out the sides, and it looks rather good set to a solid rainbow effect as a result. </p><p>Inside that techno-organic frame there are five layers of acoustic foam for sound deadening purposes, but the keys still make a satisfying ‘thock’ sound. It’s a 60% board, so some compromises have been made—there's no F row, macro keys, media controls or numpad. The right Shift key is so small it’s almost unacceptable (though the left usually gets more use) and is in the wrong place. The payoff for this is nicely sized arrow keys, backspace and enter keys that are a decent width (though why we need such a large \ key above the latter is a mystery) and a board that sits unobtrusively on your desk. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/HNy4QxEiaEunmgBZq8vmc4-1920-80.jpg" alt="A Gravastar Mercury V60 Pro gaming keyboard with a shiny aluminium shell on a white desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/4PfUTvbfNVzXRCjNgUayc4-1920-80.jpg" alt="A Gravastar Mercury V60 Pro gaming keyboard with a shiny aluminium shell on a white desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/kZ8JaRaF8DE4dJHbnmmoJ4-1920-80.jpg" alt="A Gravastar Mercury V60 Pro gaming keyboard with a shiny aluminium shell on a white desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ndzWTUqCDrZzv5GSt2Da44-1920-80.jpg" alt="A Gravastar Mercury V60 Pro gaming keyboard with a shiny aluminium shell on a white desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/UvtitVhgReMizUKsWNUrL4-1920-80.jpg" alt="A Gravastar Mercury V60 Pro gaming keyboard with a shiny aluminium shell on a white desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/WKqz346cjbmgXFD5eDejc4-1920-80.jpg" alt="A Gravastar Mercury V60 Pro gaming keyboard with a shiny aluminium shell on a white desk." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><div  class="fancy-box"><div class="fancy_box-title">Buy if...</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>✅ You want to do a lot with limited space: </strong>Gaming keyboards can be large and heavy, but this 60% model is made from aluminium, so remains easy to pack away.</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>❌ The layout doesn’t do it for you.</strong> Muscle memory is a funny thing, and if you’re used to an F row, or a shift in a certain place, this might not be for you.ee</p></div></div><p>It’s also not particularly heavy, being a whole pound less than the <a href="https://www.pcgamer.com/hardware/gaming-laptops/mchose-ace-68-16-khz-gaming-keyboard-review/" target="_blank">Mchose Ace 68</a> and less than half the weight of the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/lemokey-l5-he-8k-keyboard-review/" target="_blank">Lemokey L5 HE 8K</a>, and is prevented from sliding around by silicone feet underneath. These are relatively successful, though it’s still possible to nudge the board if you’re typing really furiously.</p><p>Cost may be an obstacle to its success, however: the Mercury V60 Pro costs a lot more than PCG’s current favourite budget keyboard, the similarly compact <a href="https://www.pcgamer.com/hardware/gaming-keyboards/gamakay-x-naughshark-ns68-review/" target="_blank">Naughshark NS68</a>, but it’s still a little cheaper than the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/keychron-q3-max-review/" target="_blank">Keychron Q3 Max</a>, at <a href="https://www.gravastar.com/products/mercury-v60-pro" target="_blank">$220</a>/<a href="https://gravastar.co.uk/products/mercury-v60-pro" target="_blank">£200</a>.</p><p>Gaming keyboards don’t have to be huge, the presence of so many compact options in the big list of the <a href="https://www.pcgamer.com/best-mechanical-keyboard/" target="_blank">best boards</a> is testament to that. This 60% specimen is weirdly beautiful in the way it blends its brushed aluminium with a look that suggests it was extruded from some giant hive organism, and its combination of superb design and build, Hall effect switches and extreme customisation mean it may be the perfect keyboard for someone, and we’re glad it existz.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/gaming-keyboards/gravastar-mercury-v60-pro-review/</link>
                                                                            <description>
                            <![CDATA[ A 60% gaming keyboard with magnetic switches and a hint of body horror. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">a2pqs287VHJKViB3uuDB8b</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/mEyBhuBgVGgWLUgyNZSvx3-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 05 Mar 2026 16:21:27 +0000</pubDate>                                                                                                                                <updated>Thu, 05 Mar 2026 16:21:53 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming Keyboards]]></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/mEyBhuBgVGgWLUgyNZSvx3-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A Gravastar Mercury V60 Pro gaming keyboard with a shiny aluminium shell on a white desk.]]></media:description>                                                            <media:text><![CDATA[A Gravastar Mercury V60 Pro gaming keyboard with a shiny aluminium shell on a white desk.]]></media:text>
                                <media:title type="plain"><![CDATA[A Gravastar Mercury V60 Pro gaming keyboard with a shiny aluminium shell on a white desk.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/mEyBhuBgVGgWLUgyNZSvx3-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div data-widget-type="review" data-model-name="Gravastar Mercury V60 Pro" data-widget-title=""></div><p>There are a lot of compact gaming keyboards out there but none, so far, has been quite so organic. It’s aluminium, you know it is from the way it feels, but that doesn’t stop it having the look of Cronenbergian moulded flesh about it, one step away from being plugged into an unmentionable part of Jude Law so he can get his gaming jollies. </p><p>The only port you’ll find on the back of the Mercury V60 Pro, however, is a simple USB-C. There's a button at the other extreme, for switching between onboard profiles, and that’s it. It’s a commendable level of simplicity for something that looks so thoroughly sci-fi, the only added complications being the additional Mac modifier symbols printed on two of the keycaps, and the baffling word ‘Clutch’ written in a cursive font across the space bar. </p><p>You can use Fn with various punctuation keys to do things like adjust lighting modes, change brightness, and cycle through speed settings, but everything else is handled by the web interface. That is much better than having to install an app that starts in the background when your PC boots and constantly asks to be updated.</p><p>It’s easy enough to use, and automatically updated the board’s firmware before dropping us straight into the configurator. There are four profiles that can be saved onboard, and you can set the actuation point for each key individually, or set up rapid trigger for just WASD with a few clicks, or add it to every key if you like. You can set dead zones, remap keys, record macros and of course tinker with the lighting across 16 dynamic zones.</p><div  class="fancy-box"><div class="fancy_box-title">Mercury V60 Pro specs</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="yzg6A79rkMjqnkXP6PPvc4" name="Gravastar_Mercury_V60_Pro_01026" caption="" alt="A Gravastar Mercury V60 Pro gaming keyboard with a shiny aluminium shell on a white desk." src="https://cdn.mos.cms.futurecdn.net/yzg6A79rkMjqnkXP6PPvc4-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>Teeth:</strong> 64<br><strong>Bodyplan: </strong>60%<br><strong>Nerve ganglia: </strong>Gravastar UFO Magnetic<br><strong>Bio-port: </strong>USB-C<br><strong>REM rate: </strong>8000 Hz<br><strong>Measurements: </strong>325 x 125.8 x 41 mm<br><strong>Mass: </strong>1.9 lb (0.86 kg)<br><strong>Price: </strong><a data-analytics-id="inline-link" href="https://www.gravastar.com/products/mercury-v60-pro" target="_blank">$220</a>/<a data-analytics-id="inline-link" href="https://gravastar.co.uk/products/mercury-v60-pro" target="_blank">£200</a></p></div></div><p>The board can also emulate a game controller, sending linear button signals and improving control in games that don’t do well with mechanical keyboards and when you’ve left your gamepad at Jude Law’s house.</p><p>There's also a switch for an ‘indicator’ light, which does nothing but light up the word ‘gaming’ in the top left corner of the board, in case you forget why you bought it. You can even adjust the brightness. Why? We’ll never know.</p><p>In the box you get a dust cover, key and switch pullers, cleaning brush, a USB cable (it’s a purely wired board) and—yes!—some stickers. The version sent to PCG for review is a metallic mid-grey called gunmetal, but a chrome silver version is also available if you prefer to run your PC in light mode on the outside as well as in Windows.</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:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ndzWTUqCDrZzv5GSt2Da44" name="Gravastar_Mercury_V60_Pro_01023" alt="A Gravastar Mercury V60 Pro gaming keyboard with a shiny aluminium shell on a white desk." src="https://cdn.mos.cms.futurecdn.net/ndzWTUqCDrZzv5GSt2Da44-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" 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 Hall effect switches are Gravastar’s own, known as UFO Magnetic Gaming Switches, and have a trigger depth that’s adjustable from a tiny 0.005 mm all the way to 3.5 mm to suit different styles of play. Key position scanning at 256 kHz and a polling rate of 8,000 Hz leads to a minimum latency of 0.125 ms, which should be fast enough for anyone. </p><p>It prioritises the most recent keystroke for those moments when you change your mind (also enabling SOCD, which binds two keys so one overrides the other and you can make very fast left to right movements, for example, in shooters that benefit from it), while in the case of simultaneous keypresses it will choose the one that was pressed the deepest, so accidental brushes of the key next door don’t have to ruin your combo. </p><p>Due to the way the Hall effect allows the various parts of the switch to pass one another without touching, like a married couple bored of one another’s company, Gravastar rates the switches for a lifespan of over 100 million clicks. That is a lot.</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:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="WKqz346cjbmgXFD5eDejc4" name="Gravastar_Mercury_V60_Pro_01029" alt="A Gravastar Mercury V60 Pro gaming keyboard with a shiny aluminium shell on a white desk." src="https://cdn.mos.cms.futurecdn.net/WKqz346cjbmgXFD5eDejc4-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" 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 ‘UFO’ part of the switch’s name refers to its shape, and while it does look rather like something that would fly over the hills to intimately probe Jude Law, were he a midwestern farmer (Mr Cronenberg, if you’re reading), this has nothing to do with the way it performs but a lot to do with how much light it can let through. Oddly, the supplied keycaps don’t allow the backlight to emerge through their letterforms, opting instead to spill out the sides, and it looks rather good set to a solid rainbow effect as a result. </p><p>Inside that techno-organic frame there are five layers of acoustic foam for sound deadening purposes, but the keys still make a satisfying ‘thock’ sound. It’s a 60% board, so some compromises have been made—there's no F row, macro keys, media controls or numpad. The right Shift key is so small it’s almost unacceptable (though the left usually gets more use) and is in the wrong place. The payoff for this is nicely sized arrow keys, backspace and enter keys that are a decent width (though why we need such a large \ key above the latter is a mystery) and a board that sits unobtrusively on your desk. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/HNy4QxEiaEunmgBZq8vmc4-1920-80.jpg" alt="A Gravastar Mercury V60 Pro gaming keyboard with a shiny aluminium shell on a white desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/4PfUTvbfNVzXRCjNgUayc4-1920-80.jpg" alt="A Gravastar Mercury V60 Pro gaming keyboard with a shiny aluminium shell on a white desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/kZ8JaRaF8DE4dJHbnmmoJ4-1920-80.jpg" alt="A Gravastar Mercury V60 Pro gaming keyboard with a shiny aluminium shell on a white desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ndzWTUqCDrZzv5GSt2Da44-1920-80.jpg" alt="A Gravastar Mercury V60 Pro gaming keyboard with a shiny aluminium shell on a white desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/UvtitVhgReMizUKsWNUrL4-1920-80.jpg" alt="A Gravastar Mercury V60 Pro gaming keyboard with a shiny aluminium shell on a white desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/WKqz346cjbmgXFD5eDejc4-1920-80.jpg" alt="A Gravastar Mercury V60 Pro gaming keyboard with a shiny aluminium shell on a white desk." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><div  class="fancy-box"><div class="fancy_box-title">Buy if...</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>✅ You want to do a lot with limited space: </strong>Gaming keyboards can be large and heavy, but this 60% model is made from aluminium, so remains easy to pack away.</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>❌ The layout doesn’t do it for you.</strong> Muscle memory is a funny thing, and if you’re used to an F row, or a shift in a certain place, this might not be for you.ee</p></div></div><p>It’s also not particularly heavy, being a whole pound less than the <a href="https://www.pcgamer.com/hardware/gaming-laptops/mchose-ace-68-16-khz-gaming-keyboard-review/" target="_blank">Mchose Ace 68</a> and less than half the weight of the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/lemokey-l5-he-8k-keyboard-review/" target="_blank">Lemokey L5 HE 8K</a>, and is prevented from sliding around by silicone feet underneath. These are relatively successful, though it’s still possible to nudge the board if you’re typing really furiously.</p><p>Cost may be an obstacle to its success, however: the Mercury V60 Pro costs a lot more than PCG’s current favourite budget keyboard, the similarly compact <a href="https://www.pcgamer.com/hardware/gaming-keyboards/gamakay-x-naughshark-ns68-review/" target="_blank">Naughshark NS68</a>, but it’s still a little cheaper than the <a href="https://www.pcgamer.com/hardware/gaming-keyboards/keychron-q3-max-review/" target="_blank">Keychron Q3 Max</a>, at <a href="https://www.gravastar.com/products/mercury-v60-pro" target="_blank">$220</a>/<a href="https://gravastar.co.uk/products/mercury-v60-pro" target="_blank">£200</a>.</p><p>Gaming keyboards don’t have to be huge, the presence of so many compact options in the big list of the <a href="https://www.pcgamer.com/best-mechanical-keyboard/" target="_blank">best boards</a> is testament to that. This 60% specimen is weirdly beautiful in the way it blends its brushed aluminium with a look that suggests it was extruded from some giant hive organism, and its combination of superb design and build, Hall effect switches and extreme customisation mean it may be the perfect keyboard for someone, and we’re glad it existz.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
            </channel>
</rss>