<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
     xmlns:content="http://purl.org/rss/1.0/modules/content/"
     xmlns:dc="http://purl.org/dc/elements/1.1/"
     xmlns:dcterms="http://purl.org/dc/terms/"
     xmlns:media="http://search.yahoo.com/mrss/"
     xmlns:atom="http://www.w3.org/2005/Atom"
     xmlns:cf="https://www.futureplc.com/rss/content-flags"
>
    <channel>
                    <atom:link href="https://www.pcgamer.com/feeds/tag/controllers/" rel="self" type="application/rss+xml" />
                            <title><![CDATA[ Latest from PC Gamer in Controllers ]]></title>
                <link>https://www.pcgamer.com/hardware/controllers</link>
        <description><![CDATA[ All the latest controllers content from the PC Gamer team ]]></description>
                                    <lastBuildDate>Thu, 22 Oct 2026 10:04:38 +0000</lastBuildDate>
                            <language>en</language>
                                <item>
                                                            <title><![CDATA[ Best Black Friday controller deals ]]></title>
                                                                                                <dc:content><![CDATA[ <p>If there's one thing I'm sure of this November, it's that there will be some great Black Friday controller deals going around. It's going to still be tough to get full systems, graphics cards, and especially memory and storage at big discounts, but there will be peripherals going for a song. That's particular exciting because things have been changing in controllers over the past year, and previous models are still quality, but will likely have big discounts attached to them.</p><p><strong>👉</strong><a href="https://www.pcgamer.com/black-friday-pc-gaming-deals/" target="_blank"><strong>All our favorite Black Friday PC gaming deals</strong></a><strong>👈</strong></p><p>When it comes to the key high-end technology of today, such as TMR sticks and Hall effect triggers, that isn't necessarily the preserve of the super-premium $200 controllers. Companies such as GameSir and Easy SMX have brought these features down into the mainstream and you can find some of the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/" target="_blank">best PC controllers</a> sporting them for bargain prices right now. </p><h2 id="where-to-find-the-best-black-friday-controller-deals">Where to find the best Black Friday controller deals</h2><ul><li><strong>Amazon: </strong><a href="https://www.amazon.com/s?k=controllers&crid=39ANCIZGH03O&sprefix=controller%2Caps%2C179&ref=nb_sb_noss_1" target="_blank"><strong>All the pads you could ever want</strong></a></li><li><strong>Walmart:</strong> <a href="https://www.walmart.com/search?q=controllers" target="_blank">Solid controllers, series savings</a></li><li><strong>Best Buy:</strong> <a href="https://www.bestbuy.com/site/searchpage.jsp?id=pcat17071&st=controllers" target="_blank">Big name pads with big value discounts</a></li><li><strong>Newegg:</strong> <a href="https://www.newegg.com/p/pl?d=controllers" target="_blank">Big savings on big brand controllers</a></li></ul><div class="vizualizer-embed"><iframe   srcdoc="<!DOCTYPE html><html><head>  <style>    #widget-t4n1495 *:not(svg):not(path) { box-sizing: border-box; }    #widget-t4n1495 h1, #widget-t4n1495 p, #widget-t4n1495 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-t4n1495, :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-t4n1495); 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-t4n1495 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-t4n1495 tr:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { border-bottom-width: 0px; }.prose :where(t#widget-t4n1495 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-t4n1495: 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-t4n1495: 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-t4n1495 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-t4n1495 td:first-child, tfoot td:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-inline-start: 0px; }.prose :where(t#widget-t4n1495 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-t4n1495 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-t4n1495 td:first-child, tfoot td:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-inline-start: 0px; }.prose-lg :where(t#widget-t4n1495 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-t4n1495: 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-t4n1495: 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-t4n1495"><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 55 controller 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 = "Controller";        const INITIALLY_OPEN = false;        // Embedded complete category data        let LOCAL_REVIEWS = JSON.parse(decodeURIComponent("%5B%7B%22id%22%3A%228NKgZmo3fxQQhxjqHrn2AB%22%2C%22title%22%3A%22Scuf%20Omega%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2Fscuf-omega-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-09-07T15%3A02%3A11Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FPfiU4gZmnbsVoGaYsi3iY8.jpg%22%2C%22strapline%22%3A%22Closer%20to%20an%20Alpha%20or%20Beta%20than%20an%20Omega.%22%2C%22categories%22%3A%5B%22Controllers%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22controller%22%2C%22wireless%20controller%22%2C%22wired%20controller%22%2C%22game%20controller%22%2C%22PC%20controller%22%2C%22Scuf%22%2C%22Scuf%20Omega%22%5D%2C%22score%22%3A70%2C%22summary%22%3A%22Closer%20to%20an%20Alpha%20or%20Beta%20than%20an%20Omega.%22%7D%2C%7B%22id%22%3A%22UqYpGJHzTjVNBBmU2SrrJn%22%2C%22title%22%3A%22GameSir%20T7%20Pro%20Sugar%20Whirl%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgame-pads%2Fgamesir-t7-pro-sugar-whirl-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-08-14T13%3A13%3A19Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2Fmx7yo6es2nmRYz34Vbuagg.jpg%22%2C%22strapline%22%3A%22Not%20quite%20the%20sweetest%20of%20treats.%22%2C%22categories%22%3A%5B%22Game%20Pads%22%2C%22Hardware%22%2C%22Controllers%22%5D%2C%22tags%22%3A%5B%22Review%22%2C%22Hardware%22%2C%22GameSir%22%2C%22Xbox%20Wireless%20Controller%22%2C%22Pink%22%2C%22Blue%22%2C%22purple%22%2C%22wireless%20controller%22%2C%22charging%22%2C%22charging%20stand%22%2C%22dock%22%2C%22TMR%20sticks%22%2C%22Hall%20effect%22%5D%2C%22score%22%3A75%2C%22summary%22%3A%22Not%20quite%20the%20sweetest%20of%20treats.%22%7D%2C%7B%22id%22%3A%22LxaJz5yKcWogc5hm5z84mj%22%2C%22title%22%3A%22GameSir%20G7%20Pro%208K%20Aimlabs%20Edition%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2Fgamesir-g7-pro-8k-aimlabs-edition-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-05-01T11%3A37%3A15Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FuT6Y9ABVa5DY9xXcAJrEwf.jpg%22%2C%22strapline%22%3A%22Would%20you%20pay%20%2410%20more%20for%20higher%20polling%3F%22%2C%22categories%22%3A%5B%22Controllers%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22controller%22%2C%22PC%20controller%22%2C%22game%20controller%22%2C%22wireless%20controller%22%2C%22Hardware%22%2C%22GameSir%22%2C%22GameSir%20G7%20Pro%208K%22%2C%22TMR%22%2C%22TMR%20sticks%22%2C%22GameSir%20g7%20Pro%208K%20Aimlabs%20Edition%22%5D%2C%22score%22%3A84%2C%22summary%22%3A%22Would%20you%20pay%20%2410%20more%20for%20higher%20polling%3F%22%7D%2C%7B%22id%22%3A%22B4p3aPJNV2Ckc47kSywXKQ%22%2C%22title%22%3A%22Steam%20Controller%20(2026)%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgame-pads%2Fsteam-controller-2026-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-04-27T17%3A00%3A00Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FaUXA7Xr75b7Xuvt2S6eeKY.jpg%22%2C%22strapline%22%3A%22Second%20time's%20the%20charm.%22%2C%22categories%22%3A%5B%22Game%20Pads%22%2C%22Hardware%22%2C%22Controllers%22%5D%2C%22tags%22%3A%5B%22Hardware%22%2C%22Valve%22%2C%22Steam%20Controller%22%2C%22controller%22%2C%22game%20pad%22%2C%22Steam%22%5D%2C%22score%22%3A83%2C%22summary%22%3A%22Second%20time's%20the%20charm.%22%7D%2C%7B%22id%22%3A%22WRLnnowV6sabshmTC8HujQ%22%2C%22title%22%3A%22EasySMX%20D05%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2Feasysmx-d05-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-03-31T15%3A00%3A43Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FPqjBcwBzNJUwKiWav7NBZF.jpg%22%2C%22strapline%22%3A%22You%20can%20get%20Hall%20effect%20controllers%20slightly%20cheaper%2C%20but%20you'd%20struggle%20to%20find%20as%20feature-rich%20a%20package%20without%20some%20heavy%2C%20heavy%20sales.%20%22%2C%22categories%22%3A%5B%22Controllers%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22controller%22%2C%22wired%20controller%22%2C%22wireless%20controller%22%2C%22budget%22%2C%22Hall%20effect%22%2C%22EasySMX%22%2C%22EasySMX%20D10%22%2C%22Hardware%22%5D%2C%22score%22%3A87%2C%22summary%22%3A%22You%20can%20get%20Hall%20effect%20controllers%20slightly%20cheaper%2C%20but%20you'd%20struggle%20to%20find%20as%20feature-rich%20a%20package%20without%20some%20heavy%2C%20heavy%20sales.%20%22%7D%2C%7B%22id%22%3A%22fM5EQd4AH6qDUADhLjdeqe%22%2C%22title%22%3A%22EasySMX%20D10%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2Feasysmx-d10-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-03-27T15%3A14%3A14Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FUgLVpPDZm7T9ZV36sAHGz4.jpg%22%2C%22strapline%22%3A%22A%20feature-rich%20budget%20TMR%20controller%20that%20only%20sometimes%20feels%20like%20a%20compromise.%22%2C%22categories%22%3A%5B%22Controllers%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22controller%22%2C%22game%20controller%22%2C%22budget%22%2C%22TMR%22%2C%22TMR%20sticks%22%2C%22Hall%20effect%22%2C%22Review%22%2C%22Hardware%22%5D%2C%22score%22%3A80%2C%22summary%22%3A%22A%20feature-rich%20budget%20TMR%20controller%20that%20only%20sometimes%20feels%20like%20a%20compromise.%22%7D%2C%7B%22id%22%3A%22euxMmPNTRBtjcL6Rz4W3kD%22%2C%22title%22%3A%22Hyperkin%20Competitor%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgame-pads%2Fhyperkin-competitor-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-03-24T11%3A59%3A23Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2F3TEoYfnGkzXiCm8xisUHGZ.jpg%22%2C%22strapline%22%3A%22It%20competes%20with%20a%20home%20field%20advantage%20on%20bang%20for%20buck%2C%20but%20can%20fall%20short%20on%20away%20games.%22%2C%22categories%22%3A%5B%22Game%20Pads%22%2C%22Hardware%22%2C%22Controllers%22%5D%2C%22tags%22%3A%5B%22Hardware%22%2C%22controller%22%2C%22game%20pad%22%2C%22Hyperkin%22%5D%2C%22score%22%3A72%2C%22summary%22%3A%22It%20competes%20with%20a%20home%20field%20advantage%20on%20bang%20for%20buck%2C%20but%20can%20fall%20short%20on%20away%20games.%22%7D%2C%7B%22id%22%3A%22fjGZ5xcK8LaBGjLhbCCzjU%22%2C%22title%22%3A%22Moza%20AB9%20FFB%20Base%20%2B%20MH16%20Flightstick%20%2B%20MTP%20Throttle%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2Fmoza-ab9-ffb-base-mh16-flightstick-mtp-throttle-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-02-18T14%3A48%3A01Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2F7sPx82rcLMVn5XmFgPZj97.jpg%22%2C%22strapline%22%3A%22One%20for%20the%20serious%20flight%20simmers%2C%20but%20a%20very%20impressive%20experience.%22%2C%22categories%22%3A%5B%22Controllers%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22Hardware%22%2C%22Flight%20Sims%22%2C%22force%20feedback%22%2C%22MOZA%22%2C%22joystick%22%2C%22flight%20stick%22%2C%22throttle%20controller%22%2C%22Moza%20AB9%20FFB%20Base%22%2C%22Moza%20MH16%20Flightstick%22%2C%22MSFS%202024%22%5D%2C%22score%22%3A86%2C%22summary%22%3A%22One%20for%20the%20serious%20flight%20simmers%2C%20but%20a%20very%20impressive%20experience.%22%7D%2C%7B%22id%22%3A%22NobwmgxJUWpkrLFPmkrnxL%22%2C%22title%22%3A%22Victrix%20Pro%20BFG%20Reloaded%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgame-pads%2Fvictrix-pro-bfg-reloaded-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222025-11-05T10%3A33%3A51Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2Fw5YASeamdYp7YnYfoUvq.jpg%22%2C%22strapline%22%3A%22A%20boon%20for%20fight%20pad%20lovers%2C%20but%20not%20a%20controller%20for%20the%20mainstream.%22%2C%22categories%22%3A%5B%22Game%20Pads%22%2C%22Hardware%22%2C%22Controllers%22%5D%2C%22tags%22%3A%5B%22PDP%22%2C%22Turtle%20Beach%22%2C%22Hardware%22%2C%22controller%22%5D%2C%22score%22%3A70%2C%22summary%22%3A%22A%20boon%20for%20fight%20pad%20lovers%2C%20but%20not%20a%20controller%20for%20the%20mainstream.%22%7D%2C%7B%22id%22%3A%22ifyAnNg9BLtnbkM7627JrR%22%2C%22title%22%3A%228BitDo%20Pro%203%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2F8bitdo-pro-3-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222025-10-24T16%3A21%3A45Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2F2ViNbtNwhhNsspHfd3k2A5.jpg%22%2C%22strapline%22%3A%22My%20new%20everyday%20controller%2C%20despite%20its%20flaws.%22%2C%22categories%22%3A%5B%22Controllers%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22Hardware%22%2C%22controller%22%2C%22wireless%20controller%22%2C%228bitdo%22%2C%228BitDo%20Pro%203%22%2C%22PC%20controller%22%5D%2C%22score%22%3A76%2C%22summary%22%3A%22My%20new%20everyday%20controller%2C%20despite%20its%20flaws.%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 = 55;        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 Controller Widget"></iframe></div><h2 class="article-body__section" id="section-black-friday-controller-deals"><span>Black Friday controller deals </span></h2><div class="product"><a data-dimension112="f2d49b12-cf90-11f1-956f-affb4a3fb0cb" data-action="Deal Block" data-label="Nova Lite" data-dimension48="Nova Lite" data-dimension25="$24.99" href="https://www.walmart.com/ip/GameSir-Nova-Lite-USB-Gamepad-Wireless-Bluetooth-Joystick-for-Apple-Arcade-Games/5394301595" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:425px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="qrNkN3FB5J5tnFHGYuiYtE" name="Nova Lite" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/qrNkN3FB5J5tnFHGYuiYtE-1920-80.jpg" mos="" align="middle" fullscreen="" width="425" height="425" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>It's incredible to think you can spend so little and get a stick drift-resistant wireless controller that doesn't completely suck. Luckily for the GameSir Nova Lite, it does all of the above and manages to feel good and light in the hands, too. </p><p><strong>Key specs: Wireless (Bluetooth and 2.4 GHz) | Asymmetric | Hall effect</strong><a class="view-deal button" href="https://www.walmart.com/ip/GameSir-Nova-Lite-USB-Gamepad-Wireless-Bluetooth-Joystick-for-Apple-Arcade-Games/5394301595" target="_blank" rel="nofollow" data-dimension112="f2d49b12-cf90-11f1-956f-affb4a3fb0cb" data-action="Deal Block" data-label="Nova Lite" data-dimension48="Nova Lite" data-dimension25="$24.99">View Deal</a></p></div><div class="product"><a data-dimension112="f2d49b80-cf90-11f1-b190-2d446c3cfe10" data-action="Deal Block" data-label="Ultimate 2C" data-dimension48="Ultimate 2C" data-dimension25="$29.99" href="https://www.amazon.com/dp/B0D736BCNM/?th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:200px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="VzGnuWAwAyES8AAmGqAW9d" name="8BitDo Ultimate 2C Wireless Controller.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/VzGnuWAwAyES8AAmGqAW9d-1920-80.jpg" mos="" align="middle" fullscreen="" width="200" height="200" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/dp/B0D736BCNM/?th=1" target="_blank" rel="nofollow" data-dimension112="f2d49b80-cf90-11f1-b190-2d446c3cfe10" data-action="Deal Block" data-label="Ultimate 2C" data-dimension48="Ultimate 2C" data-dimension25="$29.99">Ultimate 2C: $29.99</a></strong><br>We've already raved about Hall effect joysticks and how they spell the end for the dreaded stick drift. In this wireless gaming controller, they're a welcome feature, but this handful of gaming hardware packs a few quirky surprises too. For instance, there are <em>extra </em>bumper buttons.</p><p><strong>Key specs: Hall effect sticks, triggers | 2.4G wireless | 19 h battery</strong><a class="view-deal button" href="https://www.amazon.com/dp/B0D736BCNM/?th=1" target="_blank" rel="nofollow" data-dimension112="f2d49b80-cf90-11f1-b190-2d446c3cfe10" data-action="Deal Block" data-label="Ultimate 2C" data-dimension48="Ultimate 2C" data-dimension25="$29.99">View Deal</a></p></div><div class="product"><a data-dimension112="f2d49be4-cf90-11f1-8803-cb1cb1128c9d" data-action="Deal Block" data-label="Ultimate 3-mode" data-dimension48="Ultimate 3-mode" data-dimension25="$39.99" href="https://www.amazon.com/Ultimate-Controller-Joysticks-Triggers-Gaming-Console/dp/B0D1VHH4C5?th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="TsR8EiJ3DDMXkFgnBrMDYB" name="PCGamer Deal Block (34)" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/TsR8EiJ3DDMXkFgnBrMDYB-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/Ultimate-Controller-Joysticks-Triggers-Gaming-Console/dp/B0D1VHH4C5?th=1" target="_blank" rel="nofollow" data-dimension112="f2d49be4-cf90-11f1-8803-cb1cb1128c9d" data-action="Deal Block" data-label="Ultimate 3-mode" data-dimension48="Ultimate 3-mode" data-dimension25="$39.99">Ultimate 3-mode: was $69.99 now $39.99</a></strong><br>Though not the latest Ultimate controller to date, it is the best-priced right now, and with a cute included charging dock and stick-drift-resistant sticks, it's sure to last you a long time. The only real caveat to me is the 250 Hz polling (200 Hz wireless), which is better than Sony and Microsoft, but it means a 4-5 ms response time to your device. </p><p><strong>Key specs: Wired and Wireless | Hall effect joysticks and impulse triggers | 2 back paddle buttons | 3.5 mm jack | up to 250 Hz polling | 250 g</strong><a class="view-deal button" href="https://www.amazon.com/Ultimate-Controller-Joysticks-Triggers-Gaming-Console/dp/B0D1VHH4C5?th=1" target="_blank" rel="nofollow" data-dimension112="f2d49be4-cf90-11f1-8803-cb1cb1128c9d" data-action="Deal Block" data-label="Ultimate 3-mode" data-dimension48="Ultimate 3-mode" data-dimension25="$39.99">View Deal</a></p></div><div class="product"><a data-dimension112="f2d49c48-cf90-11f1-96fc-4774f6b5c449" data-action="Deal Block" data-label="X05 Pro" data-dimension48="X05 Pro" data-dimension25="$45.99" href="https://www.amazon.com/EasySMX-X05Pro-Wireless-Gaming-Controller-Charging/dp/B0GVS7HTWZ" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:425px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="3eZyZnfyR9iAHvwpLaYTFo" name="D05" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/3eZyZnfyR9iAHvwpLaYTFo-1920-80.jpg" mos="" align="middle" fullscreen="" width="425" height="425" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The X05 Pro doesn't look like a budget controller. It uses Hall effect for the thumbsticks, which makes it resistant to stick drift. Moreover, it's wireless and comes with a charging dock. It's an easy pick even at full price.</p><p><strong>Key specs: Wireless (2.4 + Bluetooth) | HE sticks </strong><a class="view-deal button" href="https://www.amazon.com/EasySMX-X05Pro-Wireless-Gaming-Controller-Charging/dp/B0GVS7HTWZ" target="_blank" rel="nofollow" data-dimension112="f2d49c48-cf90-11f1-96fc-4774f6b5c449" data-action="Deal Block" data-label="X05 Pro" data-dimension48="X05 Pro" data-dimension25="$45.99">View Deal</a></p></div><div class="product"><a data-dimension112="f2d49cac-cf90-11f1-b539-5f731982b2fb" data-action="Deal Block" data-label="Wireless controller" data-dimension48="Wireless controller" data-dimension25="$49.49" href="https://www.walmart.com/ip/Microsoft-Xbox-Wireless-Controller-Carbon-Black/15060559533?classType=VARIANT&athbdg=L1200&from=/search" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="YTRwUu9W6d8x3mJzaimi69" name="1781604007.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/YTRwUu9W6d8x3mJzaimi69-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="2000" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.walmart.com/ip/Microsoft-Xbox-Wireless-Controller-Carbon-Black/15060559533?classType=VARIANT&athbdg=L1200&from=/search" target="_blank" rel="nofollow" data-dimension112="f2d49cac-cf90-11f1-b539-5f731982b2fb" data-action="Deal Block" data-label="Wireless controller" data-dimension48="Wireless controller" data-dimension25="$49.49">Wireless controller: was $64 now $49.49</a></strong><br>It may be vulnerable to stick drift (and that's a big downside), but it's hard to deny the quality on show with Microsoft's Xbox controller. Textured grips, clicky buttons, a nice weight and feel: it's got everything you need, ergonomically speaking.</p><p><strong>Key specs: Wireless | Asymmetric sticks </strong></p><p><strong>Price check: </strong><a href="https://www.bestbuy.com/product/microsoft-xbox-wireless-controller-for-xbox-series-x-xbox-series-s-xbox-one-pcs-and-cloud-enabled-devices-deep-pink/JJGXPXQ257" target="_blank">Best Buy $69.99</a> | <a href="https://www.amazon.com/Xbox-Wireless-Gaming-Controller-Headsets-Console/dp/B0F1J12R6N/ref=sr_1_3" target="_blank">Amazon $54.99</a></p></div><div class="product"><a data-dimension112="f2d49d10-cf90-11f1-8cdb-b190f9520499" data-action="Deal Block" data-label="Valor Pro (wired)" data-dimension48="Valor Pro (wired)" data-dimension25="$109.95" href="https://www.amazon.com/gp/aw/d/B0DTB3F17W" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:964px;"><p class="vanilla-image-block" style="padding-top:98.96%;"><img id="Cyg8mvo5nBb2p5NVftwaoj" name="1792663014.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/Cyg8mvo5nBb2p5NVftwaoj-1920-80.jpg" mos="" align="middle" fullscreen="" width="964" height="954" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/gp/aw/d/B0DTB3F17W" target="_blank" rel="nofollow" data-dimension112="f2d49d10-cf90-11f1-8cdb-b190f9520499" data-action="Deal Block" data-label="Valor Pro (wired)" data-dimension48="Valor Pro (wired)" data-dimension25="$109.95">Valor Pro (wired): $109.95</a></strong><br>This is the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-wired-controller" target="_blank">best wired controller for PC gaming</a> because it's just so damn satisfying to use. Everything about it screams quality, from the clicky DPAD to thunky back paddles. And it's fairly modular and customizable, too.</p><p><strong>Key specs: Wired (USB-C) | Hall effect thumbsticks | 260 g</strong></p><p><strong>Price check: </strong><a href="https://www.scufgaming.com/us/en/p/scuf-valor-pro-black" target="_blank">Scuf OOS</a><a class="view-deal button" href="https://www.amazon.com/gp/aw/d/B0DTB3F17W" target="_blank" rel="nofollow" data-dimension112="f2d49d10-cf90-11f1-8cdb-b190f9520499" data-action="Deal Block" data-label="Valor Pro (wired)" data-dimension48="Valor Pro (wired)" data-dimension25="$109.95">View Deal</a></p></div><div class="product"><a data-dimension112="f2d49d6a-cf90-11f1-860e-0521650de222" data-action="Deal Block" data-label="Wolverine V3 Pro 8K" data-dimension48="Wolverine V3 Pro 8K" data-dimension25="$151.99" href="https://www.amazon.com/dp/B0FC9DTDJ3" 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="oyWyECCjM2npsCm4FAktzU" name="PCGamer Deal Block (9)" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/oyWyECCjM2npsCm4FAktzU-1920-80.png" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>With a great feel, superb specs, and a bunch of remappable buttons, the Wolverine V3 Pro 8K is not only viable as a competitive choice, but comfy enough for everyday use. </p><p><strong>Key specs: Up to 8,000 Hz | TMR thumbsticks | Hall effect triggers |</strong> <strong>included carry case | Wireless and wired | 20 hour battery life (with 1,000 Hz polling)</strong><a class="view-deal button" href="https://www.amazon.com/dp/B0FC9DTDJ3" target="_blank" rel="nofollow" data-dimension112="f2d49d6a-cf90-11f1-860e-0521650de222" data-action="Deal Block" data-label="Wolverine V3 Pro 8K" data-dimension48="Wolverine V3 Pro 8K" data-dimension25="$151.99">View Deal</a></p></div><ul><li><a href="#main"><strong>Back to top ^</strong></a></li></ul><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><h2 class="article-body__section" id="section-black-friday-controller-deals-in-the-uk"><span>Black Friday controller deals in the UK</span></h2><h2 id="where-are-the-best-black-friday-controller-deals-in-the-uk">Where are the best Black Friday controller deals in the UK?</h2><ul><li><strong>Amazon: </strong><a href="https://www.amazon.co.uk/s?k=controllers&crid=60S1AC87VO31&sprefix=controller%2Caps%2C134&ref=nb_sb_noss_1" target="_blank">Big discounts on top-brand controllers</a></li><li><strong>Overclockers:</strong> <a href="https://www.overclockers.co.uk/peripherals/gamepads-game-controllers?q=controllers&_gl=1*hw2u4v*_up*MQ..*_ga*MTQ2NzEzNjg2OC4xNzkwNjgwODU3*_ga_123456*czE3OTA2ODA4NTckbzEkZzAkdDE3OTA2ODA4ODYkajMxJGwwJGgxODc0NzI0ODg.*_ga_7SS7XDNBS9*czE3OTA2ODA4NTckbzEkZzAkdDE3OTA2ODA4ODckajMwJGwwJGgw" target="_blank">A whole bunch of controllers to choose from</a></li><li><strong>Scan:</strong> <a href="https://www.scan.co.uk/shop/computer-hardware/game-controllers/all" target="_blank">Gamepads from just £15</a></li><li><strong>Box: </strong><a href="https://box.co.uk/xbox-controllers" target="_blank">Controllers for everyone</a></li><li><strong>Currys:</strong> <a href="https://www.currys.co.uk/gaming/controllers/controllers/pc-gaming-controllers" target="_blank">Controllers from as little as £20</a></li><li><strong>Argos: </strong><a href="https://www.argos.co.uk/search/controllers/?clickOrigin=searchbar:search:term:controllers" target="_blank">Good prices on budget to high-end controllers</a></li></ul><div class="product"><a data-dimension112="f2d49e0a-cf90-11f1-954c-df904028710e" data-action="Deal Block" data-label="Nova Lite" data-dimension48="Nova Lite" data-dimension25="£18.99" href="https://www.amazon.co.uk/GameSir-Wireless-Controller-Bluetooth-Vibration-Nova-Lite-White/dp/B0CMCQ6WMC" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:200px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="soVwABeC6nbkWkMrnx2xcR" name="GameSir Nova Lite 2.4g Wireless Controller.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/soVwABeC6nbkWkMrnx2xcR-1920-80.jpg" mos="" align="middle" fullscreen="" width="200" height="200" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.co.uk/GameSir-Wireless-Controller-Bluetooth-Vibration-Nova-Lite-White/dp/B0CMCQ6WMC" target="_blank" rel="nofollow" data-dimension112="f2d49e0a-cf90-11f1-954c-df904028710e" data-action="Deal Block" data-label="Nova Lite" data-dimension48="Nova Lite" data-dimension25="£18.99">Nova Lite: was £24.99 now £18.99</a></strong><br>This gaming controller remains our <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-budget-controller" target="_blank">top budget pick</a> for good reason. <a href="https://www.pcgamer.com/hardware/controllers/gamesir-nova-lite-controller-review/" target="_blank">In our review</a>, James was particularly impressed by just how much GameSir cram into such an affordable package, highlighting the controller's Hall Effect sticks and 2.4 GHz connectivity.</p><p><strong>Key specs: Hall effect thumb sticks | 2.4G wireless | 10 h battery</strong><a class="view-deal button" href="https://www.amazon.co.uk/GameSir-Wireless-Controller-Bluetooth-Vibration-Nova-Lite-White/dp/B0CMCQ6WMC" target="_blank" rel="nofollow" data-dimension112="f2d49e0a-cf90-11f1-954c-df904028710e" data-action="Deal Block" data-label="Nova Lite" data-dimension48="Nova Lite" data-dimension25="£18.99">View Deal</a></p></div><div class="product"><a data-dimension112="f2d49e6e-cf90-11f1-b9d0-19e1cc343e86" data-action="Deal Block" data-label="Nova Lite 2" data-dimension48="Nova Lite 2" data-dimension25="£29.99" href="https://www.amazon.co.uk/GameSir-Lite-Controller-Joysticks-Remappable/dp/B0F3D25PD3/ref=sr_1_4" 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="VGAcVx239apmX4EGiGsDnE" name="1781519450.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/VGAcVx239apmX4EGiGsDnE-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.co.uk/GameSir-Lite-Controller-Joysticks-Remappable/dp/B0F3D25PD3/ref=sr_1_4" target="_blank" rel="nofollow" data-dimension112="f2d49e6e-cf90-11f1-b9d0-19e1cc343e86" data-action="Deal Block" data-label="Nova Lite 2" data-dimension48="Nova Lite 2" data-dimension25="£29.99">Nova Lite 2: £29.99</a></strong><br>An upgraded and improved version of the Nova Lite, this controller sets the standard for what you can score for a relatively slim amount of money. Hall effect everywhere and a mechanical D-pad.</p><p><strong>Key specs: Hall effect joysticks + triggers | 2.4G wireless | 1000 Hz polling</strong><a class="view-deal button" href="https://www.amazon.co.uk/GameSir-Lite-Controller-Joysticks-Remappable/dp/B0F3D25PD3/ref=sr_1_4" target="_blank" rel="nofollow" data-dimension112="f2d49e6e-cf90-11f1-b9d0-19e1cc343e86" data-action="Deal Block" data-label="Nova Lite 2" data-dimension48="Nova Lite 2" data-dimension25="£29.99">View Deal</a></p></div><div class="product"><a data-dimension112="f2d49ec8-cf90-11f1-8050-6b2fcad339ab" data-action="Deal Block" data-label="Pro 3" data-dimension48="Pro 3" data-dimension25="£52.99" href="https://www.amazon.co.uk/8Bitdo-Pro-Bluetooth-Controller-Switch/dp/B0FFGQ6J35" 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="PkKDcfAPjhcUAT2setQ2WW" name="8BitDo Pro 3 product image" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/PkKDcfAPjhcUAT2setQ2WW-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.co.uk/8Bitdo-Pro-Bluetooth-Controller-Switch/dp/B0FFGQ6J35" target="_blank" rel="nofollow" data-dimension112="f2d49ec8-cf90-11f1-8050-6b2fcad339ab" data-action="Deal Block" data-label="Pro 3" data-dimension48="Pro 3" data-dimension25="£52.99">Pro 3: was £59.99 now £52.99</a></strong><br>Though a little on the narrower side, this well-balanced controller remains comfortable to play through long sessions. A 20-hour battery life, plus the option to game while you charge (even without using the included dock), ensures this gamepad won't leave you high and dry when you need it most.</p><p><strong>Key specs: TMR sticks | Hall effect triggers | Swappable ABXY Buttons | Charging dock | 2.4 G wireless | 20h battery</strong><a class="view-deal button" href="https://www.amazon.co.uk/8Bitdo-Pro-Bluetooth-Controller-Switch/dp/B0FFGQ6J35" target="_blank" rel="nofollow" data-dimension112="f2d49ec8-cf90-11f1-8050-6b2fcad339ab" data-action="Deal Block" data-label="Pro 3" data-dimension48="Pro 3" data-dimension25="£52.99">View Deal</a></p></div><div class="product"><a data-dimension112="f2d49f2c-cf90-11f1-bd2c-a1397bc92fef" data-action="Deal Block" data-label="Wolverine V3 Pro" data-dimension48="Wolverine V3 Pro" data-dimension25="£149.99" href="https://www.amazon.co.uk/Razer-Wolverine-Pro-Controller-thumbsticks/dp/B0D7W5L9YY/ref=sr_1_1_sspa" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1508px;"><p class="vanilla-image-block" style="padding-top:99.34%;"><img id="bEho7QQ2jdCF6Vr3xoypw" name="1781520197.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/bEho7QQ2jdCF6Vr3xoypw-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/Razer-Wolverine-Pro-Controller-thumbsticks/dp/B0D7W5L9YY/ref=sr_1_1_sspa" target="_blank" rel="nofollow" data-dimension112="f2d49f2c-cf90-11f1-bd2c-a1397bc92fef" data-action="Deal Block" data-label="Wolverine V3 Pro" data-dimension48="Wolverine V3 Pro" data-dimension25="£149.99">Wolverine V3 Pro: was £199.99 now £149.99</a></strong><br>A superb controller that's sufficiently endgame for most players. Every button and trigger offers excellent feedback and it features Hall effect sticks for improved stick drift resistance.</p><p><strong>Key specs: Hall effect joysticks | 2.4G wireless | mecha-tactile buttons</strong><a class="view-deal button" href="https://www.amazon.co.uk/Razer-Wolverine-Pro-Controller-thumbsticks/dp/B0D7W5L9YY/ref=sr_1_1_sspa" target="_blank" rel="nofollow" data-dimension112="f2d49f2c-cf90-11f1-bd2c-a1397bc92fef" data-action="Deal Block" data-label="Wolverine V3 Pro" data-dimension48="Wolverine V3 Pro" data-dimension25="£149.99">View Deal</a></p></div><ul><li><a href="#main"><strong>Back to top ^</strong></a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/black-friday-controller-deals/</link>
                                                                            <description>
                            <![CDATA[ With the Black Friday sales rolling around again, peripherals like controllers could have some of the best deals. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">T9FZmNwwcE8Nt9rGPomNdn</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/SHB4vmy4M9VU5rbKmWiXW5-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 22 Oct 2026 10:04:38 +0000</pubDate>                                                                                                                                <updated>Sat, 24 Oct 2026 09:54:48 +0000</updated>
                                                                                                                                            <category><![CDATA[Controllers]]></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/SHB4vmy4M9VU5rbKmWiXW5-1920-80.jpg">
                                                            <media:credit><![CDATA[null]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Black Friday asset showing PC controllers on an abstract background]]></media:description>                                                            <media:text><![CDATA[Black Friday asset showing PC controllers on an abstract background]]></media:text>
                                <media:title type="plain"><![CDATA[Black Friday asset showing PC controllers on an abstract background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/SHB4vmy4M9VU5rbKmWiXW5-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>If there's one thing I'm sure of this November, it's that there will be some great Black Friday controller deals going around. It's going to still be tough to get full systems, graphics cards, and especially memory and storage at big discounts, but there will be peripherals going for a song. That's particular exciting because things have been changing in controllers over the past year, and previous models are still quality, but will likely have big discounts attached to them.</p><p><strong>👉</strong><a href="https://www.pcgamer.com/black-friday-pc-gaming-deals/" target="_blank"><strong>All our favorite Black Friday PC gaming deals</strong></a><strong>👈</strong></p><p>When it comes to the key high-end technology of today, such as TMR sticks and Hall effect triggers, that isn't necessarily the preserve of the super-premium $200 controllers. Companies such as GameSir and Easy SMX have brought these features down into the mainstream and you can find some of the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/" target="_blank">best PC controllers</a> sporting them for bargain prices right now. </p><h2 id="where-to-find-the-best-black-friday-controller-deals">Where to find the best Black Friday controller deals</h2><ul><li><strong>Amazon: </strong><a href="https://www.amazon.com/s?k=controllers&crid=39ANCIZGH03O&sprefix=controller%2Caps%2C179&ref=nb_sb_noss_1" target="_blank"><strong>All the pads you could ever want</strong></a></li><li><strong>Walmart:</strong> <a href="https://www.walmart.com/search?q=controllers" target="_blank">Solid controllers, series savings</a></li><li><strong>Best Buy:</strong> <a href="https://www.bestbuy.com/site/searchpage.jsp?id=pcat17071&st=controllers" target="_blank">Big name pads with big value discounts</a></li><li><strong>Newegg:</strong> <a href="https://www.newegg.com/p/pl?d=controllers" target="_blank">Big savings on big brand controllers</a></li></ul><div class="vizualizer-embed"><iframe   srcdoc="<!DOCTYPE html><html><head>  <style>    #widget-t4n1495 *:not(svg):not(path) { box-sizing: border-box; }    #widget-t4n1495 h1, #widget-t4n1495 p, #widget-t4n1495 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-t4n1495, :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-t4n1495); 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-t4n1495 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-t4n1495 tr:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { border-bottom-width: 0px; }.prose :where(t#widget-t4n1495 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-t4n1495: 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-t4n1495: 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-t4n1495 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-t4n1495 td:first-child, tfoot td:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-inline-start: 0px; }.prose :where(t#widget-t4n1495 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-t4n1495 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-t4n1495 td:first-child, tfoot td:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-inline-start: 0px; }.prose-lg :where(t#widget-t4n1495 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-t4n1495: 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-t4n1495: 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-t4n1495"><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 55 controller 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 = "Controller";        const INITIALLY_OPEN = false;        // Embedded complete category data        let LOCAL_REVIEWS = JSON.parse(decodeURIComponent("%5B%7B%22id%22%3A%228NKgZmo3fxQQhxjqHrn2AB%22%2C%22title%22%3A%22Scuf%20Omega%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2Fscuf-omega-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-09-07T15%3A02%3A11Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FPfiU4gZmnbsVoGaYsi3iY8.jpg%22%2C%22strapline%22%3A%22Closer%20to%20an%20Alpha%20or%20Beta%20than%20an%20Omega.%22%2C%22categories%22%3A%5B%22Controllers%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22controller%22%2C%22wireless%20controller%22%2C%22wired%20controller%22%2C%22game%20controller%22%2C%22PC%20controller%22%2C%22Scuf%22%2C%22Scuf%20Omega%22%5D%2C%22score%22%3A70%2C%22summary%22%3A%22Closer%20to%20an%20Alpha%20or%20Beta%20than%20an%20Omega.%22%7D%2C%7B%22id%22%3A%22UqYpGJHzTjVNBBmU2SrrJn%22%2C%22title%22%3A%22GameSir%20T7%20Pro%20Sugar%20Whirl%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgame-pads%2Fgamesir-t7-pro-sugar-whirl-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-08-14T13%3A13%3A19Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2Fmx7yo6es2nmRYz34Vbuagg.jpg%22%2C%22strapline%22%3A%22Not%20quite%20the%20sweetest%20of%20treats.%22%2C%22categories%22%3A%5B%22Game%20Pads%22%2C%22Hardware%22%2C%22Controllers%22%5D%2C%22tags%22%3A%5B%22Review%22%2C%22Hardware%22%2C%22GameSir%22%2C%22Xbox%20Wireless%20Controller%22%2C%22Pink%22%2C%22Blue%22%2C%22purple%22%2C%22wireless%20controller%22%2C%22charging%22%2C%22charging%20stand%22%2C%22dock%22%2C%22TMR%20sticks%22%2C%22Hall%20effect%22%5D%2C%22score%22%3A75%2C%22summary%22%3A%22Not%20quite%20the%20sweetest%20of%20treats.%22%7D%2C%7B%22id%22%3A%22LxaJz5yKcWogc5hm5z84mj%22%2C%22title%22%3A%22GameSir%20G7%20Pro%208K%20Aimlabs%20Edition%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2Fgamesir-g7-pro-8k-aimlabs-edition-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-05-01T11%3A37%3A15Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FuT6Y9ABVa5DY9xXcAJrEwf.jpg%22%2C%22strapline%22%3A%22Would%20you%20pay%20%2410%20more%20for%20higher%20polling%3F%22%2C%22categories%22%3A%5B%22Controllers%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22controller%22%2C%22PC%20controller%22%2C%22game%20controller%22%2C%22wireless%20controller%22%2C%22Hardware%22%2C%22GameSir%22%2C%22GameSir%20G7%20Pro%208K%22%2C%22TMR%22%2C%22TMR%20sticks%22%2C%22GameSir%20g7%20Pro%208K%20Aimlabs%20Edition%22%5D%2C%22score%22%3A84%2C%22summary%22%3A%22Would%20you%20pay%20%2410%20more%20for%20higher%20polling%3F%22%7D%2C%7B%22id%22%3A%22B4p3aPJNV2Ckc47kSywXKQ%22%2C%22title%22%3A%22Steam%20Controller%20(2026)%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgame-pads%2Fsteam-controller-2026-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-04-27T17%3A00%3A00Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FaUXA7Xr75b7Xuvt2S6eeKY.jpg%22%2C%22strapline%22%3A%22Second%20time's%20the%20charm.%22%2C%22categories%22%3A%5B%22Game%20Pads%22%2C%22Hardware%22%2C%22Controllers%22%5D%2C%22tags%22%3A%5B%22Hardware%22%2C%22Valve%22%2C%22Steam%20Controller%22%2C%22controller%22%2C%22game%20pad%22%2C%22Steam%22%5D%2C%22score%22%3A83%2C%22summary%22%3A%22Second%20time's%20the%20charm.%22%7D%2C%7B%22id%22%3A%22WRLnnowV6sabshmTC8HujQ%22%2C%22title%22%3A%22EasySMX%20D05%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2Feasysmx-d05-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-03-31T15%3A00%3A43Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FPqjBcwBzNJUwKiWav7NBZF.jpg%22%2C%22strapline%22%3A%22You%20can%20get%20Hall%20effect%20controllers%20slightly%20cheaper%2C%20but%20you'd%20struggle%20to%20find%20as%20feature-rich%20a%20package%20without%20some%20heavy%2C%20heavy%20sales.%20%22%2C%22categories%22%3A%5B%22Controllers%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22controller%22%2C%22wired%20controller%22%2C%22wireless%20controller%22%2C%22budget%22%2C%22Hall%20effect%22%2C%22EasySMX%22%2C%22EasySMX%20D10%22%2C%22Hardware%22%5D%2C%22score%22%3A87%2C%22summary%22%3A%22You%20can%20get%20Hall%20effect%20controllers%20slightly%20cheaper%2C%20but%20you'd%20struggle%20to%20find%20as%20feature-rich%20a%20package%20without%20some%20heavy%2C%20heavy%20sales.%20%22%7D%2C%7B%22id%22%3A%22fM5EQd4AH6qDUADhLjdeqe%22%2C%22title%22%3A%22EasySMX%20D10%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2Feasysmx-d10-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-03-27T15%3A14%3A14Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FUgLVpPDZm7T9ZV36sAHGz4.jpg%22%2C%22strapline%22%3A%22A%20feature-rich%20budget%20TMR%20controller%20that%20only%20sometimes%20feels%20like%20a%20compromise.%22%2C%22categories%22%3A%5B%22Controllers%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22controller%22%2C%22game%20controller%22%2C%22budget%22%2C%22TMR%22%2C%22TMR%20sticks%22%2C%22Hall%20effect%22%2C%22Review%22%2C%22Hardware%22%5D%2C%22score%22%3A80%2C%22summary%22%3A%22A%20feature-rich%20budget%20TMR%20controller%20that%20only%20sometimes%20feels%20like%20a%20compromise.%22%7D%2C%7B%22id%22%3A%22euxMmPNTRBtjcL6Rz4W3kD%22%2C%22title%22%3A%22Hyperkin%20Competitor%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgame-pads%2Fhyperkin-competitor-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-03-24T11%3A59%3A23Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2F3TEoYfnGkzXiCm8xisUHGZ.jpg%22%2C%22strapline%22%3A%22It%20competes%20with%20a%20home%20field%20advantage%20on%20bang%20for%20buck%2C%20but%20can%20fall%20short%20on%20away%20games.%22%2C%22categories%22%3A%5B%22Game%20Pads%22%2C%22Hardware%22%2C%22Controllers%22%5D%2C%22tags%22%3A%5B%22Hardware%22%2C%22controller%22%2C%22game%20pad%22%2C%22Hyperkin%22%5D%2C%22score%22%3A72%2C%22summary%22%3A%22It%20competes%20with%20a%20home%20field%20advantage%20on%20bang%20for%20buck%2C%20but%20can%20fall%20short%20on%20away%20games.%22%7D%2C%7B%22id%22%3A%22fjGZ5xcK8LaBGjLhbCCzjU%22%2C%22title%22%3A%22Moza%20AB9%20FFB%20Base%20%2B%20MH16%20Flightstick%20%2B%20MTP%20Throttle%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2Fmoza-ab9-ffb-base-mh16-flightstick-mtp-throttle-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-02-18T14%3A48%3A01Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2F7sPx82rcLMVn5XmFgPZj97.jpg%22%2C%22strapline%22%3A%22One%20for%20the%20serious%20flight%20simmers%2C%20but%20a%20very%20impressive%20experience.%22%2C%22categories%22%3A%5B%22Controllers%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22Hardware%22%2C%22Flight%20Sims%22%2C%22force%20feedback%22%2C%22MOZA%22%2C%22joystick%22%2C%22flight%20stick%22%2C%22throttle%20controller%22%2C%22Moza%20AB9%20FFB%20Base%22%2C%22Moza%20MH16%20Flightstick%22%2C%22MSFS%202024%22%5D%2C%22score%22%3A86%2C%22summary%22%3A%22One%20for%20the%20serious%20flight%20simmers%2C%20but%20a%20very%20impressive%20experience.%22%7D%2C%7B%22id%22%3A%22NobwmgxJUWpkrLFPmkrnxL%22%2C%22title%22%3A%22Victrix%20Pro%20BFG%20Reloaded%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgame-pads%2Fvictrix-pro-bfg-reloaded-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222025-11-05T10%3A33%3A51Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2Fw5YASeamdYp7YnYfoUvq.jpg%22%2C%22strapline%22%3A%22A%20boon%20for%20fight%20pad%20lovers%2C%20but%20not%20a%20controller%20for%20the%20mainstream.%22%2C%22categories%22%3A%5B%22Game%20Pads%22%2C%22Hardware%22%2C%22Controllers%22%5D%2C%22tags%22%3A%5B%22PDP%22%2C%22Turtle%20Beach%22%2C%22Hardware%22%2C%22controller%22%5D%2C%22score%22%3A70%2C%22summary%22%3A%22A%20boon%20for%20fight%20pad%20lovers%2C%20but%20not%20a%20controller%20for%20the%20mainstream.%22%7D%2C%7B%22id%22%3A%22ifyAnNg9BLtnbkM7627JrR%22%2C%22title%22%3A%228BitDo%20Pro%203%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2F8bitdo-pro-3-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222025-10-24T16%3A21%3A45Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2F2ViNbtNwhhNsspHfd3k2A5.jpg%22%2C%22strapline%22%3A%22My%20new%20everyday%20controller%2C%20despite%20its%20flaws.%22%2C%22categories%22%3A%5B%22Controllers%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22Hardware%22%2C%22controller%22%2C%22wireless%20controller%22%2C%228bitdo%22%2C%228BitDo%20Pro%203%22%2C%22PC%20controller%22%5D%2C%22score%22%3A76%2C%22summary%22%3A%22My%20new%20everyday%20controller%2C%20despite%20its%20flaws.%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 = 55;        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 Controller Widget"></iframe></div><h2 class="article-body__section" id="section-black-friday-controller-deals"><span>Black Friday controller deals </span></h2><div class="product"><a data-dimension112="f2d49b12-cf90-11f1-956f-affb4a3fb0cb" data-action="Deal Block" data-label="Nova Lite" data-dimension48="Nova Lite" data-dimension25="$24.99" href="https://www.walmart.com/ip/GameSir-Nova-Lite-USB-Gamepad-Wireless-Bluetooth-Joystick-for-Apple-Arcade-Games/5394301595" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:425px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="qrNkN3FB5J5tnFHGYuiYtE" name="Nova Lite" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/qrNkN3FB5J5tnFHGYuiYtE-1920-80.jpg" mos="" align="middle" fullscreen="" width="425" height="425" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>It's incredible to think you can spend so little and get a stick drift-resistant wireless controller that doesn't completely suck. Luckily for the GameSir Nova Lite, it does all of the above and manages to feel good and light in the hands, too. </p><p><strong>Key specs: Wireless (Bluetooth and 2.4 GHz) | Asymmetric | Hall effect</strong><a class="view-deal button" href="https://www.walmart.com/ip/GameSir-Nova-Lite-USB-Gamepad-Wireless-Bluetooth-Joystick-for-Apple-Arcade-Games/5394301595" target="_blank" rel="nofollow" data-dimension112="f2d49b12-cf90-11f1-956f-affb4a3fb0cb" data-action="Deal Block" data-label="Nova Lite" data-dimension48="Nova Lite" data-dimension25="$24.99">View Deal</a></p></div><div class="product"><a data-dimension112="f2d49b80-cf90-11f1-b190-2d446c3cfe10" data-action="Deal Block" data-label="Ultimate 2C" data-dimension48="Ultimate 2C" data-dimension25="$29.99" href="https://www.amazon.com/dp/B0D736BCNM/?th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:200px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="VzGnuWAwAyES8AAmGqAW9d" name="8BitDo Ultimate 2C Wireless Controller.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/VzGnuWAwAyES8AAmGqAW9d-1920-80.jpg" mos="" align="middle" fullscreen="" width="200" height="200" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/dp/B0D736BCNM/?th=1" target="_blank" rel="nofollow" data-dimension112="f2d49b80-cf90-11f1-b190-2d446c3cfe10" data-action="Deal Block" data-label="Ultimate 2C" data-dimension48="Ultimate 2C" data-dimension25="$29.99">Ultimate 2C: $29.99</a></strong><br>We've already raved about Hall effect joysticks and how they spell the end for the dreaded stick drift. In this wireless gaming controller, they're a welcome feature, but this handful of gaming hardware packs a few quirky surprises too. For instance, there are <em>extra </em>bumper buttons.</p><p><strong>Key specs: Hall effect sticks, triggers | 2.4G wireless | 19 h battery</strong><a class="view-deal button" href="https://www.amazon.com/dp/B0D736BCNM/?th=1" target="_blank" rel="nofollow" data-dimension112="f2d49b80-cf90-11f1-b190-2d446c3cfe10" data-action="Deal Block" data-label="Ultimate 2C" data-dimension48="Ultimate 2C" data-dimension25="$29.99">View Deal</a></p></div><div class="product"><a data-dimension112="f2d49be4-cf90-11f1-8803-cb1cb1128c9d" data-action="Deal Block" data-label="Ultimate 3-mode" data-dimension48="Ultimate 3-mode" data-dimension25="$39.99" href="https://www.amazon.com/Ultimate-Controller-Joysticks-Triggers-Gaming-Console/dp/B0D1VHH4C5?th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="TsR8EiJ3DDMXkFgnBrMDYB" name="PCGamer Deal Block (34)" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/TsR8EiJ3DDMXkFgnBrMDYB-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/Ultimate-Controller-Joysticks-Triggers-Gaming-Console/dp/B0D1VHH4C5?th=1" target="_blank" rel="nofollow" data-dimension112="f2d49be4-cf90-11f1-8803-cb1cb1128c9d" data-action="Deal Block" data-label="Ultimate 3-mode" data-dimension48="Ultimate 3-mode" data-dimension25="$39.99">Ultimate 3-mode: was $69.99 now $39.99</a></strong><br>Though not the latest Ultimate controller to date, it is the best-priced right now, and with a cute included charging dock and stick-drift-resistant sticks, it's sure to last you a long time. The only real caveat to me is the 250 Hz polling (200 Hz wireless), which is better than Sony and Microsoft, but it means a 4-5 ms response time to your device. </p><p><strong>Key specs: Wired and Wireless | Hall effect joysticks and impulse triggers | 2 back paddle buttons | 3.5 mm jack | up to 250 Hz polling | 250 g</strong><a class="view-deal button" href="https://www.amazon.com/Ultimate-Controller-Joysticks-Triggers-Gaming-Console/dp/B0D1VHH4C5?th=1" target="_blank" rel="nofollow" data-dimension112="f2d49be4-cf90-11f1-8803-cb1cb1128c9d" data-action="Deal Block" data-label="Ultimate 3-mode" data-dimension48="Ultimate 3-mode" data-dimension25="$39.99">View Deal</a></p></div><div class="product"><a data-dimension112="f2d49c48-cf90-11f1-96fc-4774f6b5c449" data-action="Deal Block" data-label="X05 Pro" data-dimension48="X05 Pro" data-dimension25="$45.99" href="https://www.amazon.com/EasySMX-X05Pro-Wireless-Gaming-Controller-Charging/dp/B0GVS7HTWZ" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:425px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="3eZyZnfyR9iAHvwpLaYTFo" name="D05" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/3eZyZnfyR9iAHvwpLaYTFo-1920-80.jpg" mos="" align="middle" fullscreen="" width="425" height="425" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The X05 Pro doesn't look like a budget controller. It uses Hall effect for the thumbsticks, which makes it resistant to stick drift. Moreover, it's wireless and comes with a charging dock. It's an easy pick even at full price.</p><p><strong>Key specs: Wireless (2.4 + Bluetooth) | HE sticks </strong><a class="view-deal button" href="https://www.amazon.com/EasySMX-X05Pro-Wireless-Gaming-Controller-Charging/dp/B0GVS7HTWZ" target="_blank" rel="nofollow" data-dimension112="f2d49c48-cf90-11f1-96fc-4774f6b5c449" data-action="Deal Block" data-label="X05 Pro" data-dimension48="X05 Pro" data-dimension25="$45.99">View Deal</a></p></div><div class="product"><a data-dimension112="f2d49cac-cf90-11f1-b539-5f731982b2fb" data-action="Deal Block" data-label="Wireless controller" data-dimension48="Wireless controller" data-dimension25="$49.49" href="https://www.walmart.com/ip/Microsoft-Xbox-Wireless-Controller-Carbon-Black/15060559533?classType=VARIANT&athbdg=L1200&from=/search" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="YTRwUu9W6d8x3mJzaimi69" name="1781604007.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/YTRwUu9W6d8x3mJzaimi69-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="2000" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.walmart.com/ip/Microsoft-Xbox-Wireless-Controller-Carbon-Black/15060559533?classType=VARIANT&athbdg=L1200&from=/search" target="_blank" rel="nofollow" data-dimension112="f2d49cac-cf90-11f1-b539-5f731982b2fb" data-action="Deal Block" data-label="Wireless controller" data-dimension48="Wireless controller" data-dimension25="$49.49">Wireless controller: was $64 now $49.49</a></strong><br>It may be vulnerable to stick drift (and that's a big downside), but it's hard to deny the quality on show with Microsoft's Xbox controller. Textured grips, clicky buttons, a nice weight and feel: it's got everything you need, ergonomically speaking.</p><p><strong>Key specs: Wireless | Asymmetric sticks </strong></p><p><strong>Price check: </strong><a href="https://www.bestbuy.com/product/microsoft-xbox-wireless-controller-for-xbox-series-x-xbox-series-s-xbox-one-pcs-and-cloud-enabled-devices-deep-pink/JJGXPXQ257" target="_blank">Best Buy $69.99</a> | <a href="https://www.amazon.com/Xbox-Wireless-Gaming-Controller-Headsets-Console/dp/B0F1J12R6N/ref=sr_1_3" target="_blank">Amazon $54.99</a></p></div><div class="product"><a data-dimension112="f2d49d10-cf90-11f1-8cdb-b190f9520499" data-action="Deal Block" data-label="Valor Pro (wired)" data-dimension48="Valor Pro (wired)" data-dimension25="$109.95" href="https://www.amazon.com/gp/aw/d/B0DTB3F17W" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:964px;"><p class="vanilla-image-block" style="padding-top:98.96%;"><img id="Cyg8mvo5nBb2p5NVftwaoj" name="1792663014.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/Cyg8mvo5nBb2p5NVftwaoj-1920-80.jpg" mos="" align="middle" fullscreen="" width="964" height="954" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/gp/aw/d/B0DTB3F17W" target="_blank" rel="nofollow" data-dimension112="f2d49d10-cf90-11f1-8cdb-b190f9520499" data-action="Deal Block" data-label="Valor Pro (wired)" data-dimension48="Valor Pro (wired)" data-dimension25="$109.95">Valor Pro (wired): $109.95</a></strong><br>This is the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-wired-controller" target="_blank">best wired controller for PC gaming</a> because it's just so damn satisfying to use. Everything about it screams quality, from the clicky DPAD to thunky back paddles. And it's fairly modular and customizable, too.</p><p><strong>Key specs: Wired (USB-C) | Hall effect thumbsticks | 260 g</strong></p><p><strong>Price check: </strong><a href="https://www.scufgaming.com/us/en/p/scuf-valor-pro-black" target="_blank">Scuf OOS</a><a class="view-deal button" href="https://www.amazon.com/gp/aw/d/B0DTB3F17W" target="_blank" rel="nofollow" data-dimension112="f2d49d10-cf90-11f1-8cdb-b190f9520499" data-action="Deal Block" data-label="Valor Pro (wired)" data-dimension48="Valor Pro (wired)" data-dimension25="$109.95">View Deal</a></p></div><div class="product"><a data-dimension112="f2d49d6a-cf90-11f1-860e-0521650de222" data-action="Deal Block" data-label="Wolverine V3 Pro 8K" data-dimension48="Wolverine V3 Pro 8K" data-dimension25="$151.99" href="https://www.amazon.com/dp/B0FC9DTDJ3" 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="oyWyECCjM2npsCm4FAktzU" name="PCGamer Deal Block (9)" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/oyWyECCjM2npsCm4FAktzU-1920-80.png" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>With a great feel, superb specs, and a bunch of remappable buttons, the Wolverine V3 Pro 8K is not only viable as a competitive choice, but comfy enough for everyday use. </p><p><strong>Key specs: Up to 8,000 Hz | TMR thumbsticks | Hall effect triggers |</strong> <strong>included carry case | Wireless and wired | 20 hour battery life (with 1,000 Hz polling)</strong><a class="view-deal button" href="https://www.amazon.com/dp/B0FC9DTDJ3" target="_blank" rel="nofollow" data-dimension112="f2d49d6a-cf90-11f1-860e-0521650de222" data-action="Deal Block" data-label="Wolverine V3 Pro 8K" data-dimension48="Wolverine V3 Pro 8K" data-dimension25="$151.99">View Deal</a></p></div><ul><li><a href="#main"><strong>Back to top ^</strong></a></li></ul><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><h2 class="article-body__section" id="section-black-friday-controller-deals-in-the-uk"><span>Black Friday controller deals in the UK</span></h2><h2 id="where-are-the-best-black-friday-controller-deals-in-the-uk">Where are the best Black Friday controller deals in the UK?</h2><ul><li><strong>Amazon: </strong><a href="https://www.amazon.co.uk/s?k=controllers&crid=60S1AC87VO31&sprefix=controller%2Caps%2C134&ref=nb_sb_noss_1" target="_blank">Big discounts on top-brand controllers</a></li><li><strong>Overclockers:</strong> <a href="https://www.overclockers.co.uk/peripherals/gamepads-game-controllers?q=controllers&_gl=1*hw2u4v*_up*MQ..*_ga*MTQ2NzEzNjg2OC4xNzkwNjgwODU3*_ga_123456*czE3OTA2ODA4NTckbzEkZzAkdDE3OTA2ODA4ODYkajMxJGwwJGgxODc0NzI0ODg.*_ga_7SS7XDNBS9*czE3OTA2ODA4NTckbzEkZzAkdDE3OTA2ODA4ODckajMwJGwwJGgw" target="_blank">A whole bunch of controllers to choose from</a></li><li><strong>Scan:</strong> <a href="https://www.scan.co.uk/shop/computer-hardware/game-controllers/all" target="_blank">Gamepads from just £15</a></li><li><strong>Box: </strong><a href="https://box.co.uk/xbox-controllers" target="_blank">Controllers for everyone</a></li><li><strong>Currys:</strong> <a href="https://www.currys.co.uk/gaming/controllers/controllers/pc-gaming-controllers" target="_blank">Controllers from as little as £20</a></li><li><strong>Argos: </strong><a href="https://www.argos.co.uk/search/controllers/?clickOrigin=searchbar:search:term:controllers" target="_blank">Good prices on budget to high-end controllers</a></li></ul><div class="product"><a data-dimension112="f2d49e0a-cf90-11f1-954c-df904028710e" data-action="Deal Block" data-label="Nova Lite" data-dimension48="Nova Lite" data-dimension25="£18.99" href="https://www.amazon.co.uk/GameSir-Wireless-Controller-Bluetooth-Vibration-Nova-Lite-White/dp/B0CMCQ6WMC" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:200px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="soVwABeC6nbkWkMrnx2xcR" name="GameSir Nova Lite 2.4g Wireless Controller.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/soVwABeC6nbkWkMrnx2xcR-1920-80.jpg" mos="" align="middle" fullscreen="" width="200" height="200" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.co.uk/GameSir-Wireless-Controller-Bluetooth-Vibration-Nova-Lite-White/dp/B0CMCQ6WMC" target="_blank" rel="nofollow" data-dimension112="f2d49e0a-cf90-11f1-954c-df904028710e" data-action="Deal Block" data-label="Nova Lite" data-dimension48="Nova Lite" data-dimension25="£18.99">Nova Lite: was £24.99 now £18.99</a></strong><br>This gaming controller remains our <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-budget-controller" target="_blank">top budget pick</a> for good reason. <a href="https://www.pcgamer.com/hardware/controllers/gamesir-nova-lite-controller-review/" target="_blank">In our review</a>, James was particularly impressed by just how much GameSir cram into such an affordable package, highlighting the controller's Hall Effect sticks and 2.4 GHz connectivity.</p><p><strong>Key specs: Hall effect thumb sticks | 2.4G wireless | 10 h battery</strong><a class="view-deal button" href="https://www.amazon.co.uk/GameSir-Wireless-Controller-Bluetooth-Vibration-Nova-Lite-White/dp/B0CMCQ6WMC" target="_blank" rel="nofollow" data-dimension112="f2d49e0a-cf90-11f1-954c-df904028710e" data-action="Deal Block" data-label="Nova Lite" data-dimension48="Nova Lite" data-dimension25="£18.99">View Deal</a></p></div><div class="product"><a data-dimension112="f2d49e6e-cf90-11f1-b9d0-19e1cc343e86" data-action="Deal Block" data-label="Nova Lite 2" data-dimension48="Nova Lite 2" data-dimension25="£29.99" href="https://www.amazon.co.uk/GameSir-Lite-Controller-Joysticks-Remappable/dp/B0F3D25PD3/ref=sr_1_4" 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="VGAcVx239apmX4EGiGsDnE" name="1781519450.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/VGAcVx239apmX4EGiGsDnE-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.co.uk/GameSir-Lite-Controller-Joysticks-Remappable/dp/B0F3D25PD3/ref=sr_1_4" target="_blank" rel="nofollow" data-dimension112="f2d49e6e-cf90-11f1-b9d0-19e1cc343e86" data-action="Deal Block" data-label="Nova Lite 2" data-dimension48="Nova Lite 2" data-dimension25="£29.99">Nova Lite 2: £29.99</a></strong><br>An upgraded and improved version of the Nova Lite, this controller sets the standard for what you can score for a relatively slim amount of money. Hall effect everywhere and a mechanical D-pad.</p><p><strong>Key specs: Hall effect joysticks + triggers | 2.4G wireless | 1000 Hz polling</strong><a class="view-deal button" href="https://www.amazon.co.uk/GameSir-Lite-Controller-Joysticks-Remappable/dp/B0F3D25PD3/ref=sr_1_4" target="_blank" rel="nofollow" data-dimension112="f2d49e6e-cf90-11f1-b9d0-19e1cc343e86" data-action="Deal Block" data-label="Nova Lite 2" data-dimension48="Nova Lite 2" data-dimension25="£29.99">View Deal</a></p></div><div class="product"><a data-dimension112="f2d49ec8-cf90-11f1-8050-6b2fcad339ab" data-action="Deal Block" data-label="Pro 3" data-dimension48="Pro 3" data-dimension25="£52.99" href="https://www.amazon.co.uk/8Bitdo-Pro-Bluetooth-Controller-Switch/dp/B0FFGQ6J35" 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="PkKDcfAPjhcUAT2setQ2WW" name="8BitDo Pro 3 product image" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/PkKDcfAPjhcUAT2setQ2WW-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.co.uk/8Bitdo-Pro-Bluetooth-Controller-Switch/dp/B0FFGQ6J35" target="_blank" rel="nofollow" data-dimension112="f2d49ec8-cf90-11f1-8050-6b2fcad339ab" data-action="Deal Block" data-label="Pro 3" data-dimension48="Pro 3" data-dimension25="£52.99">Pro 3: was £59.99 now £52.99</a></strong><br>Though a little on the narrower side, this well-balanced controller remains comfortable to play through long sessions. A 20-hour battery life, plus the option to game while you charge (even without using the included dock), ensures this gamepad won't leave you high and dry when you need it most.</p><p><strong>Key specs: TMR sticks | Hall effect triggers | Swappable ABXY Buttons | Charging dock | 2.4 G wireless | 20h battery</strong><a class="view-deal button" href="https://www.amazon.co.uk/8Bitdo-Pro-Bluetooth-Controller-Switch/dp/B0FFGQ6J35" target="_blank" rel="nofollow" data-dimension112="f2d49ec8-cf90-11f1-8050-6b2fcad339ab" data-action="Deal Block" data-label="Pro 3" data-dimension48="Pro 3" data-dimension25="£52.99">View Deal</a></p></div><div class="product"><a data-dimension112="f2d49f2c-cf90-11f1-bd2c-a1397bc92fef" data-action="Deal Block" data-label="Wolverine V3 Pro" data-dimension48="Wolverine V3 Pro" data-dimension25="£149.99" href="https://www.amazon.co.uk/Razer-Wolverine-Pro-Controller-thumbsticks/dp/B0D7W5L9YY/ref=sr_1_1_sspa" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1508px;"><p class="vanilla-image-block" style="padding-top:99.34%;"><img id="bEho7QQ2jdCF6Vr3xoypw" name="1781520197.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/bEho7QQ2jdCF6Vr3xoypw-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/Razer-Wolverine-Pro-Controller-thumbsticks/dp/B0D7W5L9YY/ref=sr_1_1_sspa" target="_blank" rel="nofollow" data-dimension112="f2d49f2c-cf90-11f1-bd2c-a1397bc92fef" data-action="Deal Block" data-label="Wolverine V3 Pro" data-dimension48="Wolverine V3 Pro" data-dimension25="£149.99">Wolverine V3 Pro: was £199.99 now £149.99</a></strong><br>A superb controller that's sufficiently endgame for most players. Every button and trigger offers excellent feedback and it features Hall effect sticks for improved stick drift resistance.</p><p><strong>Key specs: Hall effect joysticks | 2.4G wireless | mecha-tactile buttons</strong><a class="view-deal button" href="https://www.amazon.co.uk/Razer-Wolverine-Pro-Controller-thumbsticks/dp/B0D7W5L9YY/ref=sr_1_1_sspa" target="_blank" rel="nofollow" data-dimension112="f2d49f2c-cf90-11f1-bd2c-a1397bc92fef" data-action="Deal Block" data-label="Wolverine V3 Pro" data-dimension48="Wolverine V3 Pro" data-dimension25="£149.99">View Deal</a></p></div><ul><li><a href="#main"><strong>Back to top ^</strong></a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ You can make this DIY controller in six hours and for less than 12 bucks—but would you want to? ]]></title>
                                                                                                <dc:content><![CDATA[ <p>In my past life as a console gamer, I was wary of any controller not bundled in with my first-party hardware. These days though, there are lots of excellent PC gamepad options—particularly in the budget category—but how cheap is <em>too</em> cheap?</p><p>Our current pick for the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-budget-controller" target="_blank">best PC controller</a> that won't hurt your wallet is the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-nova-lite-controller-review/" target="_blank">GameSir Nova Lite</a>. This costs comfortably under $30 on a good day, but how low can you go in the budget realm? Well, how about a pad you can make yourself in about six hours for €10 (or about $11.22)? The catch is…<a href="https://www.instructables.com/Undercooked-V04-Simplified-Gamepad-for-Non-Gamers-" target="_blank">uh, well, just look at it</a>.</p><p>Dubbed the Undercooked V0.4, this thing doesn't have a D-pad or even a full set of face buttons. Instead, this project limits itself to a single analogue stick, 'X' and 'A' inputs, a menu button, and a 'B' button that's been relegated to the pad's right shoulder.</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>According to the creator, Lazy_Duck, "the idea was to make it simple, affordable and that you could get all components even in the smallest electronics shop quick and cheap." As such, this simplified pad doesn't even feature a full PCB.</p><p>Instead, you'll need a protoboard with an RP2040-Zero microcontroller—that is, if you fancy DIY-ing something that looks a bit like the tech you would have seen coming out of East Germany after the wall came down. With only four buttons and a stick, it definitely gets points for novelty at the very least.</p><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="CJAftkCrSyitfLrARKE2RK" name="controllers.jpg" alt="Xbox and Switch controllers arranged in a sort of "gamepad pentagram"" src="https://cdn.mos.cms.futurecdn.net/CJAftkCrSyitfLrARKE2RK-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 body may also earn itself a few more points for durability. Made from 150 g of 3D printed filament, the shell is then stuck together with heat-set threaded inserts. Basically, this gamepad should be able to take a tumble, or indeed being flung across the room.</p><p>All of those 3D printed ridges don't look like they'll be especially comfortable in the hands over extended periods, so you may want to sand the outer parts of the shell before putting it all together. Mind you, sanding may not do much for comfort given the back side of this controller is completely flat. </p><p>My fingers are aching just looking at it. Still, if you're looking for a cheap and cheerful electronics project, you can't go too wrong with this, even if you don't end up actually using it.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/you-can-make-this-diy-controller-in-six-hours-and-for-less-than-12-bucks-but-would-you-want-to/</link>
                                                                            <description>
                            <![CDATA[ I think I'll stick with my GameSir Nova Lite. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">biEHCCrv5nj7RCt8LtH2xf</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/K9EYHPcEyWfAFiZXNpgXHm-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 19 Oct 2026 16:15:13 +0000</pubDate>                                                                                                                                <updated>Mon, 19 Oct 2026 16:15:17 +0000</updated>
                                                                                                                                            <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jess Kinghorn ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY-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/K9EYHPcEyWfAFiZXNpgXHm-1920-80.jpg">
                                                            <media:credit><![CDATA[Lazy_Duck]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A very budget, 3D printed, DIY PC controller. I has one analogue stick on the right, and only three visible buttons on the left (These are the &#039;X&#039;, Y&#039;, and menu buttons).]]></media:description>                                                            <media:text><![CDATA[A very budget, 3D printed, DIY PC controller. I has one analogue stick on the right, and only three visible buttons on the left (These are the &#039;X&#039;, Y&#039;, and menu buttons).]]></media:text>
                                <media:title type="plain"><![CDATA[A very budget, 3D printed, DIY PC controller. I has one analogue stick on the right, and only three visible buttons on the left (These are the &#039;X&#039;, Y&#039;, and menu buttons).]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/K9EYHPcEyWfAFiZXNpgXHm-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>In my past life as a console gamer, I was wary of any controller not bundled in with my first-party hardware. These days though, there are lots of excellent PC gamepad options—particularly in the budget category—but how cheap is <em>too</em> cheap?</p><p>Our current pick for the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-budget-controller" target="_blank">best PC controller</a> that won't hurt your wallet is the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-nova-lite-controller-review/" target="_blank">GameSir Nova Lite</a>. This costs comfortably under $30 on a good day, but how low can you go in the budget realm? Well, how about a pad you can make yourself in about six hours for €10 (or about $11.22)? The catch is…<a href="https://www.instructables.com/Undercooked-V04-Simplified-Gamepad-for-Non-Gamers-" target="_blank">uh, well, just look at it</a>.</p><p>Dubbed the Undercooked V0.4, this thing doesn't have a D-pad or even a full set of face buttons. Instead, this project limits itself to a single analogue stick, 'X' and 'A' inputs, a menu button, and a 'B' button that's been relegated to the pad's right shoulder.</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>According to the creator, Lazy_Duck, "the idea was to make it simple, affordable and that you could get all components even in the smallest electronics shop quick and cheap." As such, this simplified pad doesn't even feature a full PCB.</p><p>Instead, you'll need a protoboard with an RP2040-Zero microcontroller—that is, if you fancy DIY-ing something that looks a bit like the tech you would have seen coming out of East Germany after the wall came down. With only four buttons and a stick, it definitely gets points for novelty at the very least.</p><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="CJAftkCrSyitfLrARKE2RK" name="controllers.jpg" alt="Xbox and Switch controllers arranged in a sort of "gamepad pentagram"" src="https://cdn.mos.cms.futurecdn.net/CJAftkCrSyitfLrARKE2RK-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 body may also earn itself a few more points for durability. Made from 150 g of 3D printed filament, the shell is then stuck together with heat-set threaded inserts. Basically, this gamepad should be able to take a tumble, or indeed being flung across the room.</p><p>All of those 3D printed ridges don't look like they'll be especially comfortable in the hands over extended periods, so you may want to sand the outer parts of the shell before putting it all together. Mind you, sanding may not do much for comfort given the back side of this controller is completely flat. </p><p>My fingers are aching just looking at it. Still, if you're looking for a cheap and cheerful electronics project, you can't go too wrong with this, even if you don't end up actually using it.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ GameSir Nova Lite 2 review ]]></title>
                                                                                                <dc:content><![CDATA[ <div data-widget-type="merchantlink" data-model-name="GameSir Nova Lite 2" data-widget-title=""></div><p>The GameSir Nova Lite 2 is our new best budget controller for PC. It's extremely well equipped considering the small asking price. Depart with just <a href="https://www.amazon.com/dp/B0F3D25PD3" target="_blank">$30</a>/<a href="https://www.amazon.co.uk/dp/B0F3D25PD3" target="_blank">£30</a> of your hard-earned cash, and you'll receive a wireless controller with Hall effect sticks, mechanical D-pad, trigger stops, and programmable rear buttons.</p><p>There's enough here that even GameSir's own exceedingly popular <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/" target="_blank">G7 Pro</a> is at risk of cannibalisation. The Nova Lite 2 doesn't look that out of shape by comparison, with only quality of life and more advanced features between them. Such as a handful of micro switches and a bigger battery. The G7 Pro is a better all-round controller, but for less than half the cash, the Nova Lite 2 is tough to ignore.</p><p>There are some drawbacks with a controller at this price. The plastic doesn't feel great and it's not overly grippy. The software could be smarter and the shoulder buttons wider, too. But they all seem savvy sacrifices for the savings that the Nova Lite 2 delivers.</p><div class="card card--standard card--rows-2 card--align-center"><div class="card__content"><h3 class="card__title">Buy if...</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>✅ You don't use a controller often and you're not looking to spend a lot of money:</strong> If you use a mouse and keyboard for most of your gaming, you don't need the next best thing. A dependable, wireless pad like the Nova Lite 2 is plenty sufficient for the odd singleplayer game.</p></div></div></div></div><div class="card card--standard card--rows-2 card--align-center"><div class="card__content"><h3 class="card__title">Do not buy if...</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>❌ You want lots of customisation:</strong> You can't change the thumbsticks out on the Nova Lite 2, nor are the trigger stops switching between different types of actuation as with more high-end pads. There's no lighting, only a couple of extra buttons, and the software could be better. But, hey, not everyone is into that sorta thing.</p></div></div></div></div><h2 class="article-body__section" id="section-gamesir-nova-lite-2-features"><span>GameSir Nova Lite 2 - Features</span></h2><div ><table><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>Nova Lite 2</strong></p></td><td  ><p><strong>G7 Pro</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Wireless</strong></p></td><td  ><p>Yes</p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>2.4 GHz, Bluetooth, wired</p></td><td  ><p>2.4 GHz, Bluetooth, wired</p></td></tr><tr><td class="firstcol " ><p><strong>Polling rate (Hz)</strong></p></td><td  ><p>1000</p></td><td  ><p>1000</p></td></tr><tr><td class="firstcol " ><p><strong>Triggers</strong></p></td><td  ><p>Two-stage Hall effect</p></td><td  ><p>Dual-mode Hall effect + micro switch</p></td></tr><tr><td class="firstcol " ><p><strong>Thumbsticks</strong></p></td><td  ><p>Offset Hall effect</p></td><td  ><p>Offset Mag-Res TMR sticks</p></td></tr><tr><td class="firstcol " ><p><strong>D-pad</strong></p></td><td  ><p>Mechanical</p></td><td  ><p>Mechanical micro switch</p></td></tr><tr><td class="firstcol " ><p><strong>Additional buttons</strong></p></td><td  ><p>2</p></td><td  ><p>6 (4x back, 2x mini bumpers)</p></td></tr><tr><td class="firstcol " ><p><strong>Face buttons</strong></p></td><td  ><p>Membrane</p></td><td  ><p>Optical micro switch</p></td></tr><tr><td class="firstcol " ><p><strong>Battery</strong></p></td><td  ><p>600 mAh</p></td><td  ><p>1200 mAh</p></td></tr><tr><td class="firstcol " ><p><strong>Gyro</strong></p></td><td  ><p>No</p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Rumble</strong></p></td><td  ><p>Yes, twin-motor</p></td><td  ><p>Yes, quad-motor (grip + triggers)</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p><a href="https://www.amazon.com/dp/B0F3D25PD3" target="_blank">$30</a>/<a href="https://www.amazon.co.uk/dp/B0F3D25PD3" target="_blank">£30</a></p></td><td  ><p><a href="https://www.amazon.com/dp/B0FD41XC3P" target="_blank">$80</a>/<a href="https://www.amazon.co.uk/dp/B0FHHFBDNQ" target="_blank">£90</a></p></td></tr></tbody></table></div><p>The Nova Lite 2 is less than half the price of the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/">G7 Pro</a>, but it's not at a loss for many of the same or similar features. This budget gamepad really packs a lot in.</p><p>First off, it offers wireless connectivity at a low cost. It supports 2.4 GHz for PC, via a USB Type-A dongle, and Bluetooth for Android, iOS and Switch. Using the 2.4 GHz dongle, I measured a range exceeding 20 metres, in line of sight, so I wouldn't worry about range at any sensible distances (though Bluetooth and a wall or two will notably trim that down).</p><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="9sKhLHASqsy6MGHqS9vbgS" name="IMG_8495" alt="GameSir Nova Lite 2 controller in white colourway on a desk." src="https://cdn.mos.cms.futurecdn.net/9sKhLHASqsy6MGHqS9vbgS-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>Then there are the Hall effect sticks. These sorts of sticks are becoming pretty ubiquitous among gamepads these days—that or TMR, as found in the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-8k-aimlabs-edition-review/" target="_blank">G7 Pro 8K</a>—but they lower the chance of pesky stick drift making an appearance later in life. This pair lack the premium feel of more expensive controllers but they're otherwise pretty great.</p><p>The triggers are also Hall effect, though most are, and offer two modes: full range of movement or stubby li'l clicks. You might get some use out of the shortened trigger stops in fighting games—a <a href="https://www.pcgamer.com/hardware/controllers/razer-wolverine-v4-pro-review/" target="_blank">more tactile controller</a> may be better suited—though they do come in handy when using the Nova Lite 2 with a Switch 2. I've been using the Lite 2 on Switch and it's very well suited for a mean Mario Kart machine like myself.</p><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="qqo6M3z8rbiqVWGEdw6XgS" name="IMG_8488" alt="GameSir Nova Lite 2 controller in white colourway on a desk." src="https://cdn.mos.cms.futurecdn.net/qqo6M3z8rbiqVWGEdw6XgS-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 mechanical D-pad is a standout feature. It has a great, lightweight click in each direction. It doesn't take much to actuate but you can be quite deliberate with it. For more casual users, it's great for clicking through menu screens, though it could just as reliably be mashed repeatedly in a fighting game.</p><p>The face buttons are standard fare. They're just membrane and aren't anything special. The two rear buttons are also not particularly tactile, being hewn from the same plastic as the housing on the controller. That, too, is just okay. I don't expect much more from a controller at this price tag, but it doesn't feel like it's going to break apart between your hands, either. There's no major flex to any of the plastic housing and only a little creakiness when pressed firmly.</p><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="cenhuPib3WDUp6PwPwhUgS" name="IMG_8499" alt="GameSir Nova Lite 2 controller in white colourway on a desk." src="https://cdn.mos.cms.futurecdn.net/cenhuPib3WDUp6PwPwhUgS-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>Now, for one thing I don't actually like about this controller, and that's the plastic travel case that comes with it. I get the idea, and hey, if you travel with your controller often, it saves the thumbsticks, but for many people, myself included, it feels a bit like plastic waste I could've done without.</p><h3 class="article-body__section" id="section-gamesir-nova-lite-2-value"><span>GameSir Nova Lite 2 - Value</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="cFU6PeiLqLpnrvtWJvsswR" name="IMG_8472" alt="GameSir Nova Lite 2 controller in white colourway on a desk." src="https://cdn.mos.cms.futurecdn.net/cFU6PeiLqLpnrvtWJvsswR-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 Nova Lite 2 is superb value for money at <a href="https://www.amazon.com/dp/B0F3D25PD3" target="_blank">$30</a>/<a href="https://www.amazon.co.uk/dp/B0F3D25PD3">£30</a>. It lacks some more advanced features, such as a gyro, but makes more than up for it with practical, real-world benefits, such as a mechanical D-pad and Hall effect thumbsticks. </p><p>It's a step up over the existing <a href="https://www.pcgamer.com/hardware/controllers/gamesir-nova-lite-controller-review/" target="_blank">Nova Lite</a>. That's on its way out as our pick as the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/" target="_blank">best budget controller</a>, to be replaced by the Nova Lite 2. That controller is still an option for a slightly reduced fee of <a href="https://www.amazon.com/dp/B0CMCQ6WMC" target="_blank">$23</a>/<a href="https://www.amazon.co.uk/dp/B0CMCPY4VG/" target="_blank">£18</a>, but the Nova Lite 2's rear buttons, trigger stops, and mechanical D-pad wholly justify the slight increase in cost for me.</p><p>Considering the cost of <a href="https://www.amazon.com/VALOR-Wired-Performance-Controller-Gaming-Console/dp/B0DTB178JG" target="_blank">some wired controllers these days</a>, the wireless Nova Lite 2 feels like a bit of a steal.</p><h2 class="article-body__section" id="section-gamesir-nova-lite-2-ergonomics"><span>GameSir Nova Lite 2 - 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="VfqhGz7LD52BRfJkFVHiKR" name="IMG_8478" alt="GameSir Nova Lite 2 controller in white colourway on a desk." src="https://cdn.mos.cms.futurecdn.net/VfqhGz7LD52BRfJkFVHiKR-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 Nova Lite 2 is very, very normal. It's slightly less sculpted than a modern Xbox pad, but has a similar shape. The rear plastic is ever so slightly textured, adding the tiniest amount more grip. Most buttons are easy to reach without moving my hands much, including the extra rear buttons. The only real oddity is how small the bumpers are: they don't extend around the corners of the controller like most pads these days. </p><p>It comes in black or white. Both have orange highlights around the thumbsticks, orange switches on the rear triggers, and orange legends on the face buttons. Big Stadia Controller vibes—<a href="https://www.pcgamer.com/stadias-death-spiral-according-to-the-google-employee-in-charge-of-mopping-up-after-its-murder/" target="_blank">remember Stadia</a>?</p><p>I'm really scraping the bottom of the barrel for things to describe here. This thing is plain, but not offensively so. </p><h2 class="article-body__section" id="section-gamesir-nova-lite-2-software"><span>GameSir Nova Lite 2 - 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:2181px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="eqqJnt4YajQGFsnKWvsZ6W" name="Screenshot 2026-10-15 143831 (2)" alt="GameSir's Windows software open with a controller attached." src="https://cdn.mos.cms.futurecdn.net/v2/w:1920,t:0,l:0,cw:2181,ch:1227,q:80/eqqJnt4YajQGFsnKWvsZ6W.png" mos="" align="middle" fullscreen="" width="2292" height="1227" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: GameSir)</span></figcaption></figure><p>GameSir Connect is the best way to control the Nova Lite 2 on PC. It's a bit basic as far as modern software goes, though the core functionality one might expect is all in there. </p><p>You can control the deadzone for each of the thumbsticks and triggers, vibration intensity, rear button assignments, and lighting within the app. There's just one bonus feature: hair trigger mode. This is loosely equivalent to rapid trigger on some modern gaming keyboards, in that the trigger will click and release based on the relative movement of the trigger, not its absolute position. As GameSir says in the app, it's "useful for scenarios that need fast triggering."</p><p>The GameSir Connect app also offers software updates for the controller. Best use it at least once.</p><p>There's also a mobile application, simply called GameSir, but it has just two out of five stars on the App Store and a weaker UI than the desktop app. I'd not bother unless you're strictly mobile/Switch only.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:873px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="KaMn56xCHHiFKUokQP5CtV" name="Screenshot 2026-10-15 143755" alt="GameSir's Windows software open with a controller attached." src="https://cdn.mos.cms.futurecdn.net/v2/w:1920,t:0,l:0,cw:873,ch:491,q:80/KaMn56xCHHiFKUokQP5CtV.png" mos="" align="middle" fullscreen="" width="901" height="491" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: GameSir)</span></figcaption></figure><p>Finally, there are ways to configure the controller without any software whatsoever. I appreciate this option for the software-averse among us—even if the actual combos are tough to remember. </p><p>So, selecting between PC (X + GameSir) and Bluetooth (B + GameSir) is easy enough, but remapping the back buttons (M + L4/L5, followed by the key to remap), turning on Turbo mode (M + any button), and turning on hair trigger mode (M + LT/RT) might require the <a href="https://cdn.shopify.com/s/files/1/2241/8433/files/GameSir-Nova_2_Lite_manual.pdf?v=1747982416" target="_blank">manual for a reminder</a>.</p><h2 class="article-body__section" id="section-gamesir-nova-lite-2-gallery"><span>GameSir Nova Lite 2 - Gallery</span></h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/x2yyZXJBP8DtgtHHrzhXgS-1920-80.jpg" alt="GameSir Nova Lite 2 controller in white colourway on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/utySAGWaz4mWcpSkgqmtvT-1920-80.jpg" alt="GameSir Nova Lite 2 controller in white colourway on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/dbRMb6kRdq8JHtbW5pkvuT-1920-80.jpg" alt="GameSir Nova Lite 2 controller in white colourway on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/tjsUSSC9zguyHYRTbaxagS-1920-80.jpg" alt="GameSir Nova Lite 2 controller in white colourway on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/qqo6M3z8rbiqVWGEdw6XgS-1920-80.jpg" alt="GameSir Nova Lite 2 controller in white colourway on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/9sKhLHASqsy6MGHqS9vbgS-1920-80.jpg" alt="GameSir Nova Lite 2 controller in white colourway on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Aws376pxT3LiBQwLLc2agS-1920-80.jpg" alt="GameSir Nova Lite 2 controller in white colourway on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/cenhuPib3WDUp6PwPwhUgS-1920-80.jpg" alt="GameSir Nova Lite 2 controller in white colourway on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/cFU6PeiLqLpnrvtWJvsswR-1920-80.jpg" alt="GameSir Nova Lite 2 controller in white colourway on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/TcytSoHnhg973Vi7TG66VR-1920-80.jpg" alt="GameSir Nova Lite 2 controller in white colourway on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/HsSYMfw8bZ9BireWNsUhRR-1920-80.jpg" alt="GameSir Nova Lite 2 controller in white colourway on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/VfqhGz7LD52BRfJkFVHiKR-1920-80.jpg" alt="GameSir Nova Lite 2 controller in white colourway on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Du8SNyU6ad2eESN796nUGR-1920-80.jpg" alt="GameSir Nova Lite 2 controller in white colourway on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><h2 class="article-body__section" id="section-gamesir-nova-lite-2-battery-life"><span>GameSir Nova Lite 2 - Battery life</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="TcytSoHnhg973Vi7TG66VR" name="IMG_8479" alt="GameSir Nova Lite 2 controller in white colourway on a desk." src="https://cdn.mos.cms.futurecdn.net/TcytSoHnhg973Vi7TG66VR-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>GameSir doesn't note a specific battery life for the Nova Lite 2. It simply offers a battery capacity, which sits at 600 mAh. That's the same as the Nova Lite, which had a stated 10-hour battery life, so we can more or less assume a similar expected result for the Nova Lite 2. </p><p>I've measured how long it takes for the controller to go from 100% to 0% over the course of a couple of gaming sessions. It took roughly eight and a half hours. I suspect with the lighting disabled and a different style of play, it'd be possible to crack the expected 10-hour mark, but either way, it lasts long enough to not cause an issue.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/gamesir-nova-lite-2-review/</link>
                                                                            <description>
                            <![CDATA[ The best deal in controllers at $30 or less right now. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">3vjwS8etkxhFQAApmPCsBX</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/HsSYMfw8bZ9BireWNsUhRR-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 19 Oct 2026 15:01:40 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Ridley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/2YNigoLXbckPdRPDe3stwA-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/HsSYMfw8bZ9BireWNsUhRR-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[GameSir Nova Lite 2 controller in white colourway on a desk.]]></media:description>                                                            <media:text><![CDATA[GameSir Nova Lite 2 controller in white colourway on a desk.]]></media:text>
                                <media:title type="plain"><![CDATA[GameSir Nova Lite 2 controller in white colourway on a desk.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/HsSYMfw8bZ9BireWNsUhRR-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div data-widget-type="merchantlink" data-model-name="GameSir Nova Lite 2" data-widget-title=""></div><p>The GameSir Nova Lite 2 is our new best budget controller for PC. It's extremely well equipped considering the small asking price. Depart with just <a href="https://www.amazon.com/dp/B0F3D25PD3" target="_blank">$30</a>/<a href="https://www.amazon.co.uk/dp/B0F3D25PD3" target="_blank">£30</a> of your hard-earned cash, and you'll receive a wireless controller with Hall effect sticks, mechanical D-pad, trigger stops, and programmable rear buttons.</p><p>There's enough here that even GameSir's own exceedingly popular <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/" target="_blank">G7 Pro</a> is at risk of cannibalisation. The Nova Lite 2 doesn't look that out of shape by comparison, with only quality of life and more advanced features between them. Such as a handful of micro switches and a bigger battery. The G7 Pro is a better all-round controller, but for less than half the cash, the Nova Lite 2 is tough to ignore.</p><p>There are some drawbacks with a controller at this price. The plastic doesn't feel great and it's not overly grippy. The software could be smarter and the shoulder buttons wider, too. But they all seem savvy sacrifices for the savings that the Nova Lite 2 delivers.</p><div class="card card--standard card--rows-2 card--align-center"><div class="card__content"><h3 class="card__title">Buy if...</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>✅ You don't use a controller often and you're not looking to spend a lot of money:</strong> If you use a mouse and keyboard for most of your gaming, you don't need the next best thing. A dependable, wireless pad like the Nova Lite 2 is plenty sufficient for the odd singleplayer game.</p></div></div></div></div><div class="card card--standard card--rows-2 card--align-center"><div class="card__content"><h3 class="card__title">Do not buy if...</h3><div class="card__description-wrapper"><div class="card__description"><p><strong>❌ You want lots of customisation:</strong> You can't change the thumbsticks out on the Nova Lite 2, nor are the trigger stops switching between different types of actuation as with more high-end pads. There's no lighting, only a couple of extra buttons, and the software could be better. But, hey, not everyone is into that sorta thing.</p></div></div></div></div><h2 class="article-body__section" id="section-gamesir-nova-lite-2-features"><span>GameSir Nova Lite 2 - Features</span></h2><div ><table><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>Nova Lite 2</strong></p></td><td  ><p><strong>G7 Pro</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Wireless</strong></p></td><td  ><p>Yes</p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>2.4 GHz, Bluetooth, wired</p></td><td  ><p>2.4 GHz, Bluetooth, wired</p></td></tr><tr><td class="firstcol " ><p><strong>Polling rate (Hz)</strong></p></td><td  ><p>1000</p></td><td  ><p>1000</p></td></tr><tr><td class="firstcol " ><p><strong>Triggers</strong></p></td><td  ><p>Two-stage Hall effect</p></td><td  ><p>Dual-mode Hall effect + micro switch</p></td></tr><tr><td class="firstcol " ><p><strong>Thumbsticks</strong></p></td><td  ><p>Offset Hall effect</p></td><td  ><p>Offset Mag-Res TMR sticks</p></td></tr><tr><td class="firstcol " ><p><strong>D-pad</strong></p></td><td  ><p>Mechanical</p></td><td  ><p>Mechanical micro switch</p></td></tr><tr><td class="firstcol " ><p><strong>Additional buttons</strong></p></td><td  ><p>2</p></td><td  ><p>6 (4x back, 2x mini bumpers)</p></td></tr><tr><td class="firstcol " ><p><strong>Face buttons</strong></p></td><td  ><p>Membrane</p></td><td  ><p>Optical micro switch</p></td></tr><tr><td class="firstcol " ><p><strong>Battery</strong></p></td><td  ><p>600 mAh</p></td><td  ><p>1200 mAh</p></td></tr><tr><td class="firstcol " ><p><strong>Gyro</strong></p></td><td  ><p>No</p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Rumble</strong></p></td><td  ><p>Yes, twin-motor</p></td><td  ><p>Yes, quad-motor (grip + triggers)</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p><a href="https://www.amazon.com/dp/B0F3D25PD3" target="_blank">$30</a>/<a href="https://www.amazon.co.uk/dp/B0F3D25PD3" target="_blank">£30</a></p></td><td  ><p><a href="https://www.amazon.com/dp/B0FD41XC3P" target="_blank">$80</a>/<a href="https://www.amazon.co.uk/dp/B0FHHFBDNQ" target="_blank">£90</a></p></td></tr></tbody></table></div><p>The Nova Lite 2 is less than half the price of the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/">G7 Pro</a>, but it's not at a loss for many of the same or similar features. This budget gamepad really packs a lot in.</p><p>First off, it offers wireless connectivity at a low cost. It supports 2.4 GHz for PC, via a USB Type-A dongle, and Bluetooth for Android, iOS and Switch. Using the 2.4 GHz dongle, I measured a range exceeding 20 metres, in line of sight, so I wouldn't worry about range at any sensible distances (though Bluetooth and a wall or two will notably trim that down).</p><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="9sKhLHASqsy6MGHqS9vbgS" name="IMG_8495" alt="GameSir Nova Lite 2 controller in white colourway on a desk." src="https://cdn.mos.cms.futurecdn.net/9sKhLHASqsy6MGHqS9vbgS-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>Then there are the Hall effect sticks. These sorts of sticks are becoming pretty ubiquitous among gamepads these days—that or TMR, as found in the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-8k-aimlabs-edition-review/" target="_blank">G7 Pro 8K</a>—but they lower the chance of pesky stick drift making an appearance later in life. This pair lack the premium feel of more expensive controllers but they're otherwise pretty great.</p><p>The triggers are also Hall effect, though most are, and offer two modes: full range of movement or stubby li'l clicks. You might get some use out of the shortened trigger stops in fighting games—a <a href="https://www.pcgamer.com/hardware/controllers/razer-wolverine-v4-pro-review/" target="_blank">more tactile controller</a> may be better suited—though they do come in handy when using the Nova Lite 2 with a Switch 2. I've been using the Lite 2 on Switch and it's very well suited for a mean Mario Kart machine like myself.</p><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="qqo6M3z8rbiqVWGEdw6XgS" name="IMG_8488" alt="GameSir Nova Lite 2 controller in white colourway on a desk." src="https://cdn.mos.cms.futurecdn.net/qqo6M3z8rbiqVWGEdw6XgS-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 mechanical D-pad is a standout feature. It has a great, lightweight click in each direction. It doesn't take much to actuate but you can be quite deliberate with it. For more casual users, it's great for clicking through menu screens, though it could just as reliably be mashed repeatedly in a fighting game.</p><p>The face buttons are standard fare. They're just membrane and aren't anything special. The two rear buttons are also not particularly tactile, being hewn from the same plastic as the housing on the controller. That, too, is just okay. I don't expect much more from a controller at this price tag, but it doesn't feel like it's going to break apart between your hands, either. There's no major flex to any of the plastic housing and only a little creakiness when pressed firmly.</p><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="cenhuPib3WDUp6PwPwhUgS" name="IMG_8499" alt="GameSir Nova Lite 2 controller in white colourway on a desk." src="https://cdn.mos.cms.futurecdn.net/cenhuPib3WDUp6PwPwhUgS-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>Now, for one thing I don't actually like about this controller, and that's the plastic travel case that comes with it. I get the idea, and hey, if you travel with your controller often, it saves the thumbsticks, but for many people, myself included, it feels a bit like plastic waste I could've done without.</p><h3 class="article-body__section" id="section-gamesir-nova-lite-2-value"><span>GameSir Nova Lite 2 - Value</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="cFU6PeiLqLpnrvtWJvsswR" name="IMG_8472" alt="GameSir Nova Lite 2 controller in white colourway on a desk." src="https://cdn.mos.cms.futurecdn.net/cFU6PeiLqLpnrvtWJvsswR-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 Nova Lite 2 is superb value for money at <a href="https://www.amazon.com/dp/B0F3D25PD3" target="_blank">$30</a>/<a href="https://www.amazon.co.uk/dp/B0F3D25PD3">£30</a>. It lacks some more advanced features, such as a gyro, but makes more than up for it with practical, real-world benefits, such as a mechanical D-pad and Hall effect thumbsticks. </p><p>It's a step up over the existing <a href="https://www.pcgamer.com/hardware/controllers/gamesir-nova-lite-controller-review/" target="_blank">Nova Lite</a>. That's on its way out as our pick as the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/" target="_blank">best budget controller</a>, to be replaced by the Nova Lite 2. That controller is still an option for a slightly reduced fee of <a href="https://www.amazon.com/dp/B0CMCQ6WMC" target="_blank">$23</a>/<a href="https://www.amazon.co.uk/dp/B0CMCPY4VG/" target="_blank">£18</a>, but the Nova Lite 2's rear buttons, trigger stops, and mechanical D-pad wholly justify the slight increase in cost for me.</p><p>Considering the cost of <a href="https://www.amazon.com/VALOR-Wired-Performance-Controller-Gaming-Console/dp/B0DTB178JG" target="_blank">some wired controllers these days</a>, the wireless Nova Lite 2 feels like a bit of a steal.</p><h2 class="article-body__section" id="section-gamesir-nova-lite-2-ergonomics"><span>GameSir Nova Lite 2 - 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="VfqhGz7LD52BRfJkFVHiKR" name="IMG_8478" alt="GameSir Nova Lite 2 controller in white colourway on a desk." src="https://cdn.mos.cms.futurecdn.net/VfqhGz7LD52BRfJkFVHiKR-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 Nova Lite 2 is very, very normal. It's slightly less sculpted than a modern Xbox pad, but has a similar shape. The rear plastic is ever so slightly textured, adding the tiniest amount more grip. Most buttons are easy to reach without moving my hands much, including the extra rear buttons. The only real oddity is how small the bumpers are: they don't extend around the corners of the controller like most pads these days. </p><p>It comes in black or white. Both have orange highlights around the thumbsticks, orange switches on the rear triggers, and orange legends on the face buttons. Big Stadia Controller vibes—<a href="https://www.pcgamer.com/stadias-death-spiral-according-to-the-google-employee-in-charge-of-mopping-up-after-its-murder/" target="_blank">remember Stadia</a>?</p><p>I'm really scraping the bottom of the barrel for things to describe here. This thing is plain, but not offensively so. </p><h2 class="article-body__section" id="section-gamesir-nova-lite-2-software"><span>GameSir Nova Lite 2 - 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:2181px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="eqqJnt4YajQGFsnKWvsZ6W" name="Screenshot 2026-10-15 143831 (2)" alt="GameSir's Windows software open with a controller attached." src="https://cdn.mos.cms.futurecdn.net/v2/w:1920,t:0,l:0,cw:2181,ch:1227,q:80/eqqJnt4YajQGFsnKWvsZ6W.png" mos="" align="middle" fullscreen="" width="2292" height="1227" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: GameSir)</span></figcaption></figure><p>GameSir Connect is the best way to control the Nova Lite 2 on PC. It's a bit basic as far as modern software goes, though the core functionality one might expect is all in there. </p><p>You can control the deadzone for each of the thumbsticks and triggers, vibration intensity, rear button assignments, and lighting within the app. There's just one bonus feature: hair trigger mode. This is loosely equivalent to rapid trigger on some modern gaming keyboards, in that the trigger will click and release based on the relative movement of the trigger, not its absolute position. As GameSir says in the app, it's "useful for scenarios that need fast triggering."</p><p>The GameSir Connect app also offers software updates for the controller. Best use it at least once.</p><p>There's also a mobile application, simply called GameSir, but it has just two out of five stars on the App Store and a weaker UI than the desktop app. I'd not bother unless you're strictly mobile/Switch only.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:873px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="KaMn56xCHHiFKUokQP5CtV" name="Screenshot 2026-10-15 143755" alt="GameSir's Windows software open with a controller attached." src="https://cdn.mos.cms.futurecdn.net/v2/w:1920,t:0,l:0,cw:873,ch:491,q:80/KaMn56xCHHiFKUokQP5CtV.png" mos="" align="middle" fullscreen="" width="901" height="491" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: GameSir)</span></figcaption></figure><p>Finally, there are ways to configure the controller without any software whatsoever. I appreciate this option for the software-averse among us—even if the actual combos are tough to remember. </p><p>So, selecting between PC (X + GameSir) and Bluetooth (B + GameSir) is easy enough, but remapping the back buttons (M + L4/L5, followed by the key to remap), turning on Turbo mode (M + any button), and turning on hair trigger mode (M + LT/RT) might require the <a href="https://cdn.shopify.com/s/files/1/2241/8433/files/GameSir-Nova_2_Lite_manual.pdf?v=1747982416" target="_blank">manual for a reminder</a>.</p><h2 class="article-body__section" id="section-gamesir-nova-lite-2-gallery"><span>GameSir Nova Lite 2 - Gallery</span></h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/x2yyZXJBP8DtgtHHrzhXgS-1920-80.jpg" alt="GameSir Nova Lite 2 controller in white colourway on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/utySAGWaz4mWcpSkgqmtvT-1920-80.jpg" alt="GameSir Nova Lite 2 controller in white colourway on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/dbRMb6kRdq8JHtbW5pkvuT-1920-80.jpg" alt="GameSir Nova Lite 2 controller in white colourway on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/tjsUSSC9zguyHYRTbaxagS-1920-80.jpg" alt="GameSir Nova Lite 2 controller in white colourway on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/qqo6M3z8rbiqVWGEdw6XgS-1920-80.jpg" alt="GameSir Nova Lite 2 controller in white colourway on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/9sKhLHASqsy6MGHqS9vbgS-1920-80.jpg" alt="GameSir Nova Lite 2 controller in white colourway on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Aws376pxT3LiBQwLLc2agS-1920-80.jpg" alt="GameSir Nova Lite 2 controller in white colourway on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/cenhuPib3WDUp6PwPwhUgS-1920-80.jpg" alt="GameSir Nova Lite 2 controller in white colourway on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/cFU6PeiLqLpnrvtWJvsswR-1920-80.jpg" alt="GameSir Nova Lite 2 controller in white colourway on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/TcytSoHnhg973Vi7TG66VR-1920-80.jpg" alt="GameSir Nova Lite 2 controller in white colourway on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/HsSYMfw8bZ9BireWNsUhRR-1920-80.jpg" alt="GameSir Nova Lite 2 controller in white colourway on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/VfqhGz7LD52BRfJkFVHiKR-1920-80.jpg" alt="GameSir Nova Lite 2 controller in white colourway on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Du8SNyU6ad2eESN796nUGR-1920-80.jpg" alt="GameSir Nova Lite 2 controller in white colourway on a desk." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><h2 class="article-body__section" id="section-gamesir-nova-lite-2-battery-life"><span>GameSir Nova Lite 2 - Battery life</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="TcytSoHnhg973Vi7TG66VR" name="IMG_8479" alt="GameSir Nova Lite 2 controller in white colourway on a desk." src="https://cdn.mos.cms.futurecdn.net/TcytSoHnhg973Vi7TG66VR-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>GameSir doesn't note a specific battery life for the Nova Lite 2. It simply offers a battery capacity, which sits at 600 mAh. That's the same as the Nova Lite, which had a stated 10-hour battery life, so we can more or less assume a similar expected result for the Nova Lite 2. </p><p>I've measured how long it takes for the controller to go from 100% to 0% over the course of a couple of gaming sessions. It took roughly eight and a half hours. I suspect with the lighting disabled and a different style of play, it'd be possible to crack the expected 10-hour mark, but either way, it lasts long enough to not cause an issue.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ For just $40, I'd pick 8BitDo's Ultimate 3-mode controller over an Xbox one any day of the week - especially with a charging dock ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="product"><a data-dimension112="e642df16-c956-11f1-a674-c9f8991fd8d4" data-action="Deal Block" data-label="Ultimate 3-mode" data-dimension48="Ultimate 3-mode" data-dimension25="$39.99" href="https://www.amazon.com/Ultimate-Controller-Joysticks-Triggers-Gaming-Console/dp/B0D1VHH4C5?th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="TsR8EiJ3DDMXkFgnBrMDYB" name="PCGamer Deal Block (34)" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/TsR8EiJ3DDMXkFgnBrMDYB-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/Ultimate-Controller-Joysticks-Triggers-Gaming-Console/dp/B0D1VHH4C5?th=1" target="_blank" rel="nofollow" data-dimension112="e642df16-c956-11f1-a674-c9f8991fd8d4" data-action="Deal Block" data-label="Ultimate 3-mode" data-dimension48="Ultimate 3-mode" data-dimension25="$39.99">Ultimate 3-mode: was $69.99 now $39.99</a></strong><br>Though not the latest Ultimate controller to date, it is the best-priced right now, and with a cute included charging dock and stick-drift-resistant sticks, it's sure to last you a long time. The only real caveat to me is the 250 Hz polling (200 Hz wireless), which is better than Sony and Microsoft, but it means a 4-5 ms response time to your device. </p><p><strong>Key specs: Wired and Wireless | Hall effect joysticks and impulse triggers | 2 back paddle buttons | 3.5 mm jack | up to 250 Hz polling | 250 g</strong><a class="view-deal button" href="https://www.amazon.com/Ultimate-Controller-Joysticks-Triggers-Gaming-Console/dp/B0D1VHH4C5?th=1" target="_blank" rel="nofollow" data-dimension112="e642df16-c956-11f1-a674-c9f8991fd8d4" data-action="Deal Block" data-label="Ultimate 3-mode" data-dimension48="Ultimate 3-mode" data-dimension25="$39.99">View Deal</a></p></div><p>Third-party controllers have gotten so good in the last few years. I'd argue they've developed so well that the likes of Sony and Microsoft have fallen behind. </p><p>If you are looking to pick up a new controller and you have less than $50, I couldn't recommend anything over the 8BitDo Ultimate 3-mode today, now that<a href="https://www.amazon.com/Ultimate-Controller-Joysticks-Triggers-Gaming-Console/dp/B0D1VHH4C5?th=1" target="_blank"> it's $40 at Amazon</a>. </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>Looking at this price point, you can pick up the <a href="https://www.amazon.com/Xbox-Wireless-Gaming-Controller-Headsets-Console/dp/B0F1HX3WXX" target="_blank">Xbox wireless controller on sale for just shy of $50</a>, but the 8BitDo comes with a charging stand, a better polling rate, Hall effect sticks and triggers, and a comparably strong build quality. </p><p>You could go for the likes of the <a href="https://www.amazon.com/Wireless-Controller-Joysticks-Triggers-Remappable-Smartphone/dp/B0F3CZJGSF" target="_blank">GameSir Nova Lite 2 for $30 at Amazon</a>. This would be a solid pick, as it offers Hall effect sticks and a higher 1,000 Hz polling rate, but I'd personally pay the extra $10 for the charging dock and 8BitDo's excellent design and feel. It makes surprisingly premium-feeling controllers for reasonable prices. </p><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="VsHpd8fPdPb7HebhTw2GAf" name="8bitdo_ultimate_2_wireless_controller_04" alt="A photo of the 8BitDo Ultimate 2 Wireless game controller for Windows PC and Android devices" src="https://cdn.mos.cms.futurecdn.net/VsHpd8fPdPb7HebhTw2GAf-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="caption-text">(this is the 8BitDo Ultimate 2 Wireless, not the 8BitDo Ultimate 3-mode) </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>And if you don't like the black variant, the white one is the same price, and the Xbox Jade model is $5 more. Either way, you are getting a few extra buttons (two paddles on the back) and three-way connectivity. It has Bluetooth, 2.4 GHz (which you can pop into the dock to require just one USB cable to power the controller and its dock), plus wired mode. </p><p>8BitDo notes that the Ultimate 3-mode is compatible with Xbox, and that's true, but only while wired. It's still better than some controllers, but worth noting nonetheless. As such, that makes the Ultimate a great controller to primarily use on your PC, with the option to connect to other devices in a pinch. </p><p>With the Xbox logo on the top and the asymmetrical sticks, you are getting a comparable experience to the Xbox controller here, but without stick drift, with higher polling, a charging dock, extra buttons, and (to my eye) a better aesthetic too. </p><h2 id="see-all-the-amazon-controller-deals-here">👉<a href="https://www.amazon.com/s?k=controller&crid=2O3KCROGH3AXG&sprefix=controller%2Caps%2C280&ref=nb_sb_noss_1" target="_blank">See all the Amazon controller deals here</a>👈</h2> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/with-a-charging-dock-included-for-just-usd40-id-pick-8bitdos-ultimate-3-mode-controller-over-an-xbox-one-any-day-of-the-week/</link>
                                                                            <description>
                            <![CDATA[ The polling rate is a little low, though. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">8FrGfXJX3SL7teLYBrBJyi</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/qhFNtNzaxiGbQf5kWFYMhf-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 16 Oct 2026 11:59:32 +0000</pubDate>                                                                                                                                <updated>Fri, 16 Oct 2026 12:01:43 +0000</updated>
                                                                                                                                            <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-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/qhFNtNzaxiGbQf5kWFYMhf-1920-80.jpg">
                                                            <media:credit><![CDATA[8bitdo]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[8BitDo Ultimate on a pink deals background]]></media:description>                                                            <media:text><![CDATA[8BitDo Ultimate on a pink deals background]]></media:text>
                                <media:title type="plain"><![CDATA[8BitDo Ultimate on a pink deals background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/qhFNtNzaxiGbQf5kWFYMhf-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="product"><a data-dimension112="e642df16-c956-11f1-a674-c9f8991fd8d4" data-action="Deal Block" data-label="Ultimate 3-mode" data-dimension48="Ultimate 3-mode" data-dimension25="$39.99" href="https://www.amazon.com/Ultimate-Controller-Joysticks-Triggers-Gaming-Console/dp/B0D1VHH4C5?th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="TsR8EiJ3DDMXkFgnBrMDYB" name="PCGamer Deal Block (34)" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/TsR8EiJ3DDMXkFgnBrMDYB-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/Ultimate-Controller-Joysticks-Triggers-Gaming-Console/dp/B0D1VHH4C5?th=1" target="_blank" rel="nofollow" data-dimension112="e642df16-c956-11f1-a674-c9f8991fd8d4" data-action="Deal Block" data-label="Ultimate 3-mode" data-dimension48="Ultimate 3-mode" data-dimension25="$39.99">Ultimate 3-mode: was $69.99 now $39.99</a></strong><br>Though not the latest Ultimate controller to date, it is the best-priced right now, and with a cute included charging dock and stick-drift-resistant sticks, it's sure to last you a long time. The only real caveat to me is the 250 Hz polling (200 Hz wireless), which is better than Sony and Microsoft, but it means a 4-5 ms response time to your device. </p><p><strong>Key specs: Wired and Wireless | Hall effect joysticks and impulse triggers | 2 back paddle buttons | 3.5 mm jack | up to 250 Hz polling | 250 g</strong><a class="view-deal button" href="https://www.amazon.com/Ultimate-Controller-Joysticks-Triggers-Gaming-Console/dp/B0D1VHH4C5?th=1" target="_blank" rel="nofollow" data-dimension112="e642df16-c956-11f1-a674-c9f8991fd8d4" data-action="Deal Block" data-label="Ultimate 3-mode" data-dimension48="Ultimate 3-mode" data-dimension25="$39.99">View Deal</a></p></div><p>Third-party controllers have gotten so good in the last few years. I'd argue they've developed so well that the likes of Sony and Microsoft have fallen behind. </p><p>If you are looking to pick up a new controller and you have less than $50, I couldn't recommend anything over the 8BitDo Ultimate 3-mode today, now that<a href="https://www.amazon.com/Ultimate-Controller-Joysticks-Triggers-Gaming-Console/dp/B0D1VHH4C5?th=1" target="_blank"> it's $40 at Amazon</a>. </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>Looking at this price point, you can pick up the <a href="https://www.amazon.com/Xbox-Wireless-Gaming-Controller-Headsets-Console/dp/B0F1HX3WXX" target="_blank">Xbox wireless controller on sale for just shy of $50</a>, but the 8BitDo comes with a charging stand, a better polling rate, Hall effect sticks and triggers, and a comparably strong build quality. </p><p>You could go for the likes of the <a href="https://www.amazon.com/Wireless-Controller-Joysticks-Triggers-Remappable-Smartphone/dp/B0F3CZJGSF" target="_blank">GameSir Nova Lite 2 for $30 at Amazon</a>. This would be a solid pick, as it offers Hall effect sticks and a higher 1,000 Hz polling rate, but I'd personally pay the extra $10 for the charging dock and 8BitDo's excellent design and feel. It makes surprisingly premium-feeling controllers for reasonable prices. </p><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="VsHpd8fPdPb7HebhTw2GAf" name="8bitdo_ultimate_2_wireless_controller_04" alt="A photo of the 8BitDo Ultimate 2 Wireless game controller for Windows PC and Android devices" src="https://cdn.mos.cms.futurecdn.net/VsHpd8fPdPb7HebhTw2GAf-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="caption-text">(this is the 8BitDo Ultimate 2 Wireless, not the 8BitDo Ultimate 3-mode) </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>And if you don't like the black variant, the white one is the same price, and the Xbox Jade model is $5 more. Either way, you are getting a few extra buttons (two paddles on the back) and three-way connectivity. It has Bluetooth, 2.4 GHz (which you can pop into the dock to require just one USB cable to power the controller and its dock), plus wired mode. </p><p>8BitDo notes that the Ultimate 3-mode is compatible with Xbox, and that's true, but only while wired. It's still better than some controllers, but worth noting nonetheless. As such, that makes the Ultimate a great controller to primarily use on your PC, with the option to connect to other devices in a pinch. </p><p>With the Xbox logo on the top and the asymmetrical sticks, you are getting a comparable experience to the Xbox controller here, but without stick drift, with higher polling, a charging dock, extra buttons, and (to my eye) a better aesthetic too. </p><h2 id="see-all-the-amazon-controller-deals-here">👉<a href="https://www.amazon.com/s?k=controller&crid=2O3KCROGH3AXG&sprefix=controller%2Caps%2C280&ref=nb_sb_noss_1" target="_blank">See all the Amazon controller deals here</a>👈</h2>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Razer Wolverine V4 Pro wireless gaming controller review ]]></title>
                                                                                                <dc:content><![CDATA[ <div data-widget-type="review" data-model-name="Razer Wolverine V4 Pro" data-widget-title=""></div><p>I use my <a href="https://www.pcgamer.com/hardware/controllers/razer-wolverine-v3-pro-review/" target="_blank">Razer Wolverine V3 Pro</a> several times a week. It's become my go-to wireless controller (among many different options on my shelves), thanks to its shape, stickfeel, and build quality. It's plenty quick to react, it's got excellent triggers and face buttons, and is one of my favourite bits of gaming gear. Ever, in fact.<br><br>Then came the <a href="https://www.pcgamer.com/hardware/controllers/razer-wolverine-v3-pro-8k-pc-review/" target="_blank">Wolverine V3 Pro 8K</a>, and I wasn't too fussed. Sure, 8K polling is a nice thing to have, but it wasn't enough to sway me towards spending $200 on another controller. Now, however, I have a Wolverine V4 Pro review sample in my hands, and I have to admit—I'm sorely tempted to upgrade.<br><br>Razer hasn't messed with the core recipe that made the V3 Pro great. It's still got the same comfortable chassis shape, fantastic heavyweight, dual-action triggers, and all the right controls in all the right places. What it has done, though, is upgrade the hardware underneath, while adding a heavy sprinkle of customisation options that improve the experience considerably.<br><br>I thought I wouldn't get on with the slightly lighter stickfeel compared to the previous model, but I was wrong. It's still got a highly-controllable resistance, now combined with superb snap-motion accuracy from the new contactless sensors. </p><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="hfsDc5R8AbyahT8jvdtMY7" name="RazerWolverineV4Profronton" alt="A Razer Wolverine V4 Pro gaming controller shot from above on a desk, below a gaming keyboard" src="https://cdn.mos.cms.futurecdn.net/hfsDc5R8AbyahT8jvdtMY7-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 sharper, without losing its smooth, slightly weighty movement. The battery life has been upped to a maximum of 27 hours. You can pull off the rear buttons and block the holes off with flush-fit magnetic plates. <em>And </em>you get 8K polling support, complete with wrist-shaking haptic rumble. Individually, these might seem like small changes. Together, they make one of the best controllers I've ever used… well, even better.<br><br>We do need to talk about the price. <a href="https://www.razer.com/console-controllers/razer-wolverine-v4-pro" target="_blank">$200</a>/<a href="https://www.razer.com/gb-en/console-controllers/razer-wolverine-v4-pro" target="_blank">£200</a> is an awful lot to ask for a gaming controller, especially when there are so many good options on the market for fractions of that sum. But the Wolverine V4 Pro has a kitchen sink-worthy list of features, all of which combine to create a brilliant gaming device—even if your bank account may disagree.</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 the tippety-top of controller tech: </strong>You name it, the Razer Wolverine V4 Pro probably has it. Other than TMR or Hall effect sticks, which have been replaced with Razer's new (and rather excellent) capacitive sensor tech.<br><br>✅ <strong>You want modular customisation that works:</strong> I've used enough modular gear to know it can sometimes feel a bit… half baked. Not so here, where everything clunks and clicks together seamlessly.</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're on a budget: </strong>There are plenty of excellent gaming controllers out there for much less money than the Wolverine V4 Pro.<br><br>❌ <strong>You won't use the extras: </strong>If the customisation features, 8K polling, and all the rest leave you cold, the Wolverine V4 Pro may be overkill.</p></div></div></div></div><h2 class="article-body__section" id="section-razer-wolverine-v4-pro-features"><span>Razer Wolverine V4 Pro features</span></h2><div ><table><caption>Razer Wolverine V4 Pro specs</caption><tbody><tr><td class="firstcol " ><p><strong>Layout</strong></p></td><td  ><p>Asymmetric</p></td></tr><tr><td class="firstcol " ><p><strong>Compatibility</strong></p></td><td  ><p>Windows 10/11, Xbox Series X/S</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>2.4 GHz w/included dongle, wired</p></td></tr><tr><td class="firstcol " ><p><strong>Ports</strong></p></td><td  ><p>USB Type-C</p></td></tr><tr><td class="firstcol " ><p><strong>Thumbsticks</strong></p></td><td  ><p>High-resolution capacitive sensors, swappable caps</p></td></tr><tr><td class="firstcol " ><p><strong>Polling rate</strong></p></td><td  ><p>Up to 8,000 Hz</p></td></tr><tr><td class="firstcol " ><p><strong>Battery life</strong></p></td><td  ><p>Up to 26 hours</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>305 g</p></td></tr><tr><td class="firstcol " ><p><strong>Extras</strong></p></td><td  ><p>Adjustable triggers, removable magnetic rear buttons, faceplate, and bumpers, mecha-tactile action buttons, magnetic blocking plates </p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p><a href="https://www.razer.com/console-controllers/razer-wolverine-v4-pro" target="_blank">$200</a>/<a href="https://www.razer.com/gb-en/console-controllers/razer-wolverine-v4-pro" target="_blank">£200</a></p></td></tr></tbody></table></div><p>Take a deep breath, because there's a whole lot to go through here. At its core, the Razer Wolverine V4 Pro is an asymmetrical, Xbox-style controller with 2.4 GHz wireless and USB Type-C wired connectivity, alongside a maximum 8K polling rate over both wireless and wired connections. Razer says the Wolverine V4 Pro achieves sub-1 ms response times, thanks in part to the speedy polling.</p><p>Beyond the usual controls, there are also two extra configurable buttons between the bumpers and the triggers on the top side, alongside four extra "mouse click" paddle buttons on the underside. The triggers can also be locked with two toggle switches on the back, which means they can be switched between a full-throw action and a precise click on the fly. </p><p>On the front, you get a set of PBT face buttons with clicky, mecha-tactile switches underneath, which have a slightly shorter action than those found on the bog-standard V3 Pro. Diagonally opposite sits a very clicky D-pad.</p><p>Then there are the new thumbsticks. These feel slightly lighter and snappier than the V3 Pro's versions, although they still have a touch of weight to the action. Razer has imbued these sticks with what it calls "next-generation" capacitive sensors, which represent "<a href="https://www.razer.com/newsroom/product-news/wolverine-v4-line?srsltid=AU7gw4XLS0bwYSpO-8Yrtf7NoWo6U3cYGcfz6DvSJWhxFvbrZfABTPYW#:~:text=The%20Pinnacle%20of%20Precision" target="_blank">the next step in contactless sensor design</a>."</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/Z3o4dZiNFTgVXL9cVqn2F5-1920-80.jpg" alt="A Razer Wolverine V4 Pro gaming controller in close up" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Zb4iGAFbYt2iqwSDmzq7M5-1920-80.jpg" alt="A Razer Wolverine V4 Pro gaming controller in close up" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/wSxgboWkURcVH5bHr32FL5-1920-80.jpg" alt="A Razer Wolverine V4 Pro gaming controller in close up" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>According to the company, these sensors offer superior resolution and are more resistant to magnetic interference when compared to the TMR and Hall effect models found in other high-spec controllers, while still avoiding stick drift. When paired with the 16-bit ADC chip inside, the new tracking results in around 3,000 steps of movement tracking per sensor.</p><p>Still with me? Good, because I haven't got to the customisation options yet. The front faceplate of the V4 Pro is now magnetic, and can be removed by wedging your fingernails underneath a hidden groove on the topside and giving it a sharp pull. Razer says more faceplate options are coming soon—so prepare yourself for the inevitable Minecraft tie-in, I guess.</p><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="VobnXVYmn9aUj3wNcu4dfC" name="20261012_150543" alt="A Razer Wolverine V4 Pro, disassembled, with the magnetic faceplate removed and the extra thumbsticks and paddle button covers alongside" src="https://cdn.mos.cms.futurecdn.net/VobnXVYmn9aUj3wNcu4dfC-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>You also get six interchangeable thumbstick caps to choose from. By default, it comes with your standard short concave models installed, but there are also a pair of taller versions, and a pair of convex replacements for weirdos. I mean, those who prefer a totally different thumbstick experience. </p><p>The rear paddle buttons are also removable, and the holes can be filled in with magnetic-locking plates that fit flush with the frame. All of these magnetic additions explain the switch to interference-resistant capacitive thumbstick sensors, that's for sure. You can also switch between software profiles on the fly with an assigned button combo. Phew.</p><p>What's left? Oh yes, the battery life. Razer reckons you'll get a maximum of 27 hours out of the V4 Pro, a seven-hour improvement over the old model. That depends on polling rate and haptic settings, though. Charging from empty to full is quoted at three hours via the USB Type-C connection.</p><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="6bSWqozfzpCJP49LpTPvMN" name="20261012_145845" alt="The topside controls of the Razer Wolverine V4 Pro, either side of the protruding USB Type-C port" src="https://cdn.mos.cms.futurecdn.net/6bSWqozfzpCJP49LpTPvMN-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 last change is a pronounced lip around the USB Type-C port on the rear. This is to prevent a flexed cable from damaging the port over time, although my old V3 Pro sits on charge regularly and has never had an issue. The raised section is a bit…  over-pronounced, if you ask me. The lip stands out on what is otherwise a seamless design. Still, I appreciate the concession towards durability, if nothing else.</p><h3 class="article-body__section" id="section-razer-wolverine-v4-pro-ergonomics"><span>Razer Wolverine V4 Pro ergonomics</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="45Tb2k7yd2tkU6v8Y8xV5a" name="20261012_150022" alt="A Razer Wolverine V4 Pro nestled within the embrace of a Razer Wolverine V3 Pro. Aww." src="https://cdn.mos.cms.futurecdn.net/45Tb2k7yd2tkU6v8Y8xV5a-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've been holding the V4 Pro up against my V3 model for some time now, and it looks (and feels) like exactly the same chassis shape to me. This is a very good thing. If I look <em>ever so closely, </em>I would say the textured grip on the rear of the V4 Pro is slightly finer, although this could be down to wear on my older version.</p><p>It's the differing textures underneath the various controls that stand out, though. The triggers still have a weighty resistance to them, with a deliciously smooth action. The main bumpers click with precision, whereas the taller macro buttons underneath them have a longer, "snippier" sort of click. You won't mix them up easily while staring at a screen, I've found.</p><p>The matte-finish PBT used on face buttons is plenty grippy under the fingertips, and while the switches underneath feel roughly the same, there does seem to be a slightly faster action when placing them side-by-side with my V3 Pro. Again, that could be down to wear on my used model, but there's definitely an improvement under my right thumb here that I appreciate.</p><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="Be9GTUyNqYDKiJEwsPk3Pk" name="20261012_150051" alt="The face controls of the Razer Wolverine V4 Pro, with the Razer Wolverine V3 Pro in the background" src="https://cdn.mos.cms.futurecdn.net/Be9GTUyNqYDKiJEwsPk3Pk-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 as for the snappier thumbsticks, I didn't think they were much of an improvement when I tried them out in a Gamescom booth earlier this year. However, having now spent some quality time with them, the lighter stick resistance really does make a difference to my aiming speed. There's still a little bit of aim-steadying pushback, alongside a quicker snap back to center.</p><p>Speaking of the sticks, I can't help but be impressed by the robustness of the V4 Pro's customisation system. The thumbsticks themselves can be pulled off with a reasonable amount of force, and pressed back on firmly without incident. The faceplate is similarly secure, but it's still easy enough to remove once you know where to put your fingernail. </p><p>You don't have to remove the faceplate to replace the sticks, but I thought I'd try both together to see if I could disassemble the front of the controller with one hand:</p><iframe src="https://content.jwplatform.com/players/eYXfZ9Hq.html" id="eYXfZ9Hq" title="Razer Wolverine V4 Pro Disassembly" width="1920" height="1080" frameborder="0" scrolling="auto" allowfullscreen></iframe><p>And yes, I can. But the biggest boon to customisation happens round the back, where any (or all) of the rear paddle buttons can be removed and replaced with magnetic-locking plates. These snap into place to create a remarkably flush fit, which makes the plates practically disappear underneath my fingers. </p><p>I've got used to resting my ring and pinky digits on the rear paddles of my V3, but if you're not using them all the time, they can feel a little obstructive. </p><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="huyS6MzLNPHQX4QpsG9jD7" name="20261012_150720" alt="The rear of the Razer Wolverine V4 Pro, with half the rear paddle buttons blocked off" src="https://cdn.mos.cms.futurecdn.net/huyS6MzLNPHQX4QpsG9jD7-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>No such worries here. Block them all off individually, or keep one or two around for specific tasks if you so wish. </p><p>Despite all these modular features, the V4 Pro feels like a rock solid, totally finished product. There are no rattles, no rough edges, no fiddly bits of cheap plastic. It might be expensive, but this controller really does feel like you've bought a ticket to the executive lounge.</p><h3 class="article-body__section" id="section-razer-wolverine-v4-pro-performance"><span>Razer Wolverine V4 Pro performance</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="nxYY9vgF7AMsqJd2prpDGF" name="20261012_145735" alt="Close ups of the various controls on the Razer Wolverine V4 Pro" src="https://cdn.mos.cms.futurecdn.net/nxYY9vgF7AMsqJd2prpDGF-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>To test the Wolverine V4 Pro, I booted up three controller-favouring games from my Steam library: <a href="https://www.pcgamer.com/elden-ring-review/" target="_blank">Elden Ring</a>, <a href="https://www.pcgamer.com/games/action/crimson-desert-review/" target="_blank">Crimson Desert</a>, and <a href="https://www.pcgamer.com/games/action/control-resonant-review/" target="_blank">Control Resonant</a>. I have many hours in each, much of which has been spent with either the V3 Pro, or the standard Xbox Wireless controller. I also had a knock around in Apex Legends to test its shooter capabilities.</p><p>And to my genuine surprise, I could feel the difference immediately. Control Resonant in particular, a game with much target switching and button juggling, actually feels a touch easier with the new Wolverine. The snappier thumbsticks make a real difference to fast direction changes, and while I'm no expert judge of 8K polling and sub-1ms latency times, the V4 Pro definitely feels quicker to respond. </p><p>The haptic responses are also super-powerful. So much so, I think most people will probably turn them down—but vibration fans are in for a buzz. Turning this controller on for the first time actually made me jump, as it jiggled my desk with such force.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/QtJREuc3vnYoRm5qiLAcBF-1920-80.jpg" alt="Close ups of the various controls on the Razer Wolverine V4 Pro" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/KyictqMtbJpRJRwS3GQAGF-1920-80.jpg" alt="Close ups of the various controls on the Razer Wolverine V4 Pro" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The face buttons are quick to press and slightly more positive, too, which adds to the feeling of snappy responsiveness. And I really enjoy the heavyweight triggers, which make firing an arrow in Crimson Desert feel more purposeful than most. My Elden Ring performance has also felt the benefit, although I still suck at it overall. No fancy controller is going to change that. </p><p>And while I'd personally never pick a controller over keyboard and mouse controls in a shooter, the Wolverine V4 Pro is plenty responsive in Apex Legends, too. If I had to use my thumbs for precision shooting? I'll take one of these, please. It's better than any other controller I've tried for speedy first-person aiming, put it that way.</p><p>There's a feeling of extra precision to the Wolverine V4 Pro that I didn't realise the previous version lacked. It's subtle, but very much there. One feels like a luxury item with a touch of padding, while the other is sharper, lighter under the fingertips, and slightly more eager. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/GRJt4996uXfaA2PD4oQ9Xe-1920-80.jpg" alt="The right thumbstick of the Razer Wolverine V4 Pro" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/NrL3ynTePrYKRAVcaqxLVX-1920-80.jpg" alt="The Razer Wolverine V4 Pro with its front magnetic faceplate removed" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ccyULpCAncrqfhceLxpXzN-1920-80.jpg" alt="The blocked off rear paddles of the Razer Wolverine V4 Pro" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Plus, being able to individually remove the rear paddles (I quite like dropping them down to two, ring fingers only) makes for a more comfortable gaming experience.</p><p>I'd expected to forget about the internal upgrades once my brain was focussed on a game, but I was wrong. It's easy to tell that improvements have been made. And switching back to a standard Xbox Wireless controller afterwards definitely feels like a major downgrade. Still, you can pick one up for around a quarter of the price—so I can't knock it too badly.</p><h3 class="article-body__section" id="section-razer-wolverine-v4-pro-aesthetics"><span>Razer Wolverine V4 Pro aesthetics</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="SudqnEfbiuiGyJHiFR2KBm" name="20261015_112024" alt="A close-up of the now RGB-less Razer text on the front of the Razer Wolverine V4 Pro" src="https://cdn.mos.cms.futurecdn.net/SudqnEfbiuiGyJHiFR2KBm-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>Razer has ditched the RGB-lit lettering on the front of the new Wolverine, but I doubt many will miss it. I've turned mine off on the older model, as while it looks good in photos, it can be a touch distracting. Instead, what you get here is a stealthed out, grown-up-looking device.</p><p>Not very Razer, is it? Still, I'm definitely a fan of the all-black aesthetic. The matte finish on the PBT face buttons doesn't just feel good, but looks the part, too. I suppose it's not the best controller for beginners, or those who still hunt for the Y button in a panic during a QTE event. There are no multi-coloured buttons or white letters to help you out here. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="7HTY8goP4SZEGQWCTdFtS4" name="20261015_112109" alt="The stick-out USB Type-C port on the Razer Wolverine V4 Pro" src="https://cdn.mos.cms.futurecdn.net/7HTY8goP4SZEGQWCTdFtS4-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>My major bugbear, though, is the protruding USB Type-C cable port, which sticks out more than I'd like and makes for an ugly blemish on what is otherwise a very refined design. At least it's round the back, ey?</p><h3 class="article-body__section" id="section-razer-wolverine-v4-pro-software"><span>Razer Wolverine V4 Pro 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:2560px;"><p class="vanilla-image-block" style="padding-top:54.38%;"><img id="QFrbJzv6zjVdbGa7haMkY8" name="Screenshot 2026-10-15 123843" alt="A screenshot of the Razer Synapse settings menu for the Razer Wolverine V4 Pro gaming controller" src="https://cdn.mos.cms.futurecdn.net/QFrbJzv6zjVdbGa7haMkY8-1920-80.png" mos="" align="middle" fullscreen="1" width="2560" height="1392" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/QFrbJzv6zjVdbGa7haMkY8-1920-80.png' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Razer)</span></figcaption></figure><p>The Wolverine V4 Pro is configured via Razer Synapse, which will be a benefit for those of you with Razer devices already—and perhaps a downside for those who don't. Still, Synapse is very workable<em> </em>these days, and the menu system for this particular controller is pretty straightforward.</p><p>Alongside the profile switching options at the top (which can also be cycled using on-controller button combos) there are five main tabs: Customize, Triggers, Thumbsticks, Power, and Calibration. The first gives you the most useful settings, these being polling rate, haptic intensity, and communication switching modes, alongside button configurations. </p><p>There are also options for the SOCD feature, which allow you to configure what happens when you press and hold two opposite directions at once.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/8sNdx44D5Mcf8gGNhYTjuQ-1920-80.jpg" alt="The Synapse settings of the Razer Wolverine V4 Pro gaming controller, showing trigger adjustments" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/vE5jgLrEYuPosdpMTjvH2a-1920-80.png" alt="The power settings (yes they're in that otherwise-blank page if you squint) of the Razer Wolverine V4 Pro" /><figcaption><small role="credit">Razer</small></figcaption></figure></figure><p>You can adjust the trigger ranges in the second tab, and fiddle with the sensitivity and dead zones of the thumbsticks in the third. Honestly, I feel like a lot of these options could be boiled down to a single page, but at least it's not a labyrinth of poorly worded menus like some others I could name.</p><p>A case in point is the fourth tab, Power, which has exactly one thing you can adjust—the length of time the controller stays on when inactive. And the fifth tab handles individual control calibration, which I guess is worthy of its own section. Overall, though, the software is perfectly acceptable. Better than most, even.</p><h3 class="article-body__section" id="section-razer-wolverine-v4-pro"><span>Razer Wolverine V4 Pro</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="XqCjxe7Qc8Tzvb5Ee7EC9U" name="20261015_114344" alt="A Razer Wolverine V4 Pro connected to a charging cable, on a desk" src="https://cdn.mos.cms.futurecdn.net/XqCjxe7Qc8Tzvb5Ee7EC9U-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>Razer quotes a 27-hour battery life for the new Wolverine, although I'd imagine that's at lower-than-8K polling rates. What I can say from my own testing, though, is that my review sample came out of the box with a 65% charge and I've only just plugged it in. That's after several days of on/off gaming.</p><p>Those weren't 24-hour sessions, of course. But several eight-hour sprints without reaching for the USB cable certainly seem possible. I'm still old-school enough to want to plug my controller in after I've finished, but it's a habit I'm starting to break.</p><p>What would be nice though, for the cash, would be an included charging stand. It's something we're starting to see more often these days—even with some of the more affordable controllers, like the <a href="https://www.pcgamer.com/hardware/controllers/easysmx-d05-review/" target="_blank">EasySMX D05</a>. Food for thought, Razer?</p><h3 class="article-body__section" id="section-razer-wolverine-v4-pro-value"><span>Razer Wolverine V4 Pro value</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="MwAXohJnk8VzJEtrxBxmBM" name="20261015_114747" alt="A Razer Wolverine V4 Pro stood up on a desk, in front of a controller and a gaming keyboard" src="https://cdn.mos.cms.futurecdn.net/MwAXohJnk8VzJEtrxBxmBM-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>Do we have to talk money? I'm afraid so. The Wolverine V4 Pro is expensive, and there's no getting around it. When the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/" target="_blank">GameSir G7 Pro Tri-Mode</a> costs $80, the $200 price tag of Razer's new baby looks more than a little excessive.</p><p>The G7 Pro also has customisation options similar to the Razer, with its removable faceplate and swappable controls. You can't get rid of the rear paddle buttons, though, a feature I find most handy on the new Wolverine. The GameSir model also has TMR thumbsticks, which should be in the same ballpark as the Razer's. They won't stick drift, put it that way.</p><p>In terms of value, it's clear that the GameSir G7 Pro Tri-Mode wins the day. It's less than half the price, for goodness sake, and it comes with a charging cradle. But I don't think the heavyweight price tag spoils the Wolverine V4 Pro, either.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="sGz8giRp9pdSrzw2KxeF9U" name="20261015_114950" alt="The front controls of the Razer Wolverine V4 Pro" src="https://cdn.mos.cms.futurecdn.net/sGz8giRp9pdSrzw2KxeF9U-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>Yes, it's a lot of money to pay for a controller. But if you're the sort of gamer who sits for hours every weekend with one in your hands, the Razer really does feel like the final boss. It's got pretty much every feature you really need (and many extra niceties you might not expect), alongside a smorgasbord of delicious controls and switches that feel like the cat's pyjamas<em>. </em>And when it comes to speedy inputs? Fuggedaboutit.</p><p>Plus, being able to individually block off those rear paddle buttons and swap out thumbsticks on the fly makes more difference than you think. Whatever your setup, whatever your odd combination of control preferences, the Razer is likely ready for you. And it's even managed to avoid any overblown gamer flair while it's at it. This is a grown-up device for adults, not an RGB-covered piece of frippery.</p><p>Pricey? You bet, and I wish it was significantly cheaper. But, in the same way I'd happily recommend spending a lot of money on something brilliant you're going to use all the time, like a great gaming chair, TV, or headset, I do think the Wolverine V4 Pro makes a very good case for justifying the expense.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/razer-wolverine-v4-pro-review/</link>
                                                                            <description>
                            <![CDATA[ Claws, sharpened. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">xApgAh9kheZ4FmQRcBvGpN</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/MS5LSq9EcZLQBQa6Kw8VLY-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 15 Oct 2026 13:43:35 +0000</pubDate>                                                                                                                                <updated>Thu, 15 Oct 2026 13:43:48 +0000</updated>
                                                                                                                                            <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Andy Edser ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE-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/MS5LSq9EcZLQBQa6Kw8VLY-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A Razer Wolverine V4 Pro gaming controller on top an RGB-lit gaming keyboard]]></media:description>                                                            <media:text><![CDATA[A Razer Wolverine V4 Pro gaming controller on top an RGB-lit gaming keyboard]]></media:text>
                                <media:title type="plain"><![CDATA[A Razer Wolverine V4 Pro gaming controller on top an RGB-lit gaming keyboard]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/MS5LSq9EcZLQBQa6Kw8VLY-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div data-widget-type="review" data-model-name="Razer Wolverine V4 Pro" data-widget-title=""></div><p>I use my <a href="https://www.pcgamer.com/hardware/controllers/razer-wolverine-v3-pro-review/" target="_blank">Razer Wolverine V3 Pro</a> several times a week. It's become my go-to wireless controller (among many different options on my shelves), thanks to its shape, stickfeel, and build quality. It's plenty quick to react, it's got excellent triggers and face buttons, and is one of my favourite bits of gaming gear. Ever, in fact.<br><br>Then came the <a href="https://www.pcgamer.com/hardware/controllers/razer-wolverine-v3-pro-8k-pc-review/" target="_blank">Wolverine V3 Pro 8K</a>, and I wasn't too fussed. Sure, 8K polling is a nice thing to have, but it wasn't enough to sway me towards spending $200 on another controller. Now, however, I have a Wolverine V4 Pro review sample in my hands, and I have to admit—I'm sorely tempted to upgrade.<br><br>Razer hasn't messed with the core recipe that made the V3 Pro great. It's still got the same comfortable chassis shape, fantastic heavyweight, dual-action triggers, and all the right controls in all the right places. What it has done, though, is upgrade the hardware underneath, while adding a heavy sprinkle of customisation options that improve the experience considerably.<br><br>I thought I wouldn't get on with the slightly lighter stickfeel compared to the previous model, but I was wrong. It's still got a highly-controllable resistance, now combined with superb snap-motion accuracy from the new contactless sensors. </p><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="hfsDc5R8AbyahT8jvdtMY7" name="RazerWolverineV4Profronton" alt="A Razer Wolverine V4 Pro gaming controller shot from above on a desk, below a gaming keyboard" src="https://cdn.mos.cms.futurecdn.net/hfsDc5R8AbyahT8jvdtMY7-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 sharper, without losing its smooth, slightly weighty movement. The battery life has been upped to a maximum of 27 hours. You can pull off the rear buttons and block the holes off with flush-fit magnetic plates. <em>And </em>you get 8K polling support, complete with wrist-shaking haptic rumble. Individually, these might seem like small changes. Together, they make one of the best controllers I've ever used… well, even better.<br><br>We do need to talk about the price. <a href="https://www.razer.com/console-controllers/razer-wolverine-v4-pro" target="_blank">$200</a>/<a href="https://www.razer.com/gb-en/console-controllers/razer-wolverine-v4-pro" target="_blank">£200</a> is an awful lot to ask for a gaming controller, especially when there are so many good options on the market for fractions of that sum. But the Wolverine V4 Pro has a kitchen sink-worthy list of features, all of which combine to create a brilliant gaming device—even if your bank account may disagree.</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 the tippety-top of controller tech: </strong>You name it, the Razer Wolverine V4 Pro probably has it. Other than TMR or Hall effect sticks, which have been replaced with Razer's new (and rather excellent) capacitive sensor tech.<br><br>✅ <strong>You want modular customisation that works:</strong> I've used enough modular gear to know it can sometimes feel a bit… half baked. Not so here, where everything clunks and clicks together seamlessly.</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're on a budget: </strong>There are plenty of excellent gaming controllers out there for much less money than the Wolverine V4 Pro.<br><br>❌ <strong>You won't use the extras: </strong>If the customisation features, 8K polling, and all the rest leave you cold, the Wolverine V4 Pro may be overkill.</p></div></div></div></div><h2 class="article-body__section" id="section-razer-wolverine-v4-pro-features"><span>Razer Wolverine V4 Pro features</span></h2><div ><table><caption>Razer Wolverine V4 Pro specs</caption><tbody><tr><td class="firstcol " ><p><strong>Layout</strong></p></td><td  ><p>Asymmetric</p></td></tr><tr><td class="firstcol " ><p><strong>Compatibility</strong></p></td><td  ><p>Windows 10/11, Xbox Series X/S</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>2.4 GHz w/included dongle, wired</p></td></tr><tr><td class="firstcol " ><p><strong>Ports</strong></p></td><td  ><p>USB Type-C</p></td></tr><tr><td class="firstcol " ><p><strong>Thumbsticks</strong></p></td><td  ><p>High-resolution capacitive sensors, swappable caps</p></td></tr><tr><td class="firstcol " ><p><strong>Polling rate</strong></p></td><td  ><p>Up to 8,000 Hz</p></td></tr><tr><td class="firstcol " ><p><strong>Battery life</strong></p></td><td  ><p>Up to 26 hours</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>305 g</p></td></tr><tr><td class="firstcol " ><p><strong>Extras</strong></p></td><td  ><p>Adjustable triggers, removable magnetic rear buttons, faceplate, and bumpers, mecha-tactile action buttons, magnetic blocking plates </p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p><a href="https://www.razer.com/console-controllers/razer-wolverine-v4-pro" target="_blank">$200</a>/<a href="https://www.razer.com/gb-en/console-controllers/razer-wolverine-v4-pro" target="_blank">£200</a></p></td></tr></tbody></table></div><p>Take a deep breath, because there's a whole lot to go through here. At its core, the Razer Wolverine V4 Pro is an asymmetrical, Xbox-style controller with 2.4 GHz wireless and USB Type-C wired connectivity, alongside a maximum 8K polling rate over both wireless and wired connections. Razer says the Wolverine V4 Pro achieves sub-1 ms response times, thanks in part to the speedy polling.</p><p>Beyond the usual controls, there are also two extra configurable buttons between the bumpers and the triggers on the top side, alongside four extra "mouse click" paddle buttons on the underside. The triggers can also be locked with two toggle switches on the back, which means they can be switched between a full-throw action and a precise click on the fly. </p><p>On the front, you get a set of PBT face buttons with clicky, mecha-tactile switches underneath, which have a slightly shorter action than those found on the bog-standard V3 Pro. Diagonally opposite sits a very clicky D-pad.</p><p>Then there are the new thumbsticks. These feel slightly lighter and snappier than the V3 Pro's versions, although they still have a touch of weight to the action. Razer has imbued these sticks with what it calls "next-generation" capacitive sensors, which represent "<a href="https://www.razer.com/newsroom/product-news/wolverine-v4-line?srsltid=AU7gw4XLS0bwYSpO-8Yrtf7NoWo6U3cYGcfz6DvSJWhxFvbrZfABTPYW#:~:text=The%20Pinnacle%20of%20Precision" target="_blank">the next step in contactless sensor design</a>."</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/Z3o4dZiNFTgVXL9cVqn2F5-1920-80.jpg" alt="A Razer Wolverine V4 Pro gaming controller in close up" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Zb4iGAFbYt2iqwSDmzq7M5-1920-80.jpg" alt="A Razer Wolverine V4 Pro gaming controller in close up" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/wSxgboWkURcVH5bHr32FL5-1920-80.jpg" alt="A Razer Wolverine V4 Pro gaming controller in close up" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>According to the company, these sensors offer superior resolution and are more resistant to magnetic interference when compared to the TMR and Hall effect models found in other high-spec controllers, while still avoiding stick drift. When paired with the 16-bit ADC chip inside, the new tracking results in around 3,000 steps of movement tracking per sensor.</p><p>Still with me? Good, because I haven't got to the customisation options yet. The front faceplate of the V4 Pro is now magnetic, and can be removed by wedging your fingernails underneath a hidden groove on the topside and giving it a sharp pull. Razer says more faceplate options are coming soon—so prepare yourself for the inevitable Minecraft tie-in, I guess.</p><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="VobnXVYmn9aUj3wNcu4dfC" name="20261012_150543" alt="A Razer Wolverine V4 Pro, disassembled, with the magnetic faceplate removed and the extra thumbsticks and paddle button covers alongside" src="https://cdn.mos.cms.futurecdn.net/VobnXVYmn9aUj3wNcu4dfC-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>You also get six interchangeable thumbstick caps to choose from. By default, it comes with your standard short concave models installed, but there are also a pair of taller versions, and a pair of convex replacements for weirdos. I mean, those who prefer a totally different thumbstick experience. </p><p>The rear paddle buttons are also removable, and the holes can be filled in with magnetic-locking plates that fit flush with the frame. All of these magnetic additions explain the switch to interference-resistant capacitive thumbstick sensors, that's for sure. You can also switch between software profiles on the fly with an assigned button combo. Phew.</p><p>What's left? Oh yes, the battery life. Razer reckons you'll get a maximum of 27 hours out of the V4 Pro, a seven-hour improvement over the old model. That depends on polling rate and haptic settings, though. Charging from empty to full is quoted at three hours via the USB Type-C connection.</p><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="6bSWqozfzpCJP49LpTPvMN" name="20261012_145845" alt="The topside controls of the Razer Wolverine V4 Pro, either side of the protruding USB Type-C port" src="https://cdn.mos.cms.futurecdn.net/6bSWqozfzpCJP49LpTPvMN-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 last change is a pronounced lip around the USB Type-C port on the rear. This is to prevent a flexed cable from damaging the port over time, although my old V3 Pro sits on charge regularly and has never had an issue. The raised section is a bit…  over-pronounced, if you ask me. The lip stands out on what is otherwise a seamless design. Still, I appreciate the concession towards durability, if nothing else.</p><h3 class="article-body__section" id="section-razer-wolverine-v4-pro-ergonomics"><span>Razer Wolverine V4 Pro ergonomics</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="45Tb2k7yd2tkU6v8Y8xV5a" name="20261012_150022" alt="A Razer Wolverine V4 Pro nestled within the embrace of a Razer Wolverine V3 Pro. Aww." src="https://cdn.mos.cms.futurecdn.net/45Tb2k7yd2tkU6v8Y8xV5a-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've been holding the V4 Pro up against my V3 model for some time now, and it looks (and feels) like exactly the same chassis shape to me. This is a very good thing. If I look <em>ever so closely, </em>I would say the textured grip on the rear of the V4 Pro is slightly finer, although this could be down to wear on my older version.</p><p>It's the differing textures underneath the various controls that stand out, though. The triggers still have a weighty resistance to them, with a deliciously smooth action. The main bumpers click with precision, whereas the taller macro buttons underneath them have a longer, "snippier" sort of click. You won't mix them up easily while staring at a screen, I've found.</p><p>The matte-finish PBT used on face buttons is plenty grippy under the fingertips, and while the switches underneath feel roughly the same, there does seem to be a slightly faster action when placing them side-by-side with my V3 Pro. Again, that could be down to wear on my used model, but there's definitely an improvement under my right thumb here that I appreciate.</p><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="Be9GTUyNqYDKiJEwsPk3Pk" name="20261012_150051" alt="The face controls of the Razer Wolverine V4 Pro, with the Razer Wolverine V3 Pro in the background" src="https://cdn.mos.cms.futurecdn.net/Be9GTUyNqYDKiJEwsPk3Pk-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 as for the snappier thumbsticks, I didn't think they were much of an improvement when I tried them out in a Gamescom booth earlier this year. However, having now spent some quality time with them, the lighter stick resistance really does make a difference to my aiming speed. There's still a little bit of aim-steadying pushback, alongside a quicker snap back to center.</p><p>Speaking of the sticks, I can't help but be impressed by the robustness of the V4 Pro's customisation system. The thumbsticks themselves can be pulled off with a reasonable amount of force, and pressed back on firmly without incident. The faceplate is similarly secure, but it's still easy enough to remove once you know where to put your fingernail. </p><p>You don't have to remove the faceplate to replace the sticks, but I thought I'd try both together to see if I could disassemble the front of the controller with one hand:</p><iframe src="https://content.jwplatform.com/players/eYXfZ9Hq.html" id="eYXfZ9Hq" title="Razer Wolverine V4 Pro Disassembly" width="1920" height="1080" frameborder="0" scrolling="auto" allowfullscreen></iframe><p>And yes, I can. But the biggest boon to customisation happens round the back, where any (or all) of the rear paddle buttons can be removed and replaced with magnetic-locking plates. These snap into place to create a remarkably flush fit, which makes the plates practically disappear underneath my fingers. </p><p>I've got used to resting my ring and pinky digits on the rear paddles of my V3, but if you're not using them all the time, they can feel a little obstructive. </p><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="huyS6MzLNPHQX4QpsG9jD7" name="20261012_150720" alt="The rear of the Razer Wolverine V4 Pro, with half the rear paddle buttons blocked off" src="https://cdn.mos.cms.futurecdn.net/huyS6MzLNPHQX4QpsG9jD7-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>No such worries here. Block them all off individually, or keep one or two around for specific tasks if you so wish. </p><p>Despite all these modular features, the V4 Pro feels like a rock solid, totally finished product. There are no rattles, no rough edges, no fiddly bits of cheap plastic. It might be expensive, but this controller really does feel like you've bought a ticket to the executive lounge.</p><h3 class="article-body__section" id="section-razer-wolverine-v4-pro-performance"><span>Razer Wolverine V4 Pro performance</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="nxYY9vgF7AMsqJd2prpDGF" name="20261012_145735" alt="Close ups of the various controls on the Razer Wolverine V4 Pro" src="https://cdn.mos.cms.futurecdn.net/nxYY9vgF7AMsqJd2prpDGF-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>To test the Wolverine V4 Pro, I booted up three controller-favouring games from my Steam library: <a href="https://www.pcgamer.com/elden-ring-review/" target="_blank">Elden Ring</a>, <a href="https://www.pcgamer.com/games/action/crimson-desert-review/" target="_blank">Crimson Desert</a>, and <a href="https://www.pcgamer.com/games/action/control-resonant-review/" target="_blank">Control Resonant</a>. I have many hours in each, much of which has been spent with either the V3 Pro, or the standard Xbox Wireless controller. I also had a knock around in Apex Legends to test its shooter capabilities.</p><p>And to my genuine surprise, I could feel the difference immediately. Control Resonant in particular, a game with much target switching and button juggling, actually feels a touch easier with the new Wolverine. The snappier thumbsticks make a real difference to fast direction changes, and while I'm no expert judge of 8K polling and sub-1ms latency times, the V4 Pro definitely feels quicker to respond. </p><p>The haptic responses are also super-powerful. So much so, I think most people will probably turn them down—but vibration fans are in for a buzz. Turning this controller on for the first time actually made me jump, as it jiggled my desk with such force.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/QtJREuc3vnYoRm5qiLAcBF-1920-80.jpg" alt="Close ups of the various controls on the Razer Wolverine V4 Pro" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/KyictqMtbJpRJRwS3GQAGF-1920-80.jpg" alt="Close ups of the various controls on the Razer Wolverine V4 Pro" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The face buttons are quick to press and slightly more positive, too, which adds to the feeling of snappy responsiveness. And I really enjoy the heavyweight triggers, which make firing an arrow in Crimson Desert feel more purposeful than most. My Elden Ring performance has also felt the benefit, although I still suck at it overall. No fancy controller is going to change that. </p><p>And while I'd personally never pick a controller over keyboard and mouse controls in a shooter, the Wolverine V4 Pro is plenty responsive in Apex Legends, too. If I had to use my thumbs for precision shooting? I'll take one of these, please. It's better than any other controller I've tried for speedy first-person aiming, put it that way.</p><p>There's a feeling of extra precision to the Wolverine V4 Pro that I didn't realise the previous version lacked. It's subtle, but very much there. One feels like a luxury item with a touch of padding, while the other is sharper, lighter under the fingertips, and slightly more eager. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/GRJt4996uXfaA2PD4oQ9Xe-1920-80.jpg" alt="The right thumbstick of the Razer Wolverine V4 Pro" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/NrL3ynTePrYKRAVcaqxLVX-1920-80.jpg" alt="The Razer Wolverine V4 Pro with its front magnetic faceplate removed" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ccyULpCAncrqfhceLxpXzN-1920-80.jpg" alt="The blocked off rear paddles of the Razer Wolverine V4 Pro" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Plus, being able to individually remove the rear paddles (I quite like dropping them down to two, ring fingers only) makes for a more comfortable gaming experience.</p><p>I'd expected to forget about the internal upgrades once my brain was focussed on a game, but I was wrong. It's easy to tell that improvements have been made. And switching back to a standard Xbox Wireless controller afterwards definitely feels like a major downgrade. Still, you can pick one up for around a quarter of the price—so I can't knock it too badly.</p><h3 class="article-body__section" id="section-razer-wolverine-v4-pro-aesthetics"><span>Razer Wolverine V4 Pro aesthetics</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="SudqnEfbiuiGyJHiFR2KBm" name="20261015_112024" alt="A close-up of the now RGB-less Razer text on the front of the Razer Wolverine V4 Pro" src="https://cdn.mos.cms.futurecdn.net/SudqnEfbiuiGyJHiFR2KBm-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>Razer has ditched the RGB-lit lettering on the front of the new Wolverine, but I doubt many will miss it. I've turned mine off on the older model, as while it looks good in photos, it can be a touch distracting. Instead, what you get here is a stealthed out, grown-up-looking device.</p><p>Not very Razer, is it? Still, I'm definitely a fan of the all-black aesthetic. The matte finish on the PBT face buttons doesn't just feel good, but looks the part, too. I suppose it's not the best controller for beginners, or those who still hunt for the Y button in a panic during a QTE event. There are no multi-coloured buttons or white letters to help you out here. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="7HTY8goP4SZEGQWCTdFtS4" name="20261015_112109" alt="The stick-out USB Type-C port on the Razer Wolverine V4 Pro" src="https://cdn.mos.cms.futurecdn.net/7HTY8goP4SZEGQWCTdFtS4-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>My major bugbear, though, is the protruding USB Type-C cable port, which sticks out more than I'd like and makes for an ugly blemish on what is otherwise a very refined design. At least it's round the back, ey?</p><h3 class="article-body__section" id="section-razer-wolverine-v4-pro-software"><span>Razer Wolverine V4 Pro 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:2560px;"><p class="vanilla-image-block" style="padding-top:54.38%;"><img id="QFrbJzv6zjVdbGa7haMkY8" name="Screenshot 2026-10-15 123843" alt="A screenshot of the Razer Synapse settings menu for the Razer Wolverine V4 Pro gaming controller" src="https://cdn.mos.cms.futurecdn.net/QFrbJzv6zjVdbGa7haMkY8-1920-80.png" mos="" align="middle" fullscreen="1" width="2560" height="1392" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/QFrbJzv6zjVdbGa7haMkY8-1920-80.png' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Razer)</span></figcaption></figure><p>The Wolverine V4 Pro is configured via Razer Synapse, which will be a benefit for those of you with Razer devices already—and perhaps a downside for those who don't. Still, Synapse is very workable<em> </em>these days, and the menu system for this particular controller is pretty straightforward.</p><p>Alongside the profile switching options at the top (which can also be cycled using on-controller button combos) there are five main tabs: Customize, Triggers, Thumbsticks, Power, and Calibration. The first gives you the most useful settings, these being polling rate, haptic intensity, and communication switching modes, alongside button configurations. </p><p>There are also options for the SOCD feature, which allow you to configure what happens when you press and hold two opposite directions at once.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/8sNdx44D5Mcf8gGNhYTjuQ-1920-80.jpg" alt="The Synapse settings of the Razer Wolverine V4 Pro gaming controller, showing trigger adjustments" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/vE5jgLrEYuPosdpMTjvH2a-1920-80.png" alt="The power settings (yes they're in that otherwise-blank page if you squint) of the Razer Wolverine V4 Pro" /><figcaption><small role="credit">Razer</small></figcaption></figure></figure><p>You can adjust the trigger ranges in the second tab, and fiddle with the sensitivity and dead zones of the thumbsticks in the third. Honestly, I feel like a lot of these options could be boiled down to a single page, but at least it's not a labyrinth of poorly worded menus like some others I could name.</p><p>A case in point is the fourth tab, Power, which has exactly one thing you can adjust—the length of time the controller stays on when inactive. And the fifth tab handles individual control calibration, which I guess is worthy of its own section. Overall, though, the software is perfectly acceptable. Better than most, even.</p><h3 class="article-body__section" id="section-razer-wolverine-v4-pro"><span>Razer Wolverine V4 Pro</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="XqCjxe7Qc8Tzvb5Ee7EC9U" name="20261015_114344" alt="A Razer Wolverine V4 Pro connected to a charging cable, on a desk" src="https://cdn.mos.cms.futurecdn.net/XqCjxe7Qc8Tzvb5Ee7EC9U-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>Razer quotes a 27-hour battery life for the new Wolverine, although I'd imagine that's at lower-than-8K polling rates. What I can say from my own testing, though, is that my review sample came out of the box with a 65% charge and I've only just plugged it in. That's after several days of on/off gaming.</p><p>Those weren't 24-hour sessions, of course. But several eight-hour sprints without reaching for the USB cable certainly seem possible. I'm still old-school enough to want to plug my controller in after I've finished, but it's a habit I'm starting to break.</p><p>What would be nice though, for the cash, would be an included charging stand. It's something we're starting to see more often these days—even with some of the more affordable controllers, like the <a href="https://www.pcgamer.com/hardware/controllers/easysmx-d05-review/" target="_blank">EasySMX D05</a>. Food for thought, Razer?</p><h3 class="article-body__section" id="section-razer-wolverine-v4-pro-value"><span>Razer Wolverine V4 Pro value</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="MwAXohJnk8VzJEtrxBxmBM" name="20261015_114747" alt="A Razer Wolverine V4 Pro stood up on a desk, in front of a controller and a gaming keyboard" src="https://cdn.mos.cms.futurecdn.net/MwAXohJnk8VzJEtrxBxmBM-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>Do we have to talk money? I'm afraid so. The Wolverine V4 Pro is expensive, and there's no getting around it. When the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/" target="_blank">GameSir G7 Pro Tri-Mode</a> costs $80, the $200 price tag of Razer's new baby looks more than a little excessive.</p><p>The G7 Pro also has customisation options similar to the Razer, with its removable faceplate and swappable controls. You can't get rid of the rear paddle buttons, though, a feature I find most handy on the new Wolverine. The GameSir model also has TMR thumbsticks, which should be in the same ballpark as the Razer's. They won't stick drift, put it that way.</p><p>In terms of value, it's clear that the GameSir G7 Pro Tri-Mode wins the day. It's less than half the price, for goodness sake, and it comes with a charging cradle. But I don't think the heavyweight price tag spoils the Wolverine V4 Pro, either.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="sGz8giRp9pdSrzw2KxeF9U" name="20261015_114950" alt="The front controls of the Razer Wolverine V4 Pro" src="https://cdn.mos.cms.futurecdn.net/sGz8giRp9pdSrzw2KxeF9U-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>Yes, it's a lot of money to pay for a controller. But if you're the sort of gamer who sits for hours every weekend with one in your hands, the Razer really does feel like the final boss. It's got pretty much every feature you really need (and many extra niceties you might not expect), alongside a smorgasbord of delicious controls and switches that feel like the cat's pyjamas<em>. </em>And when it comes to speedy inputs? Fuggedaboutit.</p><p>Plus, being able to individually block off those rear paddle buttons and swap out thumbsticks on the fly makes more difference than you think. Whatever your setup, whatever your odd combination of control preferences, the Razer is likely ready for you. And it's even managed to avoid any overblown gamer flair while it's at it. This is a grown-up device for adults, not an RGB-covered piece of frippery.</p><p>Pricey? You bet, and I wish it was significantly cheaper. But, in the same way I'd happily recommend spending a lot of money on something brilliant you're going to use all the time, like a great gaming chair, TV, or headset, I do think the Wolverine V4 Pro makes a very good case for justifying the expense.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ The best PC and Xbox pad right now is less than $65 this Prime Day ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="product"><a data-dimension112="3d98bb2c-c192-11f1-9e0a-5de1d312f872" data-action="Deal Block" data-label="G7 Pro Tri-Mode" data-dimension48="G7 Pro Tri-Mode" data-dimension25="$63.99" href="https://www.amazon.com/GameSir-Controller-Wireless-Gamepad-PC-Triggers/dp/B0FD41XC3P" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:860px;"><p class="vanilla-image-block" style="padding-top:98.84%;"><img id="9qUkynE2jQsgzsVGxnCXpk" name="1782129189.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/9qUkynE2jQsgzsVGxnCXpk-1920-80.jpg" mos="" align="middle" fullscreen="" width="860" height="850" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/GameSir-Controller-Wireless-Gamepad-PC-Triggers/dp/B0FD41XC3P" target="_blank" rel="nofollow" data-dimension112="3d98bb2c-c192-11f1-9e0a-5de1d312f872" data-action="Deal Block" data-label="G7 Pro Tri-Mode" data-dimension48="G7 Pro Tri-Mode" data-dimension25="$63.99">G7 Pro Tri-Mode: was $79.99 now $63.99</a></strong><br>Our current pick for the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming" target="_blank">best PC controller</a> right now, the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review" target="_blank">GameSir G7 Pro</a> is only slightly pricier than a standard Xbox controller but feels and looks nearly identical, and comes with TMR sticks, tactile switches, and a charging dock to keep it topped up and looking pretty on a shelf. This is the lowest we've seen this controller at, and it was already reasonably priced at MSRP. </p><p><strong>Key specs: TMR joysticks | 2.4 GHz wireless, Bluetooth, Wired | Asymmetric | 272 g</strong></p><p><strong>Price check: </strong><a href="https://www.bestbuy.com/product/gamesir-g7-pro-controller-for-xbox-series-xsone-pc-android-tmr-sticks-hall-effect-triggers-1000hz-polling-rateaudio-jack-shadow-ember/J3R85HZRHY" target="_blank"><strong>Best Buy $63.99</strong></a><a class="view-deal button" href="https://www.amazon.com/GameSir-Controller-Wireless-Gamepad-PC-Triggers/dp/B0FD41XC3P" target="_blank" rel="nofollow" data-dimension112="3d98bb2c-c192-11f1-9e0a-5de1d312f872" data-action="Deal Block" data-label="G7 Pro Tri-Mode" data-dimension48="G7 Pro Tri-Mode" data-dimension25="$63.99">View Deal</a></p></div><p>Though the likes of the <a href="https://www.pcgamer.com/hardware/controllers/razers-competitive-controller-is-such-a-good-deal-this-prime-day-that-i-thought-i-clicked-on-the-wrong-listing/" target="_blank">Wolverine V3 Pro 8K</a> make for an excellent competitive experience, I wager the average person is much better off with a GameSir G7 Pro, thanks to its included charging stand, great feel, and, most importantly, a stronger price point. </p><p>If you fancy picking up a controller we gave 92% just last year, it's <a href="https://www.amazon.com/GameSir-Controller-Wireless-Gamepad-PC-Triggers/dp/B0FHHFBDNQ?th=1" target="_blank">currently $16 off at Amazon, for just $64</a>. That's a steal for what is truly an excellent buy. </p><ul><li><a href="https://www.pcgamer.com/best-amazon-prime-day-pc-gaming-deals/" target="_blank"><strong>We're curating all the best Prime Day PC gaming deals here</strong></a></li></ul><p>The black and red model is gorgeous to look at, and without the helping hand of RGB, though you can pick the white, gold, orange, silver, or purple models for the same price. The <a href="https://www.amazon.com/GameSir-Wired-Controller-Windows-Sticks-X/dp/B0GJZ8WJD9" target="_blank">Dragon's Dogma 2 edition</a> is even 63 cents cheaper. The faceplates can be swapped out, should you want to change up the aesthetic in the future too. </p><p>The G7 Pro comes with a tidy charging stand, which also functions as its 2.4 GHz dock. That means you can connect to your PC and charge the controller all from just a single USB Type-C cable. </p><p>In the specs department, you are getting TMR thumbsticks, Hall effect triggers, a solid 1,000 Hz polling, and an included 3.5 mm jack for plugging in headphones. The only place it could really be noticeably upgraded is the polling rate, but I personally wouldn't pay $8 extra for the <a href="https://www.amazon.com/GameSir-Pro-PC-Wireless-Controller-Aimlabs/dp/B0GWJHDCBQ" target="_blank">Aimlabs 8K version,</a> which is also on sale. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/CLUqbm3rpKEfU3gR4VEdpE-1920-80.jpg" alt="The GameSir G7 Pro gamepad sitting in its charging dock" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/mzeh9s5YwadiA8Yfj3F6gn-1920-80.jpg" alt="An image of the GameSir G7 Pro gamepad sitting on a wooden surface" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/YUAaJWMzjmuS3WAtFzP8dL-1920-80.jpg" alt="GameSir G7 Pro's face buttons" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/YhnccsiE8gDHvRMr8kBvKe-1920-80.jpg" alt="GameSir G7 Pro with its exterior case taken off" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>If you've spent much time with the Xbox pad, the G7 Pro will feel very familiar to you in layout, weight, and size. In fact, I have the G7 Pro 8K on my desk and have for a few months now, and I'd pick it over Microsoft's finest any day. It's just a great-feeling controller that is super easy to use and comfortable in the palms. </p><p>The G7 Pro is even compatible with PC and Xbox. The only downside is it needs to be wired to work on your console. You can go totally cable free though on PC, mobile, and Nintendo Switch. </p><p>We reckon it is the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/" target="_blank">best controller</a> you can buy right now, and for good reason. The likes of the Wolverine 8K get a better polling rate and sturdier build, but for the average person simply looking for something pretty to sit on a desk, GameSir simply cannot be beaten for value</p><h2 id="shop-all-of-amazon-s-gaming-controller-deals-here">👉<a href="https://www.amazon.com/s?k=gaming+controller" target="_blank">Shop all of Amazon's gaming controller deals here</a>👈</h2> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/the-best-pc-and-xbox-pad-right-now-is-less-than-usd65-this-prime-day/</link>
                                                                            <description>
                            <![CDATA[ Charging stand? Check. TMR sticks? Check. Great controller? Definitely a check. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">SJbN4Tj3h9jU4fRuEMLpxC</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/AFS9PZGGFSmFpTf7uDXduH-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 06 Oct 2026 14:45:50 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-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/AFS9PZGGFSmFpTf7uDXduH-1920-80.jpg">
                                                            <media:credit><![CDATA[GameSir]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[GameSir G7 Pro controller on a blue deals background]]></media:description>                                                            <media:text><![CDATA[GameSir G7 Pro controller on a blue deals background]]></media:text>
                                <media:title type="plain"><![CDATA[GameSir G7 Pro controller on a blue deals background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/AFS9PZGGFSmFpTf7uDXduH-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="product"><a data-dimension112="3d98bb2c-c192-11f1-9e0a-5de1d312f872" data-action="Deal Block" data-label="G7 Pro Tri-Mode" data-dimension48="G7 Pro Tri-Mode" data-dimension25="$63.99" href="https://www.amazon.com/GameSir-Controller-Wireless-Gamepad-PC-Triggers/dp/B0FD41XC3P" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:860px;"><p class="vanilla-image-block" style="padding-top:98.84%;"><img id="9qUkynE2jQsgzsVGxnCXpk" name="1782129189.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/9qUkynE2jQsgzsVGxnCXpk-1920-80.jpg" mos="" align="middle" fullscreen="" width="860" height="850" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/GameSir-Controller-Wireless-Gamepad-PC-Triggers/dp/B0FD41XC3P" target="_blank" rel="nofollow" data-dimension112="3d98bb2c-c192-11f1-9e0a-5de1d312f872" data-action="Deal Block" data-label="G7 Pro Tri-Mode" data-dimension48="G7 Pro Tri-Mode" data-dimension25="$63.99">G7 Pro Tri-Mode: was $79.99 now $63.99</a></strong><br>Our current pick for the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming" target="_blank">best PC controller</a> right now, the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review" target="_blank">GameSir G7 Pro</a> is only slightly pricier than a standard Xbox controller but feels and looks nearly identical, and comes with TMR sticks, tactile switches, and a charging dock to keep it topped up and looking pretty on a shelf. This is the lowest we've seen this controller at, and it was already reasonably priced at MSRP. </p><p><strong>Key specs: TMR joysticks | 2.4 GHz wireless, Bluetooth, Wired | Asymmetric | 272 g</strong></p><p><strong>Price check: </strong><a href="https://www.bestbuy.com/product/gamesir-g7-pro-controller-for-xbox-series-xsone-pc-android-tmr-sticks-hall-effect-triggers-1000hz-polling-rateaudio-jack-shadow-ember/J3R85HZRHY" target="_blank"><strong>Best Buy $63.99</strong></a><a class="view-deal button" href="https://www.amazon.com/GameSir-Controller-Wireless-Gamepad-PC-Triggers/dp/B0FD41XC3P" target="_blank" rel="nofollow" data-dimension112="3d98bb2c-c192-11f1-9e0a-5de1d312f872" data-action="Deal Block" data-label="G7 Pro Tri-Mode" data-dimension48="G7 Pro Tri-Mode" data-dimension25="$63.99">View Deal</a></p></div><p>Though the likes of the <a href="https://www.pcgamer.com/hardware/controllers/razers-competitive-controller-is-such-a-good-deal-this-prime-day-that-i-thought-i-clicked-on-the-wrong-listing/" target="_blank">Wolverine V3 Pro 8K</a> make for an excellent competitive experience, I wager the average person is much better off with a GameSir G7 Pro, thanks to its included charging stand, great feel, and, most importantly, a stronger price point. </p><p>If you fancy picking up a controller we gave 92% just last year, it's <a href="https://www.amazon.com/GameSir-Controller-Wireless-Gamepad-PC-Triggers/dp/B0FHHFBDNQ?th=1" target="_blank">currently $16 off at Amazon, for just $64</a>. That's a steal for what is truly an excellent buy. </p><ul><li><a href="https://www.pcgamer.com/best-amazon-prime-day-pc-gaming-deals/" target="_blank"><strong>We're curating all the best Prime Day PC gaming deals here</strong></a></li></ul><p>The black and red model is gorgeous to look at, and without the helping hand of RGB, though you can pick the white, gold, orange, silver, or purple models for the same price. The <a href="https://www.amazon.com/GameSir-Wired-Controller-Windows-Sticks-X/dp/B0GJZ8WJD9" target="_blank">Dragon's Dogma 2 edition</a> is even 63 cents cheaper. The faceplates can be swapped out, should you want to change up the aesthetic in the future too. </p><p>The G7 Pro comes with a tidy charging stand, which also functions as its 2.4 GHz dock. That means you can connect to your PC and charge the controller all from just a single USB Type-C cable. </p><p>In the specs department, you are getting TMR thumbsticks, Hall effect triggers, a solid 1,000 Hz polling, and an included 3.5 mm jack for plugging in headphones. The only place it could really be noticeably upgraded is the polling rate, but I personally wouldn't pay $8 extra for the <a href="https://www.amazon.com/GameSir-Pro-PC-Wireless-Controller-Aimlabs/dp/B0GWJHDCBQ" target="_blank">Aimlabs 8K version,</a> which is also on sale. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/CLUqbm3rpKEfU3gR4VEdpE-1920-80.jpg" alt="The GameSir G7 Pro gamepad sitting in its charging dock" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/mzeh9s5YwadiA8Yfj3F6gn-1920-80.jpg" alt="An image of the GameSir G7 Pro gamepad sitting on a wooden surface" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/YUAaJWMzjmuS3WAtFzP8dL-1920-80.jpg" alt="GameSir G7 Pro's face buttons" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/YhnccsiE8gDHvRMr8kBvKe-1920-80.jpg" alt="GameSir G7 Pro with its exterior case taken off" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>If you've spent much time with the Xbox pad, the G7 Pro will feel very familiar to you in layout, weight, and size. In fact, I have the G7 Pro 8K on my desk and have for a few months now, and I'd pick it over Microsoft's finest any day. It's just a great-feeling controller that is super easy to use and comfortable in the palms. </p><p>The G7 Pro is even compatible with PC and Xbox. The only downside is it needs to be wired to work on your console. You can go totally cable free though on PC, mobile, and Nintendo Switch. </p><p>We reckon it is the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/" target="_blank">best controller</a> you can buy right now, and for good reason. The likes of the Wolverine 8K get a better polling rate and sturdier build, but for the average person simply looking for something pretty to sit on a desk, GameSir simply cannot be beaten for value</p><h2 id="shop-all-of-amazon-s-gaming-controller-deals-here">👉<a href="https://www.amazon.com/s?k=gaming+controller" target="_blank">Shop all of Amazon's gaming controller deals here</a>👈</h2>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Say goodbye to stick drift: GameSir's Nova Lite 2 gamepad is less than $25 right now on Prime Day ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="product"><a data-dimension112="8c81a4dc-c17f-11f1-b1e5-5f261a9d3041" data-action="Deal Block" data-label="Nova Lite 2" data-dimension48="Nova Lite 2" data-dimension25="$23.99" href="https://www.amazon.com/Wireless-Controller-Joysticks-Triggers-Remappable-Smartphone/dp/B0F3D25PD3/ref=sr_1_1_sspa" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="gzxiPjnvdNeaytBoJSwtFY" name="1782206380.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/gzxiPjnvdNeaytBoJSwtFY-1920-80.jpg" mos="" align="middle" fullscreen="" width="1500" height="1500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>A new and improved version of the original Nova Lite, the Nova Lite 2 has Hall effect everything, 1000 Hz polling, and trigger locks. It even has a mechanical D-pad, which is absurd for the money, really.</p><p><strong>Key specs: Wireless (Bluetooth and 2.4 GHz) | Asymmetric | Hall effect</strong><a class="view-deal button" href="https://www.amazon.com/Wireless-Controller-Joysticks-Triggers-Remappable-Smartphone/dp/B0F3D25PD3/ref=sr_1_1_sspa" target="_blank" rel="nofollow" data-dimension112="8c81a4dc-c17f-11f1-b1e5-5f261a9d3041" data-action="Deal Block" data-label="Nova Lite 2" data-dimension48="Nova Lite 2" data-dimension25="$23.99">View Deal</a></p></div><p>There used to be a time not so long ago when you'd buy uber budget controllers, knowing they'd break in a year or two. And yet, I've had the original <a href="https://www.pcgamer.com/hardware/controllers/gamesir-nova-lite-controller-review/" target="_blank">GameSir Nova Lite</a> for longer than that now, and it still works perfectly, deflecting stick drift with ease. </p><p>If you want something cheap and cheerful, its upgraded older sibling, the <a href="https://www.amazon.com/Wireless-Controller-Joysticks-Triggers-Remappable-Smartphone/dp/B0F3CZJGSF" target="_blank">GameSir Nova Lite 2, has been knocked down to $24 this Prime Day</a>. That's a bit of a steal for a solid wireless pad. </p><ul><li><a href="https://www.pcgamer.com/best-amazon-prime-day-pc-gaming-deals/" target="_blank"><strong>We're curating all the best Prime Day PC gaming deals here</strong></a></li></ul><p>The Nova Lite 2 doesn't have competitive specs, but it's a perfectly servicable pad for all sorts of games, and the newly upgraded 1,000 Hz polling rate is about average for a reasonably capable gaming controller right now. 8,000 Hz won't be worth the battery drain for most PC gamers but, unless you're a pro, you likely won't feel the difference anyway. </p><p>Here, you're getting Hall effect joysticks, a two-way trigger lock to swap between linear and long press triggers, plus a few customixable buttons on the back.</p><p>There's no RGB, but it's not totally plain either. Both the black and white models are available in the sale for the same price, with orange highlight offering a pop of colour on both versions (I think my money would be on the black pad). It comes with a 2.4 Ghz connector, but it also has Bluetooth. You can swap between devices with a shortcut on the pad, meaning it can switch from mobile to PC in just a few moments. That's pretty neat, and something I liked about the first pad, too. </p><p>Speaking of the first pad, the original GameSir Nova Lite is even cheaper, at just <a href="https://www.amazon.com/GameSir-Wireless-Controller-Bluetooth-Vibration/dp/B0CMCQ6WMC" target="_blank">$18 on Amazon</a>. If I had to pick, I'd pick up the sequel for a few bucks more to get four times the polling rate, but the original model does offer a greater range of colours. Though it doesn't come with a charging stand, the Nova Lite 2 is still charging stand <em>compatible</em>, so you could <a href="https://gamesir.com/products/gamesir-nova-charger-for-super-nova-nova-2-lite/buy?variant=45064149663978" target="_blank">pick one up</a> further down the line to keep your pad topped up too. </p><p>If you simply need an extra pad and don't want to spend a whole bunch of cash on something like, say, the <a href="https://www.pcgamer.com/hardware/controllers/razers-competitive-controller-is-such-a-good-deal-this-prime-day-that-i-thought-i-clicked-on-the-wrong-listing/" target="_blank">Razer Wolverine V3 Pro 8K now that it's on sale</a>, I couldn't recommend a GameSir controller enough. And despite its low cost, I can attest that it's not going to break too easily on you, either.  </p><h2 id="shop-all-of-amazon-s-gaming-controller-deals-here-2">👉<a href="https://www.amazon.com/s?k=gaming+controller" target="_blank">Shop all of Amazon's gaming controller deals here</a>👈</h2> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/say-goodbye-to-stick-drift-gamesirs-nova-lite-2-gamepad-is-less-than-usd25-right-now-on-prime-day/</link>
                                                                            <description>
                            <![CDATA[ And its predecessor is also on sale. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">dVVWRKgXZq6wdFh97Po62T</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/HpgDfXddAstWFnEHvNtpbk-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 06 Oct 2026 12:33:20 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-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/HpgDfXddAstWFnEHvNtpbk-1920-80.jpg">
                                                            <media:credit><![CDATA[GameSir]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[GameSir Nova Lite 2 on a blue deals background]]></media:description>                                                            <media:text><![CDATA[GameSir Nova Lite 2 on a blue deals background]]></media:text>
                                <media:title type="plain"><![CDATA[GameSir Nova Lite 2 on a blue deals background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/HpgDfXddAstWFnEHvNtpbk-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="product"><a data-dimension112="8c81a4dc-c17f-11f1-b1e5-5f261a9d3041" data-action="Deal Block" data-label="Nova Lite 2" data-dimension48="Nova Lite 2" data-dimension25="$23.99" href="https://www.amazon.com/Wireless-Controller-Joysticks-Triggers-Remappable-Smartphone/dp/B0F3D25PD3/ref=sr_1_1_sspa" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="gzxiPjnvdNeaytBoJSwtFY" name="1782206380.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/gzxiPjnvdNeaytBoJSwtFY-1920-80.jpg" mos="" align="middle" fullscreen="" width="1500" height="1500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>A new and improved version of the original Nova Lite, the Nova Lite 2 has Hall effect everything, 1000 Hz polling, and trigger locks. It even has a mechanical D-pad, which is absurd for the money, really.</p><p><strong>Key specs: Wireless (Bluetooth and 2.4 GHz) | Asymmetric | Hall effect</strong><a class="view-deal button" href="https://www.amazon.com/Wireless-Controller-Joysticks-Triggers-Remappable-Smartphone/dp/B0F3D25PD3/ref=sr_1_1_sspa" target="_blank" rel="nofollow" data-dimension112="8c81a4dc-c17f-11f1-b1e5-5f261a9d3041" data-action="Deal Block" data-label="Nova Lite 2" data-dimension48="Nova Lite 2" data-dimension25="$23.99">View Deal</a></p></div><p>There used to be a time not so long ago when you'd buy uber budget controllers, knowing they'd break in a year or two. And yet, I've had the original <a href="https://www.pcgamer.com/hardware/controllers/gamesir-nova-lite-controller-review/" target="_blank">GameSir Nova Lite</a> for longer than that now, and it still works perfectly, deflecting stick drift with ease. </p><p>If you want something cheap and cheerful, its upgraded older sibling, the <a href="https://www.amazon.com/Wireless-Controller-Joysticks-Triggers-Remappable-Smartphone/dp/B0F3CZJGSF" target="_blank">GameSir Nova Lite 2, has been knocked down to $24 this Prime Day</a>. That's a bit of a steal for a solid wireless pad. </p><ul><li><a href="https://www.pcgamer.com/best-amazon-prime-day-pc-gaming-deals/" target="_blank"><strong>We're curating all the best Prime Day PC gaming deals here</strong></a></li></ul><p>The Nova Lite 2 doesn't have competitive specs, but it's a perfectly servicable pad for all sorts of games, and the newly upgraded 1,000 Hz polling rate is about average for a reasonably capable gaming controller right now. 8,000 Hz won't be worth the battery drain for most PC gamers but, unless you're a pro, you likely won't feel the difference anyway. </p><p>Here, you're getting Hall effect joysticks, a two-way trigger lock to swap between linear and long press triggers, plus a few customixable buttons on the back.</p><p>There's no RGB, but it's not totally plain either. Both the black and white models are available in the sale for the same price, with orange highlight offering a pop of colour on both versions (I think my money would be on the black pad). It comes with a 2.4 Ghz connector, but it also has Bluetooth. You can swap between devices with a shortcut on the pad, meaning it can switch from mobile to PC in just a few moments. That's pretty neat, and something I liked about the first pad, too. </p><p>Speaking of the first pad, the original GameSir Nova Lite is even cheaper, at just <a href="https://www.amazon.com/GameSir-Wireless-Controller-Bluetooth-Vibration/dp/B0CMCQ6WMC" target="_blank">$18 on Amazon</a>. If I had to pick, I'd pick up the sequel for a few bucks more to get four times the polling rate, but the original model does offer a greater range of colours. Though it doesn't come with a charging stand, the Nova Lite 2 is still charging stand <em>compatible</em>, so you could <a href="https://gamesir.com/products/gamesir-nova-charger-for-super-nova-nova-2-lite/buy?variant=45064149663978" target="_blank">pick one up</a> further down the line to keep your pad topped up too. </p><p>If you simply need an extra pad and don't want to spend a whole bunch of cash on something like, say, the <a href="https://www.pcgamer.com/hardware/controllers/razers-competitive-controller-is-such-a-good-deal-this-prime-day-that-i-thought-i-clicked-on-the-wrong-listing/" target="_blank">Razer Wolverine V3 Pro 8K now that it's on sale</a>, I couldn't recommend a GameSir controller enough. And despite its low cost, I can attest that it's not going to break too easily on you, either.  </p><h2 id="shop-all-of-amazon-s-gaming-controller-deals-here-2">👉<a href="https://www.amazon.com/s?k=gaming+controller" target="_blank">Shop all of Amazon's gaming controller deals here</a>👈</h2>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Razer's competitive controller is such a good deal this Prime Day that I thought I clicked on the wrong listing ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="product"><a data-dimension112="16cbd104-c251-11f1-a1c0-b1258e89371c" data-action="Deal Block" data-label="G7 Pro Tri-Mode" data-dimension48="G7 Pro Tri-Mode" data-dimension25="$63.99" href="https://www.bestbuy.com/product/gamesir-g7-pro-controller-for-xbox-series-xsone-pc-android-tmr-sticks-hall-effect-triggers-1000hz-polling-rateaudio-jack-shadow-ember/J3R85HZRHY" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:860px;"><p class="vanilla-image-block" style="padding-top:98.84%;"><img id="9qUkynE2jQsgzsVGxnCXpk" name="1782129189.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/9qUkynE2jQsgzsVGxnCXpk-1920-80.jpg" mos="" align="middle" fullscreen="" width="860" height="850" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.bestbuy.com/product/gamesir-g7-pro-controller-for-xbox-series-xsone-pc-android-tmr-sticks-hall-effect-triggers-1000hz-polling-rateaudio-jack-shadow-ember/J3R85HZRHY" target="_blank" rel="nofollow" data-dimension112="16cbd104-c251-11f1-a1c0-b1258e89371c" data-action="Deal Block" data-label="G7 Pro Tri-Mode" data-dimension48="G7 Pro Tri-Mode" data-dimension25="$63.99">G7 Pro Tri-Mode: was $79.99 now $63.99</a></strong><br>Our current pick for the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming" target="_blank">best PC controller</a> right now, the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review" target="_blank">GameSir G7 Pro</a> is only slightly pricier than a standard Xbox controller but feels and looks nearly identical, and comes with TMR sticks, tactile switches, and a charging dock to keep it topped up and looking pretty on a shelf. This is the lowest we've seen this controller at, and it was already reasonably priced at MSRP. </p><p><strong>Key specs: TMR joysticks | 2.4 GHz wireless, Bluetooth, Wired | Asymmetric | 272 g</strong></p><p><strong>Price check: </strong><a href="https://www.amazon.com/GameSir-Controller-Wireless-Triggers-Gaming-Console/dp/B0FHHFBDNQ/ref=sr_1_1_sspa" target="_blank">Amazon $63.99</a><a class="view-deal button" href="https://www.bestbuy.com/product/gamesir-g7-pro-controller-for-xbox-series-xsone-pc-android-tmr-sticks-hall-effect-triggers-1000hz-polling-rateaudio-jack-shadow-ember/J3R85HZRHY" target="_blank" rel="nofollow" data-dimension112="16cbd104-c251-11f1-a1c0-b1258e89371c" data-action="Deal Block" data-label="G7 Pro Tri-Mode" data-dimension48="G7 Pro Tri-Mode" data-dimension25="$63.99">View Deal</a></p></div><div class="product"><a data-dimension112="6cd51386-c174-11f1-a5a8-6f0105e3bc62" data-action="Deal Block" data-label="Wolverine V3 Pro 8K" data-dimension48="Wolverine V3 Pro 8K" data-dimension25="$151.99" href="https://www.amazon.com/dp/B0FC9DTDJ3" 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="oyWyECCjM2npsCm4FAktzU" name="PCGamer Deal Block (9)" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/oyWyECCjM2npsCm4FAktzU-1920-80.png" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>With a great feel, superb specs, and a bunch of remappable buttons, the Wolverine V3 Pro 8K is not only viable as a competitive choice, but comfy enough for everyday use. </p><p><strong>Key specs: Up to 8,000 Hz | TMR thumbsticks | Hall effect triggers |</strong> <strong>included carry case | Wireless and wired | 20 hour battery life (with 1,000 Hz polling)</strong><a class="view-deal button" href="https://www.amazon.com/dp/B0FC9DTDJ3" target="_blank" rel="nofollow" data-dimension112="6cd51386-c174-11f1-a5a8-6f0105e3bc62" data-action="Deal Block" data-label="Wolverine V3 Pro 8K" data-dimension48="Wolverine V3 Pro 8K" data-dimension25="$151.99">View Deal</a></p></div><p>No matter what your budget is, there's a good gaming controller out there for you. And until just last week, I would have put Razer's impeccable Wolverine V3 Pro 8K in the 'you need a fierce budget to buy this one' category, and yet Prime Day has just had to come in and prove me wrong. </p><p>Right now, you can pick up the <a href="https://www.amazon.com/dp/B0FC9DTDJ3" target="_blank">Wolverine V3 Pro 8K for $94</a>, which is more than half off its MSRP. That price is so good that I thought I clicked on the wrong controller the first time I saw it. The only downside is that you need to be a Prime Member to claim it. You could always <a href="https://www.amazon.com/amazonprime" target="_blank">sign up now</a> and cancel before the first payment goes out.</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>We awarded the <a href="https://www.pcgamer.com/hardware/controllers/razer-wolverine-v3-pro-8k-pc-review/" target="_blank">Wolverine V3 Pro 8K a 93% in our review</a> late last year, and it's such a good pad that it's been our pick for the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-high-end-controller" target="_blank">best high-end controller </a>ever since. </p><p>Starting from the top, you are getting all the way up to 8,000 Hz polling here, so it's a super snappy controller, and you get TMR thumbsticks and Hall effect triggers, which not only means no stick drift, but also better battery efficiency. It's a pad that's so good, the only thing holding you back at your local tournament will be you. </p><p>And it's not just for competitive play either. It's got tons of customizable functions and remappable buttons, and it's super sturdy too. I don't recommend dropping controllers, but I wager the Wolverine could take it if you do. I also quite like the aesthetic, which is fairly muted by Razer's standards. The only lighting on the entire controller is in the centre, and it is there to indicate when the device is on or connected. You don't have customizable RGB or anything down the side. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/5mFurbvA9ShwWyU64KJdb-1920-80.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/4eSvuwTwM449vVcJ3Mnyd-1920-80.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/37u73wiqVwyeN5W7TyxQa-1920-80.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/LpnJhFnNExiSb9fbCdvic-1920-80.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/7vRdHtZVSKG3ote8QmNZb-1920-80.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Arguably the biggest downside of the V3 Pro 8K is its monumental price point. At $200, it truly costs a king's ransom, and I wouldn't recommend it to anyone but the most serious a gamer. But at less than $100, it's downright reasonably priced for such great specs. It even comes with an included carry case should you want to throw it in a backpack and take it with you. </p><p>As our Alex put in their review, "Razer has somehow improved on one of the best games controllers available, making this the product to beat."</p><h2 id="shop-all-of-amazon-s-gaming-controller-deals-here-3">👉<a href="https://www.amazon.com/s?k=gaming+controller" target="_blank">Shop all of Amazon's gaming controller deals here</a>👈</h2> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/razers-competitive-controller-is-such-a-good-deal-this-prime-day-that-i-thought-i-clicked-on-the-wrong-listing/</link>
                                                                            <description>
                            <![CDATA[ Less than $100 for such a great pad is a steal. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">jaaEETWrGiDKvYXwpp2MAc</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/SoLd4xQazqQ5sojjcx993f-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 06 Oct 2026 11:06:45 +0000</pubDate>                                                                                                                                <updated>Wed, 07 Oct 2026 13:15:39 +0000</updated>
                                                                                                                                            <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-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/SoLd4xQazqQ5sojjcx993f-1920-80.jpg">
                                                            <media:credit><![CDATA[Razer]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Razer Wolverine V3 Pro 8K controller on a blue deals background]]></media:description>                                                            <media:text><![CDATA[Razer Wolverine V3 Pro 8K controller on a blue deals background]]></media:text>
                                <media:title type="plain"><![CDATA[Razer Wolverine V3 Pro 8K controller on a blue deals background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/SoLd4xQazqQ5sojjcx993f-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="product"><a data-dimension112="16cbd104-c251-11f1-a1c0-b1258e89371c" data-action="Deal Block" data-label="G7 Pro Tri-Mode" data-dimension48="G7 Pro Tri-Mode" data-dimension25="$63.99" href="https://www.bestbuy.com/product/gamesir-g7-pro-controller-for-xbox-series-xsone-pc-android-tmr-sticks-hall-effect-triggers-1000hz-polling-rateaudio-jack-shadow-ember/J3R85HZRHY" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:860px;"><p class="vanilla-image-block" style="padding-top:98.84%;"><img id="9qUkynE2jQsgzsVGxnCXpk" name="1782129189.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/9qUkynE2jQsgzsVGxnCXpk-1920-80.jpg" mos="" align="middle" fullscreen="" width="860" height="850" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.bestbuy.com/product/gamesir-g7-pro-controller-for-xbox-series-xsone-pc-android-tmr-sticks-hall-effect-triggers-1000hz-polling-rateaudio-jack-shadow-ember/J3R85HZRHY" target="_blank" rel="nofollow" data-dimension112="16cbd104-c251-11f1-a1c0-b1258e89371c" data-action="Deal Block" data-label="G7 Pro Tri-Mode" data-dimension48="G7 Pro Tri-Mode" data-dimension25="$63.99">G7 Pro Tri-Mode: was $79.99 now $63.99</a></strong><br>Our current pick for the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming" target="_blank">best PC controller</a> right now, the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review" target="_blank">GameSir G7 Pro</a> is only slightly pricier than a standard Xbox controller but feels and looks nearly identical, and comes with TMR sticks, tactile switches, and a charging dock to keep it topped up and looking pretty on a shelf. This is the lowest we've seen this controller at, and it was already reasonably priced at MSRP. </p><p><strong>Key specs: TMR joysticks | 2.4 GHz wireless, Bluetooth, Wired | Asymmetric | 272 g</strong></p><p><strong>Price check: </strong><a href="https://www.amazon.com/GameSir-Controller-Wireless-Triggers-Gaming-Console/dp/B0FHHFBDNQ/ref=sr_1_1_sspa" target="_blank">Amazon $63.99</a><a class="view-deal button" href="https://www.bestbuy.com/product/gamesir-g7-pro-controller-for-xbox-series-xsone-pc-android-tmr-sticks-hall-effect-triggers-1000hz-polling-rateaudio-jack-shadow-ember/J3R85HZRHY" target="_blank" rel="nofollow" data-dimension112="16cbd104-c251-11f1-a1c0-b1258e89371c" data-action="Deal Block" data-label="G7 Pro Tri-Mode" data-dimension48="G7 Pro Tri-Mode" data-dimension25="$63.99">View Deal</a></p></div><div class="product"><a data-dimension112="6cd51386-c174-11f1-a5a8-6f0105e3bc62" data-action="Deal Block" data-label="Wolverine V3 Pro 8K" data-dimension48="Wolverine V3 Pro 8K" data-dimension25="$151.99" href="https://www.amazon.com/dp/B0FC9DTDJ3" 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="oyWyECCjM2npsCm4FAktzU" name="PCGamer Deal Block (9)" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/oyWyECCjM2npsCm4FAktzU-1920-80.png" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>With a great feel, superb specs, and a bunch of remappable buttons, the Wolverine V3 Pro 8K is not only viable as a competitive choice, but comfy enough for everyday use. </p><p><strong>Key specs: Up to 8,000 Hz | TMR thumbsticks | Hall effect triggers |</strong> <strong>included carry case | Wireless and wired | 20 hour battery life (with 1,000 Hz polling)</strong><a class="view-deal button" href="https://www.amazon.com/dp/B0FC9DTDJ3" target="_blank" rel="nofollow" data-dimension112="6cd51386-c174-11f1-a5a8-6f0105e3bc62" data-action="Deal Block" data-label="Wolverine V3 Pro 8K" data-dimension48="Wolverine V3 Pro 8K" data-dimension25="$151.99">View Deal</a></p></div><p>No matter what your budget is, there's a good gaming controller out there for you. And until just last week, I would have put Razer's impeccable Wolverine V3 Pro 8K in the 'you need a fierce budget to buy this one' category, and yet Prime Day has just had to come in and prove me wrong. </p><p>Right now, you can pick up the <a href="https://www.amazon.com/dp/B0FC9DTDJ3" target="_blank">Wolverine V3 Pro 8K for $94</a>, which is more than half off its MSRP. That price is so good that I thought I clicked on the wrong controller the first time I saw it. The only downside is that you need to be a Prime Member to claim it. You could always <a href="https://www.amazon.com/amazonprime" target="_blank">sign up now</a> and cancel before the first payment goes out.</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>We awarded the <a href="https://www.pcgamer.com/hardware/controllers/razer-wolverine-v3-pro-8k-pc-review/" target="_blank">Wolverine V3 Pro 8K a 93% in our review</a> late last year, and it's such a good pad that it's been our pick for the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-high-end-controller" target="_blank">best high-end controller </a>ever since. </p><p>Starting from the top, you are getting all the way up to 8,000 Hz polling here, so it's a super snappy controller, and you get TMR thumbsticks and Hall effect triggers, which not only means no stick drift, but also better battery efficiency. It's a pad that's so good, the only thing holding you back at your local tournament will be you. </p><p>And it's not just for competitive play either. It's got tons of customizable functions and remappable buttons, and it's super sturdy too. I don't recommend dropping controllers, but I wager the Wolverine could take it if you do. I also quite like the aesthetic, which is fairly muted by Razer's standards. The only lighting on the entire controller is in the centre, and it is there to indicate when the device is on or connected. You don't have customizable RGB or anything down the side. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/5mFurbvA9ShwWyU64KJdb-1920-80.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/4eSvuwTwM449vVcJ3Mnyd-1920-80.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/37u73wiqVwyeN5W7TyxQa-1920-80.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/LpnJhFnNExiSb9fbCdvic-1920-80.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/7vRdHtZVSKG3ote8QmNZb-1920-80.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Arguably the biggest downside of the V3 Pro 8K is its monumental price point. At $200, it truly costs a king's ransom, and I wouldn't recommend it to anyone but the most serious a gamer. But at less than $100, it's downright reasonably priced for such great specs. It even comes with an included carry case should you want to throw it in a backpack and take it with you. </p><p>As our Alex put in their review, "Razer has somehow improved on one of the best games controllers available, making this the product to beat."</p><h2 id="shop-all-of-amazon-s-gaming-controller-deals-here-3">👉<a href="https://www.amazon.com/s?k=gaming+controller" target="_blank">Shop all of Amazon's gaming controller deals here</a>👈</h2>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ There are simply too many great controller deals this Prime Day so here are the three I'd be looking at ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Gone are the days when third-party controllers meant 'the bad one you'd give your sibling'. In fact, third-party controllers have gotten so good that I wouldn't recommend anything from the likes of Sony or Microsoft when the deals are this good. </p><p>But that leads me to a different problem: how do you choose just one? Well, luckily, I have picked four great deals, all on controllers offering very different things. </p><p>For instance, the <a href="https://www.amazon.com/Wireless-Controller-Joysticks-Triggers-Remappable-Smartphone/dp/B0F3D25PD3/ref=sr_1_1_sspa" target="_blank">GameSir Nova Lite 2</a> is cheap and cheerful personified. For less than 25$, you're getting a solid enough polling rate, Hall effect sticks, and wireless play.</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>Then, for about double that price, you can pick up the <a href="https://www.bestbuy.com/product/gamesir-g7-pro-controller-for-xbox-series-xsone-pc-android-tmr-sticks-hall-effect-triggers-1000hz-polling-rateaudio-jack-shadow-ember/J3R85HZRHY" target="_blank">GameSir G7 Pro,</a> with its excellent feel, great looks, and sturdy build. </p><p>Finally, if you want something you can whip out at a competitive tournament, the <a href="https://www.amazon.com/dp/B0FC9DTDJ3" target="_blank">Razer Wolverine V3 Pro 8K</a> and its high polling rate have you covered. </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="9011b214-c16a-11f1-8d75-093c490dab99">            <a href="https://www.amazon.com/Wireless-Controller-Joysticks-Triggers-Remappable-Smartphone/dp/B0F3D25PD3/ref=sr_1_1_sspa" data-model-name="Gamesir Nova Lite 2 Wireless Pc Controller Hall Effect Sticks" 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/wPHU26iacEt9Hk7FNqMLYY.jpg" alt="GameSir, Gamesir Nova Lite 2 Wireless Pc Controller Hall Effect Sticks"></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">Gamesir Nova Lite 2 Wireless Pc Controller Hall Effect Sticks</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="9011b2dc-c16a-11f1-9452-0709767a5fb1">            <a href="https://www.bestbuy.com/product/gamesir-g7-pro-controller-for-xbox-series-xsone-pc-android-tmr-sticks-hall-effect-triggers-1000hz-polling-rateaudio-jack-shadow-ember/J3R85HZRHY" data-model-name="Gamesir - G7 Pro Controller for Xbox Series X|s|one, Pc, Android, Tmr Sticks, Hall Effect Triggers, 1000hz Polling Rate,audio Jack - Shadow Ember" 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/AYDmUhY5f6gyFjugM2dtbd.jpg" alt="GameSir, Gamesir - G7 Pro Controller for Xbox Series X|s|one, Pc, Android, Tmr Sticks, Hall Effect Triggers, 1000hz Polling Rate,audio Jack - Shadow Ember"></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">Gamesir - G7 Pro Controller for Xbox Series X|s|one, Pc, Android, Tmr Sticks, Hall Effect Triggers, 1000hz Polling Rate,audio Jack - Shadow Ember</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="9011b598-c16a-11f1-af28-699f235d6d96">            <a href="https://www.amazon.com/dp/B0FC9DTDJ3" data-model-name="Razer Wolverine V3 Pro 8k Pc Wireless Gaming Controller, Black" 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/QhLZxCuvBtCS8JBTToFeue.jpg" alt="Razer, Razer Wolverine V3 Pro 8k Pc Wireless Gaming Controller, Black"></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">Razer Wolverine V3 Pro 8k Pc Wireless Gaming Controller, Black</div>                                    </div>                <div class="subtitle__description">                                                            <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="9011b692-c16a-11f1-a4c5-193a3a877e96" data-action="Deal Block" data-label="Nova Lite 2" data-dimension48="Nova Lite 2" data-dimension25="$23.99" href="https://www.amazon.com/Wireless-Controller-Joysticks-Triggers-Remappable-Smartphone/dp/B0F3D25PD3/ref=sr_1_1_sspa" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="gzxiPjnvdNeaytBoJSwtFY" name="1782206380.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/gzxiPjnvdNeaytBoJSwtFY-1920-80.jpg" mos="" align="middle" fullscreen="" width="1500" height="1500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>A new and improved version of the Nova Lite, the Nova Lite 2 has Hall effect everything, 1000 Hz polling, and trigger locks. It even has a mechanical d-pad, which is absurd for the money, really.</p><p><strong>Key specs: Wireless (Bluetooth and 2.4 GHz) | Asymmetric | Hall effect</strong><a class="view-deal button" href="https://www.amazon.com/Wireless-Controller-Joysticks-Triggers-Remappable-Smartphone/dp/B0F3D25PD3/ref=sr_1_1_sspa" target="_blank" rel="nofollow" data-dimension112="9011b692-c16a-11f1-a4c5-193a3a877e96" data-action="Deal Block" data-label="Nova Lite 2" data-dimension48="Nova Lite 2" data-dimension25="$23.99">View Deal</a></p></div><div class="product"><a data-dimension112="9011b75a-c16a-11f1-913b-d5c563d169e6" data-action="Deal Block" data-label="G7 Pro Tri-Mode" data-dimension48="G7 Pro Tri-Mode" data-dimension25="$63.99" href="https://www.bestbuy.com/product/gamesir-g7-pro-controller-for-xbox-series-xsone-pc-android-tmr-sticks-hall-effect-triggers-1000hz-polling-rateaudio-jack-shadow-ember/J3R85HZRHY" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:860px;"><p class="vanilla-image-block" style="padding-top:98.84%;"><img id="9qUkynE2jQsgzsVGxnCXpk" name="1782129189.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/9qUkynE2jQsgzsVGxnCXpk-1920-80.jpg" mos="" align="middle" fullscreen="" width="860" height="850" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.bestbuy.com/product/gamesir-g7-pro-controller-for-xbox-series-xsone-pc-android-tmr-sticks-hall-effect-triggers-1000hz-polling-rateaudio-jack-shadow-ember/J3R85HZRHY" target="_blank" rel="nofollow" data-dimension112="9011b75a-c16a-11f1-913b-d5c563d169e6" data-action="Deal Block" data-label="G7 Pro Tri-Mode" data-dimension48="G7 Pro Tri-Mode" data-dimension25="$63.99">G7 Pro Tri-Mode: was $79.99 now $63.99</a></strong><br>Our current pick for the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming" target="_blank">best PC controller</a> right now, the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review" target="_blank">GameSir G7 Pro</a> is only slightly pricier than a standard Xbox controller but feels and looks nearly identical, and comes with TMR sticks, tactile switches, and a charging dock to keep it topped up and looking pretty on a shelf. This is the lowest we've seen this controller at, and it was already reasonably priced at MSRP. </p><p><strong>Key specs: TMR joysticks | 2.4 GHz wireless, Bluetooth, Wired | Asymmetric | 272 g</strong></p><p><strong>Price check: </strong><a href="https://www.amazon.com/GameSir-Controller-Wireless-Triggers-Gaming-Console/dp/B0FHHFBDNQ/ref=sr_1_1_sspa" target="_blank">Amazon $63.99</a><a class="view-deal button" href="https://www.bestbuy.com/product/gamesir-g7-pro-controller-for-xbox-series-xsone-pc-android-tmr-sticks-hall-effect-triggers-1000hz-polling-rateaudio-jack-shadow-ember/J3R85HZRHY" target="_blank" rel="nofollow" data-dimension112="9011b75a-c16a-11f1-913b-d5c563d169e6" data-action="Deal Block" data-label="G7 Pro Tri-Mode" data-dimension48="G7 Pro Tri-Mode" data-dimension25="$63.99">View Deal</a></p></div><div class="product"><a data-dimension112="9011b7b4-c16a-11f1-9094-c1ee0b1a3241" data-action="Deal Block" data-label="Wolverine V3 Pro 8K" data-dimension48="Wolverine V3 Pro 8K" data-dimension25="$94.99" href="https://www.amazon.com/dp/B0FC9DTDJ3" 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="oyWyECCjM2npsCm4FAktzU" name="PCGamer Deal Block (9)" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/oyWyECCjM2npsCm4FAktzU-1920-80.png" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>With a great feel, superb specs, and a bunch of remappable buttons, the Wolverine V3 Pro 8K is not only viable as a competitive choice, but comfy enough for everyday use. </p><p><strong>Key specs: Up to 8,000 Hz | TMR thumbsticks | Hall effect triggers |</strong> <strong>included carry case | Wireless and wired | 20 hour battery life (with 1,000 Hz polling)</strong><a class="view-deal button" href="https://www.amazon.com/dp/B0FC9DTDJ3" target="_blank" rel="nofollow" data-dimension112="9011b7b4-c16a-11f1-9094-c1ee0b1a3241" data-action="Deal Block" data-label="Wolverine V3 Pro 8K" data-dimension48="Wolverine V3 Pro 8K" data-dimension25="$94.99">View Deal</a></p></div><h2 id="shop-all-of-amazon-s-gaming-controller-deals-here-4">👉<a href="https://www.amazon.com/s?k=gaming+controller" target="_blank">Shop all of Amazon's gaming controller deals here</a>👈</h2> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/there-are-simply-too-many-great-controller-deals-this-prime-day-so-here-are-the-three-id-be-looking-at/</link>
                                                                            <description>
                            <![CDATA[ From $24 up to $95, there's a pick for every budget. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Roq7jWoyjkyNQoPps6fFeT</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/hL2m4zN3FBH2SrXfHxvBYJ-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 06 Oct 2026 10:08:53 +0000</pubDate>                                                                                                                                <updated>Tue, 06 Oct 2026 10:22:35 +0000</updated>
                                                                                                                                            <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-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/hL2m4zN3FBH2SrXfHxvBYJ-1920-80.jpg">
                                                            <media:credit><![CDATA[GameSir, Razer]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Two GameSir controllers and one Razer controller on a blue Prime Day image]]></media:description>                                                            <media:text><![CDATA[Two GameSir controllers and one Razer controller on a blue Prime Day image]]></media:text>
                                <media:title type="plain"><![CDATA[Two GameSir controllers and one Razer controller on a blue Prime Day image]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/hL2m4zN3FBH2SrXfHxvBYJ-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Gone are the days when third-party controllers meant 'the bad one you'd give your sibling'. In fact, third-party controllers have gotten so good that I wouldn't recommend anything from the likes of Sony or Microsoft when the deals are this good. </p><p>But that leads me to a different problem: how do you choose just one? Well, luckily, I have picked four great deals, all on controllers offering very different things. </p><p>For instance, the <a href="https://www.amazon.com/Wireless-Controller-Joysticks-Triggers-Remappable-Smartphone/dp/B0F3D25PD3/ref=sr_1_1_sspa" target="_blank">GameSir Nova Lite 2</a> is cheap and cheerful personified. For less than 25$, you're getting a solid enough polling rate, Hall effect sticks, and wireless play.</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>Then, for about double that price, you can pick up the <a href="https://www.bestbuy.com/product/gamesir-g7-pro-controller-for-xbox-series-xsone-pc-android-tmr-sticks-hall-effect-triggers-1000hz-polling-rateaudio-jack-shadow-ember/J3R85HZRHY" target="_blank">GameSir G7 Pro,</a> with its excellent feel, great looks, and sturdy build. </p><p>Finally, if you want something you can whip out at a competitive tournament, the <a href="https://www.amazon.com/dp/B0FC9DTDJ3" target="_blank">Razer Wolverine V3 Pro 8K</a> and its high polling rate have you covered. </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="9011b214-c16a-11f1-8d75-093c490dab99">            <a href="https://www.amazon.com/Wireless-Controller-Joysticks-Triggers-Remappable-Smartphone/dp/B0F3D25PD3/ref=sr_1_1_sspa" data-model-name="Gamesir Nova Lite 2 Wireless Pc Controller Hall Effect Sticks" 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/wPHU26iacEt9Hk7FNqMLYY.jpg" alt="GameSir, Gamesir Nova Lite 2 Wireless Pc Controller Hall Effect Sticks"></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">Gamesir Nova Lite 2 Wireless Pc Controller Hall Effect Sticks</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="9011b2dc-c16a-11f1-9452-0709767a5fb1">            <a href="https://www.bestbuy.com/product/gamesir-g7-pro-controller-for-xbox-series-xsone-pc-android-tmr-sticks-hall-effect-triggers-1000hz-polling-rateaudio-jack-shadow-ember/J3R85HZRHY" data-model-name="Gamesir - G7 Pro Controller for Xbox Series X|s|one, Pc, Android, Tmr Sticks, Hall Effect Triggers, 1000hz Polling Rate,audio Jack - Shadow Ember" 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/AYDmUhY5f6gyFjugM2dtbd.jpg" alt="GameSir, Gamesir - G7 Pro Controller for Xbox Series X|s|one, Pc, Android, Tmr Sticks, Hall Effect Triggers, 1000hz Polling Rate,audio Jack - Shadow Ember"></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">Gamesir - G7 Pro Controller for Xbox Series X|s|one, Pc, Android, Tmr Sticks, Hall Effect Triggers, 1000hz Polling Rate,audio Jack - Shadow Ember</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="9011b598-c16a-11f1-af28-699f235d6d96">            <a href="https://www.amazon.com/dp/B0FC9DTDJ3" data-model-name="Razer Wolverine V3 Pro 8k Pc Wireless Gaming Controller, Black" 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/QhLZxCuvBtCS8JBTToFeue.jpg" alt="Razer, Razer Wolverine V3 Pro 8k Pc Wireless Gaming Controller, Black"></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">Razer Wolverine V3 Pro 8k Pc Wireless Gaming Controller, Black</div>                                    </div>                <div class="subtitle__description">                                                            <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="9011b692-c16a-11f1-a4c5-193a3a877e96" data-action="Deal Block" data-label="Nova Lite 2" data-dimension48="Nova Lite 2" data-dimension25="$23.99" href="https://www.amazon.com/Wireless-Controller-Joysticks-Triggers-Remappable-Smartphone/dp/B0F3D25PD3/ref=sr_1_1_sspa" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="gzxiPjnvdNeaytBoJSwtFY" name="1782206380.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/gzxiPjnvdNeaytBoJSwtFY-1920-80.jpg" mos="" align="middle" fullscreen="" width="1500" height="1500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>A new and improved version of the Nova Lite, the Nova Lite 2 has Hall effect everything, 1000 Hz polling, and trigger locks. It even has a mechanical d-pad, which is absurd for the money, really.</p><p><strong>Key specs: Wireless (Bluetooth and 2.4 GHz) | Asymmetric | Hall effect</strong><a class="view-deal button" href="https://www.amazon.com/Wireless-Controller-Joysticks-Triggers-Remappable-Smartphone/dp/B0F3D25PD3/ref=sr_1_1_sspa" target="_blank" rel="nofollow" data-dimension112="9011b692-c16a-11f1-a4c5-193a3a877e96" data-action="Deal Block" data-label="Nova Lite 2" data-dimension48="Nova Lite 2" data-dimension25="$23.99">View Deal</a></p></div><div class="product"><a data-dimension112="9011b75a-c16a-11f1-913b-d5c563d169e6" data-action="Deal Block" data-label="G7 Pro Tri-Mode" data-dimension48="G7 Pro Tri-Mode" data-dimension25="$63.99" href="https://www.bestbuy.com/product/gamesir-g7-pro-controller-for-xbox-series-xsone-pc-android-tmr-sticks-hall-effect-triggers-1000hz-polling-rateaudio-jack-shadow-ember/J3R85HZRHY" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:860px;"><p class="vanilla-image-block" style="padding-top:98.84%;"><img id="9qUkynE2jQsgzsVGxnCXpk" name="1782129189.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/9qUkynE2jQsgzsVGxnCXpk-1920-80.jpg" mos="" align="middle" fullscreen="" width="860" height="850" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.bestbuy.com/product/gamesir-g7-pro-controller-for-xbox-series-xsone-pc-android-tmr-sticks-hall-effect-triggers-1000hz-polling-rateaudio-jack-shadow-ember/J3R85HZRHY" target="_blank" rel="nofollow" data-dimension112="9011b75a-c16a-11f1-913b-d5c563d169e6" data-action="Deal Block" data-label="G7 Pro Tri-Mode" data-dimension48="G7 Pro Tri-Mode" data-dimension25="$63.99">G7 Pro Tri-Mode: was $79.99 now $63.99</a></strong><br>Our current pick for the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming" target="_blank">best PC controller</a> right now, the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review" target="_blank">GameSir G7 Pro</a> is only slightly pricier than a standard Xbox controller but feels and looks nearly identical, and comes with TMR sticks, tactile switches, and a charging dock to keep it topped up and looking pretty on a shelf. This is the lowest we've seen this controller at, and it was already reasonably priced at MSRP. </p><p><strong>Key specs: TMR joysticks | 2.4 GHz wireless, Bluetooth, Wired | Asymmetric | 272 g</strong></p><p><strong>Price check: </strong><a href="https://www.amazon.com/GameSir-Controller-Wireless-Triggers-Gaming-Console/dp/B0FHHFBDNQ/ref=sr_1_1_sspa" target="_blank">Amazon $63.99</a><a class="view-deal button" href="https://www.bestbuy.com/product/gamesir-g7-pro-controller-for-xbox-series-xsone-pc-android-tmr-sticks-hall-effect-triggers-1000hz-polling-rateaudio-jack-shadow-ember/J3R85HZRHY" target="_blank" rel="nofollow" data-dimension112="9011b75a-c16a-11f1-913b-d5c563d169e6" data-action="Deal Block" data-label="G7 Pro Tri-Mode" data-dimension48="G7 Pro Tri-Mode" data-dimension25="$63.99">View Deal</a></p></div><div class="product"><a data-dimension112="9011b7b4-c16a-11f1-9094-c1ee0b1a3241" data-action="Deal Block" data-label="Wolverine V3 Pro 8K" data-dimension48="Wolverine V3 Pro 8K" data-dimension25="$94.99" href="https://www.amazon.com/dp/B0FC9DTDJ3" 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="oyWyECCjM2npsCm4FAktzU" name="PCGamer Deal Block (9)" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/oyWyECCjM2npsCm4FAktzU-1920-80.png" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>With a great feel, superb specs, and a bunch of remappable buttons, the Wolverine V3 Pro 8K is not only viable as a competitive choice, but comfy enough for everyday use. </p><p><strong>Key specs: Up to 8,000 Hz | TMR thumbsticks | Hall effect triggers |</strong> <strong>included carry case | Wireless and wired | 20 hour battery life (with 1,000 Hz polling)</strong><a class="view-deal button" href="https://www.amazon.com/dp/B0FC9DTDJ3" target="_blank" rel="nofollow" data-dimension112="9011b7b4-c16a-11f1-9094-c1ee0b1a3241" data-action="Deal Block" data-label="Wolverine V3 Pro 8K" data-dimension48="Wolverine V3 Pro 8K" data-dimension25="$94.99">View Deal</a></p></div><h2 id="shop-all-of-amazon-s-gaming-controller-deals-here-4">👉<a href="https://www.amazon.com/s?k=gaming+controller" target="_blank">Shop all of Amazon's gaming controller deals here</a>👈</h2>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ If you don't already have the best PC gamepad there's never been a better time to get it ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="product"><a data-dimension112="77a5b0b0-bc68-11f1-878e-0b37de6dca7c" data-action="Deal Block" data-label="G7 Pro" data-dimension48="G7 Pro" data-dimension25="$127" href="https://www.amazon.com.au/dp/B0FD41XC3P/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:228px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="NNRhRGHnfmKBrnmRLy3oMT" name="Gamesir G7 Pro" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/NNRhRGHnfmKBrnmRLy3oMT-1920-80.png" mos="" align="middle" fullscreen="" width="228" height="228" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>A tidy saving on this brilliant PC gamepad (which also works with Xbox consoles, albeit only wired). It features an astonishing 1000 Hz polling rate for higher precision, TMR analog sticks, face button microswitches, Hall Effect triggers, paddle buttons, 2.4 Ghz wireless and Bluetooth: it basically has everything you want form a pro controller, without being priced like a pro controller. It's available in the grey/white colourway (pictured) as well as <a href="https://www.amazon.com.au/GameSir-Pro-Controller-Wireless-Triggers/dp/B0FHHFBDNQ/" data-dimension112="77a5b0b0-bc68-11f1-878e-0b37de6dca7c" data-action="Deal Block" data-label="G7 Pro" data-dimension48="G7 Pro" data-dimension25="$127">black/red at the same price</a>.</p><p>Also:</p><p><strong>GameSir G7 Pro Dragon's Dogma 2 Edition</strong> - <del>AU$179</del> <a href="https://www.amazon.com.au/GameSir-G7-Pro-Controller-controller/dp/B0GJZ8WJD9" target="_blank" rel="sponsored">AU$143.20</a><br><strong>GameSir G7 Pro Zenless Zone Zero Edition</strong> - <del>AU$239</del> <a href="https://www.amazon.com.au/GameSir-G7-Pro-Controller-controller/dp/B0G6DCNFDN" target="_blank" rel="sponsored">AU$191.20</a><a class="view-deal button" href="https://www.amazon.com.au/dp/B0FD41XC3P/" target="_blank" rel="nofollow" data-dimension112="77a5b0b0-bc68-11f1-878e-0b37de6dca7c" data-action="Deal Block" data-label="G7 Pro" data-dimension48="G7 Pro" data-dimension25="$127">View Deal</a></p></div><p>Buying a gamepad for PC is easier in 2026 than it's ever been. Once upon a time it was a risk to buy a controller that didn't come with Microsoft (or more recently, Sony) branding, not because there weren't good alternatives, but because there were so many <em>bad </em>ones. </p><p>Nowadays there are heaps of respected brands doling out thoughtful controllers. The one that tops PC Gamer's list of <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/">the best PC controllers</a>—and my personal favourite—is the GameSir G7 Pro. I reviewed this model almost exactly a year ago and it's still at the top of our list, chiefly because it boasts a lot of features that you'd normally have to spend around AU$200-AU$300 for. </p><p>Normally it's AU$159, but as part of Amazon's Big Deal Days <a href="https://www.amazon.com.au/GameSir-Pro-Controller-Wireless-Triggers/dp/B0FHHFBDNQ/">you can get it for AU$127</a>, which is the cheapest I've ever seen it. Usually it drops to AU$134 during big sales events. You will need to be a Prime member for that price, but never fear: <a href="https://www.amazon.com.au/prime">there's a free trial</a>.</p><p>If you need a controller it's pretty much a no brainer to pick this up. <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/">My full review</a> makes a decent case, but to summarise in handy bullet points:</p><ul><li><strong>It has TMR analog sticks: </strong>These are an upgrade from drift-free Hall effect analog sticks. Not only will they not drift (unlike Sony and Microsoft controllers) but they're marginally more accurate</li><li><strong>It has Hall effect triggers: </strong>The trigger buttons on Sony and Microsoft controllers are usually the second thing to break. But here they use Hall effect tech which makes them far, <em>far </em>less prone to stickiness because they don't require contact to trigger a response</li><li><strong>It has paddle buttons:</strong> There are two rear buttons on this thing. Yes, there are usually four rear buttons on pro controllers but the G7 Pro, gawd love it, takes a different tack: the other two "extra" buttons sit on the top of the controller between the bumper buttons.</li><li><strong>It's pretty damn modular:</strong> There are three varieties of D-pad included, which are easily snapped in and out. The grips and front plate can also be removed and replaced.</li><li><strong>There's a charging stand:</strong> Much pricier controllers don't include a charging stand (looking at you, appalling expensive DualSense Edge), so this is a real bonus. The 2.4GHz wireless dongle can sit inside the charging stand as well, once you've plugged it into your PC via USB, making things neat and tidy.</li><li><strong>It doesn't feel cheap: </strong>The G7 Pro is pricier than an Xbox controller, but given all the added features you'd think it might feel bad in the hands. But no: it feels as rugged and ergonomic as Microsoft's offerings</li></ul><p>Amazon Big Deal Days ends this coming Monday, so you've got about half a week to figure out whether you want to bite the bullet. I'm rounding up all the best deals in our <a href="https://www.pcgamer.com/live/news/october-prime-day-australia/">Big Deal Days live blog</a>.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/game-pads/if-you-dont-already-have-the-best-pc-gamepad-theres-never-been-a-better-time-to-get-it/</link>
                                                                            <description>
                            <![CDATA[ The GameSir G7 Pro is at an all-time low. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">ELmTNmyCoQRuKKZ8wG7WJP</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/6tYRgsAwAyu37tYzmjxYKa-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 30 Sep 2026 00:47:54 +0000</pubDate>                                                                                                                                <updated>Wed, 30 Sep 2026 22:18:07 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                <author><![CDATA[ shaun.prescott@futurenet.com (Shaun Prescott) ]]></author>                    <dc:creator><![CDATA[ Shaun Prescott ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/W7q4asCziYRHUEennZcpyC-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/6tYRgsAwAyu37tYzmjxYKa-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The GameSir G7 Pro&#039;s directional pad in the foreground, with its two analog sticks in the background]]></media:description>                                                            <media:text><![CDATA[The GameSir G7 Pro&#039;s directional pad in the foreground, with its two analog sticks in the background]]></media:text>
                                <media:title type="plain"><![CDATA[The GameSir G7 Pro&#039;s directional pad in the foreground, with its two analog sticks in the background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/6tYRgsAwAyu37tYzmjxYKa-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="product"><a data-dimension112="77a5b0b0-bc68-11f1-878e-0b37de6dca7c" data-action="Deal Block" data-label="G7 Pro" data-dimension48="G7 Pro" data-dimension25="$127" href="https://www.amazon.com.au/dp/B0FD41XC3P/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:228px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="NNRhRGHnfmKBrnmRLy3oMT" name="Gamesir G7 Pro" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/NNRhRGHnfmKBrnmRLy3oMT-1920-80.png" mos="" align="middle" fullscreen="" width="228" height="228" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>A tidy saving on this brilliant PC gamepad (which also works with Xbox consoles, albeit only wired). It features an astonishing 1000 Hz polling rate for higher precision, TMR analog sticks, face button microswitches, Hall Effect triggers, paddle buttons, 2.4 Ghz wireless and Bluetooth: it basically has everything you want form a pro controller, without being priced like a pro controller. It's available in the grey/white colourway (pictured) as well as <a href="https://www.amazon.com.au/GameSir-Pro-Controller-Wireless-Triggers/dp/B0FHHFBDNQ/" data-dimension112="77a5b0b0-bc68-11f1-878e-0b37de6dca7c" data-action="Deal Block" data-label="G7 Pro" data-dimension48="G7 Pro" data-dimension25="$127">black/red at the same price</a>.</p><p>Also:</p><p><strong>GameSir G7 Pro Dragon's Dogma 2 Edition</strong> - <del>AU$179</del> <a href="https://www.amazon.com.au/GameSir-G7-Pro-Controller-controller/dp/B0GJZ8WJD9" target="_blank" rel="sponsored">AU$143.20</a><br><strong>GameSir G7 Pro Zenless Zone Zero Edition</strong> - <del>AU$239</del> <a href="https://www.amazon.com.au/GameSir-G7-Pro-Controller-controller/dp/B0G6DCNFDN" target="_blank" rel="sponsored">AU$191.20</a><a class="view-deal button" href="https://www.amazon.com.au/dp/B0FD41XC3P/" target="_blank" rel="nofollow" data-dimension112="77a5b0b0-bc68-11f1-878e-0b37de6dca7c" data-action="Deal Block" data-label="G7 Pro" data-dimension48="G7 Pro" data-dimension25="$127">View Deal</a></p></div><p>Buying a gamepad for PC is easier in 2026 than it's ever been. Once upon a time it was a risk to buy a controller that didn't come with Microsoft (or more recently, Sony) branding, not because there weren't good alternatives, but because there were so many <em>bad </em>ones. </p><p>Nowadays there are heaps of respected brands doling out thoughtful controllers. The one that tops PC Gamer's list of <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/">the best PC controllers</a>—and my personal favourite—is the GameSir G7 Pro. I reviewed this model almost exactly a year ago and it's still at the top of our list, chiefly because it boasts a lot of features that you'd normally have to spend around AU$200-AU$300 for. </p><p>Normally it's AU$159, but as part of Amazon's Big Deal Days <a href="https://www.amazon.com.au/GameSir-Pro-Controller-Wireless-Triggers/dp/B0FHHFBDNQ/">you can get it for AU$127</a>, which is the cheapest I've ever seen it. Usually it drops to AU$134 during big sales events. You will need to be a Prime member for that price, but never fear: <a href="https://www.amazon.com.au/prime">there's a free trial</a>.</p><p>If you need a controller it's pretty much a no brainer to pick this up. <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/">My full review</a> makes a decent case, but to summarise in handy bullet points:</p><ul><li><strong>It has TMR analog sticks: </strong>These are an upgrade from drift-free Hall effect analog sticks. Not only will they not drift (unlike Sony and Microsoft controllers) but they're marginally more accurate</li><li><strong>It has Hall effect triggers: </strong>The trigger buttons on Sony and Microsoft controllers are usually the second thing to break. But here they use Hall effect tech which makes them far, <em>far </em>less prone to stickiness because they don't require contact to trigger a response</li><li><strong>It has paddle buttons:</strong> There are two rear buttons on this thing. Yes, there are usually four rear buttons on pro controllers but the G7 Pro, gawd love it, takes a different tack: the other two "extra" buttons sit on the top of the controller between the bumper buttons.</li><li><strong>It's pretty damn modular:</strong> There are three varieties of D-pad included, which are easily snapped in and out. The grips and front plate can also be removed and replaced.</li><li><strong>There's a charging stand:</strong> Much pricier controllers don't include a charging stand (looking at you, appalling expensive DualSense Edge), so this is a real bonus. The 2.4GHz wireless dongle can sit inside the charging stand as well, once you've plugged it into your PC via USB, making things neat and tidy.</li><li><strong>It doesn't feel cheap: </strong>The G7 Pro is pricier than an Xbox controller, but given all the added features you'd think it might feel bad in the hands. But no: it feels as rugged and ergonomic as Microsoft's offerings</li></ul><p>Amazon Big Deal Days ends this coming Monday, so you've got about half a week to figure out whether you want to bite the bullet. I'm rounding up all the best deals in our <a href="https://www.pcgamer.com/live/news/october-prime-day-australia/">Big Deal Days live blog</a>.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ A love letter to the Guitar Hero X-Plorer Controller ]]></title>
                                                                                                <dc:content><![CDATA[ <p>I peaked at 16 years old. I was part way through an expert run of 'Through the Fire and the Flames' by Dragonforce on Guitar Hero 3 at a friend's house for their birthday, and I remember thinking to myself, 'I don't think I'll ever top this'. As the song came to an end and I revelled in my passing grade, I got at least one nod of approval from the group before they slunk off to do what actually cool 16-year-olds do when presented with a free house and no adults around: smoke a big joint.</p><div><blockquote><p>I've given it my all, on that same 20-year-old X-Plorer, with one of my favourite songs from that time. </p><p>Scroll down for my cool video.</p></blockquote></div><p>Not me, though. I got high on sweet riffs, adeptly played out across five colourful buttons, slapped in near-perfect rhythm alongside a singular strum bar. Learn a real guitar? No, thanks. I'd rather sink 100s of hours into a rough approximation of the real thing—a karaoke version wrought of thin plastic from scaled-down body to hollow head unit. Plugged not into an amp, but an Xbox 360, with a whammy bar modulating not the strings, but the signal.</p><p>I played that momentous day on a legendary piece of kit: the RedOctane X-Plorer Controller for Guitar Hero.</p><p>The X-Plorer is about to celebrate its 20th anniversary. It came bundled with Guitar Hero 2, and I was 15 when it first came out here in the UK. That was in 2007. I'm 34 now. And that exact same X-Plorer controller from my proudest moment all those years ago? </p><p>It still bloody works. I use it all the time. </p><p>It's still in good shape. Its once white hue has yellowed over the years, and there's a little grime between the frets and the gaps in the plastic shell. But it's good. More than that, it's <em>great</em>. It even has the same Gibson sticker beneath the fretboard that I stuck on there as a teenager. There was another one, a bird of some sort? But it fell off. I'd forgotten where the stickers came from, but after searching eBay listings for the X-Plorer for this article, I realised they came in the box with 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="QBffiqc4Qm79fNFVowMxmA" name="IMG_8067" alt="The X-Plorer controller that came bundled with Guitar Hero II on Xbox 360." src="https://cdn.mos.cms.futurecdn.net/QBffiqc4Qm79fNFVowMxmA-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: Jacob Ridley)</span></figcaption></figure><p>I have a bit of a collection of guitar controllers on the go: two X-Plorers, two for Guitar Hero Live, and one <a href="https://crkd.gg/products/lp-bluebuerry-burst-multi-platform" target="_blank">CRKD Gibson Les Paul Blueberry Burst Pro Edition</a>. That last one only came out last year, and yes, it's pretty sweet. I also have a Rock Band kit in an attic somewhere. </p><p>Yet the original X-Plorer from my childhood is still my favourite guitar controller of the lot. They all work on PC, with some small tweaks, but no other guitar has the smooth fret button actuation this one does. My fingers glide across those buttons, man. It just feels right.</p><p>The controllers I've had to tinker with the most are actually the Guitar Hero Live guitars. They're much newer than the X-Plorer, coming out in 2015, but that has seen the X-Plorer's ancient simplicity and stoicism replaced by modern proprietary-<em>ness</em>. Special remapping software is required to get the Xbox One wireless dongle working and to emulate the guitar in Windows (RB4InstrumentMapper with VJoy). The 20-year-old X-Plorer is simply plug and play. </p><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="p98Sgoi8NmMkAqVLwjoUrA" name="IMG_8052" alt="The X-Plorer controller that came bundled with Guitar Hero II on Xbox 360." src="https://cdn.mos.cms.futurecdn.net/p98Sgoi8NmMkAqVLwjoUrA-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: Jacob Ridley)</span></figcaption></figure><p>I also had to solder the battery cables back into place on one of the two GHLive guitars. That was my own fault. I left a set of AA batteries in one of them for maybe a decade. The batteries had, of course, exploded into a pool of corrosive battery acid, which subsequently chewed through the solder on the wires connecting the battery bay to the mainboard. That was a simple solder job, to be fair, it only took a couple of screws to pry the back off and expose the surprisingly empty innards, solder the cable, and put it back together. It works great now. </p><p>And, yeah, I actually kinda like the 6-fret layout from GHLive. It's a different challenge. It was like learning from scratch all over again when it first came out, and even 10 years on, I still basically suck at it.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/HAgGUsFLtZQmk3N63KK8rA-1920-80.jpg" alt="The X-Plorer controller that came bundled with Guitar Hero II on Xbox 360. " /><figcaption><small role="credit">Jacob Ridley</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/qhAQDGphe42CPYhX7HNHsA-1920-80.jpg" alt="The X-Plorer controller that came bundled with Guitar Hero II on Xbox 360. " /><figcaption><small role="credit">Jacob Ridley</small></figcaption></figure></figure><p>The X-Plorer has only ever had one issue in twenty years: the whammy bar broke many years ago. It sort of just hangs limp from the guitar, modulating songs to a horrible pitch decided at random. I took it apart a few years ago and found the cause to be just a small piece of plastic that had broken off. This tiny plastic lip is what allowed the whammy to reset to its centre. It's an easy replacement for someone with a 3D printer. I don't have one right now (ex-housemate stole it—long story) so I've done something everyone recommends that's nearly just as good.</p><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="YAvwN8Vkr7VQgMntWZwJrA" name="IMG_1460" alt="The X-Plorer controller that came bundled with Guitar Hero II on Xbox 360." src="https://cdn.mos.cms.futurecdn.net/YAvwN8Vkr7VQgMntWZwJrA-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: Jacob Ridley)</span></figcaption></figure><p>I've wrapped the whammy bar in an elastic band, attaching on the other end to the guitar strap thingymabob. Now the whammy bar works perfectly. Simple things require simple fixes.</p><p>The other X-Plorer I own comes from when my partner used to work at a UK games retailer unimaginatively called GAME. Our local brand had just received a bunch of trade-in kit from someone clearing out their attic of old tat, and they'd dropped in a full Rock Band kit and X-Plorer controller, among other things. I happened to pop around that day as I worked in a shop nearby, saw the guitar behind the counter, and snapped it up pronto. I vaguely remember it cost just £2, but I can't say for sure. Whatever the price, it was a steal. They <a href="https://www.ebay.co.uk/sch/i.html?_nkw=x-plorer+guitar+hero&_sacat=0&LH_Sold=1" target="_blank" data-rewrite="keep">cost upwards of £50</a> nowadays.</p><p>I'm not opposed to newer guitars. The CRKD Gibson Les Paul Blueberry Burst Pro Edition is my go-to  when I play YARG or Clone Hero. The Hall effect haptic strum bar is something else and it has an incredible number of programmable buttons. Moreover, it's wireless. I can lounge on the sofa while playing my sweet tunes.</p><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="tiX3mAeDir765MbZtbsKsA" name="IMG_8068" alt="The X-Plorer controller that came bundled with Guitar Hero II on Xbox 360." src="https://cdn.mos.cms.futurecdn.net/tiX3mAeDir765MbZtbsKsA-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: Jacob Ridley)</span></figcaption></figure><p>You can bet that I pre-ordered the new <a href="https://stagetour.com/products/crkd-gibson-explorer-guitar-controller-classic-white-pro-edition-multi-platform" target="_blank">CRKD 8K Gibson Explorer Guitar Controller</a> when that was announced back at Gamescom. I've never preordered anything faster in my entire life. I'm not normally one to pre-order anything, to be honest, but it's a brand new explorer. <em>A brand new explorer</em>. I've never been more the target audience for a thing. </p><p>Stage Tour looks sweet, too; although, I'm more than happy with YARG and Clone Hero. It was our frequent contributor and drumming apprentice Hope Corrigan that got me onto YARG. They use it for <a href="https://www.pcgamer.com/hardware/pc-gaming-made-me-a-better-drummer-than-i-had-any-right-to-beall-thanks-to-an-electronic-kit-and-open-source-software/" target="_blank">learning to play the actual drums</a>. I've been playing throwback hits on guitar controllers ever since. Shout out to the people that make that game and Clone Hero. Both available for free and totally open to all. You are the true Legends of Rock.</p><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="D4xWdzgT5h7jke72pXeRrA" name="IMG_8072" alt="The X-Plorer controller that came bundled with Guitar Hero II on Xbox 360." src="https://cdn.mos.cms.futurecdn.net/D4xWdzgT5h7jke72pXeRrA-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: Jacob Ridley)</span></figcaption></figure><p>Look, I can go on and on about my many years of slapping colour-coded buttons in rhythmic order. Truth is, though, it's not just about the controller, or even the games. I've got so many good memories with these things. I started playing as basically a child, in my room, with my mate, Bob, who insisted on only ever playing with a controller. Bob is still a complete lunatic to this day. Or going to my first massive gig in Earl's Court in London and watching people play Guitar Hero on stage (I could've totally beat them). Or the many nights tapping along to My Chemical Romance, Paramore, Guns N' Roses, Black Sabbath, Rage Against the Machine with my friend James as we drank too many Relentless energy drinks, shredding the solo in Free Bird into the night.</p><p>So, in honour of the X-plorer's upcoming 20th anniversary, I wanted to do something special. I've given it my all, on that same 20-year-old X-Plorer, with one of my favourite songs from that time. </p><p>Please enjoy.</p><iframe src="https://content.jwplatform.com/players/ILugkRxz.html" id="ILugkRxz" title="Cool-video" width="1920" height="1080" frameborder="0" scrolling="auto" allowfullscreen></iframe> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/a-love-letter-to-the-guitar-hero-x-plorer-controller/</link>
                                                                            <description>
                            <![CDATA[ Simply the best. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">HmaaZc7WT9s2GsEX4UmyCV</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/y7VGjjQCvM83QrgVMagiqA-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 28 Sep 2026 16:23:56 +0000</pubDate>                                                                                                                                <updated>Mon, 28 Sep 2026 21:55:02 +0000</updated>
                                                                                                                                            <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Ridley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/2YNigoLXbckPdRPDe3stwA-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/y7VGjjQCvM83QrgVMagiqA-1920-80.jpg">
                                                            <media:credit><![CDATA[Jacob Ridley]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The X-Plorer controller that came bundled with Guitar Hero II on Xbox 360. ]]></media:description>                                                            <media:text><![CDATA[The X-Plorer controller that came bundled with Guitar Hero II on Xbox 360. ]]></media:text>
                                <media:title type="plain"><![CDATA[The X-Plorer controller that came bundled with Guitar Hero II on Xbox 360. ]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/y7VGjjQCvM83QrgVMagiqA-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I peaked at 16 years old. I was part way through an expert run of 'Through the Fire and the Flames' by Dragonforce on Guitar Hero 3 at a friend's house for their birthday, and I remember thinking to myself, 'I don't think I'll ever top this'. As the song came to an end and I revelled in my passing grade, I got at least one nod of approval from the group before they slunk off to do what actually cool 16-year-olds do when presented with a free house and no adults around: smoke a big joint.</p><div><blockquote><p>I've given it my all, on that same 20-year-old X-Plorer, with one of my favourite songs from that time. </p><p>Scroll down for my cool video.</p></blockquote></div><p>Not me, though. I got high on sweet riffs, adeptly played out across five colourful buttons, slapped in near-perfect rhythm alongside a singular strum bar. Learn a real guitar? No, thanks. I'd rather sink 100s of hours into a rough approximation of the real thing—a karaoke version wrought of thin plastic from scaled-down body to hollow head unit. Plugged not into an amp, but an Xbox 360, with a whammy bar modulating not the strings, but the signal.</p><p>I played that momentous day on a legendary piece of kit: the RedOctane X-Plorer Controller for Guitar Hero.</p><p>The X-Plorer is about to celebrate its 20th anniversary. It came bundled with Guitar Hero 2, and I was 15 when it first came out here in the UK. That was in 2007. I'm 34 now. And that exact same X-Plorer controller from my proudest moment all those years ago? </p><p>It still bloody works. I use it all the time. </p><p>It's still in good shape. Its once white hue has yellowed over the years, and there's a little grime between the frets and the gaps in the plastic shell. But it's good. More than that, it's <em>great</em>. It even has the same Gibson sticker beneath the fretboard that I stuck on there as a teenager. There was another one, a bird of some sort? But it fell off. I'd forgotten where the stickers came from, but after searching eBay listings for the X-Plorer for this article, I realised they came in the box with 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="QBffiqc4Qm79fNFVowMxmA" name="IMG_8067" alt="The X-Plorer controller that came bundled with Guitar Hero II on Xbox 360." src="https://cdn.mos.cms.futurecdn.net/QBffiqc4Qm79fNFVowMxmA-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: Jacob Ridley)</span></figcaption></figure><p>I have a bit of a collection of guitar controllers on the go: two X-Plorers, two for Guitar Hero Live, and one <a href="https://crkd.gg/products/lp-bluebuerry-burst-multi-platform" target="_blank">CRKD Gibson Les Paul Blueberry Burst Pro Edition</a>. That last one only came out last year, and yes, it's pretty sweet. I also have a Rock Band kit in an attic somewhere. </p><p>Yet the original X-Plorer from my childhood is still my favourite guitar controller of the lot. They all work on PC, with some small tweaks, but no other guitar has the smooth fret button actuation this one does. My fingers glide across those buttons, man. It just feels right.</p><p>The controllers I've had to tinker with the most are actually the Guitar Hero Live guitars. They're much newer than the X-Plorer, coming out in 2015, but that has seen the X-Plorer's ancient simplicity and stoicism replaced by modern proprietary-<em>ness</em>. Special remapping software is required to get the Xbox One wireless dongle working and to emulate the guitar in Windows (RB4InstrumentMapper with VJoy). The 20-year-old X-Plorer is simply plug and play. </p><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="p98Sgoi8NmMkAqVLwjoUrA" name="IMG_8052" alt="The X-Plorer controller that came bundled with Guitar Hero II on Xbox 360." src="https://cdn.mos.cms.futurecdn.net/p98Sgoi8NmMkAqVLwjoUrA-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: Jacob Ridley)</span></figcaption></figure><p>I also had to solder the battery cables back into place on one of the two GHLive guitars. That was my own fault. I left a set of AA batteries in one of them for maybe a decade. The batteries had, of course, exploded into a pool of corrosive battery acid, which subsequently chewed through the solder on the wires connecting the battery bay to the mainboard. That was a simple solder job, to be fair, it only took a couple of screws to pry the back off and expose the surprisingly empty innards, solder the cable, and put it back together. It works great now. </p><p>And, yeah, I actually kinda like the 6-fret layout from GHLive. It's a different challenge. It was like learning from scratch all over again when it first came out, and even 10 years on, I still basically suck at it.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/HAgGUsFLtZQmk3N63KK8rA-1920-80.jpg" alt="The X-Plorer controller that came bundled with Guitar Hero II on Xbox 360. " /><figcaption><small role="credit">Jacob Ridley</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/qhAQDGphe42CPYhX7HNHsA-1920-80.jpg" alt="The X-Plorer controller that came bundled with Guitar Hero II on Xbox 360. " /><figcaption><small role="credit">Jacob Ridley</small></figcaption></figure></figure><p>The X-Plorer has only ever had one issue in twenty years: the whammy bar broke many years ago. It sort of just hangs limp from the guitar, modulating songs to a horrible pitch decided at random. I took it apart a few years ago and found the cause to be just a small piece of plastic that had broken off. This tiny plastic lip is what allowed the whammy to reset to its centre. It's an easy replacement for someone with a 3D printer. I don't have one right now (ex-housemate stole it—long story) so I've done something everyone recommends that's nearly just as good.</p><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="YAvwN8Vkr7VQgMntWZwJrA" name="IMG_1460" alt="The X-Plorer controller that came bundled with Guitar Hero II on Xbox 360." src="https://cdn.mos.cms.futurecdn.net/YAvwN8Vkr7VQgMntWZwJrA-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: Jacob Ridley)</span></figcaption></figure><p>I've wrapped the whammy bar in an elastic band, attaching on the other end to the guitar strap thingymabob. Now the whammy bar works perfectly. Simple things require simple fixes.</p><p>The other X-Plorer I own comes from when my partner used to work at a UK games retailer unimaginatively called GAME. Our local brand had just received a bunch of trade-in kit from someone clearing out their attic of old tat, and they'd dropped in a full Rock Band kit and X-Plorer controller, among other things. I happened to pop around that day as I worked in a shop nearby, saw the guitar behind the counter, and snapped it up pronto. I vaguely remember it cost just £2, but I can't say for sure. Whatever the price, it was a steal. They <a href="https://www.ebay.co.uk/sch/i.html?_nkw=x-plorer+guitar+hero&_sacat=0&LH_Sold=1" target="_blank" data-rewrite="keep">cost upwards of £50</a> nowadays.</p><p>I'm not opposed to newer guitars. The CRKD Gibson Les Paul Blueberry Burst Pro Edition is my go-to  when I play YARG or Clone Hero. The Hall effect haptic strum bar is something else and it has an incredible number of programmable buttons. Moreover, it's wireless. I can lounge on the sofa while playing my sweet tunes.</p><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="tiX3mAeDir765MbZtbsKsA" name="IMG_8068" alt="The X-Plorer controller that came bundled with Guitar Hero II on Xbox 360." src="https://cdn.mos.cms.futurecdn.net/tiX3mAeDir765MbZtbsKsA-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: Jacob Ridley)</span></figcaption></figure><p>You can bet that I pre-ordered the new <a href="https://stagetour.com/products/crkd-gibson-explorer-guitar-controller-classic-white-pro-edition-multi-platform" target="_blank">CRKD 8K Gibson Explorer Guitar Controller</a> when that was announced back at Gamescom. I've never preordered anything faster in my entire life. I'm not normally one to pre-order anything, to be honest, but it's a brand new explorer. <em>A brand new explorer</em>. I've never been more the target audience for a thing. </p><p>Stage Tour looks sweet, too; although, I'm more than happy with YARG and Clone Hero. It was our frequent contributor and drumming apprentice Hope Corrigan that got me onto YARG. They use it for <a href="https://www.pcgamer.com/hardware/pc-gaming-made-me-a-better-drummer-than-i-had-any-right-to-beall-thanks-to-an-electronic-kit-and-open-source-software/" target="_blank">learning to play the actual drums</a>. I've been playing throwback hits on guitar controllers ever since. Shout out to the people that make that game and Clone Hero. Both available for free and totally open to all. You are the true Legends of Rock.</p><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="D4xWdzgT5h7jke72pXeRrA" name="IMG_8072" alt="The X-Plorer controller that came bundled with Guitar Hero II on Xbox 360." src="https://cdn.mos.cms.futurecdn.net/D4xWdzgT5h7jke72pXeRrA-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: Jacob Ridley)</span></figcaption></figure><p>Look, I can go on and on about my many years of slapping colour-coded buttons in rhythmic order. Truth is, though, it's not just about the controller, or even the games. I've got so many good memories with these things. I started playing as basically a child, in my room, with my mate, Bob, who insisted on only ever playing with a controller. Bob is still a complete lunatic to this day. Or going to my first massive gig in Earl's Court in London and watching people play Guitar Hero on stage (I could've totally beat them). Or the many nights tapping along to My Chemical Romance, Paramore, Guns N' Roses, Black Sabbath, Rage Against the Machine with my friend James as we drank too many Relentless energy drinks, shredding the solo in Free Bird into the night.</p><p>So, in honour of the X-plorer's upcoming 20th anniversary, I wanted to do something special. I've given it my all, on that same 20-year-old X-Plorer, with one of my favourite songs from that time. </p><p>Please enjoy.</p><iframe src="https://content.jwplatform.com/players/ILugkRxz.html" id="ILugkRxz" title="Cool-video" width="1920" height="1080" frameborder="0" scrolling="auto" allowfullscreen></iframe>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I just think it's neat ]]></title>
                                                                                                <dc:content><![CDATA[ <figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:877px;"><p class="vanilla-image-block" style="padding-top:128.51%;"><img id="cpbFifmvYEKgfZp2HSXimg" name="goosedeck" alt="A white pitbull named Goose sniffs at the Steam Controller." src="https://cdn.mos.cms.futurecdn.net/cpbFifmvYEKgfZp2HSXimg-1920-80.png" mos="" align="middle" fullscreen="" width="877" height="1127" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Ted Litchfield)</span></figcaption></figure><p>Taking some time here on the PC Gamer Hyperfeed™ to praise my favorite hardware purchase of the past year and go-to gamepad for the foreseeable future, the Steam Controller.</p><p>I love its responsiveness, ergonomics, looks, ease of use, battery life, all of it. I'm not usually much of a paddle button user, but being able to map screenshot to R4 has been a real game-changer for me. Goose not included with purchase of Steam Controller.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/i-just-think-its-neat/</link>
                                                                            <description>
                            <![CDATA[ I just think it's neat ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">mRsc5omuJ47Z8LQpytsiS9</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/gokbuqaWmL94WrqqnmSQ4-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 28 Sep 2026 02:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                <author><![CDATA[ ted.litchfield@futurenet.com (Ted Litchfield) ]]></author>                    <dc:creator><![CDATA[ Ted Litchfield ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/8DyQVBz7FCynDY9QiJyH9D-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;&lt;br&gt;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/gokbuqaWmL94WrqqnmSQ4-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Valve&#039;s new and improved Steam Controller during a visit to Valve&#039;s HQ in Bellevue, Washington.]]></media:description>                                                            <media:text><![CDATA[Valve&#039;s new and improved Steam Controller during a visit to Valve&#039;s HQ in Bellevue, Washington.]]></media:text>
                                <media:title type="plain"><![CDATA[Valve&#039;s new and improved Steam Controller during a visit to Valve&#039;s HQ in Bellevue, Washington.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/gokbuqaWmL94WrqqnmSQ4-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:877px;"><p class="vanilla-image-block" style="padding-top:128.51%;"><img id="cpbFifmvYEKgfZp2HSXimg" name="goosedeck" alt="A white pitbull named Goose sniffs at the Steam Controller." src="https://cdn.mos.cms.futurecdn.net/cpbFifmvYEKgfZp2HSXimg-1920-80.png" mos="" align="middle" fullscreen="" width="877" height="1127" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Ted Litchfield)</span></figcaption></figure><p>Taking some time here on the PC Gamer Hyperfeed™ to praise my favorite hardware purchase of the past year and go-to gamepad for the foreseeable future, the Steam Controller.</p><p>I love its responsiveness, ergonomics, looks, ease of use, battery life, all of it. I'm not usually much of a paddle button user, but being able to map screenshot to R4 has been a real game-changer for me. Goose not included with purchase of Steam Controller.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ You won't find a better gaming controller under $30 than the GameSir Nova Lite 2 right now ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="product"><a data-dimension112="98184372-b357-11f1-966c-53c9ac86a989" data-action="Deal Block" data-label="Nova Lite 2" data-dimension48="Nova Lite 2" data-dimension25="$25.99" href="https://www.amazon.com/Wireless-Controller-Joysticks-Triggers-Remappable-Smartphone/dp/B0F3D25PD3?th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="AUkUNCGCQDSh85kk8u4nfU" name="Nova Lite 2" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/AUkUNCGCQDSh85kk8u4nfU-1920-80.png" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>A wireless 1,000 Hz controller with two extra back buttons, Hall effect sticks, and an included 2.4 GHz connector makes the Nova Lite 2 ridiculously good value. And you can pick either the white or black model, as they're both on sale. </p><p><strong>Key specs: Wireless and wired | hall effect sticks | 1,000 Hz | two back buttons </strong><a class="view-deal button" href="https://www.amazon.com/Wireless-Controller-Joysticks-Triggers-Remappable-Smartphone/dp/B0F3D25PD3?th=1" target="_blank" rel="nofollow" data-dimension112="98184372-b357-11f1-966c-53c9ac86a989" data-action="Deal Block" data-label="Nova Lite 2" data-dimension48="Nova Lite 2" data-dimension25="$25.99">View Deal</a></p></div><p>The high-end controllers are great, with their massive polling rate, firm feel, and extra buttons, but you don't need to spend that much to get a good experience, and GameSir has proved that time and time again. In fact, I tried the very first <a href="https://www.pcgamer.com/hardware/controllers/gamesir-nova-lite-controller-review/" target="_blank">GameSir Nova Lite</a> a handful of years ago, and it's still an excellent little controller for the price. </p><p>If you are looking for an upgrade or a second controller, the <a href="https://www.amazon.com/Wireless-Controller-Joysticks-Triggers-Remappable-Smartphone/dp/B0F3CZJGSF?th=1" target="_blank">GameSir Nova Lite 2 is currently down to $26 on Amazon</a>. That's only a light discount, but a light discount on a budget controller is pretty sweet. </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>If you're wondering what the major differences are between the Nova Lite and Nova Lite 2, the Nova Lite 2 quadruples the polling rate (up to 1,000 Hz), adds two back paddles, and has a rounded D-Pad, sort of like the type that Xbox pads have. That means it's more responsive and more customizable, and looking at both on Amazon, the Nova Lite 2 is only a few dollars more. My money would be going on that upgraded pad. </p><p>One thing both the Nova Lite and Nova Lite 2 are missing is a 3.5 mm jack. That means you will want a wireless headset if you plan on using the controller far away from your gaming rig. The first Nova Lite doesn't feel like a more expensive controller, thanks to plastic materials, but it is super easy to use and has a wide range of connectivity options. </p><p>With my time with the Nova Lite, I can say it's a comfortable controller under the palms, and the buttons are satisfyingly clicky. It might creak with pressure, but it's easy to hold onto. </p><p>If you're on a budget, I can't think of a single controller I'd personally pick over the Nova Lite 2 right now. In fact, until you get up to the $50-or-so range, where <a href="https://www.pcgamer.com/hardware/controllers/easysmx-d05-review/" target="_blank">Easy SMX's best offerings lie</a>, I wouldn't be looking elsewhere. </p><h2 id="check-out-all-of-amazon-s-gaming-controller-deals"><a href="https://www.amazon.com/s?k=gaming+controller&i=videogames&crid=33NER3H9Z6ARX&sprefix=gaming+controll%2Cvideogames%2C255&ref=nb_sb_noss_2" target="_blank">👉 Check out all of Amazon's gaming controller deals 👈</a></h2> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/you-wont-find-a-better-gaming-controller-under-usd30-than-the-gamesir-nova-lite-2-right-now/</link>
                                                                            <description>
                            <![CDATA[ If you need something cheap and cheerful, you'll get both in spades. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">VKC222QG8wBMdjssQhCY5V</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/ifaGSNLuUajGZpR4rnubq9-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 18 Sep 2026 12:04:23 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-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/ifaGSNLuUajGZpR4rnubq9-1920-80.jpg">
                                                            <media:credit><![CDATA[GameSir]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[GameSir Nova Lite 2 gaming controller on a pink deals background]]></media:description>                                                            <media:text><![CDATA[GameSir Nova Lite 2 gaming controller on a pink deals background]]></media:text>
                                <media:title type="plain"><![CDATA[GameSir Nova Lite 2 gaming controller on a pink deals background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/ifaGSNLuUajGZpR4rnubq9-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="product"><a data-dimension112="98184372-b357-11f1-966c-53c9ac86a989" data-action="Deal Block" data-label="Nova Lite 2" data-dimension48="Nova Lite 2" data-dimension25="$25.99" href="https://www.amazon.com/Wireless-Controller-Joysticks-Triggers-Remappable-Smartphone/dp/B0F3D25PD3?th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="AUkUNCGCQDSh85kk8u4nfU" name="Nova Lite 2" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/AUkUNCGCQDSh85kk8u4nfU-1920-80.png" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>A wireless 1,000 Hz controller with two extra back buttons, Hall effect sticks, and an included 2.4 GHz connector makes the Nova Lite 2 ridiculously good value. And you can pick either the white or black model, as they're both on sale. </p><p><strong>Key specs: Wireless and wired | hall effect sticks | 1,000 Hz | two back buttons </strong><a class="view-deal button" href="https://www.amazon.com/Wireless-Controller-Joysticks-Triggers-Remappable-Smartphone/dp/B0F3D25PD3?th=1" target="_blank" rel="nofollow" data-dimension112="98184372-b357-11f1-966c-53c9ac86a989" data-action="Deal Block" data-label="Nova Lite 2" data-dimension48="Nova Lite 2" data-dimension25="$25.99">View Deal</a></p></div><p>The high-end controllers are great, with their massive polling rate, firm feel, and extra buttons, but you don't need to spend that much to get a good experience, and GameSir has proved that time and time again. In fact, I tried the very first <a href="https://www.pcgamer.com/hardware/controllers/gamesir-nova-lite-controller-review/" target="_blank">GameSir Nova Lite</a> a handful of years ago, and it's still an excellent little controller for the price. </p><p>If you are looking for an upgrade or a second controller, the <a href="https://www.amazon.com/Wireless-Controller-Joysticks-Triggers-Remappable-Smartphone/dp/B0F3CZJGSF?th=1" target="_blank">GameSir Nova Lite 2 is currently down to $26 on Amazon</a>. That's only a light discount, but a light discount on a budget controller is pretty sweet. </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>If you're wondering what the major differences are between the Nova Lite and Nova Lite 2, the Nova Lite 2 quadruples the polling rate (up to 1,000 Hz), adds two back paddles, and has a rounded D-Pad, sort of like the type that Xbox pads have. That means it's more responsive and more customizable, and looking at both on Amazon, the Nova Lite 2 is only a few dollars more. My money would be going on that upgraded pad. </p><p>One thing both the Nova Lite and Nova Lite 2 are missing is a 3.5 mm jack. That means you will want a wireless headset if you plan on using the controller far away from your gaming rig. The first Nova Lite doesn't feel like a more expensive controller, thanks to plastic materials, but it is super easy to use and has a wide range of connectivity options. </p><p>With my time with the Nova Lite, I can say it's a comfortable controller under the palms, and the buttons are satisfyingly clicky. It might creak with pressure, but it's easy to hold onto. </p><p>If you're on a budget, I can't think of a single controller I'd personally pick over the Nova Lite 2 right now. In fact, until you get up to the $50-or-so range, where <a href="https://www.pcgamer.com/hardware/controllers/easysmx-d05-review/" target="_blank">Easy SMX's best offerings lie</a>, I wouldn't be looking elsewhere. </p><h2 id="check-out-all-of-amazon-s-gaming-controller-deals"><a href="https://www.amazon.com/s?k=gaming+controller&i=videogames&crid=33NER3H9Z6ARX&sprefix=gaming+controll%2Cvideogames%2C255&ref=nb_sb_noss_2" target="_blank">👉 Check out all of Amazon's gaming controller deals 👈</a></h2>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Razer's Wolverine 8K controller is down to $160 and has literally everything you need to wipe the lobby ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="product"><a data-dimension112="93b35edc-b1d8-11f1-8297-f9b18f06db53" data-action="Deal Block" data-label="Wolverine V3 Pro 8K" data-dimension48="Wolverine V3 Pro 8K" data-dimension25="$159.99" href="https://www.amazon.com/dp/B0FC9DTDJ3" 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="oyWyECCjM2npsCm4FAktzU" name="PCGamer Deal Block (9)" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/oyWyECCjM2npsCm4FAktzU-1920-80.png" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/dp/B0FC9DTDJ3" target="_blank" rel="nofollow" data-dimension112="93b35edc-b1d8-11f1-8297-f9b18f06db53" data-action="Deal Block" data-label="Wolverine V3 Pro 8K" data-dimension48="Wolverine V3 Pro 8K" data-dimension25="$159.99">Wolverine V3 Pro 8K: was $199.99 now $159.99</a></strong><br>If you can afford its asking fee, you won't find a better PC controller than this one, thanks to its great build quality, excellent specs, and wealth of remappable buttons. </p><p><strong>Key specs: Up to 8,000 Hz | TMR thumbsticks | Hall effect triggers |</strong> <strong>included carry case | Wireless and wired | 20 hour battery life (with 1,000 Hz polling)</strong><a class="view-deal button" href="https://www.amazon.com/dp/B0FC9DTDJ3" target="_blank" rel="nofollow" data-dimension112="93b35edc-b1d8-11f1-8297-f9b18f06db53" data-action="Deal Block" data-label="Wolverine V3 Pro 8K" data-dimension48="Wolverine V3 Pro 8K" data-dimension25="$159.99">View Deal</a></p></div><p>Almost one year ago, the <a href="https://www.pcgamer.com/hardware/controllers/razer-wolverine-v3-pro-review/" target="_blank">Razer Wolverine V3 Pro</a> got <a href="https://www.pcgamer.com/hardware/controllers/the-wolverine-v3-pro-is-no-longer-the-best-high-end-pc-gamepad-because-razers-been-indulging-in-some-seriously-rabid-regicide/" target="_blank">dethroned</a> as the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-high-end-controller" target="_blank">best high-end controller</a> on PC. That's because its <a href="https://www.pcgamer.com/hardware/controllers/razer-wolverine-v3-pro-8k-pc-review/" target="_blank">8K variant</a> dropped. Yes, it's just that good. </p><p>If you want to pick up the Razer Wolverine V3 Pro 8K for yourself, it's currently <a href="https://www.amazon.com/dp/B0FC9DTDJ3" target="_blank">$160 at Amazon</a>, a healthy $40 saving. </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>It's true that not everyone needs 8,000 Hz polling from their hardware, especially wireless hardware where the extra polling rate negatively impacts battery life. However, the Wolverine V3 Pro seems to add that as simply an added bonus, because it rocks in pretty much every other regard too. </p><p>Great build quality? Check. TMR thumbsticks to do away with stick drift? Check. Customizable functions and buttons? Check. Spare thumbsticks to swap the feel and a carry case? Also yes. It might be an expensive controller, but you can't say that Razer hasn't pulled out all the stops to make the best high-end controller on the market. </p><p>Just last year, we gave the controller a whopping 93%, saying, "Razer has somehow improved on one of the best games controllers available, making this the product to beat."</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/NMvRW26STV4JNKbZMUCHc-1920-80.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/4iGZ3qrfveDtRetYucWee-1920-80.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/MK4xmxEZVY3vYsuJgsEXAF-1920-80.jpg" alt="Razer Wolverine V3 Pro 8k " /><figcaption><small role="credit">Razer</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/4eSvuwTwM449vVcJ3Mnyd-1920-80.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/37u73wiqVwyeN5W7TyxQa-1920-80.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>I spoke to our Harvey, who has stolen the office Wolverine V3 Pro 8K, and they told me, "The Wolverine 8k is so nice to use, I've barely noticed it: frictionlessly helping me through an intense playthrough of <a href="https://www.pcgamer.com/games/action/onimusha-way-of-the-sword-review/" target="_blank">Onimusha: Way of the Sword</a> without so much as a complaint or misinput. Plus it's got so many extra buttons I've been tempted to betray my keyboard in FF14, and very well may do so when Evercold comes around and I've got to relearn all my rotations, anyway."</p><p>One thing worth noting, though, is that 8,000 Hz polling drains the battery, so it's only really worth using if you think you will actually see the benefit. If not, the 20 hours of charge at 1,000 Hz are plenty, and it still performs incredibly well at that otherwise solid polling rate. </p><h2 id="check-out-all-of-amazon-s-gaming-controller-deals-2"><a href="https://www.amazon.com/s?k=gaming+controller&i=videogames&crid=33NER3H9Z6ARX&sprefix=gaming+controll%2Cvideogames%2C255&ref=nb_sb_noss_2" target="_blank">👉 Check out all of Amazon's gaming controller deals 👈</a></h2> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/razers-wolverine-8k-controller-is-down-to-usd160-and-has-literally-everything-you-need-to-wipe-the-lobby/</link>
                                                                            <description>
                            <![CDATA[ And it's still an incredible pick even if you just use a measly 1,000 Hz polling. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">DvwMZv5uzJxLYpEqAEwyHU</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/uoScMP5r35TZrgmNn6VmrC-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 16 Sep 2026 14:42:26 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-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/uoScMP5r35TZrgmNn6VmrC-1920-80.jpg">
                                                            <media:credit><![CDATA[Razer]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Razer Wolverine V3 Pro 8K on a pink deals background]]></media:description>                                                            <media:text><![CDATA[Razer Wolverine V3 Pro 8K on a pink deals background]]></media:text>
                                <media:title type="plain"><![CDATA[Razer Wolverine V3 Pro 8K on a pink deals background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/uoScMP5r35TZrgmNn6VmrC-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="product"><a data-dimension112="93b35edc-b1d8-11f1-8297-f9b18f06db53" data-action="Deal Block" data-label="Wolverine V3 Pro 8K" data-dimension48="Wolverine V3 Pro 8K" data-dimension25="$159.99" href="https://www.amazon.com/dp/B0FC9DTDJ3" 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="oyWyECCjM2npsCm4FAktzU" name="PCGamer Deal Block (9)" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/oyWyECCjM2npsCm4FAktzU-1920-80.png" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/dp/B0FC9DTDJ3" target="_blank" rel="nofollow" data-dimension112="93b35edc-b1d8-11f1-8297-f9b18f06db53" data-action="Deal Block" data-label="Wolverine V3 Pro 8K" data-dimension48="Wolverine V3 Pro 8K" data-dimension25="$159.99">Wolverine V3 Pro 8K: was $199.99 now $159.99</a></strong><br>If you can afford its asking fee, you won't find a better PC controller than this one, thanks to its great build quality, excellent specs, and wealth of remappable buttons. </p><p><strong>Key specs: Up to 8,000 Hz | TMR thumbsticks | Hall effect triggers |</strong> <strong>included carry case | Wireless and wired | 20 hour battery life (with 1,000 Hz polling)</strong><a class="view-deal button" href="https://www.amazon.com/dp/B0FC9DTDJ3" target="_blank" rel="nofollow" data-dimension112="93b35edc-b1d8-11f1-8297-f9b18f06db53" data-action="Deal Block" data-label="Wolverine V3 Pro 8K" data-dimension48="Wolverine V3 Pro 8K" data-dimension25="$159.99">View Deal</a></p></div><p>Almost one year ago, the <a href="https://www.pcgamer.com/hardware/controllers/razer-wolverine-v3-pro-review/" target="_blank">Razer Wolverine V3 Pro</a> got <a href="https://www.pcgamer.com/hardware/controllers/the-wolverine-v3-pro-is-no-longer-the-best-high-end-pc-gamepad-because-razers-been-indulging-in-some-seriously-rabid-regicide/" target="_blank">dethroned</a> as the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-high-end-controller" target="_blank">best high-end controller</a> on PC. That's because its <a href="https://www.pcgamer.com/hardware/controllers/razer-wolverine-v3-pro-8k-pc-review/" target="_blank">8K variant</a> dropped. Yes, it's just that good. </p><p>If you want to pick up the Razer Wolverine V3 Pro 8K for yourself, it's currently <a href="https://www.amazon.com/dp/B0FC9DTDJ3" target="_blank">$160 at Amazon</a>, a healthy $40 saving. </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>It's true that not everyone needs 8,000 Hz polling from their hardware, especially wireless hardware where the extra polling rate negatively impacts battery life. However, the Wolverine V3 Pro seems to add that as simply an added bonus, because it rocks in pretty much every other regard too. </p><p>Great build quality? Check. TMR thumbsticks to do away with stick drift? Check. Customizable functions and buttons? Check. Spare thumbsticks to swap the feel and a carry case? Also yes. It might be an expensive controller, but you can't say that Razer hasn't pulled out all the stops to make the best high-end controller on the market. </p><p>Just last year, we gave the controller a whopping 93%, saying, "Razer has somehow improved on one of the best games controllers available, making this the product to beat."</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/NMvRW26STV4JNKbZMUCHc-1920-80.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/4iGZ3qrfveDtRetYucWee-1920-80.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/MK4xmxEZVY3vYsuJgsEXAF-1920-80.jpg" alt="Razer Wolverine V3 Pro 8k " /><figcaption><small role="credit">Razer</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/4eSvuwTwM449vVcJ3Mnyd-1920-80.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/37u73wiqVwyeN5W7TyxQa-1920-80.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>I spoke to our Harvey, who has stolen the office Wolverine V3 Pro 8K, and they told me, "The Wolverine 8k is so nice to use, I've barely noticed it: frictionlessly helping me through an intense playthrough of <a href="https://www.pcgamer.com/games/action/onimusha-way-of-the-sword-review/" target="_blank">Onimusha: Way of the Sword</a> without so much as a complaint or misinput. Plus it's got so many extra buttons I've been tempted to betray my keyboard in FF14, and very well may do so when Evercold comes around and I've got to relearn all my rotations, anyway."</p><p>One thing worth noting, though, is that 8,000 Hz polling drains the battery, so it's only really worth using if you think you will actually see the benefit. If not, the 20 hours of charge at 1,000 Hz are plenty, and it still performs incredibly well at that otherwise solid polling rate. </p><h2 id="check-out-all-of-amazon-s-gaming-controller-deals-2"><a href="https://www.amazon.com/s?k=gaming+controller&i=videogames&crid=33NER3H9Z6ARX&sprefix=gaming+controll%2Cvideogames%2C255&ref=nb_sb_noss_2" target="_blank">👉 Check out all of Amazon's gaming controller deals 👈</a></h2>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ SteelSeries throws everything but the kitchen sink in the feature list of its Aeon Pro controller ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Last month I got to take a look at what SteelSeries calls the "world’s first dual-dock controller built for PC and Xbox": the Aeon Pro. Its dual-docking claim to fame is that it allows you to switch between PC and Xbox gameplay seamlessly, without re-pairing. That's thanks to dual USB inputs on the base station, one connected to PC and the other to Xbox.</p><p>The thing is, that feature itself sounds pretty niche to my diminutive ears, given there probably aren't tons of PC gamers also using Xbox (though I am open to being corrected on that). Instead, I'm much more interested in what else the controller has to offer, and for what cost.</p><p>On this front, we're looking at a *gulp* $260/£230/€260 price tag, which places it firmly in top-end territory at least as far as its pricing is concerned. Having had my hands on it—albeit only briefly—I can say it does <em>feel </em>like a premium controller, with pretty solid build quality, great grips, and comfy button presses. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xm8v0O"></div>                            </div>                            <script src="https://kwizly.com/embed/Xm8v0O.js" async></script><p>I'm not a fan of the ABXY buttons, however, as they feel slightly mushy for my tastes, but only in the same way that some other premium controllers are and that others seem to not mind. For me, it feel like there's a bit of slow pre-travel before the button 'clicks'. This is unlike on the Scuf controller I like, the <a href="https://www.pcgamer.com/hardware/controllers/scuf-valor-pro-review/" target="_blank">Valor Pro</a>, the ABXY buttons on which have barely any pre-travel and immediately click down.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/K7w9NHWpt2jFRjBwuAcpAX-1920-80.jpg" alt="A SteelSeries Aeon Pro controller." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/hbcXL4BLepjbBGcEcqToAX-1920-80.jpg" alt="A SteelSeries Aeon Pro controller." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/GtbmCjkHfBEGvuAYGhH57H-1920-80.jpg" alt="A SteelSeries Aeon Pro controller." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>In addition to the dual connectivity and general feel, you're getting a whole bunch of other features—everything but the kitchen sink, it seems. We're talking four back paddles, Hall effect thumbsticks and triggers, the ability to switch the triggers to instant click actuation, replaceable thumbsticks with a place to put them in the dock, hot swappable batteries which can charge in the base station, and an OLED screen.</p><p>Aesthetically, I'm not very keen on the grey-and-white combo, but the black version looks lovely. It also reaches up to 1K polling on PC, which is fine by my books for a controller, but is a little behind some of the recent 8K competition.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="NozXePbbYYVpvooiFphP6i" name="image - 2026-09-08T123826.423" alt="Two SteelSeries Aeon Pro controllers, one in black, one in white." src="https://cdn.mos.cms.futurecdn.net/NozXePbbYYVpvooiFphP6i-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: SteelSeries)</span></figcaption></figure><p>All of this would be fine if it wasn't for that price tag, which does put a pretty big dampener on things. Our James recently reviewed the <a href="https://www.pcgamer.com/hardware/controllers/scuf-omega-review/" target="_blank">$220 Scuf Omega</a> and found it difficult to justify for that price tag given the competition in the likes of the $220 <a href="https://www.pcgamer.com/hardware/game-pads/razer-raiju-v3-pro-review/" target="_blank">Raiju V3 Pro</a>, the $200 <a href="https://www.pcgamer.com/hardware/controllers/razer-wolverine-v3-pro-8k-pc-review/" target="_blank">Razer Wolverine V3 Pro</a>, and the $90 <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-8k-aimlabs-edition-review/" target="_blank">GameSir G7 Pro 8K</a>.</p><p>I'd have to spend more time with it to know for sure, but I worry the SteelSeries will face the same fate by pricing itself so high, especially without 8K polling. Though for those who use both Xbox and PC, some might consider it worth the cost for that dual connectivity feature alone, though given pairing isn't the most difficult thing in the world, even then I'm not so sure.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/steelseries-throws-everything-but-the-kitchen-sink-in-the-feature-list-of-its-aeon-pro-controller/</link>
                                                                            <description>
                            <![CDATA[ It can seamlessly switch between Xbox and PC, but is very expensive. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">8KDMoreRdsBEAvJrWXnSg8</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/GtbmCjkHfBEGvuAYGhH57H-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 08 Sep 2026 14:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Fox ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-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/GtbmCjkHfBEGvuAYGhH57H-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A SteelSeries Aeon Pro controller.]]></media:description>                                                            <media:text><![CDATA[A SteelSeries Aeon Pro controller.]]></media:text>
                                <media:title type="plain"><![CDATA[A SteelSeries Aeon Pro controller.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/GtbmCjkHfBEGvuAYGhH57H-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Last month I got to take a look at what SteelSeries calls the "world’s first dual-dock controller built for PC and Xbox": the Aeon Pro. Its dual-docking claim to fame is that it allows you to switch between PC and Xbox gameplay seamlessly, without re-pairing. That's thanks to dual USB inputs on the base station, one connected to PC and the other to Xbox.</p><p>The thing is, that feature itself sounds pretty niche to my diminutive ears, given there probably aren't tons of PC gamers also using Xbox (though I am open to being corrected on that). Instead, I'm much more interested in what else the controller has to offer, and for what cost.</p><p>On this front, we're looking at a *gulp* $260/£230/€260 price tag, which places it firmly in top-end territory at least as far as its pricing is concerned. Having had my hands on it—albeit only briefly—I can say it does <em>feel </em>like a premium controller, with pretty solid build quality, great grips, and comfy button presses. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xm8v0O"></div>                            </div>                            <script src="https://kwizly.com/embed/Xm8v0O.js" async></script><p>I'm not a fan of the ABXY buttons, however, as they feel slightly mushy for my tastes, but only in the same way that some other premium controllers are and that others seem to not mind. For me, it feel like there's a bit of slow pre-travel before the button 'clicks'. This is unlike on the Scuf controller I like, the <a href="https://www.pcgamer.com/hardware/controllers/scuf-valor-pro-review/" target="_blank">Valor Pro</a>, the ABXY buttons on which have barely any pre-travel and immediately click down.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/K7w9NHWpt2jFRjBwuAcpAX-1920-80.jpg" alt="A SteelSeries Aeon Pro controller." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/hbcXL4BLepjbBGcEcqToAX-1920-80.jpg" alt="A SteelSeries Aeon Pro controller." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/GtbmCjkHfBEGvuAYGhH57H-1920-80.jpg" alt="A SteelSeries Aeon Pro controller." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>In addition to the dual connectivity and general feel, you're getting a whole bunch of other features—everything but the kitchen sink, it seems. We're talking four back paddles, Hall effect thumbsticks and triggers, the ability to switch the triggers to instant click actuation, replaceable thumbsticks with a place to put them in the dock, hot swappable batteries which can charge in the base station, and an OLED screen.</p><p>Aesthetically, I'm not very keen on the grey-and-white combo, but the black version looks lovely. It also reaches up to 1K polling on PC, which is fine by my books for a controller, but is a little behind some of the recent 8K competition.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="NozXePbbYYVpvooiFphP6i" name="image - 2026-09-08T123826.423" alt="Two SteelSeries Aeon Pro controllers, one in black, one in white." src="https://cdn.mos.cms.futurecdn.net/NozXePbbYYVpvooiFphP6i-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: SteelSeries)</span></figcaption></figure><p>All of this would be fine if it wasn't for that price tag, which does put a pretty big dampener on things. Our James recently reviewed the <a href="https://www.pcgamer.com/hardware/controllers/scuf-omega-review/" target="_blank">$220 Scuf Omega</a> and found it difficult to justify for that price tag given the competition in the likes of the $220 <a href="https://www.pcgamer.com/hardware/game-pads/razer-raiju-v3-pro-review/" target="_blank">Raiju V3 Pro</a>, the $200 <a href="https://www.pcgamer.com/hardware/controllers/razer-wolverine-v3-pro-8k-pc-review/" target="_blank">Razer Wolverine V3 Pro</a>, and the $90 <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-8k-aimlabs-edition-review/" target="_blank">GameSir G7 Pro 8K</a>.</p><p>I'd have to spend more time with it to know for sure, but I worry the SteelSeries will face the same fate by pricing itself so high, especially without 8K polling. Though for those who use both Xbox and PC, some might consider it worth the cost for that dual connectivity feature alone, though given pairing isn't the most difficult thing in the world, even then I'm not so sure.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Scuf Omega review ]]></title>
                                                                                                <dc:content><![CDATA[ <div data-widget-type="review" data-model-name="Scuf Omega" data-widget-title=""></div><p>In recent years, Scuf controllers have lost some of their purpose to me. I distinctly remember wanting a Scuf controller to play Call of Duty as a teenager, as they were one of the only brands making solid pro controllers with distinct visuals and partnership deals with pro players. </p><p>Now, you can get a pro controller from most major gaming brands, like Asus, Turtle Beach, and Razer, and you can even get cheaper pro controllers from the likes of GameSir. </p><p>As such, it's no longer good enough to just offer a few extra buttons; you need to do something truly unique… or truly affordable. </p><p>The Scuf Omega attempts the former and gets no way near the latter. Its central selling point is dual compatibility with PC and PlayStation, plus some extra triggers on the grips. But things have changed in recent years, and it needs strong build quality, great feel, and a host of other features to really justify that price. </p><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Buy if…</h3><div class="card__description-wrapper"><div class="card__description"><p>✅ <strong>You want a PS5 controller built for PC: </strong>The Scuf Omega is the closest I've felt to Sony's DualSense not made by Sony. </p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Do not buy if…</h3><div class="card__description-wrapper"><div class="card__description"><p>❌<strong> You won't use it on PS5:</strong> If you simply want a PC pro controller, there are much stronger choices from Scuf's competition. </p></div></div></div></div><h2 class="article-body__section" id="section-features"><span>Features</span></h2><div ><table><caption>Scuf Omega Pro Specs</caption><tbody><tr><td class="firstcol empty" ></td><td  ><p>Scuf Omega specs</p></td></tr><tr><td class="firstcol " ><p>Layout</p></td><td  ><p>Symmetrical</p></td></tr><tr><td class="firstcol " ><p>Thumbsticks </p></td><td  ><p>TMR</p></td></tr><tr><td class="firstcol " ><p>Connectivity</p></td><td  ><p>Wired and wireless (Bluetooth or 2.4 GHz), PC and PlayStation 5</p></td></tr><tr><td class="firstcol " ><p>Battery life</p></td><td  ><p>17 hours</p></td></tr><tr><td class="firstcol " ><p>Polling Rate</p></td><td  ><p>Up to 1,000 Hz (250 Hz on PS5)</p></td></tr><tr><td class="firstcol " ><p>Weight</p></td><td  ><p>254 g</p></td></tr><tr><td class="firstcol " ><p>Price</p></td><td  ><p><a href="https://www.scufgaming.com/uk/en/c/ps5/omega?srsltid=AfmBOopF2Hvr5fc--brD-a5MUzYvT8OmbEjkPIaCmOU7wEd4jY4cQK3S" target="_blank">$220</a> | £210 </p></td></tr></tbody></table></div><p>Perhaps the most notable thing about the Scuf Omega is the fact that it's sort of a Sony DualSense controller. Being officially licensed by Sony, it has a PlayStation button slapped on the front of it, and its curved sides, shape, and touchpad are all reminiscent of Sony's pad. Triggers and buttons sound different, but in the hand, it feels very familiar. Well, except for the five buttons down the bottom, the two buttons on the sides of the controller, and four paddles on the back. Oh, and also you can take the faceplate off. Okay, maybe it's closer to the DualSense Edge, actually. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="cAhnUzAHa9djmofFifqixJ" name="IMG_0447" alt="Scuf Omega controller outside from the bottom right" src="https://cdn.mos.cms.futurecdn.net/cAhnUzAHa9djmofFifqixJ-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>With the Scuf Omega, you also get most of the modern trappings of a pro controller. TMR sticks? It's got 'em. Extra buttons? You betcha. 8,000 Hz polling? Well, no. The Omega only goes up to 1,000 Hz on PC, and is locked to 250 Hz on PS5.</p><p>It's true that the average gamer does not need 8,000 Hz polling, as reaction time isn't great enough to actually justify it. That goes doubly so for wireless devices, which will see a reduced battery life the higher the polling rate goes. It's also true, though, that when you are paying up to $200 for a controller, you should probably expect competitive-level specs. </p><p>And that's strange, as all the extra buttons are intended for a more hardcore audience. If you can click buttons more efficiently, you can click them quicker. So, in some ways, it feels like a competitive device, and in others it doesn't. </p><p>Scuf has kitted the Omega with Omron mechanical switches, which allow for snappier, more responsive controls, and it has five 'G-keys' at the bottom of the controller that can be customised to do whatever control you like. </p><p>With around 15-20 hours of battery life, the Omega is better than Sony's offerings but offers less than the pro controllers from Razer and GameSir. </p><p>In the box, you get the controller's 2.4 GHz connector, a carry case, a 6 ft braided cable, plus three extra thumbsticks and blanking plates to replace the inner paddles and side buttons. That means the Omega can look like a relatively standard controller with some light tweaking. </p><h2 class="article-body__section" id="section-ergonomics"><span>Ergonomics</span></h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/wDwaX2pG8cLfLQwqJG3kvJ-1920-80.jpg" alt="Scuf Omega controller outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/cC9hTxqi3JKZh9KCJmsmuJ-1920-80.jpg" alt="Scuf Omega controller outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/HofVpHZGGbooXgSsncUurJ-1920-80.jpg" alt="Scuf Omega controller outside" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>I really quite like the Scuf Omega in the hands. It's light, comfortable, and its buttons are easy to press. It's the closest I've ever seen a competitor get to Sony's pads in size and feel, and that's not a bad thing. If it weren't for the DualSense's habit of getting stick drift, I'd use them much more than I do now. </p><p>I spent a few weeks trying to get the most out of all the Omega's buttons, and I give myself a pass on that test. The buttons on the side default to the bumpers. This control scheme means you can keep your fingers on the bumpers indefinitely and control both by squeezing on the controller. </p><p>In this position, I struggle to get purchase on the controller to hit the very bottom paddles. The side triggers didn't make their way into my regular rotation, but I did find myself using the bottom four buttons for games like Fortnite, and even as a quick-fire parry button in <a href="https://www.pcgamer.com/games/action/resonance-a-plague-tale-legacy-review/" target="_blank">Resonance: A Plague Tale Legacy</a>. </p><p>The problem with having so many buttons is I could never quite find a way to hold the controller where I could comfortably hit them all. But then again, there are so many buttons that you can afford to miss some and have backups in other places. It requires a little fine-tuning and customising, but I did find myself to be a tad quicker on the Omega than a traditional controller without any spare buttons. </p><h2 class="article-body__section" id="section-performance"><span>Performance</span></h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/E8wW6WhRVumc7yZfewmNzJ-1920-80.jpg" alt="Scuf Omega controller outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/YYCcAjUvb8PMxb4preimuJ-1920-80.jpg" alt="Scuf Omega controller outside" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Sony locks polling down to 250 Hz for non-official controllers on PS5, so that's the max there, but the 1,000 Hz polling feels like a noticeable miss on PC, given many high-end gamepads have now stepped things up to 8K. The controller has competitive intent with all those buttons, but you can find other options like the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/" target="_blank">GameSir G7 Pro</a> offering the same polling, plus stick drift-resistant sticks, and it even comes with a charging dock, too. The battery life on the Omega is okay for a controller, but a smart charging system would fit it much better. </p><p>As well as this, it has dual connectivity with Sony and PC, but only comes with one connector. The likes of the <a href="https://www.pcgamer.com/hardware/gaming-headsets/turtle-beach-stealth-700-gen-3-review/" target="_blank">Turtle Beach Stealth 700 Gen 3</a> and <a href="https://www.pcgamer.com/hardware/gaming-headsets/turtle-beach-stealth-pro-ii-review/" target="_blank">Stealth Pro II</a> come with two connectors to seamlessly swap between devices, and I wish Scuf went in the same direction here. You also swap connections by taking the faceplate off, which adds even more time to the process. </p><p>Buttons do feel smooth under the fingers, though; the D-pad is well defined and clicky, while the triggers feel snappy and consistent in both the linear and long-press mode. Scuf's Omicron mouse-like switches make snappy shooting in the likes of Fortnite super easy, and the TMR thumbsticks are easy to use. </p><p>I played the entirety of <a href="https://www.pcgamer.com/games/action/onimusha-way-of-the-sword-review/" target="_blank">Onimusha: Way of the Sword</a> on the Scuf Omega, and the abundance of buttons plus the comfortable feel made parrying, attacking, and running a breeze. </p><h2 class="article-body__section" id="section-build-quality"><span>Build quality </span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="sum7xrxvsJM7qPp3pg93vJ" name="IMG_0451" alt="Scuf Omega controller outside, with its faceplate off" src="https://cdn.mos.cms.futurecdn.net/sum7xrxvsJM7qPp3pg93vJ-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>Though I'm not afraid of breaking the controller if I squeeze it too hard, I do find this gamepad to be notably behind Razer's pro controller offerings in its firmness. It just doesn't have the same strength of materials. It also has a light rattle if I shake it. Admittedly, I don't spend much time shaking controllers, but it contributes to the controller feeling a little cheaper than its competitors. </p><h2 class="article-body__section" id="section-aesthetics"><span>Aesthetics</span></h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/YYCcAjUvb8PMxb4preimuJ-1920-80.jpg" alt="Scuf Omega controller outside from the bottom, in a hand" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/pn34ws9rKYEDhZmeYb4JuJ-1920-80.jpg" alt="Scuf Omega controller outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/tJph77DF6uhiq3PPZ8MUwJ-1920-80.jpg" alt="Scuf Omega controller outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/hdzXPpyRY2cvqsMBwreeuJ-1920-80.jpg" alt="Scuf Omega controller outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/qCw4wFsnkS3nQwkv2YyTpJ-1920-80.jpg" alt="Scuf Omega controller outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/YynK4gXkteyVdZUZwBHVkJ-1920-80.jpg" alt="Scuf Omega controller outside" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The Scuf Omega I've been testing is the Smoke model, and apart from the RGB strip down the bottom, it's pretty understated. There's a block pattern on the touchpad, and some light branding on the grips, but nothing too loud, especially when considering the <a href="https://www.scufgaming.com/uk/en/p/scuf-omega-respawn" target="_blank">other Omega options</a>. And, in fairness, the RGB serves a purpose here. The five buttons at the bottom are a mute button, a volume up and down button, and two customizable keys, so the RGB lighting helps signal which button is which. </p><p>The Smoke model is like a cross between black and grey. It's semi-transparent so you can kind of make out the internals, but it's not so transparent that it's reminiscent of the see-through console trend that was popular in the 2000s. </p><p>There's no hiding the mass of extra buttons on the controller, but Scuf has done a decent job blending them into the natural shape of it. The only part that feels odd is the two most central paddles on the back of the controller. I do quite like that you can take off the faceplate, meaning you could feasibly replace it, but there are no Omega faceplates on the Scuf store as of the time of writing. </p><h2 class="article-body__section" id="section-software"><span>Software</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="qCSTFKQC87aYGJAFy8iu7J" name="C (66)" alt="Screenshots from the Scuf Omega app, showing how to customize buttons" src="https://cdn.mos.cms.futurecdn.net/qCSTFKQC87aYGJAFy8iu7J-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: Scuf)</span></figcaption></figure><p>Scuf's software situation has always been a bit confusing to me. It does have software, but only software you can customise on its mobile phone app. So, if you want to toggle something for it while playing on your PC, you have to take your phone out and customise it from there. </p><p>The app lets you customise brightness, change polling rate, set SOCD, update firmware, and adjust calibration. The app itself works really well. It pairs your phone to your controller very quickly, is intuitive to use, and didn't falter during my time with it. </p><h2 class="article-body__section" id="section-value"><span>Value</span></h2><p>The Scuf Omega is a mighty tough sell. If you specifically want a PC and PS5 pro controller, the Razer Raiju V3 Pro is the same price, offers stronger build quality, and a higher polling rate on PC. The Omega does have two buttons on the side, and five extra on the bottom that the Raiju doesn't, but my grubby mitts would be reaching for the textured grips of the Raiju instead. </p><p>Then, if you simply want a strong pro controller with extra buttons, I'd be picking the Wolverine V3 Pro and its 8,000 Hz polling rate for the lower price of $200. </p><p>Finally, if you simply want something well built with a few extra buttons, I'd go significantly cheaper and pick up either the GameSir G7 Pro or <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-8k-aimlabs-edition-review/" target="_blank">GameSir G7 Pro 8K</a> for $70 and $80 respectively. These two GameSir picks also include a charging dock. </p><p>At 70% of its current cost, Scuf could have been on to a real winner here, but it's simply too expensive for a good but not great pad. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/scuf-omega-review/</link>
                                                                            <description>
                            <![CDATA[ Closer to an Alpha or Beta than an Omega. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">8NKgZmo3fxQQhxjqHrn2AB</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/PfiU4gZmnbsVoGaYsi3iY8-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 07 Sep 2026 15:02:11 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-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/PfiU4gZmnbsVoGaYsi3iY8-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Scuf Omega controller outside in a hand]]></media:description>                                                            <media:text><![CDATA[Scuf Omega controller outside in a hand]]></media:text>
                                <media:title type="plain"><![CDATA[Scuf Omega controller outside in a hand]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/PfiU4gZmnbsVoGaYsi3iY8-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div data-widget-type="review" data-model-name="Scuf Omega" data-widget-title=""></div><p>In recent years, Scuf controllers have lost some of their purpose to me. I distinctly remember wanting a Scuf controller to play Call of Duty as a teenager, as they were one of the only brands making solid pro controllers with distinct visuals and partnership deals with pro players. </p><p>Now, you can get a pro controller from most major gaming brands, like Asus, Turtle Beach, and Razer, and you can even get cheaper pro controllers from the likes of GameSir. </p><p>As such, it's no longer good enough to just offer a few extra buttons; you need to do something truly unique… or truly affordable. </p><p>The Scuf Omega attempts the former and gets no way near the latter. Its central selling point is dual compatibility with PC and PlayStation, plus some extra triggers on the grips. But things have changed in recent years, and it needs strong build quality, great feel, and a host of other features to really justify that price. </p><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Buy if…</h3><div class="card__description-wrapper"><div class="card__description"><p>✅ <strong>You want a PS5 controller built for PC: </strong>The Scuf Omega is the closest I've felt to Sony's DualSense not made by Sony. </p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Do not buy if…</h3><div class="card__description-wrapper"><div class="card__description"><p>❌<strong> You won't use it on PS5:</strong> If you simply want a PC pro controller, there are much stronger choices from Scuf's competition. </p></div></div></div></div><h2 class="article-body__section" id="section-features"><span>Features</span></h2><div ><table><caption>Scuf Omega Pro Specs</caption><tbody><tr><td class="firstcol empty" ></td><td  ><p>Scuf Omega specs</p></td></tr><tr><td class="firstcol " ><p>Layout</p></td><td  ><p>Symmetrical</p></td></tr><tr><td class="firstcol " ><p>Thumbsticks </p></td><td  ><p>TMR</p></td></tr><tr><td class="firstcol " ><p>Connectivity</p></td><td  ><p>Wired and wireless (Bluetooth or 2.4 GHz), PC and PlayStation 5</p></td></tr><tr><td class="firstcol " ><p>Battery life</p></td><td  ><p>17 hours</p></td></tr><tr><td class="firstcol " ><p>Polling Rate</p></td><td  ><p>Up to 1,000 Hz (250 Hz on PS5)</p></td></tr><tr><td class="firstcol " ><p>Weight</p></td><td  ><p>254 g</p></td></tr><tr><td class="firstcol " ><p>Price</p></td><td  ><p><a href="https://www.scufgaming.com/uk/en/c/ps5/omega?srsltid=AfmBOopF2Hvr5fc--brD-a5MUzYvT8OmbEjkPIaCmOU7wEd4jY4cQK3S" target="_blank">$220</a> | £210 </p></td></tr></tbody></table></div><p>Perhaps the most notable thing about the Scuf Omega is the fact that it's sort of a Sony DualSense controller. Being officially licensed by Sony, it has a PlayStation button slapped on the front of it, and its curved sides, shape, and touchpad are all reminiscent of Sony's pad. Triggers and buttons sound different, but in the hand, it feels very familiar. Well, except for the five buttons down the bottom, the two buttons on the sides of the controller, and four paddles on the back. Oh, and also you can take the faceplate off. Okay, maybe it's closer to the DualSense Edge, actually. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="cAhnUzAHa9djmofFifqixJ" name="IMG_0447" alt="Scuf Omega controller outside from the bottom right" src="https://cdn.mos.cms.futurecdn.net/cAhnUzAHa9djmofFifqixJ-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>With the Scuf Omega, you also get most of the modern trappings of a pro controller. TMR sticks? It's got 'em. Extra buttons? You betcha. 8,000 Hz polling? Well, no. The Omega only goes up to 1,000 Hz on PC, and is locked to 250 Hz on PS5.</p><p>It's true that the average gamer does not need 8,000 Hz polling, as reaction time isn't great enough to actually justify it. That goes doubly so for wireless devices, which will see a reduced battery life the higher the polling rate goes. It's also true, though, that when you are paying up to $200 for a controller, you should probably expect competitive-level specs. </p><p>And that's strange, as all the extra buttons are intended for a more hardcore audience. If you can click buttons more efficiently, you can click them quicker. So, in some ways, it feels like a competitive device, and in others it doesn't. </p><p>Scuf has kitted the Omega with Omron mechanical switches, which allow for snappier, more responsive controls, and it has five 'G-keys' at the bottom of the controller that can be customised to do whatever control you like. </p><p>With around 15-20 hours of battery life, the Omega is better than Sony's offerings but offers less than the pro controllers from Razer and GameSir. </p><p>In the box, you get the controller's 2.4 GHz connector, a carry case, a 6 ft braided cable, plus three extra thumbsticks and blanking plates to replace the inner paddles and side buttons. That means the Omega can look like a relatively standard controller with some light tweaking. </p><h2 class="article-body__section" id="section-ergonomics"><span>Ergonomics</span></h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/wDwaX2pG8cLfLQwqJG3kvJ-1920-80.jpg" alt="Scuf Omega controller outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/cC9hTxqi3JKZh9KCJmsmuJ-1920-80.jpg" alt="Scuf Omega controller outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/HofVpHZGGbooXgSsncUurJ-1920-80.jpg" alt="Scuf Omega controller outside" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>I really quite like the Scuf Omega in the hands. It's light, comfortable, and its buttons are easy to press. It's the closest I've ever seen a competitor get to Sony's pads in size and feel, and that's not a bad thing. If it weren't for the DualSense's habit of getting stick drift, I'd use them much more than I do now. </p><p>I spent a few weeks trying to get the most out of all the Omega's buttons, and I give myself a pass on that test. The buttons on the side default to the bumpers. This control scheme means you can keep your fingers on the bumpers indefinitely and control both by squeezing on the controller. </p><p>In this position, I struggle to get purchase on the controller to hit the very bottom paddles. The side triggers didn't make their way into my regular rotation, but I did find myself using the bottom four buttons for games like Fortnite, and even as a quick-fire parry button in <a href="https://www.pcgamer.com/games/action/resonance-a-plague-tale-legacy-review/" target="_blank">Resonance: A Plague Tale Legacy</a>. </p><p>The problem with having so many buttons is I could never quite find a way to hold the controller where I could comfortably hit them all. But then again, there are so many buttons that you can afford to miss some and have backups in other places. It requires a little fine-tuning and customising, but I did find myself to be a tad quicker on the Omega than a traditional controller without any spare buttons. </p><h2 class="article-body__section" id="section-performance"><span>Performance</span></h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/E8wW6WhRVumc7yZfewmNzJ-1920-80.jpg" alt="Scuf Omega controller outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/YYCcAjUvb8PMxb4preimuJ-1920-80.jpg" alt="Scuf Omega controller outside" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Sony locks polling down to 250 Hz for non-official controllers on PS5, so that's the max there, but the 1,000 Hz polling feels like a noticeable miss on PC, given many high-end gamepads have now stepped things up to 8K. The controller has competitive intent with all those buttons, but you can find other options like the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/" target="_blank">GameSir G7 Pro</a> offering the same polling, plus stick drift-resistant sticks, and it even comes with a charging dock, too. The battery life on the Omega is okay for a controller, but a smart charging system would fit it much better. </p><p>As well as this, it has dual connectivity with Sony and PC, but only comes with one connector. The likes of the <a href="https://www.pcgamer.com/hardware/gaming-headsets/turtle-beach-stealth-700-gen-3-review/" target="_blank">Turtle Beach Stealth 700 Gen 3</a> and <a href="https://www.pcgamer.com/hardware/gaming-headsets/turtle-beach-stealth-pro-ii-review/" target="_blank">Stealth Pro II</a> come with two connectors to seamlessly swap between devices, and I wish Scuf went in the same direction here. You also swap connections by taking the faceplate off, which adds even more time to the process. </p><p>Buttons do feel smooth under the fingers, though; the D-pad is well defined and clicky, while the triggers feel snappy and consistent in both the linear and long-press mode. Scuf's Omicron mouse-like switches make snappy shooting in the likes of Fortnite super easy, and the TMR thumbsticks are easy to use. </p><p>I played the entirety of <a href="https://www.pcgamer.com/games/action/onimusha-way-of-the-sword-review/" target="_blank">Onimusha: Way of the Sword</a> on the Scuf Omega, and the abundance of buttons plus the comfortable feel made parrying, attacking, and running a breeze. </p><h2 class="article-body__section" id="section-build-quality"><span>Build quality </span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="sum7xrxvsJM7qPp3pg93vJ" name="IMG_0451" alt="Scuf Omega controller outside, with its faceplate off" src="https://cdn.mos.cms.futurecdn.net/sum7xrxvsJM7qPp3pg93vJ-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>Though I'm not afraid of breaking the controller if I squeeze it too hard, I do find this gamepad to be notably behind Razer's pro controller offerings in its firmness. It just doesn't have the same strength of materials. It also has a light rattle if I shake it. Admittedly, I don't spend much time shaking controllers, but it contributes to the controller feeling a little cheaper than its competitors. </p><h2 class="article-body__section" id="section-aesthetics"><span>Aesthetics</span></h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/YYCcAjUvb8PMxb4preimuJ-1920-80.jpg" alt="Scuf Omega controller outside from the bottom, in a hand" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/pn34ws9rKYEDhZmeYb4JuJ-1920-80.jpg" alt="Scuf Omega controller outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/tJph77DF6uhiq3PPZ8MUwJ-1920-80.jpg" alt="Scuf Omega controller outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/hdzXPpyRY2cvqsMBwreeuJ-1920-80.jpg" alt="Scuf Omega controller outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/qCw4wFsnkS3nQwkv2YyTpJ-1920-80.jpg" alt="Scuf Omega controller outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/YynK4gXkteyVdZUZwBHVkJ-1920-80.jpg" alt="Scuf Omega controller outside" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The Scuf Omega I've been testing is the Smoke model, and apart from the RGB strip down the bottom, it's pretty understated. There's a block pattern on the touchpad, and some light branding on the grips, but nothing too loud, especially when considering the <a href="https://www.scufgaming.com/uk/en/p/scuf-omega-respawn" target="_blank">other Omega options</a>. And, in fairness, the RGB serves a purpose here. The five buttons at the bottom are a mute button, a volume up and down button, and two customizable keys, so the RGB lighting helps signal which button is which. </p><p>The Smoke model is like a cross between black and grey. It's semi-transparent so you can kind of make out the internals, but it's not so transparent that it's reminiscent of the see-through console trend that was popular in the 2000s. </p><p>There's no hiding the mass of extra buttons on the controller, but Scuf has done a decent job blending them into the natural shape of it. The only part that feels odd is the two most central paddles on the back of the controller. I do quite like that you can take off the faceplate, meaning you could feasibly replace it, but there are no Omega faceplates on the Scuf store as of the time of writing. </p><h2 class="article-body__section" id="section-software"><span>Software</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="qCSTFKQC87aYGJAFy8iu7J" name="C (66)" alt="Screenshots from the Scuf Omega app, showing how to customize buttons" src="https://cdn.mos.cms.futurecdn.net/qCSTFKQC87aYGJAFy8iu7J-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: Scuf)</span></figcaption></figure><p>Scuf's software situation has always been a bit confusing to me. It does have software, but only software you can customise on its mobile phone app. So, if you want to toggle something for it while playing on your PC, you have to take your phone out and customise it from there. </p><p>The app lets you customise brightness, change polling rate, set SOCD, update firmware, and adjust calibration. The app itself works really well. It pairs your phone to your controller very quickly, is intuitive to use, and didn't falter during my time with it. </p><h2 class="article-body__section" id="section-value"><span>Value</span></h2><p>The Scuf Omega is a mighty tough sell. If you specifically want a PC and PS5 pro controller, the Razer Raiju V3 Pro is the same price, offers stronger build quality, and a higher polling rate on PC. The Omega does have two buttons on the side, and five extra on the bottom that the Raiju doesn't, but my grubby mitts would be reaching for the textured grips of the Raiju instead. </p><p>Then, if you simply want a strong pro controller with extra buttons, I'd be picking the Wolverine V3 Pro and its 8,000 Hz polling rate for the lower price of $200. </p><p>Finally, if you simply want something well built with a few extra buttons, I'd go significantly cheaper and pick up either the GameSir G7 Pro or <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-8k-aimlabs-edition-review/" target="_blank">GameSir G7 Pro 8K</a> for $70 and $80 respectively. These two GameSir picks also include a charging dock. </p><p>At 70% of its current cost, Scuf could have been on to a real winner here, but it's simply too expensive for a good but not great pad. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ The best wired PC controller has been knocked down to $77—so long as you don't mind it in white ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="product"><a data-dimension112="d566585e-a853-11f1-81d8-35d29dec8a89" data-action="Deal Block" data-label="Valor Pro" data-dimension48="Valor Pro" data-dimension25="$76.99" href="https://www.amazon.com/dp/B0DTB3QCS5" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:618px;"><p class="vanilla-image-block" style="padding-top:99.84%;"><img id="vgsaXpAMZKbxs9u6HUFV2W" name="image" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/vgsaXpAMZKbxs9u6HUFV2W-1920-80.png" mos="" align="middle" fullscreen="" width="618" height="617" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>This controller is comfy, responsive, and all its various buttons, sticks, and triggers feel very high-quality. There's little to dislike about the Valor Pro unless you really don't want to keep that cable. This is a great price for a Scuf controller, too.</p><p><strong>Key Specs: Wired USB Type-C | Xbox, Windows | Hall effect thumbsticks</strong><a class="view-deal button" href="https://www.amazon.com/dp/B0DTB3QCS5" target="_blank" rel="nofollow" data-dimension112="d566585e-a853-11f1-81d8-35d29dec8a89" data-action="Deal Block" data-label="Valor Pro" data-dimension48="Valor Pro" data-dimension25="$76.99">View Deal</a></p></div><p>Even though wireless PC gaming peripherals are commonplace now, I'm still battling wires. A wireless controller is great… right up until it needs to be plugged in to charge. Crowded 2.4 GHz wireless bands and latency issues don't help. Well, to heck with it—is a fully wired controller really so bad, then?</p><p>The wired version of the Scuf Valor Pro far exceeds 'not all that bad'; it's simply the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/" target="_blank">best wired PC controller</a> we've ever tested. I'll get into what makes it better than all the rest shortly, but the thing to highlight right now is that it's currently down to its lowest ever price. So long as you don't mind picking up the white colourway, you can get the Scuf Valor Pro wired performance Xbox controller<a href="https://www.amazon.com/dp/B0DTB3QCS5?th=1" target="_blank"> for only $77 from Amazon</a>.</p><p>$33 off is nothing to sneeze at, especially as the Scuf Valor Pro doesn't skimp on either premium features or feel. Our Jacob was pretty smitten in his <a href="https://www.pcgamer.com/hardware/controllers/scuf-valor-pro-review/" target="_blank">Scuf Valor Pro review</a>, writing, "The Valor Pro is very high-quality, from its mechanical buttons to its Hall effect thumbsticks and satisfyingly clacky back paddles, not to mention its sheer versatility thanks to trigger mode toggles, back paddle profiles, and modular thumbsticks."</p><ul><li><strong>Join us on </strong><a href="https://whatsapp.com/channel/0029VaZEGnpAu3aYJa8PuS2t" target="_blank"><strong>WhatsApp for daily deals</strong></a><strong>, direct to your phone.</strong></li></ul><p>That said, he also thought the controller's stated target audience, the 'aspiring esports pro' crowd, was an awkward pitch. He writes, "In the land of PCs, controllers are rarely used for pro gaming. In racing, sports, and fighting games, sure, but those are a few very specific esports genres and many gamers in the latter often prefer arcade fight sticks to controllers anyway."</p><p>And while he has a point, I'd like to offer a counter: myself, the console gaming interloper. Having spent many years writing about all things PlayStation earlier in my career, I'm simply more comfortable with a gamepad, even on PC. The textured grips and premium materials of the wired Scuf Valor Pro calls to my tiny mitts. The clickyness of the buttons and sticks are a siren song to my button-mashing self. Besides, it's not just the pros that can enjoy pro features.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/rY3T4gPV9pdUimMFcze5ga-1920-80.jpg" alt="Scuf Valor Pro wired controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/opyHQTkvQFq2Ny35haH8ja-1920-80.jpg" alt="Scuf Valor Pro wired controller rear view of paddles" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/mL4beaA4oAUvKfHcYPge9a-1920-80.jpg" alt="Scuf Valor Pro wired controller packaging" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/hWc8FWZ6pemQdQj2izoH7a-1920-80.jpg" alt="Scuf Valor Pro wired controller in-package" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/sZAgzn4Dnc6EGhM3NTsZea-1920-80.jpg" alt="Scuf Valor Pro wired controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/DJxppJVyiBkBnFFWaznPha-1920-80.jpg" alt="Scuf Valor Pro wired controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Ja8baSNEkQtk7tHuZB6Nha-1920-80.jpg" alt="Scuf Valor Pro wired controller with faceplate off" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/CwpaU8WXbLjHN4Q6rsjx7a-1920-80.jpg" alt="Scuf Valor Pro wired controller close-up" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Part of this premium package includes extra buttons on the gamepad's underside. I'm not usually a fan, but the ones on the Scuf Valor Pro have certainly made a far more positive impression. </p><p>Jacob likes them too, writing, "I was immediately enamoured with the Scuf paddles' quality, design, and placement. My middle fingers fall into place effortlessly and can press down on the primary paddles or move upwards/inwards a little to press the secondary paddle buttons—an ingenious design that just works. And not only does it work, but it works with the help of some seriously satisfying clicks."</p><p>Now, as lovely as that all is, an MSRP of $100 was a big ask for a wired controller. Thankfully, a 30% discount at Amazon makes it much easier to say 'heck yes!'</p><h2 id="check-out-the-rest-of-amazon-s-pc-controller-deals">👉 <a href="https://www.amazon.com/b?node=402045011&ref=sr_nr_n_1" target="_blank">Check out the rest of Amazon's PC controller deals</a> 👈</h2> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/the-best-wired-pc-controller-has-been-knocked-down-to-usd77-so-long-as-you-dont-mind-it-in-white/</link>
                                                                            <description>
                            <![CDATA[ Wires? Why Not? ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">A97h9Ug45WeF5xPLdcoJyf</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/ak7PURqcLxs5WzGrdR3cPW-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 04 Sep 2026 11:57:42 +0000</pubDate>                                                                                                                                <updated>Fri, 11 Sep 2026 11:06:31 +0000</updated>
                                                                                                                                            <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jess Kinghorn ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY-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/ak7PURqcLxs5WzGrdR3cPW-1920-80.jpg">
                                                            <media:credit><![CDATA[Scuf]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The wired version of the Scuf Valor Pro is seen in white, from the front and the back. They both float in the funky PCG deals void.]]></media:description>                                                            <media:text><![CDATA[The wired version of the Scuf Valor Pro is seen in white, from the front and the back. They both float in the funky PCG deals void.]]></media:text>
                                <media:title type="plain"><![CDATA[The wired version of the Scuf Valor Pro is seen in white, from the front and the back. They both float in the funky PCG deals void.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/ak7PURqcLxs5WzGrdR3cPW-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="product"><a data-dimension112="d566585e-a853-11f1-81d8-35d29dec8a89" data-action="Deal Block" data-label="Valor Pro" data-dimension48="Valor Pro" data-dimension25="$76.99" href="https://www.amazon.com/dp/B0DTB3QCS5" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:618px;"><p class="vanilla-image-block" style="padding-top:99.84%;"><img id="vgsaXpAMZKbxs9u6HUFV2W" name="image" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/vgsaXpAMZKbxs9u6HUFV2W-1920-80.png" mos="" align="middle" fullscreen="" width="618" height="617" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>This controller is comfy, responsive, and all its various buttons, sticks, and triggers feel very high-quality. There's little to dislike about the Valor Pro unless you really don't want to keep that cable. This is a great price for a Scuf controller, too.</p><p><strong>Key Specs: Wired USB Type-C | Xbox, Windows | Hall effect thumbsticks</strong><a class="view-deal button" href="https://www.amazon.com/dp/B0DTB3QCS5" target="_blank" rel="nofollow" data-dimension112="d566585e-a853-11f1-81d8-35d29dec8a89" data-action="Deal Block" data-label="Valor Pro" data-dimension48="Valor Pro" data-dimension25="$76.99">View Deal</a></p></div><p>Even though wireless PC gaming peripherals are commonplace now, I'm still battling wires. A wireless controller is great… right up until it needs to be plugged in to charge. Crowded 2.4 GHz wireless bands and latency issues don't help. Well, to heck with it—is a fully wired controller really so bad, then?</p><p>The wired version of the Scuf Valor Pro far exceeds 'not all that bad'; it's simply the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/" target="_blank">best wired PC controller</a> we've ever tested. I'll get into what makes it better than all the rest shortly, but the thing to highlight right now is that it's currently down to its lowest ever price. So long as you don't mind picking up the white colourway, you can get the Scuf Valor Pro wired performance Xbox controller<a href="https://www.amazon.com/dp/B0DTB3QCS5?th=1" target="_blank"> for only $77 from Amazon</a>.</p><p>$33 off is nothing to sneeze at, especially as the Scuf Valor Pro doesn't skimp on either premium features or feel. Our Jacob was pretty smitten in his <a href="https://www.pcgamer.com/hardware/controllers/scuf-valor-pro-review/" target="_blank">Scuf Valor Pro review</a>, writing, "The Valor Pro is very high-quality, from its mechanical buttons to its Hall effect thumbsticks and satisfyingly clacky back paddles, not to mention its sheer versatility thanks to trigger mode toggles, back paddle profiles, and modular thumbsticks."</p><ul><li><strong>Join us on </strong><a href="https://whatsapp.com/channel/0029VaZEGnpAu3aYJa8PuS2t" target="_blank"><strong>WhatsApp for daily deals</strong></a><strong>, direct to your phone.</strong></li></ul><p>That said, he also thought the controller's stated target audience, the 'aspiring esports pro' crowd, was an awkward pitch. He writes, "In the land of PCs, controllers are rarely used for pro gaming. In racing, sports, and fighting games, sure, but those are a few very specific esports genres and many gamers in the latter often prefer arcade fight sticks to controllers anyway."</p><p>And while he has a point, I'd like to offer a counter: myself, the console gaming interloper. Having spent many years writing about all things PlayStation earlier in my career, I'm simply more comfortable with a gamepad, even on PC. The textured grips and premium materials of the wired Scuf Valor Pro calls to my tiny mitts. The clickyness of the buttons and sticks are a siren song to my button-mashing self. Besides, it's not just the pros that can enjoy pro features.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/rY3T4gPV9pdUimMFcze5ga-1920-80.jpg" alt="Scuf Valor Pro wired controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/opyHQTkvQFq2Ny35haH8ja-1920-80.jpg" alt="Scuf Valor Pro wired controller rear view of paddles" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/mL4beaA4oAUvKfHcYPge9a-1920-80.jpg" alt="Scuf Valor Pro wired controller packaging" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/hWc8FWZ6pemQdQj2izoH7a-1920-80.jpg" alt="Scuf Valor Pro wired controller in-package" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/sZAgzn4Dnc6EGhM3NTsZea-1920-80.jpg" alt="Scuf Valor Pro wired controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/DJxppJVyiBkBnFFWaznPha-1920-80.jpg" alt="Scuf Valor Pro wired controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Ja8baSNEkQtk7tHuZB6Nha-1920-80.jpg" alt="Scuf Valor Pro wired controller with faceplate off" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/CwpaU8WXbLjHN4Q6rsjx7a-1920-80.jpg" alt="Scuf Valor Pro wired controller close-up" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Part of this premium package includes extra buttons on the gamepad's underside. I'm not usually a fan, but the ones on the Scuf Valor Pro have certainly made a far more positive impression. </p><p>Jacob likes them too, writing, "I was immediately enamoured with the Scuf paddles' quality, design, and placement. My middle fingers fall into place effortlessly and can press down on the primary paddles or move upwards/inwards a little to press the secondary paddle buttons—an ingenious design that just works. And not only does it work, but it works with the help of some seriously satisfying clicks."</p><p>Now, as lovely as that all is, an MSRP of $100 was a big ask for a wired controller. Thankfully, a 30% discount at Amazon makes it much easier to say 'heck yes!'</p><h2 id="check-out-the-rest-of-amazon-s-pc-controller-deals">👉 <a href="https://www.amazon.com/b?node=402045011&ref=sr_nr_n_1" target="_blank">Check out the rest of Amazon's PC controller deals</a> 👈</h2>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Someone has managed to run Zork on the Steam Controller's internal hardware, but it's risky business ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="high" data-lazy-src="https://www.youtube-nocookie.com/embed/M5XUR8Fnjf4" allowfullscreen></iframe></div></div><p>As we've reported on many times over the years, Valve's hardware efforts attract the attention of the DIY project community like no other. The <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">Steam Controller</a> is no exception, as creator Owen Feldman has managed to get classic text adventure <a href="https://www.pcgamer.com/games/classic-text-adventure-zork-is-going-open-source-but-im-side-eyeing-microsofts-announcement-about-it-hard/" target="_blank">Zork</a> running on its internal hardware.</p><p>Feldman has documented the project <a href="https://owenfeldman.com/Reverse%20Engineering/Steam%20Controller%202026/" target="_blank">on their blog</a>, but it wasn't always a smooth ride to convince the controller to play ball (via <a href="https://hackaday.com/2026/08/20/running-zork-on-the-steam-controller/" target="_blank">Hackaday</a>). An internal tool discovered within a Steam hardware updater folder was used to flash the firmware—but Feldman managed to <a href="https://github.com/safijari/openpuck/discussions/185#discussioncomment-17733791" target="_blank">temporarily brick their controller</a> in the process.</p><p>After recovering the controller, a custom Rust-based program was used to emulate an Intel 8080 CPU and run the <a href="https://en.wikipedia.org/wiki/CP/M" target="_blank">CP/M-80</a> operating system on the Steam Controller's internal processor. As the device has no keyboard or screen, the built-in USB connection was used for I/O streaming purposes.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-e47VRX"></div>                            </div>                            <script src="https://kwizly.com/embed/e47VRX.js" async></script><p>So, what do you do first when you've successfully convinced a controller to emulate a CPU and run an OS all on its own? Well, you play games on it, of course. </p><p>A floppy disk (hey, remember those?) copy of Zork was used to load the game via an external drive, resulting in a Steam Controller rig that's been connected to a remarkable number of add-on devices. I doubt it knows exactly what hit it.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1919px;"><p class="vanilla-image-block" style="padding-top:56.28%;"><img id="pNnhNDkM4iHpeDF9siHpSY" name="IMG_4263_modified" alt="The Steam Controller on a desk next to its charging dock and a keyboard." src="https://cdn.mos.cms.futurecdn.net/pNnhNDkM4iHpeDF9siHpSY-1920-80.jpg" mos="" align="middle" fullscreen="" width="1919" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Still, the end result looks like a very playable experience. Feldman describes the process of creating the custom program as "1514 lines of pain," but what they've ended up with is the PC hardware equivalent of a magic trick. Who knew the Steam Controller could play games in its own right?</p><p>However, I think I'll be leaving this Steam Controller-flashing method well alone, and not just because my Rust coding abilities are non-existent. Feldman warns that bricking your device through the flashing process is a real possibility, and given that it's <a href="https://store.steampowered.com/hardware/steamcontroller" target="_blank">a $99 piece of kit</a>, perhaps it's better to leave this one to the braver hardware hackers among us.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/someone-has-managed-to-run-zork-on-the-steam-controllers-internal-hardware-but-its-risky-business/</link>
                                                                            <description>
                            <![CDATA[ And not the Tom Cruise kind, either. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">B4RJ9RxD2s24Pa7RTCRbWh</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/eodU4CmU7kSxoUnAF2T6HY-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 21 Aug 2026 13:24:53 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Andy Edser ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE-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/eodU4CmU7kSxoUnAF2T6HY-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:description>                                                            <media:text><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:text>
                                <media:title type="plain"><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/eodU4CmU7kSxoUnAF2T6HY-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="high" data-lazy-src="https://www.youtube-nocookie.com/embed/M5XUR8Fnjf4" allowfullscreen></iframe></div></div><p>As we've reported on many times over the years, Valve's hardware efforts attract the attention of the DIY project community like no other. The <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">Steam Controller</a> is no exception, as creator Owen Feldman has managed to get classic text adventure <a href="https://www.pcgamer.com/games/classic-text-adventure-zork-is-going-open-source-but-im-side-eyeing-microsofts-announcement-about-it-hard/" target="_blank">Zork</a> running on its internal hardware.</p><p>Feldman has documented the project <a href="https://owenfeldman.com/Reverse%20Engineering/Steam%20Controller%202026/" target="_blank">on their blog</a>, but it wasn't always a smooth ride to convince the controller to play ball (via <a href="https://hackaday.com/2026/08/20/running-zork-on-the-steam-controller/" target="_blank">Hackaday</a>). An internal tool discovered within a Steam hardware updater folder was used to flash the firmware—but Feldman managed to <a href="https://github.com/safijari/openpuck/discussions/185#discussioncomment-17733791" target="_blank">temporarily brick their controller</a> in the process.</p><p>After recovering the controller, a custom Rust-based program was used to emulate an Intel 8080 CPU and run the <a href="https://en.wikipedia.org/wiki/CP/M" target="_blank">CP/M-80</a> operating system on the Steam Controller's internal processor. As the device has no keyboard or screen, the built-in USB connection was used for I/O streaming purposes.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-e47VRX"></div>                            </div>                            <script src="https://kwizly.com/embed/e47VRX.js" async></script><p>So, what do you do first when you've successfully convinced a controller to emulate a CPU and run an OS all on its own? Well, you play games on it, of course. </p><p>A floppy disk (hey, remember those?) copy of Zork was used to load the game via an external drive, resulting in a Steam Controller rig that's been connected to a remarkable number of add-on devices. I doubt it knows exactly what hit it.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1919px;"><p class="vanilla-image-block" style="padding-top:56.28%;"><img id="pNnhNDkM4iHpeDF9siHpSY" name="IMG_4263_modified" alt="The Steam Controller on a desk next to its charging dock and a keyboard." src="https://cdn.mos.cms.futurecdn.net/pNnhNDkM4iHpeDF9siHpSY-1920-80.jpg" mos="" align="middle" fullscreen="" width="1919" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Still, the end result looks like a very playable experience. Feldman describes the process of creating the custom program as "1514 lines of pain," but what they've ended up with is the PC hardware equivalent of a magic trick. Who knew the Steam Controller could play games in its own right?</p><p>However, I think I'll be leaving this Steam Controller-flashing method well alone, and not just because my Rust coding abilities are non-existent. Feldman warns that bricking your device through the flashing process is a real possibility, and given that it's <a href="https://store.steampowered.com/hardware/steamcontroller" target="_blank">a $99 piece of kit</a>, perhaps it's better to leave this one to the braver hardware hackers among us.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ This wild new PC pro controller runs its own custom OS across a 2.79-inch color display slapped beneath the thumbsticks ]]></title>
                                                                                                <dc:content><![CDATA[ <p>As $70-$100 controllers are only getting more and more impressive, you might be wondering what the pro controller market can do to make you spend that extra $100 or so. It turns out the answer might be to shove a screen on it. Ain't that always the way?</p><p>That's what you will find on the Genki Manta, a new controller live on <a href="https://www.kickstarter.com/projects/humanthings/manta?ref=76m7zg" target="_blank">Kickstarter</a>. It uses Manta OS, which is Genki's own operating system, and if you're wondering why a controller would even need an operating system, Genki notes that this allows on-the-fly fine-tuning without the need for any extra devices. You can customise its tri-stage triggers, adjust dead zones, change haptic feedback, and more via the onboard screen and OS.</p><p>And the controller is pretty impressive even outside the whole 'OS and built-in screen' thing. You get up to 8,000 Hz polling while wired (though only 1,000 Hz via 2.4 GHz wireless), a range of over 10 meters, 150 hours of battery via Bluetooth LE 6, as well as TMR joysticks and Hall effect triggers. The 16 MB of internal storage can be used to load apps onto Manta OS, and expandable storage might be offered as a stretch goal, according to Genki. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-e47VRX"></div>                            </div>                            <script src="https://kwizly.com/embed/e47VRX.js" async></script><p>Normally I'm pretty cynical about Kickstarter projects, but the LA-based Human Things and its range of Genki products have been successful on Kickstarter for some time. In fact, I got a Genki dock a couple of years ago and was impressed with the performance. That's not to say the Genki Manta will necessarily be the same quality, but the company has a history of successful kickstarters. </p><p>Genki says the Manta is "Beyond the Pro Controller" on its Kickstarter, and it has many of the features one would expect from a pro controller, like four paddles on the bottom and two extra buttons next to the bumpers. Naturally, all of these are remappable via the controller's software. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/rGDYbQB9FG2zNN9LVvbeRA-1920-80.jpg" alt="Genki's new controller about to go live on Kickstarter with a screen in the middle." /><figcaption><small role="credit">Genki</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/rrRonMrhRF2i6MgFuJFCRA-1920-80.jpg" alt="Genki's new controller about to go live on Kickstarter with a screen in the middle." /><figcaption><small role="credit">Genki</small></figcaption></figure></figure><p>One thing that does intrigue me about the screen and OS combo is that the controller can swap to keyboard and mouse controls. It even has a toggle on the pad to swap between controller and keyboard mode. It's not yet clear if the display is a touch screen, or how Genki anticipates players using the controller to navigate a mouse.</p><p>Whether or not it can balance the screen and extra buttons in its 280-290 g (around the weight of the Xbox Series X controller) frame will be anyone's guess, and naturally that software will have to be very smooth to be worth the effort. I am, however, quite intrigued by the controller, and I'm still deciding if it's curiosity or morbid curiosity. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/vHcDXpSF6j2joTxmhFjfRA-1920-80.jpg" alt="Genki's new controller about to go live on Kickstarter with a screen in the middle." /><figcaption><small role="credit">Genki</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/UFbmiKo7LAfoTzRqRbXdRA-1920-80.jpg" alt="Genki's new controller about to go live on Kickstarter with a screen in the middle." /><figcaption><small role="credit">Genki</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/2bEP9TzupCYQ7nvgmAkaRA-1920-80.jpg" alt="Genki's new controller about to go live on Kickstarter with a screen in the middle." /><figcaption><small role="credit">Genki</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/cF7hdaN8kz9RbpZ4A66aRA-1920-80.jpg" alt="Genki's new controller about to go live on Kickstarter with a screen in the middle." /><figcaption><small role="credit">Genki</small></figcaption></figure></figure><p>We don't yet have an estimated shipping date (assuming the Kickstarter is successful), but we do have a price point: $189 for the Super Early Bird pricer and $279 for the retail price. That is a lot of money, and our pick for the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-high-end-controller" target="_blank">best high-end controller</a> right now, the <a href="https://www.pcgamer.com/hardware/controllers/razer-wolverine-v3-pro-8k-pc-review/" target="_blank">Razer Wolverine V3 Pro 8K PC</a>, is $200 at retail. The Wolverine also offers TMR thumbsticks and Hall effect triggers, though you are getting a superior 8,000 Hz polling via wireless, and we can guarantee the build quality of the Wolverine, as we've actually had it in our hands. </p><p>This is all before mentioning that you can get a controller for $70 (like the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/" target="_blank">Gamesir G7 Pro</a>) that competes with pro controllers in build quality and the featureset department. Even the more expensive <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-8k-aimlabs-edition-review/" target="_blank">Gamesir G7 Pro 8K</a> (at $80) is a decent choice if you really want 8,000 Hz polling. </p><p>This is to say that, even with its own OS and a 2.79-inch screen, the Genki Manta has its work cut out for it. It's a big swing for a first controller, but we'll have to get our hands on it to see if it's actually worth that hefty asking price. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/this-wild-new-pc-pro-controller-runs-its-own-custom-os-across-a-2-79-inch-color-display-slapped-beneath-the-thumbsticks/</link>
                                                                            <description>
                            <![CDATA[ Genki says it is "Beyond the Pro Controller". ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">tfzHN7mcvAMG9QUsXh6Xnh</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/J5YuC5QH6SCd7YTEtjZfRA-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 20 Aug 2026 18:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-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/J5YuC5QH6SCd7YTEtjZfRA-1920-80.jpg">
                                                            <media:credit><![CDATA[Genki]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Genki&#039;s new controller about to go live on Kickstarter with a screen in the middle.]]></media:description>                                                            <media:text><![CDATA[Genki&#039;s new controller about to go live on Kickstarter with a screen in the middle.]]></media:text>
                                <media:title type="plain"><![CDATA[Genki&#039;s new controller about to go live on Kickstarter with a screen in the middle.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/J5YuC5QH6SCd7YTEtjZfRA-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>As $70-$100 controllers are only getting more and more impressive, you might be wondering what the pro controller market can do to make you spend that extra $100 or so. It turns out the answer might be to shove a screen on it. Ain't that always the way?</p><p>That's what you will find on the Genki Manta, a new controller live on <a href="https://www.kickstarter.com/projects/humanthings/manta?ref=76m7zg" target="_blank">Kickstarter</a>. It uses Manta OS, which is Genki's own operating system, and if you're wondering why a controller would even need an operating system, Genki notes that this allows on-the-fly fine-tuning without the need for any extra devices. You can customise its tri-stage triggers, adjust dead zones, change haptic feedback, and more via the onboard screen and OS.</p><p>And the controller is pretty impressive even outside the whole 'OS and built-in screen' thing. You get up to 8,000 Hz polling while wired (though only 1,000 Hz via 2.4 GHz wireless), a range of over 10 meters, 150 hours of battery via Bluetooth LE 6, as well as TMR joysticks and Hall effect triggers. The 16 MB of internal storage can be used to load apps onto Manta OS, and expandable storage might be offered as a stretch goal, according to Genki. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-e47VRX"></div>                            </div>                            <script src="https://kwizly.com/embed/e47VRX.js" async></script><p>Normally I'm pretty cynical about Kickstarter projects, but the LA-based Human Things and its range of Genki products have been successful on Kickstarter for some time. In fact, I got a Genki dock a couple of years ago and was impressed with the performance. That's not to say the Genki Manta will necessarily be the same quality, but the company has a history of successful kickstarters. </p><p>Genki says the Manta is "Beyond the Pro Controller" on its Kickstarter, and it has many of the features one would expect from a pro controller, like four paddles on the bottom and two extra buttons next to the bumpers. Naturally, all of these are remappable via the controller's software. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/rGDYbQB9FG2zNN9LVvbeRA-1920-80.jpg" alt="Genki's new controller about to go live on Kickstarter with a screen in the middle." /><figcaption><small role="credit">Genki</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/rrRonMrhRF2i6MgFuJFCRA-1920-80.jpg" alt="Genki's new controller about to go live on Kickstarter with a screen in the middle." /><figcaption><small role="credit">Genki</small></figcaption></figure></figure><p>One thing that does intrigue me about the screen and OS combo is that the controller can swap to keyboard and mouse controls. It even has a toggle on the pad to swap between controller and keyboard mode. It's not yet clear if the display is a touch screen, or how Genki anticipates players using the controller to navigate a mouse.</p><p>Whether or not it can balance the screen and extra buttons in its 280-290 g (around the weight of the Xbox Series X controller) frame will be anyone's guess, and naturally that software will have to be very smooth to be worth the effort. I am, however, quite intrigued by the controller, and I'm still deciding if it's curiosity or morbid curiosity. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/vHcDXpSF6j2joTxmhFjfRA-1920-80.jpg" alt="Genki's new controller about to go live on Kickstarter with a screen in the middle." /><figcaption><small role="credit">Genki</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/UFbmiKo7LAfoTzRqRbXdRA-1920-80.jpg" alt="Genki's new controller about to go live on Kickstarter with a screen in the middle." /><figcaption><small role="credit">Genki</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/2bEP9TzupCYQ7nvgmAkaRA-1920-80.jpg" alt="Genki's new controller about to go live on Kickstarter with a screen in the middle." /><figcaption><small role="credit">Genki</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/cF7hdaN8kz9RbpZ4A66aRA-1920-80.jpg" alt="Genki's new controller about to go live on Kickstarter with a screen in the middle." /><figcaption><small role="credit">Genki</small></figcaption></figure></figure><p>We don't yet have an estimated shipping date (assuming the Kickstarter is successful), but we do have a price point: $189 for the Super Early Bird pricer and $279 for the retail price. That is a lot of money, and our pick for the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-high-end-controller" target="_blank">best high-end controller</a> right now, the <a href="https://www.pcgamer.com/hardware/controllers/razer-wolverine-v3-pro-8k-pc-review/" target="_blank">Razer Wolverine V3 Pro 8K PC</a>, is $200 at retail. The Wolverine also offers TMR thumbsticks and Hall effect triggers, though you are getting a superior 8,000 Hz polling via wireless, and we can guarantee the build quality of the Wolverine, as we've actually had it in our hands. </p><p>This is all before mentioning that you can get a controller for $70 (like the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/" target="_blank">Gamesir G7 Pro</a>) that competes with pro controllers in build quality and the featureset department. Even the more expensive <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-8k-aimlabs-edition-review/" target="_blank">Gamesir G7 Pro 8K</a> (at $80) is a decent choice if you really want 8,000 Hz polling. </p><p>This is to say that, even with its own OS and a 2.79-inch screen, the Genki Manta has its work cut out for it. It's a big swing for a first controller, but we'll have to get our hands on it to see if it's actually worth that hefty asking price. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ The latest Windows 11 update is borking some multiplayer games, but Arc Raiders' developer has a quick workaround ]]></title>
                                                                                                <dc:content><![CDATA[ <p>If your games started unexpectedly crashing after getting a Windows update on or after August 11, you aren't alone. And Microsoft says it's looking into the problem. Microsoft <a href="https://learn.microsoft.com/en-us/windows/release-health/status-windows-11-25h2#microsoft-has-received-reports-of-certain-games-becoming-unresponsive" target="_blank">reports </a>the following "symptoms" popped up for "a limited number of games":</p><ul><li>The game application becomes unresponsive</li><li>The game application closes without notice</li><li>The error "EXCEPTION_ACCESS_VIOLATION" is displayed</li><li>The device restarting without warning</li></ul><p>Microsoft has only confirmed crashes in Arc Raiders, Marvel Tōkon: Fighting Souls, and The Finals so far, but you can send feedback to Microsoft with the <a href="https://support.microsoft.com/help/4021566" target="_blank">Feedback Hub app</a> if you've also found a game crashing since the update.</p><p>Microsoft says it is investigating to see if the latest Windows update is responsible. As of right now, the only client versions that have reported crashes are 25H2 and 24H2, so 26H1 is currently in the clear.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-e47VRX"></div>                            </div>                            <script src="https://kwizly.com/embed/e47VRX.js" async></script><p>But Embark, the developer of Arc Raiders, claims on Discord that the “This is a crash related to the file inpoutx64.sys, which changed with the Windows update" (via <a href="https://www.windowslatest.com/2026/08/16/windows-11-kb5121003-is-triggering-game-crashes-and-causing-other-problems-on-some-pcs/" target="_blank">Windows Latest</a>). </p><p>If Embark is correct, it looks like you might have to wait until a future Windows update for this problem to be officially fixed. However, Embark notes that you can type ‘sc stop inpoutx64’ into Command Prompt, then type ‘sc delete inpoutx64’ and delete the inpoutx64.sys file from your drivers folder to fix the problem in the short term. We haven't personally tried this method as we haven't had any crashing issues, so do so at your own risk. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="y6MkVCFTCJ5rv6AR98fvLS" name="C (35)" alt="A screenshot of the uninstall updates option in Windows 11" src="https://cdn.mos.cms.futurecdn.net/y6MkVCFTCJ5rv6AR98fvLS-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: Microsoft)</span></figcaption></figure><p>Update <a href="https://support.microsoft.com/en-us/servicing/os/windows-11/2026/08/kb5121003-windows-11-24h2-25h2-security-update" target="_blank">KB5121003</a>, which is said to be the update responsible for the crashes, contains over <a href="https://msrc.microsoft.com/update-guide/releaseNote/2026-Aug" target="_blank">400 security updates</a>, although it's not clear yet if changes related to these fixes are responsible for the issues..</p><p>Some users have also reported graphical corruption problems after the latest Windows update. One user on <a href="https://www.reddit.com/r/WindowsHelp/comments/1vr0owv/kb5121003_causing_severe_graphical_corruption/" target="_blank">Reddit</a> demonstrates problems in Valorant and Roblox using both a dedicated graphics card and an integrated graphics card. <a href="https://www.reddit.com/r/WindowsHelp/comments/1vr0owv/comment/p4anm2g/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button" target="_blank">Some users</a> report that uninstalling KB5121003 has fixed black screen problems.</p><p>If you have run into the problem and want to test rolling back your Windows version, you can do so by following the steps below:</p><ul><li>Search <strong>Windows Update</strong> on the Start tab</li><li>Click on <strong>Update history</strong></li><li>Scroll down and click <strong>Uninstall updates</strong></li><li>Uninstall update <strong>KB5120708</strong></li></ul><p>We don't yet have a timeline for when we can expect a patch, but uninstalling the latest update may be a good workaround until then. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/the-latest-windows-11-update-is-borking-some-multiplayer-games-but-arc-raiders-developer-has-a-quick-workaround/</link>
                                                                            <description>
                            <![CDATA[ If you've been affected, it might be worth rolling back your Windows version. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">LZBHRicxUgEKPFN7SmAMS3</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/cfRFGsMSVs36ZLNFgKUbaU-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 20 Aug 2026 11:00:04 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-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/cfRFGsMSVs36ZLNFgKUbaU-1920-80.jpg">
                                                            <media:credit><![CDATA[Embark]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Arc Raiders: Key art featuring two raiders holding weapons and standing in the middle of the road, turning to run away from a large Queen spider-like robot on the buildings in the background.]]></media:description>                                                            <media:text><![CDATA[Arc Raiders: Key art featuring two raiders holding weapons and standing in the middle of the road, turning to run away from a large Queen spider-like robot on the buildings in the background.]]></media:text>
                                <media:title type="plain"><![CDATA[Arc Raiders: Key art featuring two raiders holding weapons and standing in the middle of the road, turning to run away from a large Queen spider-like robot on the buildings in the background.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/cfRFGsMSVs36ZLNFgKUbaU-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>If your games started unexpectedly crashing after getting a Windows update on or after August 11, you aren't alone. And Microsoft says it's looking into the problem. Microsoft <a href="https://learn.microsoft.com/en-us/windows/release-health/status-windows-11-25h2#microsoft-has-received-reports-of-certain-games-becoming-unresponsive" target="_blank">reports </a>the following "symptoms" popped up for "a limited number of games":</p><ul><li>The game application becomes unresponsive</li><li>The game application closes without notice</li><li>The error "EXCEPTION_ACCESS_VIOLATION" is displayed</li><li>The device restarting without warning</li></ul><p>Microsoft has only confirmed crashes in Arc Raiders, Marvel Tōkon: Fighting Souls, and The Finals so far, but you can send feedback to Microsoft with the <a href="https://support.microsoft.com/help/4021566" target="_blank">Feedback Hub app</a> if you've also found a game crashing since the update.</p><p>Microsoft says it is investigating to see if the latest Windows update is responsible. As of right now, the only client versions that have reported crashes are 25H2 and 24H2, so 26H1 is currently in the clear.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-e47VRX"></div>                            </div>                            <script src="https://kwizly.com/embed/e47VRX.js" async></script><p>But Embark, the developer of Arc Raiders, claims on Discord that the “This is a crash related to the file inpoutx64.sys, which changed with the Windows update" (via <a href="https://www.windowslatest.com/2026/08/16/windows-11-kb5121003-is-triggering-game-crashes-and-causing-other-problems-on-some-pcs/" target="_blank">Windows Latest</a>). </p><p>If Embark is correct, it looks like you might have to wait until a future Windows update for this problem to be officially fixed. However, Embark notes that you can type ‘sc stop inpoutx64’ into Command Prompt, then type ‘sc delete inpoutx64’ and delete the inpoutx64.sys file from your drivers folder to fix the problem in the short term. We haven't personally tried this method as we haven't had any crashing issues, so do so at your own risk. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="y6MkVCFTCJ5rv6AR98fvLS" name="C (35)" alt="A screenshot of the uninstall updates option in Windows 11" src="https://cdn.mos.cms.futurecdn.net/y6MkVCFTCJ5rv6AR98fvLS-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: Microsoft)</span></figcaption></figure><p>Update <a href="https://support.microsoft.com/en-us/servicing/os/windows-11/2026/08/kb5121003-windows-11-24h2-25h2-security-update" target="_blank">KB5121003</a>, which is said to be the update responsible for the crashes, contains over <a href="https://msrc.microsoft.com/update-guide/releaseNote/2026-Aug" target="_blank">400 security updates</a>, although it's not clear yet if changes related to these fixes are responsible for the issues..</p><p>Some users have also reported graphical corruption problems after the latest Windows update. One user on <a href="https://www.reddit.com/r/WindowsHelp/comments/1vr0owv/kb5121003_causing_severe_graphical_corruption/" target="_blank">Reddit</a> demonstrates problems in Valorant and Roblox using both a dedicated graphics card and an integrated graphics card. <a href="https://www.reddit.com/r/WindowsHelp/comments/1vr0owv/comment/p4anm2g/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button" target="_blank">Some users</a> report that uninstalling KB5121003 has fixed black screen problems.</p><p>If you have run into the problem and want to test rolling back your Windows version, you can do so by following the steps below:</p><ul><li>Search <strong>Windows Update</strong> on the Start tab</li><li>Click on <strong>Update history</strong></li><li>Scroll down and click <strong>Uninstall updates</strong></li><li>Uninstall update <strong>KB5120708</strong></li></ul><p>We don't yet have a timeline for when we can expect a patch, but uninstalling the latest update may be a good workaround until then. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ GameSir T7 Pro Sugar Whirl Wireless Controller for PC and Xbox  ]]></title>
                                                                                                <dc:content><![CDATA[ <div data-widget-type="review" data-model-name="GameSir T7 Pro Sugar Whirl" data-widget-title=""></div><p>First, let me admit my biases: Yes, this controller's raspberry ripple blend of pink, blue, and purple really does work for me. That said, the GameSir T7 Pro Sugar Whirl has more going for it than just pretty face buttons, featuring TMR sticks alongside Hall effect triggers. Gorgeous and precise, this is also a wireless controller that's actually compatible with the notoriously picky Xbox consoles.</p><p>Speaking of an untethered experience, this gamepad's charging situation annoys me significantly less than other wireless options. Basically, as someone with a perennially cluttered desk, I didn't think I'd ever be pro charging docks. However, this GameSir gamepad has finally shown me the light.</p><p>Thanks to the charging dock, the T7 Pro offers a pretty seamless wireless experience. That ease of use extends to the refreshingly straightforward software package, which offers a wealth of options to make this Pro pad feel your own. Beyond deadzone tweaking and even motion control fiddling, I personally could have done with just a few more RGB lighting customisation options.</p><p>Unfortunately, the ergonomic design of the T7 Pro may not play well with tiny hand bandits such as myself. Make no mistake, this is far from the heftiest or chunkiest wireless controller. As such, I was surprised to find that certain button placements strained my small palms.</p><p>Furthermore, with a <a href="https://gamesir.com/products/gamesir-gamesir-t7-pro-sugar-whirl/buy" target="_blank">$90/£100</a>, I have the nagging feeling I'm simply paying more for the cute colourway and a bit of extra connectivity I probably won't even use. The simple fact is that if you're not fussed about either RGB lighting or wireless Xbox connectivity, you can get a great Pro pad for less than this asking price.</p><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Buy if...</h3><div class="card__description-wrapper"><div class="card__description"><p>✅ <strong>You want a wireless controller for PC and Xbox:</strong> There are cheaper options offering wireless connectivity for Xbox, but not loads with TMR sticks and even fewer that offer such a fetching colourway.<br><br>✅ <strong>You're always forgetting to charge your wireless pad:</strong> The charging dock is set it and forget it, bolstering the already decent onboard battery.</p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Don't buy if...</h3><div class="card__description-wrapper"><div class="card__description"><p>❌<strong> You've got small hands:</strong> Though far from the chunkiest controller, the placement of some of the triggers strained my small palms.<br><br>❌ <strong>You're on a budget: </strong>Even with Xbox wireless connectivity, nearly 100 smackers is still a big ask. Plus, you can definitely find great Pro pads for less money.</p></div></div></div></div><h2 class="article-body__section" id="section-features"><span>Features</span></h2><div ><table><tbody><tr><td class="firstcol " ><p><strong></strong></p></td><td  ><p><strong>GameSir T7 Pro Sugar Whirl</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Layout</strong></p></td><td  ><p>Asymmetrical</p></td></tr><tr><td class="firstcol " ><p><strong>Thumbsticks</strong></p></td><td  ><p>TMR (Tunnel magnetoresistance)</p></td></tr><tr><td class="firstcol " ><p><strong>Face buttons</strong></p></td><td  ><p>A, B, X, Y, Xbox button, Menu, Share, 'M', Toggle View</p></td></tr><tr><td class="firstcol " ><p><strong>Rear buttons</strong></p></td><td  ><p>LB, LT, L4, RB, RT, R4, 2x trigger stop switches (Hall effect triggers)</p></td></tr><tr><td class="firstcol " ><p><strong>Rumble</strong></p></td><td  ><p>4x rumble motors (one in each grip and each trigger)</p></td></tr><tr><td class="firstcol " ><p><strong>Gyro</strong> </p></td><td  ><p>6-axis gyroscope only on PC</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>Tri-mode for XBOX and PC; Bluetooth for Android</p></td></tr><tr><td class="firstcol " ><p><strong>Battery</strong></p></td><td  ><p> 1050 mAH</p></td></tr><tr><td class="firstcol " ><p><strong>Polling rate</strong></p></td><td  ><p>Up to 1000 Hz on PC, but 250 Hz on XBOX</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>236g</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p><a href="https://gamesir.com/products/gamesir-gamesir-t7-pro-sugar-whirl/buy" target="_blank">$90/£100</a></p></td></tr></tbody></table></div><p>'Tri-mode' connectivity encompasses the choice of a wired USB connection, a wireless 2.4 GHz connection, or a wireless Bluetooth connection. While that's nothing to write home about for a PC pad, the T7 Pro offering this same choice of connection for Xbox consoles is because Microsoft's consoles are notoriously picky. Buying one peripheral you can use with multiple gaming devices is simply cost effective—even if you are only getting a 250 Hz polling on console, compared to PC's up to 1,000 Hz rate.</p><p>TMR (or tunnel magnetoresistance) tech in the asymmetric sticks, and Hall effect triggers are also welcome features. TMR is slightly more precise than Hall effect, but both magnetic techs work on a similar principle that essentially banishes stick drift and sticky triggers. Basically, with this magnetic tech there are far fewer points of physical contact within the mechanism, and therefore much less of a risk of internal stick components getting worn away over time.</p><p>As a console interloper, I do think it's a shame that more PC games don't leverage rumble. Whereas the PlayStation 5's DualSense controllers are capable of impressively detailed haptic feedback, Xbox controllers still use a number of rumble motors. As such, you'll find four rumble motors here in the T7 Pro.</p><p>Speaking of that console connection, the T7 Pro also enjoys gyro controls. It's 6-axis, and this motion functionality only works on PC, but you can customise it to an impressive degree in the GameSir Nexus software.</p><h2 class="article-body__section" id="section-ergonomics"><span>Ergonomics</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="rHnnkgUrrpTMhZTimVtEYg" name="GameSir T7 Pro Sugar Whirl Wireless Controller" alt="The GameSir T7 Pro Sugar Whirl Wireless Controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/rHnnkgUrrpTMhZTimVtEYg-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 T7 Pro features a firmly attached plastic faceplate, so you're committed to its pink-blue-purple design. Smooth plastic front grips are paired with a textured underside. The membrane D-pad and face buttons are not the loveliest thing I've tapped upon, but they're all satisfyingly clicky to press.</p><p>A plastic body doesn't make this the most premium feeling controller, but it does keep things relatively lightweight. As a result, the T7 Pro weighs in at about 236 grams on its own, making it lighter than a fair few of the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-wired-controller" target="_blank">best PC controllers</a>. There's also fairly minimal creaking even when I give the grips some real welly. It may not feel super premium, but it's built well enough. That said, the largely plastic construction does leave the gamepad feeling a few bucks/quid short of its $90/£100 price tag.</p><p>As this is an Xbox compatible wireless controller, you're getting asymmetric sticks to match. That's usually not a problem for me and my tiny mitts, though hoovering up gold medals in <a href="https://www.pcgamer.com/games/action/denshattack-review/" target="_blank">Denshattack!</a> proved quite the workout.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="R5dxDRytHuvwhZG5QKARag" name="GameSir T7 Pro Sugar Whirl Wireless Controller" alt="The GameSir T7 Pro Sugar Whirl Wireless Controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/R5dxDRytHuvwhZG5QKARag-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>After an extended session of braking and drifting, my left hand was beginning to feel a little bit sore. This may be because the bottom triggers are bolstered by a particularly chunky finger rest, widening the gap between my left trigger-tapping pointer and my middle finger. </p><p>Remappable back buttons also hang out within reach of where my middle fingers rest. L4 and R4 are low-profile buttons with textured covers that make them easy to find by touch (which I find vastly preferable to the DualSense Edge's great big back flippers). Still, for those with stumpy digits like me, that could mean more stretching and discomfort over time.</p><div><blockquote><p>If you've got mitts lacking in width or short phalanges like me, be warned.</p></blockquote></div><p>It was a similar story of strain when I tested out the pad's 2-stop trigger settings in <a href="https://www.pcgamer.com/games/fps/doom-the-dark-ages-review/" target="_blank">Doom: The Dark Ages</a>. Blasting baddies pulled at my palms and knuckles after a short time with Id's latest, even after reducing the triggers' actuation distance. That's a shame because the T7 Pro Swirl really isn't the chunkiest or heaviest of controllers my tiny phalanges have had to tango with. </p><p>In <a href="https://www.pcgamer.com/games/action/i-got-to-play-dead-as-disco-early-and-its-a-vivid-unrestrained-romp-that-lets-you-brawl-through-music-videos-like-a-kung-fu-baby-driver/" target="_blank">Dead As Disco's</a> more face-button-focused gameplay, my hands otherwise don''t feel anywhere near as stressed out. That suggests to me that what's causing the strain has less to do with the heft of the controller, and maybe more to do with the high-up placement of the T7 Pro's pronounced top trigger buttons. If you've got mitts lacking in width or short phalanges like me, be warned.</p><h2 class="article-body__section" id="section-performance"><span>Performance</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Z3wTjTCzsG9aNyHpfjE9cg" name="GameSir T7 Pro Sugar Whirl Wireless Controller" alt="The GameSir T7 Pro Sugar Whirl Wireless Controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/Z3wTjTCzsG9aNyHpfjE9cg-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 I repeatedly try to pull off a Finger Heel 180 trick in the train game of Tony Hawk's finger boarding fever dreams, Denshattack!, TMR tech is definitely welcome as I wiggle the right stick for all its worth. Textured tops ensure the sticks don't slip out of grip as I try to rack up an even bigger combo. Add to that a 1,000 Hz top polling rate, and these sticks are just as flicky and responsive as you could want.</p><p>Then there are the usual membrane face buttons and a D-Pad. These press down cleanly, and are satisfyingly clicky. On the reverse of the pad are two remappable back buttons as well. Unlike the shiny face buttons, these are low-profile and subtly textured so you can easily find them by feel.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="wKWavWjsVDjcCJgeQNhwVg" name="GameSir T7 Pro Sugar Whirl Wireless Controller" alt="The GameSir T7 Pro Sugar Whirl Wireless Controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/wKWavWjsVDjcCJgeQNhwVg-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 responsive Hall effect triggers also feature '2-stage trigger stops'. There are two flicky switches on the pad's underside, and flicking one of these down allows you to press the corresponding trigger all the way to the bottom. Flicking the switch up offers a much shorter actuation distance for each bottom trigger. This gives pressing the bottom triggers a clicky quality, like the top triggers.</p><p>Clicky triggers are often popular among the competitive crowd, as the cut-down actuation distance shaves off precious milliseconds between plays. Such a saving of time is largely wasted on me, though, as my most intense online play experience recently was getting lost in <a href="https://www.pcgamer.com/games/puzzle/big-walk-review/" target="_blank">Big Walk</a>. Similarly, a polling rate of 1,000 Hz is more than enough for most intents and purposes, but the esports sickos will likely be left wanting more.</p><h2 class="article-body__section" id="section-aesthetics"><span>Aesthetics</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="8kNBq8Vc2FsvKw8qZB6Ljg" name="GameSir T7 Pro Sugar Whirl Wireless Controller" alt="The GameSir T7 Pro Sugar Whirl Wireless Controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/8kNBq8Vc2FsvKw8qZB6Ljg-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 may already know about <a href="https://www.pcgamer.com/hardware/controllers/i-enjoy-touching-all-the-hardware-bits-that-pass-through-pcgs-offices-but-this-bit-of-kit-was-all-but-made-for-my-upsettingly-small-baby-hands/" target="_blank">my penchant for purple</a>. This controller not only takes aim at my particular colour-based obsession, but it also mixes in a raspberry ripple-esque combination of blues and pinks across the charging dock, faceplate, and buttons—hence the 'Sugar Whirl' name. I particularly enjoy the two sticks being different colours.</p><p>Under the incandescent lighting found in PC Gamer towers, it can look a little tacky. Natural light is generally kinder to the colourway, but it really comes into its own in-game. By default, RGB lighting bathes the controller in an icy blue light that complements the colourway, illuminating the pad's underside and shining through the face buttons. This gives the AXBY buttons an almost pearlescent vibe when in active use that I really enjoy.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="vjPkRFVXZTdghspeCW7ogg" name="GameSir T7 Pro Sugar Whirl Wireless Controller" alt="The GameSir T7 Pro Sugar Whirl Wireless Controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/vjPkRFVXZTdghspeCW7ogg-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'm much less keen on the green goo glow the controller emits while it's charging. Thankfully, you can either dial this down or turn it off completely in the GameSir Nexus software, not to mention all the other options you have for tinkering with the Sugar Whirl's RGB lighting.</p><h2 class="article-body__section" id="section-software"><span>Software</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="mmyTZF84mweGRu7zHBC9fe" name="GameSir Nexus software - with GameSir T7 Pro Sugar Whirl Wireless Controller" alt="Screenshots of all the options available in the GameSir Nexus software." src="https://cdn.mos.cms.futurecdn.net/mmyTZF84mweGRu7zHBC9fe-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: GameSir)</span></figcaption></figure><p>You can finely tweak a variety of settings in the GameSir Nexus software across four different profiles, with each one accessed via a combination of the centre 'M' button and the facebuttons. The software itself can either be <a href="https://gamesir.sa/en/pages/gamesir-nexus?srsltid=AfmBOoreDr-kPYdDEXEFz1tGT2cyIF1HH-bongsR-m-bERYE_8X2A3Km" target="_blank">manually downloaded from here</a>, or from the Microsoft store, but lacks anything in the way of a web-based app.</p><p>The smallest amount of software tinkering allowed me to tone down the green goo glow the controller emits while charging, and I've set it up so that the pad automatically connects to my PC as soon as I lift it from the charging cradle. That's more than enough for me, but if you want to get lost in the software weeds, Nexus offers a wealth of features to play with.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/E76kwT48RMPSiyDnKtGrce-1920-80.jpg" alt="Screenshots of all the options available in the GameSir Nexus software." /><figcaption><small role="credit">GameSir</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/FTv2AVs9NZU9Lf3iqpLWee-1920-80.jpg" alt="Screenshots of all the options available in the GameSir Nexus software." /><figcaption><small role="credit">GameSir</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/U7VXdJXDfZU4QnzxVCwsee-1920-80.jpg" alt="Screenshots of all the options available in the GameSir Nexus software." /><figcaption><small role="credit">GameSir</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/69NFLXMqrTJwaXFNokdBde-1920-80.jpg" alt="Screenshots of all the options available in the GameSir Nexus software." /><figcaption><small role="credit">GameSir</small></figcaption></figure></figure><p>For a start, you can finely tune the stick and trigger deadzones, plus much more besides via an array of sliders, toggles and presets. You can also tune the pad's motion controls to a similarly in-depth degree, tinker with the intensity of its rumble motors, and, of course, fiddle with the RGB. Broadly speaking, the software is how you're going to get the most out of this Pro pad; there's a wealth of options to make the T7 Pro your own, though the lighting settings could do with just a few more customisation options. Seeing a swirling rainbow illuminating my gamepad from within is cool and all, but I would have appreciated the option to more finely tune the lights' hue.</p><p>RGB customisation was the only category of setting I found wanting, though. While I probably won't touch half of the settings available, I appreciate how clearly the Nexus software lays out all of the options. If the software's home screen selection overwhelms, you can click through to a specific focussed category of settings, and mess around from there. It's intuitive and straightforward to use.</p><h2 class="article-body__section" id="section-battery"><span>Battery</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="DrUc7LTW929Ebc2iaFWPmg" name="GameSir T7 Pro Sugar Whirl Wireless Controller" alt="The GameSir T7 Pro Sugar Whirl Wireless Controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/DrUc7LTW929Ebc2iaFWPmg-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 major thing that annoys me about most wireless peripherals is how often the hardware needs to become wired again to charge. A wireless PC controller can have the biggest battery in the world, but it will eventually resemble its wired counterparts sooner or later. </p><p>Not to knock any of <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-wired-controller" target="_blank">the best wired controllers</a>, but it's not the experience I'm personally looking for as a pad-wielding PC Gamer; a wire is just one more thing that can make a mess at my already cluttered desk, either getting chewed up by my gaming chair castors, or by knocking over a bunch of my Miku Hatsune figurines during a particularly heated gamer moment.</p><p>Thanks to the GameSir T7 Pro Sugar Whirl though, I'm a charging cradle convert. The dock here features a USB-C port, with a compartment on its underside for the 2.4 GHz dongle. Yes, that means there <em>is </em>still a wire involved if you want to use the dock as a wireless receiver, though you can easily cable-manage that out of the way (and nowhere near, say, your army of Miku).</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="EzdrpWwoeCuPFCqgsX9Bag" name="GameSir T7 Pro Sugar Whirl Wireless Controller" alt="The GameSir T7 Pro Sugar Whirl Wireless Controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/EzdrpWwoeCuPFCqgsX9Bag-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>Thanks to metal pins in the cradle and contact points on the underside of the pad itself, the pad can easily charge back up when it's not in use. The gamepad's 1050 mAh battery is decent enough on its own though, holding up through numerous, marathon sessions of Denshattack! without requiring a charge. If I forgot to place the pad back in the charging cradle one day, I still had plenty of juice to take back to the track the next. But obviously, playing at 1,000 Hz polling and with the RGB lights whirling away will drain the battery much faster. </p><p>It means I no longer have to remember to charge this bad boy up myself, because I'll just pop it back onto the dock when I'm done. It's a set-it-and-forget-it sort of setup that my forgetful-self very much appreciates. Couple that with the software setting that makes the gamepad automatically connect to your PC as soon as you lift it from the charging cradle, and it's a really seamless experience.</p><h2 class="article-body__section" id="section-value"><span>Value</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ULKrTtcit9UBdnRwqfPwdg" name="GameSir T7 Pro Sugar Whirl Wireless Controller" alt="The GameSir T7 Pro Sugar Whirl Wireless Controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/ULKrTtcit9UBdnRwqfPwdg-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>Like I said before, the Sugar Whirl's wireless Xbox connectivity will be a headline feature for some. If that really is key for you, the <a href="https://www.pcgamer.com/hardware/controllers/easysmx-d10-review/" target="_blank">EasySMX D10</a> is one other option that also comes with TMR sticks, a charging dock, 'elite 2-way trigger locks,' and costs half the price. </p><p>Otherwise, the difference in quality is arguably most noticeable in the D10's complete lack of software, and 'just okay' D-Pad and triggers. The D10 even comes in a '<a href="https://www.easysmx.com/products/easysmx-d10-multiplatform-gaming-controller-with-tmr-joysticks-trigger-lock-charging-dock" target="_blank">Farout Purple</a>' colourway I may have to pick up myself.</p><p>If you're already willing to drop a serious chunk of change on a controller, the newer <a href="https://www.pcgamer.com/hardware/controllers/razer-wolverine-v3-pro-8k-pc-review/" target="_blank">Razer Wolverine V3 Pro 8K PC</a> more than earns the crown as the best high end controller, though this update does drop Xbox connectivity and haptic feedback.</p><div><blockquote><p>The best controller overall is the GameSir G7 Pro Tri-Mode, and it costs around 10 bucks less.</p></blockquote></div><p>A much more likely option is the elephant in the room: <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-wired-controller" target="_blank">the best controller overall</a> is the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/" target="_blank">GameSir G7 Pro Tri-Mode</a>, and it costs around 10 bucks less. The key differences are that the Tri-Mode enjoys a magnetic faceplate, plus a better battery, but completely lacks RGB lighting, and only works on Xbox via a <em>wired</em> connection. </p><p>These will be minor omissions for most, leaving little contest between the two controllers; if you're not endeared to the Sugar Whirl's cotton candy colourway and you're not fussed about connecting to your Xbox wirelessly, the GameSir G7 Pro Tri-Mode is still the obvious choice.</p><p>As for me though, I just can't resist a fun colourway. I can see myself spending many more hours with the Sugar Whirl, as much as it sometimes pains my poor palms. Even so, if it was my money, I'd struggle to justify putting down nearly 100 smackers on it.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/game-pads/gamesir-t7-pro-sugar-whirl-review/</link>
                                                                            <description>
                            <![CDATA[ Not quite the sweetest of treats. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">UqYpGJHzTjVNBBmU2SrrJn</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/mx7yo6es2nmRYz34Vbuagg-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 14 Aug 2026 13:13:19 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jess Kinghorn ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY-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/mx7yo6es2nmRYz34Vbuagg-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The GameSir T7 Pro Sugar Whirl Wireless Controller seen from various angles.]]></media:description>                                                            <media:text><![CDATA[The GameSir T7 Pro Sugar Whirl Wireless Controller seen from various angles.]]></media:text>
                                <media:title type="plain"><![CDATA[The GameSir T7 Pro Sugar Whirl Wireless Controller seen from various angles.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/mx7yo6es2nmRYz34Vbuagg-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div data-widget-type="review" data-model-name="GameSir T7 Pro Sugar Whirl" data-widget-title=""></div><p>First, let me admit my biases: Yes, this controller's raspberry ripple blend of pink, blue, and purple really does work for me. That said, the GameSir T7 Pro Sugar Whirl has more going for it than just pretty face buttons, featuring TMR sticks alongside Hall effect triggers. Gorgeous and precise, this is also a wireless controller that's actually compatible with the notoriously picky Xbox consoles.</p><p>Speaking of an untethered experience, this gamepad's charging situation annoys me significantly less than other wireless options. Basically, as someone with a perennially cluttered desk, I didn't think I'd ever be pro charging docks. However, this GameSir gamepad has finally shown me the light.</p><p>Thanks to the charging dock, the T7 Pro offers a pretty seamless wireless experience. That ease of use extends to the refreshingly straightforward software package, which offers a wealth of options to make this Pro pad feel your own. Beyond deadzone tweaking and even motion control fiddling, I personally could have done with just a few more RGB lighting customisation options.</p><p>Unfortunately, the ergonomic design of the T7 Pro may not play well with tiny hand bandits such as myself. Make no mistake, this is far from the heftiest or chunkiest wireless controller. As such, I was surprised to find that certain button placements strained my small palms.</p><p>Furthermore, with a <a href="https://gamesir.com/products/gamesir-gamesir-t7-pro-sugar-whirl/buy" target="_blank">$90/£100</a>, I have the nagging feeling I'm simply paying more for the cute colourway and a bit of extra connectivity I probably won't even use. The simple fact is that if you're not fussed about either RGB lighting or wireless Xbox connectivity, you can get a great Pro pad for less than this asking price.</p><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Buy if...</h3><div class="card__description-wrapper"><div class="card__description"><p>✅ <strong>You want a wireless controller for PC and Xbox:</strong> There are cheaper options offering wireless connectivity for Xbox, but not loads with TMR sticks and even fewer that offer such a fetching colourway.<br><br>✅ <strong>You're always forgetting to charge your wireless pad:</strong> The charging dock is set it and forget it, bolstering the already decent onboard battery.</p></div></div></div></div><div class="card card--standard card--rows-2 card--align-inline"><div class="card__content"><h3 class="card__title">Don't buy if...</h3><div class="card__description-wrapper"><div class="card__description"><p>❌<strong> You've got small hands:</strong> Though far from the chunkiest controller, the placement of some of the triggers strained my small palms.<br><br>❌ <strong>You're on a budget: </strong>Even with Xbox wireless connectivity, nearly 100 smackers is still a big ask. Plus, you can definitely find great Pro pads for less money.</p></div></div></div></div><h2 class="article-body__section" id="section-features"><span>Features</span></h2><div ><table><tbody><tr><td class="firstcol " ><p><strong></strong></p></td><td  ><p><strong>GameSir T7 Pro Sugar Whirl</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Layout</strong></p></td><td  ><p>Asymmetrical</p></td></tr><tr><td class="firstcol " ><p><strong>Thumbsticks</strong></p></td><td  ><p>TMR (Tunnel magnetoresistance)</p></td></tr><tr><td class="firstcol " ><p><strong>Face buttons</strong></p></td><td  ><p>A, B, X, Y, Xbox button, Menu, Share, 'M', Toggle View</p></td></tr><tr><td class="firstcol " ><p><strong>Rear buttons</strong></p></td><td  ><p>LB, LT, L4, RB, RT, R4, 2x trigger stop switches (Hall effect triggers)</p></td></tr><tr><td class="firstcol " ><p><strong>Rumble</strong></p></td><td  ><p>4x rumble motors (one in each grip and each trigger)</p></td></tr><tr><td class="firstcol " ><p><strong>Gyro</strong> </p></td><td  ><p>6-axis gyroscope only on PC</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>Tri-mode for XBOX and PC; Bluetooth for Android</p></td></tr><tr><td class="firstcol " ><p><strong>Battery</strong></p></td><td  ><p> 1050 mAH</p></td></tr><tr><td class="firstcol " ><p><strong>Polling rate</strong></p></td><td  ><p>Up to 1000 Hz on PC, but 250 Hz on XBOX</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>236g</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p><a href="https://gamesir.com/products/gamesir-gamesir-t7-pro-sugar-whirl/buy" target="_blank">$90/£100</a></p></td></tr></tbody></table></div><p>'Tri-mode' connectivity encompasses the choice of a wired USB connection, a wireless 2.4 GHz connection, or a wireless Bluetooth connection. While that's nothing to write home about for a PC pad, the T7 Pro offering this same choice of connection for Xbox consoles is because Microsoft's consoles are notoriously picky. Buying one peripheral you can use with multiple gaming devices is simply cost effective—even if you are only getting a 250 Hz polling on console, compared to PC's up to 1,000 Hz rate.</p><p>TMR (or tunnel magnetoresistance) tech in the asymmetric sticks, and Hall effect triggers are also welcome features. TMR is slightly more precise than Hall effect, but both magnetic techs work on a similar principle that essentially banishes stick drift and sticky triggers. Basically, with this magnetic tech there are far fewer points of physical contact within the mechanism, and therefore much less of a risk of internal stick components getting worn away over time.</p><p>As a console interloper, I do think it's a shame that more PC games don't leverage rumble. Whereas the PlayStation 5's DualSense controllers are capable of impressively detailed haptic feedback, Xbox controllers still use a number of rumble motors. As such, you'll find four rumble motors here in the T7 Pro.</p><p>Speaking of that console connection, the T7 Pro also enjoys gyro controls. It's 6-axis, and this motion functionality only works on PC, but you can customise it to an impressive degree in the GameSir Nexus software.</p><h2 class="article-body__section" id="section-ergonomics"><span>Ergonomics</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="rHnnkgUrrpTMhZTimVtEYg" name="GameSir T7 Pro Sugar Whirl Wireless Controller" alt="The GameSir T7 Pro Sugar Whirl Wireless Controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/rHnnkgUrrpTMhZTimVtEYg-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 T7 Pro features a firmly attached plastic faceplate, so you're committed to its pink-blue-purple design. Smooth plastic front grips are paired with a textured underside. The membrane D-pad and face buttons are not the loveliest thing I've tapped upon, but they're all satisfyingly clicky to press.</p><p>A plastic body doesn't make this the most premium feeling controller, but it does keep things relatively lightweight. As a result, the T7 Pro weighs in at about 236 grams on its own, making it lighter than a fair few of the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-wired-controller" target="_blank">best PC controllers</a>. There's also fairly minimal creaking even when I give the grips some real welly. It may not feel super premium, but it's built well enough. That said, the largely plastic construction does leave the gamepad feeling a few bucks/quid short of its $90/£100 price tag.</p><p>As this is an Xbox compatible wireless controller, you're getting asymmetric sticks to match. That's usually not a problem for me and my tiny mitts, though hoovering up gold medals in <a href="https://www.pcgamer.com/games/action/denshattack-review/" target="_blank">Denshattack!</a> proved quite the workout.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="R5dxDRytHuvwhZG5QKARag" name="GameSir T7 Pro Sugar Whirl Wireless Controller" alt="The GameSir T7 Pro Sugar Whirl Wireless Controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/R5dxDRytHuvwhZG5QKARag-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>After an extended session of braking and drifting, my left hand was beginning to feel a little bit sore. This may be because the bottom triggers are bolstered by a particularly chunky finger rest, widening the gap between my left trigger-tapping pointer and my middle finger. </p><p>Remappable back buttons also hang out within reach of where my middle fingers rest. L4 and R4 are low-profile buttons with textured covers that make them easy to find by touch (which I find vastly preferable to the DualSense Edge's great big back flippers). Still, for those with stumpy digits like me, that could mean more stretching and discomfort over time.</p><div><blockquote><p>If you've got mitts lacking in width or short phalanges like me, be warned.</p></blockquote></div><p>It was a similar story of strain when I tested out the pad's 2-stop trigger settings in <a href="https://www.pcgamer.com/games/fps/doom-the-dark-ages-review/" target="_blank">Doom: The Dark Ages</a>. Blasting baddies pulled at my palms and knuckles after a short time with Id's latest, even after reducing the triggers' actuation distance. That's a shame because the T7 Pro Swirl really isn't the chunkiest or heaviest of controllers my tiny phalanges have had to tango with. </p><p>In <a href="https://www.pcgamer.com/games/action/i-got-to-play-dead-as-disco-early-and-its-a-vivid-unrestrained-romp-that-lets-you-brawl-through-music-videos-like-a-kung-fu-baby-driver/" target="_blank">Dead As Disco's</a> more face-button-focused gameplay, my hands otherwise don''t feel anywhere near as stressed out. That suggests to me that what's causing the strain has less to do with the heft of the controller, and maybe more to do with the high-up placement of the T7 Pro's pronounced top trigger buttons. If you've got mitts lacking in width or short phalanges like me, be warned.</p><h2 class="article-body__section" id="section-performance"><span>Performance</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Z3wTjTCzsG9aNyHpfjE9cg" name="GameSir T7 Pro Sugar Whirl Wireless Controller" alt="The GameSir T7 Pro Sugar Whirl Wireless Controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/Z3wTjTCzsG9aNyHpfjE9cg-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 I repeatedly try to pull off a Finger Heel 180 trick in the train game of Tony Hawk's finger boarding fever dreams, Denshattack!, TMR tech is definitely welcome as I wiggle the right stick for all its worth. Textured tops ensure the sticks don't slip out of grip as I try to rack up an even bigger combo. Add to that a 1,000 Hz top polling rate, and these sticks are just as flicky and responsive as you could want.</p><p>Then there are the usual membrane face buttons and a D-Pad. These press down cleanly, and are satisfyingly clicky. On the reverse of the pad are two remappable back buttons as well. Unlike the shiny face buttons, these are low-profile and subtly textured so you can easily find them by feel.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="wKWavWjsVDjcCJgeQNhwVg" name="GameSir T7 Pro Sugar Whirl Wireless Controller" alt="The GameSir T7 Pro Sugar Whirl Wireless Controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/wKWavWjsVDjcCJgeQNhwVg-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 responsive Hall effect triggers also feature '2-stage trigger stops'. There are two flicky switches on the pad's underside, and flicking one of these down allows you to press the corresponding trigger all the way to the bottom. Flicking the switch up offers a much shorter actuation distance for each bottom trigger. This gives pressing the bottom triggers a clicky quality, like the top triggers.</p><p>Clicky triggers are often popular among the competitive crowd, as the cut-down actuation distance shaves off precious milliseconds between plays. Such a saving of time is largely wasted on me, though, as my most intense online play experience recently was getting lost in <a href="https://www.pcgamer.com/games/puzzle/big-walk-review/" target="_blank">Big Walk</a>. Similarly, a polling rate of 1,000 Hz is more than enough for most intents and purposes, but the esports sickos will likely be left wanting more.</p><h2 class="article-body__section" id="section-aesthetics"><span>Aesthetics</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="8kNBq8Vc2FsvKw8qZB6Ljg" name="GameSir T7 Pro Sugar Whirl Wireless Controller" alt="The GameSir T7 Pro Sugar Whirl Wireless Controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/8kNBq8Vc2FsvKw8qZB6Ljg-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 may already know about <a href="https://www.pcgamer.com/hardware/controllers/i-enjoy-touching-all-the-hardware-bits-that-pass-through-pcgs-offices-but-this-bit-of-kit-was-all-but-made-for-my-upsettingly-small-baby-hands/" target="_blank">my penchant for purple</a>. This controller not only takes aim at my particular colour-based obsession, but it also mixes in a raspberry ripple-esque combination of blues and pinks across the charging dock, faceplate, and buttons—hence the 'Sugar Whirl' name. I particularly enjoy the two sticks being different colours.</p><p>Under the incandescent lighting found in PC Gamer towers, it can look a little tacky. Natural light is generally kinder to the colourway, but it really comes into its own in-game. By default, RGB lighting bathes the controller in an icy blue light that complements the colourway, illuminating the pad's underside and shining through the face buttons. This gives the AXBY buttons an almost pearlescent vibe when in active use that I really enjoy.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="vjPkRFVXZTdghspeCW7ogg" name="GameSir T7 Pro Sugar Whirl Wireless Controller" alt="The GameSir T7 Pro Sugar Whirl Wireless Controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/vjPkRFVXZTdghspeCW7ogg-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'm much less keen on the green goo glow the controller emits while it's charging. Thankfully, you can either dial this down or turn it off completely in the GameSir Nexus software, not to mention all the other options you have for tinkering with the Sugar Whirl's RGB lighting.</p><h2 class="article-body__section" id="section-software"><span>Software</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="mmyTZF84mweGRu7zHBC9fe" name="GameSir Nexus software - with GameSir T7 Pro Sugar Whirl Wireless Controller" alt="Screenshots of all the options available in the GameSir Nexus software." src="https://cdn.mos.cms.futurecdn.net/mmyTZF84mweGRu7zHBC9fe-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: GameSir)</span></figcaption></figure><p>You can finely tweak a variety of settings in the GameSir Nexus software across four different profiles, with each one accessed via a combination of the centre 'M' button and the facebuttons. The software itself can either be <a href="https://gamesir.sa/en/pages/gamesir-nexus?srsltid=AfmBOoreDr-kPYdDEXEFz1tGT2cyIF1HH-bongsR-m-bERYE_8X2A3Km" target="_blank">manually downloaded from here</a>, or from the Microsoft store, but lacks anything in the way of a web-based app.</p><p>The smallest amount of software tinkering allowed me to tone down the green goo glow the controller emits while charging, and I've set it up so that the pad automatically connects to my PC as soon as I lift it from the charging cradle. That's more than enough for me, but if you want to get lost in the software weeds, Nexus offers a wealth of features to play with.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/E76kwT48RMPSiyDnKtGrce-1920-80.jpg" alt="Screenshots of all the options available in the GameSir Nexus software." /><figcaption><small role="credit">GameSir</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/FTv2AVs9NZU9Lf3iqpLWee-1920-80.jpg" alt="Screenshots of all the options available in the GameSir Nexus software." /><figcaption><small role="credit">GameSir</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/U7VXdJXDfZU4QnzxVCwsee-1920-80.jpg" alt="Screenshots of all the options available in the GameSir Nexus software." /><figcaption><small role="credit">GameSir</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/69NFLXMqrTJwaXFNokdBde-1920-80.jpg" alt="Screenshots of all the options available in the GameSir Nexus software." /><figcaption><small role="credit">GameSir</small></figcaption></figure></figure><p>For a start, you can finely tune the stick and trigger deadzones, plus much more besides via an array of sliders, toggles and presets. You can also tune the pad's motion controls to a similarly in-depth degree, tinker with the intensity of its rumble motors, and, of course, fiddle with the RGB. Broadly speaking, the software is how you're going to get the most out of this Pro pad; there's a wealth of options to make the T7 Pro your own, though the lighting settings could do with just a few more customisation options. Seeing a swirling rainbow illuminating my gamepad from within is cool and all, but I would have appreciated the option to more finely tune the lights' hue.</p><p>RGB customisation was the only category of setting I found wanting, though. While I probably won't touch half of the settings available, I appreciate how clearly the Nexus software lays out all of the options. If the software's home screen selection overwhelms, you can click through to a specific focussed category of settings, and mess around from there. It's intuitive and straightforward to use.</p><h2 class="article-body__section" id="section-battery"><span>Battery</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="DrUc7LTW929Ebc2iaFWPmg" name="GameSir T7 Pro Sugar Whirl Wireless Controller" alt="The GameSir T7 Pro Sugar Whirl Wireless Controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/DrUc7LTW929Ebc2iaFWPmg-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 major thing that annoys me about most wireless peripherals is how often the hardware needs to become wired again to charge. A wireless PC controller can have the biggest battery in the world, but it will eventually resemble its wired counterparts sooner or later. </p><p>Not to knock any of <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-wired-controller" target="_blank">the best wired controllers</a>, but it's not the experience I'm personally looking for as a pad-wielding PC Gamer; a wire is just one more thing that can make a mess at my already cluttered desk, either getting chewed up by my gaming chair castors, or by knocking over a bunch of my Miku Hatsune figurines during a particularly heated gamer moment.</p><p>Thanks to the GameSir T7 Pro Sugar Whirl though, I'm a charging cradle convert. The dock here features a USB-C port, with a compartment on its underside for the 2.4 GHz dongle. Yes, that means there <em>is </em>still a wire involved if you want to use the dock as a wireless receiver, though you can easily cable-manage that out of the way (and nowhere near, say, your army of Miku).</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="EzdrpWwoeCuPFCqgsX9Bag" name="GameSir T7 Pro Sugar Whirl Wireless Controller" alt="The GameSir T7 Pro Sugar Whirl Wireless Controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/EzdrpWwoeCuPFCqgsX9Bag-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>Thanks to metal pins in the cradle and contact points on the underside of the pad itself, the pad can easily charge back up when it's not in use. The gamepad's 1050 mAh battery is decent enough on its own though, holding up through numerous, marathon sessions of Denshattack! without requiring a charge. If I forgot to place the pad back in the charging cradle one day, I still had plenty of juice to take back to the track the next. But obviously, playing at 1,000 Hz polling and with the RGB lights whirling away will drain the battery much faster. </p><p>It means I no longer have to remember to charge this bad boy up myself, because I'll just pop it back onto the dock when I'm done. It's a set-it-and-forget-it sort of setup that my forgetful-self very much appreciates. Couple that with the software setting that makes the gamepad automatically connect to your PC as soon as you lift it from the charging cradle, and it's a really seamless experience.</p><h2 class="article-body__section" id="section-value"><span>Value</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ULKrTtcit9UBdnRwqfPwdg" name="GameSir T7 Pro Sugar Whirl Wireless Controller" alt="The GameSir T7 Pro Sugar Whirl Wireless Controller seen from various angles." src="https://cdn.mos.cms.futurecdn.net/ULKrTtcit9UBdnRwqfPwdg-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>Like I said before, the Sugar Whirl's wireless Xbox connectivity will be a headline feature for some. If that really is key for you, the <a href="https://www.pcgamer.com/hardware/controllers/easysmx-d10-review/" target="_blank">EasySMX D10</a> is one other option that also comes with TMR sticks, a charging dock, 'elite 2-way trigger locks,' and costs half the price. </p><p>Otherwise, the difference in quality is arguably most noticeable in the D10's complete lack of software, and 'just okay' D-Pad and triggers. The D10 even comes in a '<a href="https://www.easysmx.com/products/easysmx-d10-multiplatform-gaming-controller-with-tmr-joysticks-trigger-lock-charging-dock" target="_blank">Farout Purple</a>' colourway I may have to pick up myself.</p><p>If you're already willing to drop a serious chunk of change on a controller, the newer <a href="https://www.pcgamer.com/hardware/controllers/razer-wolverine-v3-pro-8k-pc-review/" target="_blank">Razer Wolverine V3 Pro 8K PC</a> more than earns the crown as the best high end controller, though this update does drop Xbox connectivity and haptic feedback.</p><div><blockquote><p>The best controller overall is the GameSir G7 Pro Tri-Mode, and it costs around 10 bucks less.</p></blockquote></div><p>A much more likely option is the elephant in the room: <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-wired-controller" target="_blank">the best controller overall</a> is the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/" target="_blank">GameSir G7 Pro Tri-Mode</a>, and it costs around 10 bucks less. The key differences are that the Tri-Mode enjoys a magnetic faceplate, plus a better battery, but completely lacks RGB lighting, and only works on Xbox via a <em>wired</em> connection. </p><p>These will be minor omissions for most, leaving little contest between the two controllers; if you're not endeared to the Sugar Whirl's cotton candy colourway and you're not fussed about connecting to your Xbox wirelessly, the GameSir G7 Pro Tri-Mode is still the obvious choice.</p><p>As for me though, I just can't resist a fun colourway. I can see myself spending many more hours with the Sugar Whirl, as much as it sometimes pains my poor palms. Even so, if it was my money, I'd struggle to justify putting down nearly 100 smackers on it.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Redditor buys what looks to be a prototype Xbox Elite Series 3 controller, posts about it on Reddit, then the thread goes dark ]]></title>
                                                                                                <dc:content><![CDATA[ <p>It's been nearly seven years since the release of the <a href="https://www.pcgamer.com/xbox-elite-wireless-controller-series-2-review/" target="_blank">Xbox Elite Series 2</a>, which means we're well overdue for a new one. It sure looks like that's set to happen soon, as one Redditor just posted the <a href="https://www.reddit.com/r/Controller/comments/1vllg3j/anyone_know_what_controller_this_is_is_this_the/" target="_blank">motherlode of information on the unreleased pad</a>—then their account mysteriously vanished and the thread was partially wiped with it.</p><p>The internet tends not to 'lose' things, so you can view all the leaked images on <a href="https://x.com/tomwarren/status/2087281743606763901" target="_blank">this thread</a> from The Verge's Tom Warren. Warren also notes that the original poster says they bought the controller <a href="https://www.reddit.com/r/Controller/comments/1vllg3j/comment/p336sll/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button" target="_blank">for $200</a> on OfferUp, a marketplace for buying things in your local area. The poster says, in a comment still live on the thread, that they live in Seattle. Seattle being the home of, you guessed it, Microsoft. The company's Redmond HQ is located just next door in Redmond, Washington.</p><p>Lots of people live in Seattle and they don't all work at Microsoft. So what else do we have to go on as to the veracity of this particular thread?</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XkwrzX"></div>                            </div>                            <script src="https://kwizly.com/embed/XkwrzX.js" async></script><p>First off, the Redditor's new pad looks suspiciously <a href="https://www.pcgamer.com/hardware/controllers/leaked-xbox-elite-3-controller-images-show-at-least-one-oddball-addition-but-itll-struggle-to-compete-in-a-radically-changed-market/" target="_blank">similar to one we saw back in May</a>. It has the same shape, trigger locks, rear paddle mounting, and battery bay. All of which look to be pretty neat features for the Series 3 pad, if not miles apart from the Series 2 pad. The face buttons, ABXY, are perhaps a little larger. A couple of us here reckon the new Elite Series 3 resembles the Razer Wolverine V3 Pro in overall shape, which isn't a bad thing. That's our pick for the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/" target="_blank">best high-end controller</a> right now.</p><p>A screen sits between the bumpers along the top of the Series 3 pad, likely some sort of mono OLED display. These tend to be pretty useful for this sorta application, as the self-emitting pixels draw very little power. In the leaked photos, this display shows an aka.ms URL, made using Microsoft's own shortening service. They also show a very basic game running on the screen in a later comment.</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2087281743606763901"><p lang="en" dir="ltr">Microsoft’s upcoming Xbox Elite 3 controller has appeared on Reddit. The poster says they purchased it on OfferUp https://t.co/HeJ3TQ9qaG pic.twitter.com/XsPOP1eCaH<a href="https://twitter.com/cantworkitout/status/2087281743606763901">August 11, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Some other redditors in the thread have followed various versions of the URL in the pics and claim to have landed on documents pertaining to the controller's use and how to connect it via a dedicated connection for cloud gaming—that's a feature we've seen with the <a href="https://www.pcgamer.com/amazon-luna-hands-on-a-decent-start-for-yet-another-cloud-gaming-competitor/" target="_blank">Amazon Luna Controller</a> and Google Stadia Controller (rip). This was also a feature tipped in that original leak from May.</p><p>The comments from the original poster have not been removed, and from these we can gather a few more tidbits of information. They show the paddles and d-pad removed from the pad, with the latter having a simpler but similar rocking design to the previous model. They confirm that the triggers become clicky once set to the shortest option via the rear adjusters. We also catch a glimpse of the battery, which clearly states "PROTOTYPE NOT FOR SALE" on it. Oops.</p><p>The Elite Series 3 even includes a travel case, as has been included with both previous generations of Elite controller, albeit a slimmer version. I would guess that means this thing is pretty far down the road for development. Providing it is real and not some elaborate 3D-printed project, this may suggest we see the controller arrive before the year's out.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:877px;"><p class="vanilla-image-block" style="padding-top:55.53%;"><img id="S2QrBfKFEw9RPhFiKyShBi" name="1786616976.jpg" alt="An exchange between two people on Reddit about the Xbox Elite Series 3." src="https://cdn.mos.cms.futurecdn.net/S2QrBfKFEw9RPhFiKyShBi-1920-80.jpg" mos="" align="middle" fullscreen="" width="877" height="487" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Reddit)</span></figcaption></figure><p>What we don't know about the Series 3 is whether the sticks are using Hall effect or TMR (Tunnel Magnetoresistance) technology. This helps banish stick drift for the most part, and it's something <a href="https://www.pcgamer.com/im-calling-time-on-stick-drift-and-getting-hall-effect-in-every-one-of-my-controllers-in-2024/" target="_blank">I value more than most other features these days</a>. The Elite Series 2 famously lacks any such tech, instead using older potentiometers on account of its age, but we can only assume the Series 3 will. It would be wild not to.</p><p>We also don't know how it will work in action, as the redditor says <a href="https://www.reddit.com/r/Controller/comments/1vllg3j/comment/p3365wl/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button" target="_blank">it doesn't work on either Xbox or PC right now</a>. Some suggest it will be locked to a dev account, which does seem likely if it's the real deal.</p><p>The redditor succinctly sums up the controller in one reply, noting it "feels like a Xbox Series X controller but pro and more clicky." If that sounds like your sorta thing, and I have to admit, it is mine, then this might be something to keep an eye out for in the near future. That said, as someone who has owned a couple of Elite controllers over the years, I've started to look elsewhere these days. You don't have to spend Elite money for an elite controller anymore—the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/" target="_blank">GameSir G7 Pro</a> proves that.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/game-pads/redditor-buys-what-looks-to-be-a-prototype-for-unreleased-xbox-elite-series-3-controller-posts-about-it-on-reddit-then-the-thread-goes-dark/</link>
                                                                            <description>
                            <![CDATA[ Looks suspiciously similar to controller leaked back in May. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">LTmSjEStD2y3xrsDkavTs8</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/RZqRVLLT9auJS75PZacqbZ-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 13 Aug 2026 10:54:56 +0000</pubDate>                                                                                                                                <updated>Thu, 13 Aug 2026 11:49:03 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Ridley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/2YNigoLXbckPdRPDe3stwA-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/RZqRVLLT9auJS75PZacqbZ-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Xbox Elite Series 2 controller]]></media:description>                                                            <media:text><![CDATA[Xbox Elite Series 2 controller]]></media:text>
                                <media:title type="plain"><![CDATA[Xbox Elite Series 2 controller]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/RZqRVLLT9auJS75PZacqbZ-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>It's been nearly seven years since the release of the <a href="https://www.pcgamer.com/xbox-elite-wireless-controller-series-2-review/" target="_blank">Xbox Elite Series 2</a>, which means we're well overdue for a new one. It sure looks like that's set to happen soon, as one Redditor just posted the <a href="https://www.reddit.com/r/Controller/comments/1vllg3j/anyone_know_what_controller_this_is_is_this_the/" target="_blank">motherlode of information on the unreleased pad</a>—then their account mysteriously vanished and the thread was partially wiped with it.</p><p>The internet tends not to 'lose' things, so you can view all the leaked images on <a href="https://x.com/tomwarren/status/2087281743606763901" target="_blank">this thread</a> from The Verge's Tom Warren. Warren also notes that the original poster says they bought the controller <a href="https://www.reddit.com/r/Controller/comments/1vllg3j/comment/p336sll/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button" target="_blank">for $200</a> on OfferUp, a marketplace for buying things in your local area. The poster says, in a comment still live on the thread, that they live in Seattle. Seattle being the home of, you guessed it, Microsoft. The company's Redmond HQ is located just next door in Redmond, Washington.</p><p>Lots of people live in Seattle and they don't all work at Microsoft. So what else do we have to go on as to the veracity of this particular thread?</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XkwrzX"></div>                            </div>                            <script src="https://kwizly.com/embed/XkwrzX.js" async></script><p>First off, the Redditor's new pad looks suspiciously <a href="https://www.pcgamer.com/hardware/controllers/leaked-xbox-elite-3-controller-images-show-at-least-one-oddball-addition-but-itll-struggle-to-compete-in-a-radically-changed-market/" target="_blank">similar to one we saw back in May</a>. It has the same shape, trigger locks, rear paddle mounting, and battery bay. All of which look to be pretty neat features for the Series 3 pad, if not miles apart from the Series 2 pad. The face buttons, ABXY, are perhaps a little larger. A couple of us here reckon the new Elite Series 3 resembles the Razer Wolverine V3 Pro in overall shape, which isn't a bad thing. That's our pick for the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/" target="_blank">best high-end controller</a> right now.</p><p>A screen sits between the bumpers along the top of the Series 3 pad, likely some sort of mono OLED display. These tend to be pretty useful for this sorta application, as the self-emitting pixels draw very little power. In the leaked photos, this display shows an aka.ms URL, made using Microsoft's own shortening service. They also show a very basic game running on the screen in a later comment.</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2087281743606763901"><p lang="en" dir="ltr">Microsoft’s upcoming Xbox Elite 3 controller has appeared on Reddit. The poster says they purchased it on OfferUp https://t.co/HeJ3TQ9qaG pic.twitter.com/XsPOP1eCaH<a href="https://twitter.com/cantworkitout/status/2087281743606763901">August 11, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Some other redditors in the thread have followed various versions of the URL in the pics and claim to have landed on documents pertaining to the controller's use and how to connect it via a dedicated connection for cloud gaming—that's a feature we've seen with the <a href="https://www.pcgamer.com/amazon-luna-hands-on-a-decent-start-for-yet-another-cloud-gaming-competitor/" target="_blank">Amazon Luna Controller</a> and Google Stadia Controller (rip). This was also a feature tipped in that original leak from May.</p><p>The comments from the original poster have not been removed, and from these we can gather a few more tidbits of information. They show the paddles and d-pad removed from the pad, with the latter having a simpler but similar rocking design to the previous model. They confirm that the triggers become clicky once set to the shortest option via the rear adjusters. We also catch a glimpse of the battery, which clearly states "PROTOTYPE NOT FOR SALE" on it. Oops.</p><p>The Elite Series 3 even includes a travel case, as has been included with both previous generations of Elite controller, albeit a slimmer version. I would guess that means this thing is pretty far down the road for development. Providing it is real and not some elaborate 3D-printed project, this may suggest we see the controller arrive before the year's out.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:877px;"><p class="vanilla-image-block" style="padding-top:55.53%;"><img id="S2QrBfKFEw9RPhFiKyShBi" name="1786616976.jpg" alt="An exchange between two people on Reddit about the Xbox Elite Series 3." src="https://cdn.mos.cms.futurecdn.net/S2QrBfKFEw9RPhFiKyShBi-1920-80.jpg" mos="" align="middle" fullscreen="" width="877" height="487" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Reddit)</span></figcaption></figure><p>What we don't know about the Series 3 is whether the sticks are using Hall effect or TMR (Tunnel Magnetoresistance) technology. This helps banish stick drift for the most part, and it's something <a href="https://www.pcgamer.com/im-calling-time-on-stick-drift-and-getting-hall-effect-in-every-one-of-my-controllers-in-2024/" target="_blank">I value more than most other features these days</a>. The Elite Series 2 famously lacks any such tech, instead using older potentiometers on account of its age, but we can only assume the Series 3 will. It would be wild not to.</p><p>We also don't know how it will work in action, as the redditor says <a href="https://www.reddit.com/r/Controller/comments/1vllg3j/comment/p3365wl/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button" target="_blank">it doesn't work on either Xbox or PC right now</a>. Some suggest it will be locked to a dev account, which does seem likely if it's the real deal.</p><p>The redditor succinctly sums up the controller in one reply, noting it "feels like a Xbox Series X controller but pro and more clicky." If that sounds like your sorta thing, and I have to admit, it is mine, then this might be something to keep an eye out for in the near future. That said, as someone who has owned a couple of Elite controllers over the years, I've started to look elsewhere these days. You don't have to spend Elite money for an elite controller anymore—the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/" target="_blank">GameSir G7 Pro</a> proves that.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ The humble Wii Nunchuck has been turned into a video editing tool because it's 'one of the most ergonomic things ever made' ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/jMN4zio32E0" allowfullscreen></iframe></div></div><p>If you spend your time editing videos, you may have already invested in a macropad. Or, you're probably used to the monotony of spamming shortcuts on your keyboard to swap between different tools. This can be a pain on the wrist because of the angle you hover over a keyboard, but there's now a new way around it—the humble Nintendo Wii Nunchuk.</p><p>As spotted by <a href="https://hackaday.com/2026/08/07/wrist-welcomes-wii-nunchuk-as-gloriously-ergonomic-macropad/" target="_blank">Hackaday</a>, John Dingley, of YouTube account <a href="https://www.youtube.com/watch?v=jMN4zio32E0" target="_blank">John's Projects</a>, posted their latest creation last week. In essence, they've hooked a Wii Nunchuk up to their PC using the <a href="https://github.com/AnaviTechnology/anavi-handle" target="_blank">Anavi Handle</a> to use it like a macropad.</p><p>The <a href="https://github.com/AnaviTechnology/anavi-handle" target="_blank">Anavi Handle</a> is an open-source USB adapter for connecting the Nunchuk controller to a computer. The adapter uses the <a href="https://www.seeedstudio.com/XIAO-RP2040-v1-0-p-5026.html?utm_source=github&utm_medium=ANAVI&utm_campaign=Handle" target="_blank">Seeed Studio Xiao RP2040</a>, which, at just a couple of dollars, makes the entire setup surprisingly cheap.  </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XZKx1e"></div>                            </div>                            <script src="https://kwizly.com/embed/XZKx1e.js" async></script><p>You might be wondering why they used the Nunchuk, and it's not just to be a little geeky.  The Wii Nunchuk is comfortable and light, as it was designed for a family-friendly console. And most importantly, you can hold it upright. </p><p>For a video editor who is likely spending hours at their desk at a time, the hope is that it won't cause pain in their wrist from holding it on the desk all day. John claims it is "super comfortable" and that it is "one of the most ergonomic things ever made".</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="YR2iY4Q24bsXiUhkp4YTcN" name="Wii Nunchuck as DaVinci Resolve Macro-Pad _ Super-comfortable 3-11 screenshot" alt="A screenshot from YouTube channel John's Projects, showing an adapter to use a Nintendo Wii Nunchuck in Davinci Resolve" src="https://cdn.mos.cms.futurecdn.net/YR2iY4Q24bsXiUhkp4YTcN-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: John's Projects)</span></figcaption></figure><p>Their current shortcut controls are: </p><ul><li>Lower end pushbutton = Split clip</li><li>Upper end pushbutton = Not assigned yet (i.e. spare)</li><li>Joystick-LEFT = Ripple Delete</li><li>Joystick-RIGHT = UNDO (the previous action)</li></ul><p>The Nunchuck plugged into the Anavi Handle won't work as a macropad immediately. It does require some coding, but Dingley has gone over that process in his video, too. </p><p>The use of the Nunchuck specifically came about because Dingley realised they didn't actually use all the buttons on their standard macropad. They still have a keyboard on hand for typing text, but the Nunchuck means they can put the macropad away. </p><p>Admittedly, this use case is a little niche. The reason one might opt for professional equipment like the <a href="https://www.blackmagicdesign.com/uk/store/davinci-resolve-and-fusion/edit-keyboards/W-DRE-13" target="_blank">DaVinci Speed Editor</a> is partly due to the breadth of buttons available. The Nunchuk has a limited number of functions, so it will only really be useful to someone who only finds themselves needing a handful of functions for each edit. </p><p>But still, if you just want to cut clips, undo mistakes, and swap between a few tools quickly, it seems like a smart way of doing so, and it looks pretty neat at the same time. I'm sold. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/the-humble-wii-nunchuck-has-been-turned-into-a-video-editing-tool-because-its-one-of-the-most-ergonomic-things-ever-made/</link>
                                                                            <description>
                            <![CDATA[ What a wonderfully geeky way to edit. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">G78WN6md92qXsDCe4C6np3</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/yrsCtrg6nZxvhqkpy4PQZE-1920-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Fri, 07 Aug 2026 14:43:08 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-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/yrsCtrg6nZxvhqkpy4PQZE-1920-80.png">
                                                            <media:credit><![CDATA[John&#039;s Projects]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A screenshot from YouTube channel John&#039;s Projects, using a Nintendo Wii Nunchuck in Davinci Resolve]]></media:description>                                                            <media:text><![CDATA[A screenshot from YouTube channel John&#039;s Projects, using a Nintendo Wii Nunchuck in Davinci Resolve]]></media:text>
                                <media:title type="plain"><![CDATA[A screenshot from YouTube channel John&#039;s Projects, using a Nintendo Wii Nunchuck in Davinci Resolve]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/yrsCtrg6nZxvhqkpy4PQZE-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/jMN4zio32E0" allowfullscreen></iframe></div></div><p>If you spend your time editing videos, you may have already invested in a macropad. Or, you're probably used to the monotony of spamming shortcuts on your keyboard to swap between different tools. This can be a pain on the wrist because of the angle you hover over a keyboard, but there's now a new way around it—the humble Nintendo Wii Nunchuk.</p><p>As spotted by <a href="https://hackaday.com/2026/08/07/wrist-welcomes-wii-nunchuk-as-gloriously-ergonomic-macropad/" target="_blank">Hackaday</a>, John Dingley, of YouTube account <a href="https://www.youtube.com/watch?v=jMN4zio32E0" target="_blank">John's Projects</a>, posted their latest creation last week. In essence, they've hooked a Wii Nunchuk up to their PC using the <a href="https://github.com/AnaviTechnology/anavi-handle" target="_blank">Anavi Handle</a> to use it like a macropad.</p><p>The <a href="https://github.com/AnaviTechnology/anavi-handle" target="_blank">Anavi Handle</a> is an open-source USB adapter for connecting the Nunchuk controller to a computer. The adapter uses the <a href="https://www.seeedstudio.com/XIAO-RP2040-v1-0-p-5026.html?utm_source=github&utm_medium=ANAVI&utm_campaign=Handle" target="_blank">Seeed Studio Xiao RP2040</a>, which, at just a couple of dollars, makes the entire setup surprisingly cheap.  </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XZKx1e"></div>                            </div>                            <script src="https://kwizly.com/embed/XZKx1e.js" async></script><p>You might be wondering why they used the Nunchuk, and it's not just to be a little geeky.  The Wii Nunchuk is comfortable and light, as it was designed for a family-friendly console. And most importantly, you can hold it upright. </p><p>For a video editor who is likely spending hours at their desk at a time, the hope is that it won't cause pain in their wrist from holding it on the desk all day. John claims it is "super comfortable" and that it is "one of the most ergonomic things ever made".</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="YR2iY4Q24bsXiUhkp4YTcN" name="Wii Nunchuck as DaVinci Resolve Macro-Pad _ Super-comfortable 3-11 screenshot" alt="A screenshot from YouTube channel John's Projects, showing an adapter to use a Nintendo Wii Nunchuck in Davinci Resolve" src="https://cdn.mos.cms.futurecdn.net/YR2iY4Q24bsXiUhkp4YTcN-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: John's Projects)</span></figcaption></figure><p>Their current shortcut controls are: </p><ul><li>Lower end pushbutton = Split clip</li><li>Upper end pushbutton = Not assigned yet (i.e. spare)</li><li>Joystick-LEFT = Ripple Delete</li><li>Joystick-RIGHT = UNDO (the previous action)</li></ul><p>The Nunchuck plugged into the Anavi Handle won't work as a macropad immediately. It does require some coding, but Dingley has gone over that process in his video, too. </p><p>The use of the Nunchuck specifically came about because Dingley realised they didn't actually use all the buttons on their standard macropad. They still have a keyboard on hand for typing text, but the Nunchuck means they can put the macropad away. </p><p>Admittedly, this use case is a little niche. The reason one might opt for professional equipment like the <a href="https://www.blackmagicdesign.com/uk/store/davinci-resolve-and-fusion/edit-keyboards/W-DRE-13" target="_blank">DaVinci Speed Editor</a> is partly due to the breadth of buttons available. The Nunchuk has a limited number of functions, so it will only really be useful to someone who only finds themselves needing a handful of functions for each edit. </p><p>But still, if you just want to cut clips, undo mistakes, and swap between a few tools quickly, it seems like a smart way of doing so, and it looks pretty neat at the same time. I'm sold. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Valve explains clever shortcut for the Steam Controller's Grip Sense, and I'm starting to think it's a killer feature ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">Steam Controller</a> has a pretty niche feature called Grip Sense, which is a pair of capacitive touch sensors inside the handles that can sense when you are touching them. Though you may not use it, Valve thinks you should, "because it's, like, cool," and even recommends a couple of sweet shortcuts to use with it. </p><p><a href="https://store.steampowered.com/news/collection/steam/?emclan=103582791475000432&emgid=702141807556822237" target="_blank">Valve notes</a> that you could turn gyro controls off and on, depending on how your fingers sit on the controller, and it points out that the activation threshold is adjustable. That means you could activate a shortcut with only a slight lift of the fingers, or by taking the whole hand off the controller. </p><p>Activating and deactivating gyro controls to recenter your hand is apparently called "ratcheting". Valve likens it to picking up your mouse when it hits the end of your mousepad. Effectively, if your body or hands are at an uncomfortable angle, you can take your hand off the controller to turn off gyro controls, recenter your body and turn them back on again. It's a neat function, and one I wish I had while playing Splatoon Raiders on the <a href="https://www.pcgamer.com/hardware/nintendo-switch-2-review/" target="_blank">Nintendo Switch 2</a> recently (that has a recenter, but it's less natural with a dedicated button).</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XZKx1e"></div>                            </div>                            <script src="https://kwizly.com/embed/XZKx1e.js" async></script><p>Valve says, "While the original intent was for ratcheting (and it does work for that!) we have found a few other cool use cases, like using it to bring up a weapon wheel, map, or menu."</p><p>In the weapon wheel example, lifting your fingers from the rear of the controller brings up the wheel, allowing you to select your weapon or whatever, and then place your fingers back down to lock in your choice. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="gRJaCxjyjzDp6EwU3RkV" name="steam-controller-02" alt="Valve's new and improved Steam Controller during a visit to Valve's HQ in Bellevue, Washington." src="https://cdn.mos.cms.futurecdn.net/gRJaCxjyjzDp6EwU3RkV-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 have your hands on a Steam Controller, and you're wondering how to assign your Grip Sense to Gyro:</p><ul><li>Go to the layout editor in Steam</li><li>Turn on the "Gyro To Mouse" option</li><li>Click the button selector</li><li>Select Grip Sense</li></ul><p>The same process works for assigning other functions. You just need to set your keybind to "Press and Hold", so that, when you take your fingers off the controller, it holds the menu button or whatever else. </p><p>You could set Grip Sense without a hold, for jumping or shooting, for example, but that seems quite inefficient to me. You can even adjust Grip Sense sensitivity if you find the controls a little hard to hit. Personally, if I were lucky enough to have got my hands on the Steam Controller, I'd be using this feature straightaway. And with a little practice, it could make gyro adjusting feel more natural.  </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/valve-explains-clever-shortcut-for-the-steam-controllers-grip-sense-and-im-starting-to-think-its-a-killer-feature/</link>
                                                                            <description>
                            <![CDATA[ This seems like a solid feature for the gyro heads. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">RxdYJefTec5FqwgnqNvrAh</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/L8JxGPmwD479ht6QSrmY4-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 06 Aug 2026 11:37:10 +0000</pubDate>                                                                                                                                <updated>Thu, 06 Aug 2026 22:54:06 +0000</updated>
                                                                                                                                            <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-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/L8JxGPmwD479ht6QSrmY4-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Valve&#039;s new and improved Steam Controller during a visit to Valve&#039;s HQ in Bellevue, Washington.]]></media:description>                                                            <media:text><![CDATA[Valve&#039;s new and improved Steam Controller during a visit to Valve&#039;s HQ in Bellevue, Washington.]]></media:text>
                                <media:title type="plain"><![CDATA[Valve&#039;s new and improved Steam Controller during a visit to Valve&#039;s HQ in Bellevue, Washington.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/L8JxGPmwD479ht6QSrmY4-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">Steam Controller</a> has a pretty niche feature called Grip Sense, which is a pair of capacitive touch sensors inside the handles that can sense when you are touching them. Though you may not use it, Valve thinks you should, "because it's, like, cool," and even recommends a couple of sweet shortcuts to use with it. </p><p><a href="https://store.steampowered.com/news/collection/steam/?emclan=103582791475000432&emgid=702141807556822237" target="_blank">Valve notes</a> that you could turn gyro controls off and on, depending on how your fingers sit on the controller, and it points out that the activation threshold is adjustable. That means you could activate a shortcut with only a slight lift of the fingers, or by taking the whole hand off the controller. </p><p>Activating and deactivating gyro controls to recenter your hand is apparently called "ratcheting". Valve likens it to picking up your mouse when it hits the end of your mousepad. Effectively, if your body or hands are at an uncomfortable angle, you can take your hand off the controller to turn off gyro controls, recenter your body and turn them back on again. It's a neat function, and one I wish I had while playing Splatoon Raiders on the <a href="https://www.pcgamer.com/hardware/nintendo-switch-2-review/" target="_blank">Nintendo Switch 2</a> recently (that has a recenter, but it's less natural with a dedicated button).</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XZKx1e"></div>                            </div>                            <script src="https://kwizly.com/embed/XZKx1e.js" async></script><p>Valve says, "While the original intent was for ratcheting (and it does work for that!) we have found a few other cool use cases, like using it to bring up a weapon wheel, map, or menu."</p><p>In the weapon wheel example, lifting your fingers from the rear of the controller brings up the wheel, allowing you to select your weapon or whatever, and then place your fingers back down to lock in your choice. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="gRJaCxjyjzDp6EwU3RkV" name="steam-controller-02" alt="Valve's new and improved Steam Controller during a visit to Valve's HQ in Bellevue, Washington." src="https://cdn.mos.cms.futurecdn.net/gRJaCxjyjzDp6EwU3RkV-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 have your hands on a Steam Controller, and you're wondering how to assign your Grip Sense to Gyro:</p><ul><li>Go to the layout editor in Steam</li><li>Turn on the "Gyro To Mouse" option</li><li>Click the button selector</li><li>Select Grip Sense</li></ul><p>The same process works for assigning other functions. You just need to set your keybind to "Press and Hold", so that, when you take your fingers off the controller, it holds the menu button or whatever else. </p><p>You could set Grip Sense without a hold, for jumping or shooting, for example, but that seems quite inefficient to me. You can even adjust Grip Sense sensitivity if you find the controls a little hard to hit. Personally, if I were lucky enough to have got my hands on the Steam Controller, I'd be using this feature straightaway. And with a little practice, it could make gyro adjusting feel more natural.  </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Sometimes you have to take a break from work to pay respects to the PC flight stick that ruled the '90s ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Growing up in the '90s, good joysticks were strangely hard to come by. The stiff sticks on my local arcade cabinets, already inferior to their Japanese counterparts, always seemed to be so worn down that I'd have to smash them from edge-to-edge just to register an input. And yet the sticks attached to my friend's dusty Atari 2600, discovered in a box of his parents' old junk, still managed to make the arcade cabinet sticks look good. Those things were so atrocious it's a wonder videogames ever took off to begin with.</p><p>The Nintendo 64's analogue stick controller seemed like a marvel, at first—it was responsive, granular, and ushered in a whole era of 3D games. It also went to shit after a few months of use—I probably owned eight of those controllers over the console's lifetime and destroyed every one. There was only one joystick that never failed me: the beige and black, nondescript PC accessory my dad brought home one day, likely a hand-me-down from one of his computer geek friends.</p><p>As far as I was concerned, I was a real pilot when I grabbed that stick to <a href="https://www.pcgamer.com/what-was-the-first-pc-game-you-played/">boot up a game like LHX Attack Chopper</a>. Nevermind that a real cockpit has a million buttons and switches, rather than just the trigger and the singular cute lil red button on top (for launching missiles, obviously). The branding was as simplistic as the design: it just said "FlightStick" on it.</p><p>I had no idea that the stick belonged to a decades-spanning lineage until I was digging through the very first issue of PC Gamer US—from May 1994—and came across this ad.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1602px;"><p class="vanilla-image-block" style="padding-top:137.33%;"><img id="r9VfDXVLH49HBkoUKZgv3A" name="PC Gamer Issue 001 (May-June 1994) page 035" alt="CH Products FlightStick Pro ad from PC Gamer magazine" src="https://cdn.mos.cms.futurecdn.net/r9VfDXVLH49HBkoUKZgv3A-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1602" height="2200" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/r9VfDXVLH49HBkoUKZgv3A-1920-80.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">FlightStick Pro ad from PC Gamer magazine #1 (US, May 1994) </span><span class="credit" itemprop="copyrightHolder">(Image credit: CH Products)</span></figcaption></figure><p>There it is, bottom right! That's my stick! </p><p>CH Products, it turns out, was a family business dating back to the 1970s, and was one of the go-to brands for flight enthusiasts throughout the late '80s and '90s. Their simpler designs—and connectivity options that gradually disappeared from desktop PCs—seemed to fall out of favor by the 2000s, as competitors like Thrustmaster, Saitek and Logitech made increasingly complex HOTAS setups. But Google them today and you'll still find loads of flight enthusiasts speaking about CH Products' rock-solid build quality (one of their later magazine ads even brags "We don't BREAK for anything!).</p><p>Go searching and you'll also find <a href="https://www.reddit.com/r/hotas/comments/1rnosb0/comment/oyi0fzg/?context=3">a Reddit thread</a> where the grandchild of founder Chuck Hayes complains that her mother convinced him to sell the family business, which is why CH Products is no longer around today, even though its website remarkably <a href="https://www.chproducts.com/13-28464-Home.php.html">remains online</a>.</p><figure class="van-image-figure pull-right inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1280px;"><p class="vanilla-image-block" style="padding-top:139.14%;"><img id="NN6dbsXKrb9b4Lc5zHvhe4" name="ch products flightstick pro" alt="CH Products FlightStick Pro ad" src="https://cdn.mos.cms.futurecdn.net/NN6dbsXKrb9b4Lc5zHvhe4-1920-80.jpg" mos="" align="right" fullscreen="1" width="1280" height="1781" attribution="" endorsement="" class="pull-rightinline expandable"><a href='https://cdn.mos.cms.futurecdn.net/NN6dbsXKrb9b4Lc5zHvhe4-1920-80.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class="pull-right inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: CH Products)</span></figcaption></figure><p>I had no idea what company made the stick back then, or that the CH FlightStick was actually a little older than me—the first model came out in 1987. "At the time of launch flight simulators on the PC were huge, and this peripheral was an incredibly realistic-looking analog joystick," writes the creator of <a href="https://dosdays.co.uk/topics/Manufacturers/chproducts.php">DOS Days</a>.</p><p>As quaint as the thing looks today compared to the <a href="https://www.pcgamer.com/the-best-pc-joysticks/">best PC joysticks</a>, it really did fly circles around all the console and arcade joysticks I used around the same time.</p><p>PC Gamer's Andy Chalk swears he still has the CH Products FlightStick Pro in a closet somewhere, though sadly it's no longer easily usable without a <a href="https://en.wikipedia.org/wiki/Game_port">game port</a> adapter. But he swears it was great in its heyday:</p><p>Despite how much I loved the FlightStick, I don't remember it staying connected to our PC for long.</p><div  class="fancy-box"><div class="fancy_box-title">From the archives</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="gsFSD7gWxvTQDJ8qUfpHpU" name="PC Gamer Issue 001 (May-June 1994) page 000" caption="" alt="PC Gamer US issue #1 (May 1994)" src="https://cdn.mos.cms.futurecdn.net/gsFSD7gWxvTQDJ8qUfpHpU-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">The ad that inspired this article was originally published in <strong>PC Gamer #1 (US, May 1994)</strong>.</p><p class="fancy-box__body-text">You can still <a data-analytics-id="inline-link" href="https://www.magazinesdirect.com/pcg-brandsite" target="_blank">subscribe to PC Gamer</a> to get new issues of the magazine (in print!) every month.</p></div></div><p>I think I only played a few games with it before it moved to its permanent home in a box somewhere in our office—either because my dad's new Pentium PC lacked the relevant port, or more likely because I became obsessed with real-time strategy games like Command & Conquer and didn't have much more use for the joystick. That seems more likely, considering the Thrustmaster HOTAS I bought <a href="https://www.pcgamer.com/star-wars-squadrons-review/">for Star Wars: Squadrons</a> has only come out of its drawer once in the six years since I reviewed that game.</p><p>These days I take for granted that a game controller is going to have nice-feeling analog sticks on it, even if they aren't using fancy <a href="https://www.pcgamer.com/im-calling-time-on-stick-drift-and-getting-hall-effect-in-every-one-of-my-controllers-in-2024/">Hall effect</a> or (even better) <a href="https://www.pcgamer.com/hardware/forget-what-you-heard-theres-plenty-of-pc-hardware-to-be-excited-about-in-2026/">tunnel magnetoresistance</a> tech. But 30 years ago, the humble FlightStick was as good as it got. As far as I knew, at least.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/sometimes-you-have-to-take-a-break-from-work-to-pay-respects-to-the-pc-flight-stick-that-ruled-the-90s/</link>
                                                                            <description>
                            <![CDATA[ It may not look like much now, but the CH Products FlightStick was a champion in its day. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Eg4L2pXujaKyHt6sajs7v9</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/YfuokeHURR8JwJwvTW5QQf-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 04 Aug 2026 19:42:06 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                <author><![CDATA[ wesley@pcgamer.com (Wes Fenlon) ]]></author>                    <dc:creator><![CDATA[ Wes Fenlon ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/oLoGHTuSZDFZX6QdzCTj4R-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Wes has been covering games and hardware for more than 10 years, first at tech sites like The Wirecutter and Tested before joining the PC Gamer team in 2014. Wes plays a little bit of everything, but he&#039;ll always jump at the chance to cover emulation and Japanese games.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;When he&#039;s not obsessively optimizing and re-optimizing a tangle of conveyor belts in Satisfactory (it&#039;s really becoming a problem), he&#039;s probably playing a 20-year-old Final Fantasy or some opaque ASCII roguelike. With a focus on writing and editing features, he seeks out personal stories and in-depth histories from the corners of PC gaming and its niche communities. 50% pizza by volume (deep dish, to be specific).&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;His lasting legacy on this earth may be &lt;a href=&quot;https://www.pcgamer.com/ive-somehow-been-wasding-wrong-my-whole-life/&quot; target=&quot;_blank&quot;&gt;using WASD wrong&lt;/a&gt; for his entire life.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/YfuokeHURR8JwJwvTW5QQf-1920-80.jpg">
                                                            <media:credit><![CDATA[DOSDays.co.uk, CH Products]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Photo of the FlightStick joystick in box]]></media:description>                                                            <media:text><![CDATA[Photo of the FlightStick joystick in box]]></media:text>
                                <media:title type="plain"><![CDATA[Photo of the FlightStick joystick in box]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/YfuokeHURR8JwJwvTW5QQf-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Growing up in the '90s, good joysticks were strangely hard to come by. The stiff sticks on my local arcade cabinets, already inferior to their Japanese counterparts, always seemed to be so worn down that I'd have to smash them from edge-to-edge just to register an input. And yet the sticks attached to my friend's dusty Atari 2600, discovered in a box of his parents' old junk, still managed to make the arcade cabinet sticks look good. Those things were so atrocious it's a wonder videogames ever took off to begin with.</p><p>The Nintendo 64's analogue stick controller seemed like a marvel, at first—it was responsive, granular, and ushered in a whole era of 3D games. It also went to shit after a few months of use—I probably owned eight of those controllers over the console's lifetime and destroyed every one. There was only one joystick that never failed me: the beige and black, nondescript PC accessory my dad brought home one day, likely a hand-me-down from one of his computer geek friends.</p><p>As far as I was concerned, I was a real pilot when I grabbed that stick to <a href="https://www.pcgamer.com/what-was-the-first-pc-game-you-played/">boot up a game like LHX Attack Chopper</a>. Nevermind that a real cockpit has a million buttons and switches, rather than just the trigger and the singular cute lil red button on top (for launching missiles, obviously). The branding was as simplistic as the design: it just said "FlightStick" on it.</p><p>I had no idea that the stick belonged to a decades-spanning lineage until I was digging through the very first issue of PC Gamer US—from May 1994—and came across this ad.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1602px;"><p class="vanilla-image-block" style="padding-top:137.33%;"><img id="r9VfDXVLH49HBkoUKZgv3A" name="PC Gamer Issue 001 (May-June 1994) page 035" alt="CH Products FlightStick Pro ad from PC Gamer magazine" src="https://cdn.mos.cms.futurecdn.net/r9VfDXVLH49HBkoUKZgv3A-1920-80.jpg" mos="" align="middle" fullscreen="1" width="1602" height="2200" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/r9VfDXVLH49HBkoUKZgv3A-1920-80.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">FlightStick Pro ad from PC Gamer magazine #1 (US, May 1994) </span><span class="credit" itemprop="copyrightHolder">(Image credit: CH Products)</span></figcaption></figure><p>There it is, bottom right! That's my stick! </p><p>CH Products, it turns out, was a family business dating back to the 1970s, and was one of the go-to brands for flight enthusiasts throughout the late '80s and '90s. Their simpler designs—and connectivity options that gradually disappeared from desktop PCs—seemed to fall out of favor by the 2000s, as competitors like Thrustmaster, Saitek and Logitech made increasingly complex HOTAS setups. But Google them today and you'll still find loads of flight enthusiasts speaking about CH Products' rock-solid build quality (one of their later magazine ads even brags "We don't BREAK for anything!).</p><p>Go searching and you'll also find <a href="https://www.reddit.com/r/hotas/comments/1rnosb0/comment/oyi0fzg/?context=3">a Reddit thread</a> where the grandchild of founder Chuck Hayes complains that her mother convinced him to sell the family business, which is why CH Products is no longer around today, even though its website remarkably <a href="https://www.chproducts.com/13-28464-Home.php.html">remains online</a>.</p><figure class="van-image-figure pull-right inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1280px;"><p class="vanilla-image-block" style="padding-top:139.14%;"><img id="NN6dbsXKrb9b4Lc5zHvhe4" name="ch products flightstick pro" alt="CH Products FlightStick Pro ad" src="https://cdn.mos.cms.futurecdn.net/NN6dbsXKrb9b4Lc5zHvhe4-1920-80.jpg" mos="" align="right" fullscreen="1" width="1280" height="1781" attribution="" endorsement="" class="pull-rightinline expandable"><a href='https://cdn.mos.cms.futurecdn.net/NN6dbsXKrb9b4Lc5zHvhe4-1920-80.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class="pull-right inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: CH Products)</span></figcaption></figure><p>I had no idea what company made the stick back then, or that the CH FlightStick was actually a little older than me—the first model came out in 1987. "At the time of launch flight simulators on the PC were huge, and this peripheral was an incredibly realistic-looking analog joystick," writes the creator of <a href="https://dosdays.co.uk/topics/Manufacturers/chproducts.php">DOS Days</a>.</p><p>As quaint as the thing looks today compared to the <a href="https://www.pcgamer.com/the-best-pc-joysticks/">best PC joysticks</a>, it really did fly circles around all the console and arcade joysticks I used around the same time.</p><p>PC Gamer's Andy Chalk swears he still has the CH Products FlightStick Pro in a closet somewhere, though sadly it's no longer easily usable without a <a href="https://en.wikipedia.org/wiki/Game_port">game port</a> adapter. But he swears it was great in its heyday:</p><p>Despite how much I loved the FlightStick, I don't remember it staying connected to our PC for long.</p><div  class="fancy-box"><div class="fancy_box-title">From the archives</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="gsFSD7gWxvTQDJ8qUfpHpU" name="PC Gamer Issue 001 (May-June 1994) page 000" caption="" alt="PC Gamer US issue #1 (May 1994)" src="https://cdn.mos.cms.futurecdn.net/gsFSD7gWxvTQDJ8qUfpHpU-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">The ad that inspired this article was originally published in <strong>PC Gamer #1 (US, May 1994)</strong>.</p><p class="fancy-box__body-text">You can still <a data-analytics-id="inline-link" href="https://www.magazinesdirect.com/pcg-brandsite" target="_blank">subscribe to PC Gamer</a> to get new issues of the magazine (in print!) every month.</p></div></div><p>I think I only played a few games with it before it moved to its permanent home in a box somewhere in our office—either because my dad's new Pentium PC lacked the relevant port, or more likely because I became obsessed with real-time strategy games like Command & Conquer and didn't have much more use for the joystick. That seems more likely, considering the Thrustmaster HOTAS I bought <a href="https://www.pcgamer.com/star-wars-squadrons-review/">for Star Wars: Squadrons</a> has only come out of its drawer once in the six years since I reviewed that game.</p><p>These days I take for granted that a game controller is going to have nice-feeling analog sticks on it, even if they aren't using fancy <a href="https://www.pcgamer.com/im-calling-time-on-stick-drift-and-getting-hall-effect-in-every-one-of-my-controllers-in-2024/">Hall effect</a> or (even better) <a href="https://www.pcgamer.com/hardware/forget-what-you-heard-theres-plenty-of-pc-hardware-to-be-excited-about-in-2026/">tunnel magnetoresistance</a> tech. But 30 years ago, the humble FlightStick was as good as it got. As far as I knew, at least.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Lick your way to victory with the Mouth Pad, a Bluetooth device that lets you control your PC with just your tongue ]]></title>
                                                                                                <dc:content><![CDATA[ <p>PC gaming isn't always the most inclusive space. Besides the high price of everything from components to games, standard gaming peripherals such as a keyboard and mouse can exclude lots of folks with limited mobility. An expanding array of assistive devices is attempting to bridge that gap.</p><p><a href="https://www.augmental.tech/" target="_blank">Augmental</a> describes itself as a company specialising in 'Skinware,' "body-coupled interfaces that let people control computers, communicate, and interact with AI without relying on their hands." Its latest project is the Mouth Pad, a custom-fit mouthpiece that allows users to control PCs, tablets, and phones with just their tongue. The device is now available to purchase in the US and, yes, you can absolutely game with it.</p><p><a href="https://x.com/augmentaltech/status/2079961051383410784?s=20" target="_blank">The Mouth Pad</a> looks like the top half of a retainer, with flexible circuits encased inside custom 3D printed dental resin. <a href="https://www.pcgamer.com/this-computer-interface-you-wear-like-a-mustache-will-let-you-open-doors-and-play-games-with-your-lips/" target="_blank">Mouth-based physical interfaces are nothing new in the assistive tech space</a>, and mouth-operated pens are already used by gamers with physical disabilities. Rather than bashing your teeth against a physical joystick, Mouth Pad users can instead either run their tongue over the trackpad covering the roof of their mouth, or engage a head tracking mode in order to register inputs. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XpoJbO"></div>                            </div>                            <script src="https://kwizly.com/embed/XpoJbO.js" async></script><p>Augmental CEO Tomás Vega was originally interested in creating a brain-machine interface, though an internship at <a href="https://www.pcgamer.com/games/world-of-warcraft/neuralink-patient-raiding-in-world-of-warcraft-after-only-100-days-of-having-the-implant-installed-calls-it-pure-magic-exploring-azeroth-hands-free-at-full-speed/" target="_blank">Neuralink</a> changed his mind. <a href="https://news.mit.edu/2024/mouth-based-touchpad-augmental-0605" target="_blank">He told MIT News back in 2024</a>, "A brain implant has the highest potential for helping people in the future, but I saw a number of limitations that pushed me from working on it right now. One is the long timeline for development. I’ve made so many friends over the past years that needed a solution yesterday.”</p><p>Vega first built a version of the Mouth Pad during his final semester at MIT in 2019—he describes that prototype as "a lollipop with a bunch of sensors." Since then, he has founded startup Augmental alongside Corten Singer, and the pair have worked with about 100 early access users to refine the design. <a href="https://www.pcgamer.com/totally-game-meet-the-call-of-duty-streamer-who-plays-using-his-mouth/" target="_blank">RockyNoHands</a>, a streamer known for racking up Call of Duty kills with just his mouth, is one such early access user.</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2079961051383410784"><p lang="en" dir="ltr">MouthPad is a touchpad you drive with your tongue.Now available across the US. pic.twitter.com/n8Gvq2Y37Q<a href="https://twitter.com/cantworkitout/status/2079961051383410784">July 22, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>The current iteration of the Mouth Pad connects over Bluetooth like a wireless mouse, and holds about seven hours of charge. As far as wireless gaming mice go, that's not the greatest battery life, and the device takes about one and a half hours to fully charge. Clicking is registered by pressing the tongue tip into the palate, while right-clicks are registered via 'sucking or sipping' gestures. Click and drag motions are also possible.</p><p>The main barrier is unfortunately still the price, with the assistive device costing $1,400 (though there's also a bundle that includes a second Mouth Pad for $1,900). The device is not yet FDA approved, so insurance reimbursements are still a ways off as a result. Considering the Mouth Pad has the potential to genuinely better lives in spheres beyond gaming, (which is more than I can say for <a href="https://www.pcgamer.com/hardware/vr-hardware/would-you-like-to-taste-fish-soup-in-vr-me-neither-but-this-electronic-tongue-does-it-anyway/" target="_blank">some other tongue-based gaming devices I've seen</a>), here's hoping it becomes more affordable sooner rather than later.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/lick-your-way-to-victory-with-the-mouth-pad-a-bluetooth-device-that-lets-you-control-your-pc-with-just-your-tongue/</link>
                                                                            <description>
                            <![CDATA[ An early prototype looked like 'a lollipop with a bunch of sensors.' ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">yKSEWvzoqtL69XXVgpbDeM</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/ET7KztpLvdCi7gWLZauEr5-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 23 Jul 2026 12:39:14 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jess Kinghorn ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY-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/ET7KztpLvdCi7gWLZauEr5-1920-80.jpg">
                                                            <media:credit><![CDATA[Augmental]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The top half of a retainer, with a flexible copper circuit encased inside the dental resin. A small power pack is attached on the right-hand side.]]></media:description>                                                            <media:text><![CDATA[The top half of a retainer, with a flexible copper circuit encased inside the dental resin. A small power pack is attached on the right-hand side.]]></media:text>
                                <media:title type="plain"><![CDATA[The top half of a retainer, with a flexible copper circuit encased inside the dental resin. A small power pack is attached on the right-hand side.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/ET7KztpLvdCi7gWLZauEr5-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>PC gaming isn't always the most inclusive space. Besides the high price of everything from components to games, standard gaming peripherals such as a keyboard and mouse can exclude lots of folks with limited mobility. An expanding array of assistive devices is attempting to bridge that gap.</p><p><a href="https://www.augmental.tech/" target="_blank">Augmental</a> describes itself as a company specialising in 'Skinware,' "body-coupled interfaces that let people control computers, communicate, and interact with AI without relying on their hands." Its latest project is the Mouth Pad, a custom-fit mouthpiece that allows users to control PCs, tablets, and phones with just their tongue. The device is now available to purchase in the US and, yes, you can absolutely game with it.</p><p><a href="https://x.com/augmentaltech/status/2079961051383410784?s=20" target="_blank">The Mouth Pad</a> looks like the top half of a retainer, with flexible circuits encased inside custom 3D printed dental resin. <a href="https://www.pcgamer.com/this-computer-interface-you-wear-like-a-mustache-will-let-you-open-doors-and-play-games-with-your-lips/" target="_blank">Mouth-based physical interfaces are nothing new in the assistive tech space</a>, and mouth-operated pens are already used by gamers with physical disabilities. Rather than bashing your teeth against a physical joystick, Mouth Pad users can instead either run their tongue over the trackpad covering the roof of their mouth, or engage a head tracking mode in order to register inputs. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XpoJbO"></div>                            </div>                            <script src="https://kwizly.com/embed/XpoJbO.js" async></script><p>Augmental CEO Tomás Vega was originally interested in creating a brain-machine interface, though an internship at <a href="https://www.pcgamer.com/games/world-of-warcraft/neuralink-patient-raiding-in-world-of-warcraft-after-only-100-days-of-having-the-implant-installed-calls-it-pure-magic-exploring-azeroth-hands-free-at-full-speed/" target="_blank">Neuralink</a> changed his mind. <a href="https://news.mit.edu/2024/mouth-based-touchpad-augmental-0605" target="_blank">He told MIT News back in 2024</a>, "A brain implant has the highest potential for helping people in the future, but I saw a number of limitations that pushed me from working on it right now. One is the long timeline for development. I’ve made so many friends over the past years that needed a solution yesterday.”</p><p>Vega first built a version of the Mouth Pad during his final semester at MIT in 2019—he describes that prototype as "a lollipop with a bunch of sensors." Since then, he has founded startup Augmental alongside Corten Singer, and the pair have worked with about 100 early access users to refine the design. <a href="https://www.pcgamer.com/totally-game-meet-the-call-of-duty-streamer-who-plays-using-his-mouth/" target="_blank">RockyNoHands</a>, a streamer known for racking up Call of Duty kills with just his mouth, is one such early access user.</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2079961051383410784"><p lang="en" dir="ltr">MouthPad is a touchpad you drive with your tongue.Now available across the US. pic.twitter.com/n8Gvq2Y37Q<a href="https://twitter.com/cantworkitout/status/2079961051383410784">July 22, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>The current iteration of the Mouth Pad connects over Bluetooth like a wireless mouse, and holds about seven hours of charge. As far as wireless gaming mice go, that's not the greatest battery life, and the device takes about one and a half hours to fully charge. Clicking is registered by pressing the tongue tip into the palate, while right-clicks are registered via 'sucking or sipping' gestures. Click and drag motions are also possible.</p><p>The main barrier is unfortunately still the price, with the assistive device costing $1,400 (though there's also a bundle that includes a second Mouth Pad for $1,900). The device is not yet FDA approved, so insurance reimbursements are still a ways off as a result. Considering the Mouth Pad has the potential to genuinely better lives in spheres beyond gaming, (which is more than I can say for <a href="https://www.pcgamer.com/hardware/vr-hardware/would-you-like-to-taste-fish-soup-in-vr-me-neither-but-this-electronic-tongue-does-it-anyway/" target="_blank">some other tongue-based gaming devices I've seen</a>), here's hoping it becomes more affordable sooner rather than later.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ This DIY 'OpenPuck' project allows the Steam Controller to emulate Xbox, Switch, and PlayStation controllers, but no wireless charging for you ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The <a href="https://www.pcgamer.com/hardware/gaming-pcs/steam-machine-review-2026/" target="_blank">Steam Machine</a> might have turned out to be a disappointment (mostly down to its price), but the <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">Steam Controller</a> remains a very useful thing. </p><p>Should you be the tinkering sort, the <a href="https://github.com/safijari/openpuck" target="_blank">OpenPuck</a> project doubles down on the Steam Controller's Swiss Army Knife-like tendencies, allowing it to emulate Xbox, Nintendo Switch, and PlayStation controllers.</p><p>The OpenPuck is the work of Github user <a href="https://github.com/safijari" target="_blank">safijari</a>, and the project is based around a Pro Micro NRF52840 board. This $8 device can be flashed to emulate the Steam Controller's regular wireless puck, and translates the controller inputs to their console equivalents while also enabling Steam-specific features (via <a href="https://hackaday.com/2026/07/13/diy-steam-controller-puck-offers-xbox-switch-playstation-emulation-modes/" target="_blank">Hackaday</a>). </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eJqMEX"></div>                            </div>                            <script src="https://kwizly.com/embed/eJqMEX.js" async></script><p>Although safijari says "the Switch and PS3 modes have been verified to work on real consoles," so your mileage may vary. By the looks of the project's page on Github, DualSense emulation is currently supported for PC only, and there are various caveats for emulation support to consider for each potential mode.</p><p>Pairing involves connecting the board and the Steam Controller to a PC with a USB Type-C cable and flashing the microcontroller, after which the controller itself can be wirelessly connected.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1748px;"><p class="vanilla-image-block" style="padding-top:56.29%;"><img id="4W8Zf792fxGfo6RPeqnLVd" name="1784045961.jpg" alt="OpenPuck microcontroller" src="https://cdn.mos.cms.futurecdn.net/4W8Zf792fxGfo6RPeqnLVd-1920-80.jpg" mos="" align="middle" fullscreen="" width="1748" height="984" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: safijari)</span></figcaption></figure><p>"At any point you can hold all four back buttons and press X to switch over to Xbox mode which maps all canonical inputs to their expected counterparts," safijari confirms. "In this mode the right trackpad acts as a mouse, but at present this only works in Android and SteamOS."</p><p>Holding the back four buttons and Y switches to, err, Switch mode (with gyro and haptic support), whereas the same buttons + B puts it in "Lizard" mode, where the Steam Controller behaves as it does when Steam is closed—while it's still open.  </p><p>"This has a few advantages," says safijari. "The biggest one being that you can use inputs when a high privilege application is in the foreground (like the Task Manager, when using Steam if you wanna be able to do that Steam must be run as admin)."</p><p>The project seems to be a work in progress, and the author warns that "Every part of this project <em>HEAVILY</em> used LLMs," so take that for what it's worth. Should you wish for a chassis to contain the puck properly, you'll also need to 3D print one for yourself—with <a href="https://github.com/safijari/openpuck#:~:text=to%20swap%20slots.-,3D%20Printed%20Cases,-jaki%2Dgh%20has" target="_blank">several options</a> offered.</p><p>Unfortunately, the OpenPuck isn't capable of charging your Steam Controller like the regular puck, as it lacks any pins. Otherwise, though, it seems to be a multi-talented little marvel. </p><p>As part of this project, safijari also includes reference to ReversePuck, which is their way to emulate Steam Controller inputs (except the grip controls) on the Steam Deck in order to use it as one of the world's most expensive console pads. It's an <em>interesting </em>part of the project for sure.</p><p>I had a feeling Valve's new hardware would excite the imaginations of the maker community, and by the looks of things, they're already beavering away finding all sorts of uses for the latest Steam-branded offerings.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/this-diy-openpuck-project-allows-the-steam-controller-to-emulate-xbox-switch-and-playstation-controllers-but-no-wireless-charging-for-you/</link>
                                                                            <description>
                            <![CDATA[ Still, it's a perfectly practical puck in many respects. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">ZxiszMDgiXyztffzfh8x86</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/pNnhNDkM4iHpeDF9siHpSY-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 14 Jul 2026 16:23:43 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Andy Edser ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE-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/pNnhNDkM4iHpeDF9siHpSY-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Steam Controller on a desk next to its charging dock and a keyboard.]]></media:description>                                                            <media:text><![CDATA[The Steam Controller on a desk next to its charging dock and a keyboard.]]></media:text>
                                <media:title type="plain"><![CDATA[The Steam Controller on a desk next to its charging dock and a keyboard.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/pNnhNDkM4iHpeDF9siHpSY-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The <a href="https://www.pcgamer.com/hardware/gaming-pcs/steam-machine-review-2026/" target="_blank">Steam Machine</a> might have turned out to be a disappointment (mostly down to its price), but the <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">Steam Controller</a> remains a very useful thing. </p><p>Should you be the tinkering sort, the <a href="https://github.com/safijari/openpuck" target="_blank">OpenPuck</a> project doubles down on the Steam Controller's Swiss Army Knife-like tendencies, allowing it to emulate Xbox, Nintendo Switch, and PlayStation controllers.</p><p>The OpenPuck is the work of Github user <a href="https://github.com/safijari" target="_blank">safijari</a>, and the project is based around a Pro Micro NRF52840 board. This $8 device can be flashed to emulate the Steam Controller's regular wireless puck, and translates the controller inputs to their console equivalents while also enabling Steam-specific features (via <a href="https://hackaday.com/2026/07/13/diy-steam-controller-puck-offers-xbox-switch-playstation-emulation-modes/" target="_blank">Hackaday</a>). </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eJqMEX"></div>                            </div>                            <script src="https://kwizly.com/embed/eJqMEX.js" async></script><p>Although safijari says "the Switch and PS3 modes have been verified to work on real consoles," so your mileage may vary. By the looks of the project's page on Github, DualSense emulation is currently supported for PC only, and there are various caveats for emulation support to consider for each potential mode.</p><p>Pairing involves connecting the board and the Steam Controller to a PC with a USB Type-C cable and flashing the microcontroller, after which the controller itself can be wirelessly connected.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1748px;"><p class="vanilla-image-block" style="padding-top:56.29%;"><img id="4W8Zf792fxGfo6RPeqnLVd" name="1784045961.jpg" alt="OpenPuck microcontroller" src="https://cdn.mos.cms.futurecdn.net/4W8Zf792fxGfo6RPeqnLVd-1920-80.jpg" mos="" align="middle" fullscreen="" width="1748" height="984" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: safijari)</span></figcaption></figure><p>"At any point you can hold all four back buttons and press X to switch over to Xbox mode which maps all canonical inputs to their expected counterparts," safijari confirms. "In this mode the right trackpad acts as a mouse, but at present this only works in Android and SteamOS."</p><p>Holding the back four buttons and Y switches to, err, Switch mode (with gyro and haptic support), whereas the same buttons + B puts it in "Lizard" mode, where the Steam Controller behaves as it does when Steam is closed—while it's still open.  </p><p>"This has a few advantages," says safijari. "The biggest one being that you can use inputs when a high privilege application is in the foreground (like the Task Manager, when using Steam if you wanna be able to do that Steam must be run as admin)."</p><p>The project seems to be a work in progress, and the author warns that "Every part of this project <em>HEAVILY</em> used LLMs," so take that for what it's worth. Should you wish for a chassis to contain the puck properly, you'll also need to 3D print one for yourself—with <a href="https://github.com/safijari/openpuck#:~:text=to%20swap%20slots.-,3D%20Printed%20Cases,-jaki%2Dgh%20has" target="_blank">several options</a> offered.</p><p>Unfortunately, the OpenPuck isn't capable of charging your Steam Controller like the regular puck, as it lacks any pins. Otherwise, though, it seems to be a multi-talented little marvel. </p><p>As part of this project, safijari also includes reference to ReversePuck, which is their way to emulate Steam Controller inputs (except the grip controls) on the Steam Deck in order to use it as one of the world's most expensive console pads. It's an <em>interesting </em>part of the project for sure.</p><p>I had a feeling Valve's new hardware would excite the imaginations of the maker community, and by the looks of things, they're already beavering away finding all sorts of uses for the latest Steam-branded offerings.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Heaps of gamepads are discounted as part of Amazon Prime Day 2026, but there's only one I'd unreservedly recommend ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="product"><a data-dimension112="77b6eadf-a9d7-4cd0-b3ff-93911bd9b9c4" data-action="Deal Block" data-label="G7 Pro" data-dimension48="G7 Pro" data-dimension25="$127" href="https://www.amazon.com.au/GameSir-Pro-Controller-Wireless-Triggers/dp/B0FHHFBDNQ/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:800px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="UVbtMi7RWf6F92uuq9xUzH" name="GameSir G7 Pro Controller with charging dock product image" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/UVbtMi7RWf6F92uuq9xUzH-1920-80.png" mos="" align="middle" fullscreen="" width="800" height="800" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>A tidy saving on this brilliant PC gamepad (which also works with Xbox consoles, albeit only wired). It features an astonishing 1000 Hz polling rate for higher precision, TMR analog sticks, face button microswitches, Hall Effect triggers, paddle buttons, 2.4 Ghz wireless and Bluetooth: it basically has everything you want form a pro controller, without being priced like a pro controller.</p><p>Also:<br><strong>GameSir G7 Pro Dragon's Dogma 2 Edition</strong> - <del>AU$179</del> <a href="https://www.amazon.com.au/GameSir-G7-Pro-Controller-controller/dp/B0GJZ8WJD9" target="_blank" rel="sponsored" data-dimension112="77b6eadf-a9d7-4cd0-b3ff-93911bd9b9c4" data-action="Deal Block" data-label="G7 Pro" data-dimension48="G7 Pro" data-dimension25="$127">AU$143.20</a><br><strong>GameSir G7 Pro Zenless Zone Zero Edition</strong> - <del>AU$239</del> <a href="https://www.amazon.com.au/GameSir-G7-Pro-Controller-controller/dp/B0G6DCNFDN" target="_blank" rel="sponsored">AU$191.20</a><a class="view-deal button" href="https://www.amazon.com.au/GameSir-Pro-Controller-Wireless-Triggers/dp/B0FHHFBDNQ/" target="_blank" rel="nofollow" data-dimension112="77b6eadf-a9d7-4cd0-b3ff-93911bd9b9c4" data-action="Deal Block" data-label="G7 Pro" data-dimension48="G7 Pro" data-dimension25="$127">View Deal</a></p></div><p>While traditionally best for headsets, keyboards and mice, Amazon sales are increasingly the best opportunity to pick up PC-compatible gamepads for cheap. The market for gamepads and controllers is nowadays <em>very </em>competitive, mostly because the likes of Razer, 8BitDo, Turtle Beach and GameSir make good products, and not cheap and inferior alternatives to first-party console controllers like was the norm a decade ago.</p><p>Actually, most third-party gamepads are plainly better than the Xbox or PS5 controllers. Drift-free Hall effect analog sticks are nowadays <em>de riguer</em> for third-party controllers. Similarly, rear paddle buttons. They tend to be a tad pricier than the DualSense or the Xbox controller, but they also come with more buttons, more customisation, and technology that avoids rapid stick wear.</p><p>The GameSir G7 Pro is the best gamepad for PC gaming, full stop. It's right at the top of our list of <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/">the best PC controllers in 2026</a>, thanks to the way it makes all the most sought after "Pro" style trimmings affordable. </p><p>Here's what you're getting:</p><ul><li>Two rear paddle buttons</li><li>Two extra claw grip buttons</li><li>Trigger stops</li><li>Gyro support (!)</li><li>Three D-pad varieties</li><li>Charging base</li><li>1000Hz polling rate (versus the 126Hz polling rate in the Xbox controller!)</li><li>Wired, 2.4Ghz wireless, and Bluetooth connectivity</li><li>Ten hours battery</li><li>TMR drift free analog sticks</li></ul><p>On that final note: TMR is a more advanced anti-drift tech than Hall effect. I explain the workings behind it in my <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/">review of the G7 Pro</a>, but basically: they're more precise, with a lower power draw.</p><p>The GameSir G7 Pro normally retails for AU$159, and when it's discounted, usually hovers around the AU$135 mark. This week, as part of Prime Day, Amazon is offering it <a href="https://www.amazon.com.au/GameSir-Pro-Controller-Wireless-Triggers/dp/B0FHHFBDNQ/" target="_blank" rel="sponsored">for AU$127</a>. </p><p>If that's still too much to spend on a gamepad, GameSir's Nova Lite Wireless controller (PC Gamer's favourite budget wireless controller) is currently going cheap as well:</p><div class="product"><a data-dimension112="6a0c3f96-e5c4-4805-982f-e8d06cdf8b58" data-action="Deal Block" data-label="Nova Lite" data-dimension48="Nova Lite" data-dimension25="$32" href="https://www.amazon.com.au/dp/B0CMCPY4VG" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:200px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="soVwABeC6nbkWkMrnx2xcR" name="GameSir Nova Lite 2.4g Wireless Controller.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/soVwABeC6nbkWkMrnx2xcR-1920-80.jpg" mos="" align="middle" fullscreen="" width="200" height="200" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/dp/B0CMCPY4VG" target="_blank" rel="nofollow" data-dimension112="6a0c3f96-e5c4-4805-982f-e8d06cdf8b58" data-action="Deal Block" data-label="Nova Lite" data-dimension48="Nova Lite" data-dimension25="$32">Nova Lite: was $45 now $32</a></strong><br>Our favourite budget PC controller gets a discount that brings it into impulse-buy territory. There's a lot to love at this price point: 2.4Ghz wireless connectivity, Bluetooth, a wired option via the Type-C port, and ten hours of battery life. The build quality isn't the sturdiest going around, and there's no audio jack, but this is a great piece of kit for well under AU$50.<a class="view-deal button" href="https://www.amazon.com.au/dp/B0CMCPY4VG" target="_blank" rel="nofollow" data-dimension112="6a0c3f96-e5c4-4805-982f-e8d06cdf8b58" data-action="Deal Block" data-label="Nova Lite" data-dimension48="Nova Lite" data-dimension25="$32">View Deal</a></p></div><p>If neither of these suit, check out our list of the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/">best controllers for PC gaming</a>, or our exhaustive list of the <a href="https://www.pcgamer.com/hardware/live/news/prime-day-pc-gaming-deals-july-2026/">best Amazon Prime Day PC gaming deals</a>.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/game-pads/heaps-of-gamepads-are-discounted-as-part-of-amazon-prime-day-2026-but-theres-only-one-id-unreservedly-recommend/</link>
                                                                            <description>
                            <![CDATA[ Don't buy an inferior PC gamepad this Prime Day. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">oycGE7KbVjC7Nmyy4S4rRM</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/46gKp4LyKnubkDaTGggYJX-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 07 Jul 2026 01:04:42 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                <author><![CDATA[ shaun.prescott@futurenet.com (Shaun Prescott) ]]></author>                    <dc:creator><![CDATA[ Shaun Prescott ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/W7q4asCziYRHUEennZcpyC-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/46gKp4LyKnubkDaTGggYJX-1920-80.jpg">
                                                            <media:credit><![CDATA[Gamesir, Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A GameSir controller on a Prime Day banner with the PC Gamer logo.]]></media:description>                                                            <media:text><![CDATA[A GameSir controller on a Prime Day banner with the PC Gamer logo.]]></media:text>
                                <media:title type="plain"><![CDATA[A GameSir controller on a Prime Day banner with the PC Gamer logo.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/46gKp4LyKnubkDaTGggYJX-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="product"><a data-dimension112="77b6eadf-a9d7-4cd0-b3ff-93911bd9b9c4" data-action="Deal Block" data-label="G7 Pro" data-dimension48="G7 Pro" data-dimension25="$127" href="https://www.amazon.com.au/GameSir-Pro-Controller-Wireless-Triggers/dp/B0FHHFBDNQ/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:800px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="UVbtMi7RWf6F92uuq9xUzH" name="GameSir G7 Pro Controller with charging dock product image" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/UVbtMi7RWf6F92uuq9xUzH-1920-80.png" mos="" align="middle" fullscreen="" width="800" height="800" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>A tidy saving on this brilliant PC gamepad (which also works with Xbox consoles, albeit only wired). It features an astonishing 1000 Hz polling rate for higher precision, TMR analog sticks, face button microswitches, Hall Effect triggers, paddle buttons, 2.4 Ghz wireless and Bluetooth: it basically has everything you want form a pro controller, without being priced like a pro controller.</p><p>Also:<br><strong>GameSir G7 Pro Dragon's Dogma 2 Edition</strong> - <del>AU$179</del> <a href="https://www.amazon.com.au/GameSir-G7-Pro-Controller-controller/dp/B0GJZ8WJD9" target="_blank" rel="sponsored" data-dimension112="77b6eadf-a9d7-4cd0-b3ff-93911bd9b9c4" data-action="Deal Block" data-label="G7 Pro" data-dimension48="G7 Pro" data-dimension25="$127">AU$143.20</a><br><strong>GameSir G7 Pro Zenless Zone Zero Edition</strong> - <del>AU$239</del> <a href="https://www.amazon.com.au/GameSir-G7-Pro-Controller-controller/dp/B0G6DCNFDN" target="_blank" rel="sponsored">AU$191.20</a><a class="view-deal button" href="https://www.amazon.com.au/GameSir-Pro-Controller-Wireless-Triggers/dp/B0FHHFBDNQ/" target="_blank" rel="nofollow" data-dimension112="77b6eadf-a9d7-4cd0-b3ff-93911bd9b9c4" data-action="Deal Block" data-label="G7 Pro" data-dimension48="G7 Pro" data-dimension25="$127">View Deal</a></p></div><p>While traditionally best for headsets, keyboards and mice, Amazon sales are increasingly the best opportunity to pick up PC-compatible gamepads for cheap. The market for gamepads and controllers is nowadays <em>very </em>competitive, mostly because the likes of Razer, 8BitDo, Turtle Beach and GameSir make good products, and not cheap and inferior alternatives to first-party console controllers like was the norm a decade ago.</p><p>Actually, most third-party gamepads are plainly better than the Xbox or PS5 controllers. Drift-free Hall effect analog sticks are nowadays <em>de riguer</em> for third-party controllers. Similarly, rear paddle buttons. They tend to be a tad pricier than the DualSense or the Xbox controller, but they also come with more buttons, more customisation, and technology that avoids rapid stick wear.</p><p>The GameSir G7 Pro is the best gamepad for PC gaming, full stop. It's right at the top of our list of <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/">the best PC controllers in 2026</a>, thanks to the way it makes all the most sought after "Pro" style trimmings affordable. </p><p>Here's what you're getting:</p><ul><li>Two rear paddle buttons</li><li>Two extra claw grip buttons</li><li>Trigger stops</li><li>Gyro support (!)</li><li>Three D-pad varieties</li><li>Charging base</li><li>1000Hz polling rate (versus the 126Hz polling rate in the Xbox controller!)</li><li>Wired, 2.4Ghz wireless, and Bluetooth connectivity</li><li>Ten hours battery</li><li>TMR drift free analog sticks</li></ul><p>On that final note: TMR is a more advanced anti-drift tech than Hall effect. I explain the workings behind it in my <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/">review of the G7 Pro</a>, but basically: they're more precise, with a lower power draw.</p><p>The GameSir G7 Pro normally retails for AU$159, and when it's discounted, usually hovers around the AU$135 mark. This week, as part of Prime Day, Amazon is offering it <a href="https://www.amazon.com.au/GameSir-Pro-Controller-Wireless-Triggers/dp/B0FHHFBDNQ/" target="_blank" rel="sponsored">for AU$127</a>. </p><p>If that's still too much to spend on a gamepad, GameSir's Nova Lite Wireless controller (PC Gamer's favourite budget wireless controller) is currently going cheap as well:</p><div class="product"><a data-dimension112="6a0c3f96-e5c4-4805-982f-e8d06cdf8b58" data-action="Deal Block" data-label="Nova Lite" data-dimension48="Nova Lite" data-dimension25="$32" href="https://www.amazon.com.au/dp/B0CMCPY4VG" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:200px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="soVwABeC6nbkWkMrnx2xcR" name="GameSir Nova Lite 2.4g Wireless Controller.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/soVwABeC6nbkWkMrnx2xcR-1920-80.jpg" mos="" align="middle" fullscreen="" width="200" height="200" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/dp/B0CMCPY4VG" target="_blank" rel="nofollow" data-dimension112="6a0c3f96-e5c4-4805-982f-e8d06cdf8b58" data-action="Deal Block" data-label="Nova Lite" data-dimension48="Nova Lite" data-dimension25="$32">Nova Lite: was $45 now $32</a></strong><br>Our favourite budget PC controller gets a discount that brings it into impulse-buy territory. There's a lot to love at this price point: 2.4Ghz wireless connectivity, Bluetooth, a wired option via the Type-C port, and ten hours of battery life. The build quality isn't the sturdiest going around, and there's no audio jack, but this is a great piece of kit for well under AU$50.<a class="view-deal button" href="https://www.amazon.com.au/dp/B0CMCPY4VG" target="_blank" rel="nofollow" data-dimension112="6a0c3f96-e5c4-4805-982f-e8d06cdf8b58" data-action="Deal Block" data-label="Nova Lite" data-dimension48="Nova Lite" data-dimension25="$32">View Deal</a></p></div><p>If neither of these suit, check out our list of the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/">best controllers for PC gaming</a>, or our exhaustive list of the <a href="https://www.pcgamer.com/hardware/live/news/prime-day-pc-gaming-deals-july-2026/">best Amazon Prime Day PC gaming deals</a>.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ A second OG Steam Controller prototype has been found at Goodwill ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Seven years ago, a user of the Steam Controller subreddit <a href="https://www.reddit.com/r/SteamController/comments/eb87ah/steam_controller_chell_prototype_found_at_local/" target="_blank">found a prototype of the original Steam Controller at a local Goodwill</a>. Recently, in a strange bit of luck, a <a href="https://www.reddit.com/r/SteamController/comments/1umyxo9/seven_years_ago_another_member_of_this_subreddit/" target="_blank">second prototype has been found at Goodwill</a>. If one more pops up at the same chain, one must assume that Gabe Newell is simply dropping them off at Goodwills around America. It's the only rational assumption. </p><p>Taking to Reddit, user Waste-Set5032 shares that their dad happened upon the 'Chell' Steam Controller prototype at a Goodwill in Seattle. When one user ponders if the dad actually bought it, the <a href="https://www.reddit.com/r/SteamController/comments/1umyxo9/comment/ovm6i8v/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button" target="_blank">dad steps in to confirm</a>. He says, "I thought about letting this go, but I know my son is a fan of everything Valve, so I picked it up. On top of that, I now know my son’s Reddit handle."</p><figure><blockquote class="reddit-card"  ><a href="https://www.reddit.com/r/SteamController/comments/1umyxo9/seven_years_ago_another_member_of_this_subreddit">Seven years ago, another member of this Subreddit found a Chell Prototype in a Goodwill. Well, would you look at this, it happened twice. My dad in Seattle found one.</a><figcaption><cite> from <a href="https://www.reddit.com/r/SteamController">r/SteamController</a></cite></figcaption></blockquote></figure><script async src="//embed.redditmedia.com/widgets/platform.js" charset="UTF-8"></script><p>The son in question is 14 and claims "finding things from Valve is like finding ancient relics for me". He also says, "I love playing their older games like Portal 2 and Half Life because it feels like a bygone era of gaming and I love exploring it." You're not alone if reading that makes you feel like you're crumbling into dust. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XmARgX"></div>                            </div>                            <script src="https://kwizly.com/embed/XmARgX.js" async></script><p>The Chell Steam Controller prototype is believed to be from around 2013 or 2014, which means the prototype's new owner was around one or two years old when this prototype was created. It's got a fairly familiar design to those who know the <a href="https://www.pcgamer.com/hardware/controllers/steam-controller-re-review-a-fresh-look-at-valves-flawed-but-influential-10-year-old-controller/" target="_blank">original Steam Controller</a>, with its inward curved shape and two big trackpads on either side.</p><p>It is, however, missing face buttons on the right-hand side, with these being scattered around the middle of the controller instead. The prototype also moves the Select and Start buttons to the bottom of the controller, and also misses out on any sort of thumbsticks. All of that is to say the prototype is even stranger than the 2015 model. </p><p>The <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">2026 Steam Controller</a> launched just a few months ago and is altogether a much better device, though it still retains some of that Valve weirdness (complimentary), featuring two thumbsticks and two trackpads.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/kXk5wqg7RoGSLDTWiXMuBZ-1920-80.jpg" alt="Steam Controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/AszbJKeMrYAQd96mWXE5-1920-80.jpg" alt="Valve's new and improved Steam Controller during a visit to Valve's HQ in Bellevue, Washington." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The original poster's dad has managed to give the controller prototype a try and claims it "works as a generic controller". However, he notes that the four buttons in the middle of the pad actually work as a D-Pad, with the top left button being up, the top right button being right, the bottom left button being left, and the bottom right being down. </p><p>Given it's a prototype without the button layout and thumbsticks you'd expect from a modern controller, the Chell prototype likely isn't something you'd use for competitive gaming, but it's a neat relic of the past to have. It's also a sign of how far Valve has come with regard to controller ergonomics in the last decade. </p><p>Unfortunately, we don't know much more about the controller in regard to feel or compatibility. We also don't know how much was paid for it. However, the prototype found seven years ago was reportedly <a href="https://www.reddit.com/r/SteamController/comments/eb87ah/comment/fb8uk8b/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button" target="_blank">bought for $8</a>, which is <a href="https://www.pcgamer.com/hardware/i-bought-a-usd5-steam-controller-7-years-ago-and-forgot-it-existed-now-its-my-new-living-room-sidekick/" target="_blank">$3 more than the OG Steam Controller was selling for when it was discontinued</a>. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/a-second-og-steam-controller-prototype-has-been-found-at-goodwill/</link>
                                                                            <description>
                            <![CDATA[ We don't know how much it cost, but it does apparently work. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">DfVEVHQzQgxWDTXXcEYQ34</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/gokbuqaWmL94WrqqnmSQ4-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 06 Jul 2026 12:08:16 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-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/gokbuqaWmL94WrqqnmSQ4-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Valve&#039;s new and improved Steam Controller during a visit to Valve&#039;s HQ in Bellevue, Washington.]]></media:description>                                                            <media:text><![CDATA[Valve&#039;s new and improved Steam Controller during a visit to Valve&#039;s HQ in Bellevue, Washington.]]></media:text>
                                <media:title type="plain"><![CDATA[Valve&#039;s new and improved Steam Controller during a visit to Valve&#039;s HQ in Bellevue, Washington.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/gokbuqaWmL94WrqqnmSQ4-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Seven years ago, a user of the Steam Controller subreddit <a href="https://www.reddit.com/r/SteamController/comments/eb87ah/steam_controller_chell_prototype_found_at_local/" target="_blank">found a prototype of the original Steam Controller at a local Goodwill</a>. Recently, in a strange bit of luck, a <a href="https://www.reddit.com/r/SteamController/comments/1umyxo9/seven_years_ago_another_member_of_this_subreddit/" target="_blank">second prototype has been found at Goodwill</a>. If one more pops up at the same chain, one must assume that Gabe Newell is simply dropping them off at Goodwills around America. It's the only rational assumption. </p><p>Taking to Reddit, user Waste-Set5032 shares that their dad happened upon the 'Chell' Steam Controller prototype at a Goodwill in Seattle. When one user ponders if the dad actually bought it, the <a href="https://www.reddit.com/r/SteamController/comments/1umyxo9/comment/ovm6i8v/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button" target="_blank">dad steps in to confirm</a>. He says, "I thought about letting this go, but I know my son is a fan of everything Valve, so I picked it up. On top of that, I now know my son’s Reddit handle."</p><figure><blockquote class="reddit-card"  ><a href="https://www.reddit.com/r/SteamController/comments/1umyxo9/seven_years_ago_another_member_of_this_subreddit">Seven years ago, another member of this Subreddit found a Chell Prototype in a Goodwill. Well, would you look at this, it happened twice. My dad in Seattle found one.</a><figcaption><cite> from <a href="https://www.reddit.com/r/SteamController">r/SteamController</a></cite></figcaption></blockquote></figure><script async src="//embed.redditmedia.com/widgets/platform.js" charset="UTF-8"></script><p>The son in question is 14 and claims "finding things from Valve is like finding ancient relics for me". He also says, "I love playing their older games like Portal 2 and Half Life because it feels like a bygone era of gaming and I love exploring it." You're not alone if reading that makes you feel like you're crumbling into dust. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XmARgX"></div>                            </div>                            <script src="https://kwizly.com/embed/XmARgX.js" async></script><p>The Chell Steam Controller prototype is believed to be from around 2013 or 2014, which means the prototype's new owner was around one or two years old when this prototype was created. It's got a fairly familiar design to those who know the <a href="https://www.pcgamer.com/hardware/controllers/steam-controller-re-review-a-fresh-look-at-valves-flawed-but-influential-10-year-old-controller/" target="_blank">original Steam Controller</a>, with its inward curved shape and two big trackpads on either side.</p><p>It is, however, missing face buttons on the right-hand side, with these being scattered around the middle of the controller instead. The prototype also moves the Select and Start buttons to the bottom of the controller, and also misses out on any sort of thumbsticks. All of that is to say the prototype is even stranger than the 2015 model. </p><p>The <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">2026 Steam Controller</a> launched just a few months ago and is altogether a much better device, though it still retains some of that Valve weirdness (complimentary), featuring two thumbsticks and two trackpads.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/kXk5wqg7RoGSLDTWiXMuBZ-1920-80.jpg" alt="Steam Controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/AszbJKeMrYAQd96mWXE5-1920-80.jpg" alt="Valve's new and improved Steam Controller during a visit to Valve's HQ in Bellevue, Washington." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The original poster's dad has managed to give the controller prototype a try and claims it "works as a generic controller". However, he notes that the four buttons in the middle of the pad actually work as a D-Pad, with the top left button being up, the top right button being right, the bottom left button being left, and the bottom right being down. </p><p>Given it's a prototype without the button layout and thumbsticks you'd expect from a modern controller, the Chell prototype likely isn't something you'd use for competitive gaming, but it's a neat relic of the past to have. It's also a sign of how far Valve has come with regard to controller ergonomics in the last decade. </p><p>Unfortunately, we don't know much more about the controller in regard to feel or compatibility. We also don't know how much was paid for it. However, the prototype found seven years ago was reportedly <a href="https://www.reddit.com/r/SteamController/comments/eb87ah/comment/fb8uk8b/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button" target="_blank">bought for $8</a>, which is <a href="https://www.pcgamer.com/hardware/i-bought-a-usd5-steam-controller-7-years-ago-and-forgot-it-existed-now-its-my-new-living-room-sidekick/" target="_blank">$3 more than the OG Steam Controller was selling for when it was discontinued</a>. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ The most satisfying controller I've ever used is on sale at its lowest ever price for Prime Day ]]></title>
                                                                                                <dc:content><![CDATA[ <iframe src="https://content.jwplatform.com/players/J4ZqfFKo.html" id="J4ZqfFKo" title="Scuf Controller Deal" width="1920" height="1080" frameborder="0" scrolling="auto" allowfullscreen></iframe><div class="product"><a data-dimension112="56244f2a-6139-45fc-9612-9cc13f17a657" data-action="Deal Block" data-label="Valor Pro (wired)" data-dimension48="Valor Pro (wired)" data-dimension25="$79.99" href="https://www.scufgaming.com/us/en/p/scuf-valor-pro-black" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:602px;"><p class="vanilla-image-block" style="padding-top:99.83%;"><img id="drjqSuWFdQCkPHb5yYa4uK" name="Valor Pro (wired)" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/drjqSuWFdQCkPHb5yYa4uK-1920-80.png" mos="" align="middle" fullscreen="" width="602" height="601" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.scufgaming.com/us/en/p/scuf-valor-pro-black" target="_blank" rel="nofollow" data-dimension112="56244f2a-6139-45fc-9612-9cc13f17a657" data-action="Deal Block" data-label="Valor Pro (wired)" data-dimension48="Valor Pro (wired)" data-dimension25="$79.99">Valor Pro (wired): was $99.99 now $79.99</a></strong><br>This is the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-wired-controller" target="_blank">best wired controller for PC gaming</a> because it's just so damn satisfying to use. Everything about it screams quality, from the clicky DPAD to thunky back paddles. And it's fairly modular and customizable, too.</p><p><strong>Key specs: Wired (USB-C) | Hall effect thumbsticks | 260 g</strong></p><p><strong>Price check: </strong><a href="https://www.amazon.com/gp/aw/d/B0DTB3F17W" target="_blank">Amazon $85.49</a><a class="view-deal button" href="https://www.scufgaming.com/us/en/p/scuf-valor-pro-black" target="_blank" rel="nofollow" data-dimension112="56244f2a-6139-45fc-9612-9cc13f17a657" data-action="Deal Block" data-label="Valor Pro (wired)" data-dimension48="Valor Pro (wired)" data-dimension25="$79.99">View Deal</a></p></div><p>I don't tend to use controller very often. Not out of prejudice, I just mainly play competitive FPS games that require keyboard and mouse. But when I do, my hand goes straight for the Scuf Valor Pro. </p><p>I'm talking specifically about the wired version. While the wireless version is also at its lowest ever price for <a href="https://www.scufgaming.com/us/en/p/scuf-valor-pro-wireless-smoke" target="_blank">$140 at Scuf</a> (<a href="https://www.amazon.com/VALOR-Wireless-Performance-Controller-Gaming-Console/dp/B0FPXJYFRQ" target="_blank">$142 at Amazon</a>), it's a still a bit expensive. This wired one, though, is just <a href="https://www.scufgaming.com/us/en/p/scuf-valor-pro-black" target="_blank">$80 at Scuf</a> or <a href="https://www.amazon.com/gp/aw/d/B0DTB3F17W" target="_blank">$85 at Amazon</a> right now.</p><p>When I <a href="https://www.pcgamer.com/hardware/controllers/scuf-valor-pro-review/" target="_blank">reviewed the controller</a>, and despite rating it highly, I was quite negative about the controller lacking wireless for $100. But over time, I've come to see that the other benefits to it really do make it worth the money despite no wireless connectivity. Throw in the $20 discount and it's not even a question—it just <em>is </em>worth it.</p><ul><li><a href="https://www.pcgamer.com/best-amazon-prime-day-pc-gaming-deals/" target="_blank"><strong>We're keeping track of all the Amazon Prime Day PC gaming deals here</strong></a></li></ul><p>That's because I've never had my hands on such a damn glorious-feeling peripheral, other than the <a href="https://www.pcgamer.com/hardware/gaming-mice/razer-viper-v4-pro-review/" target="_blank">Razer Viper V4 Pro</a>. </p><p>Apart from 8K polling, which is unnecessary anyway, it has everything you might want from a competitive controller: Hall effect thumbsticks, click/squeeze trigger toggles, back paddles, you name it. But the real value comes in the build quality and feel. Every button has a wonderful click, clack, or thunk to it, the Xbox-like shape is incredibly comfy, and the materials keep the controller in place in your hand.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/CwpaU8WXbLjHN4Q6rsjx7a-1920-80.jpg" alt="Scuf Valor Pro wired controller close-up" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/DJxppJVyiBkBnFFWaznPha-1920-80.jpg" alt="Scuf Valor Pro wired controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Ja8baSNEkQtk7tHuZB6Nha-1920-80.jpg" alt="Scuf Valor Pro wired controller with faceplate off" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/opyHQTkvQFq2Ny35haH8ja-1920-80.jpg" alt="Scuf Valor Pro wired controller rear view of paddles" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/sZAgzn4Dnc6EGhM3NTsZea-1920-80.jpg" alt="Scuf Valor Pro wired controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/rY3T4gPV9pdUimMFcze5ga-1920-80.jpg" alt="Scuf Valor Pro wired controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/jYCCAAKVVwsh5ssQd6qzZa-1920-80.jpg" alt="Scuf Valor Pro wired controller" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>One thing I particularly like about it is how the left and right shoulder buttons wrap around the edges and lie flush, allowing you to shift your index finger very quickly and easily upwards to press them—an intentional design decision that pays off.</p><p>If customization is your jam, you can swap out its front magnetic faceplate, too. That gives access to the thumbsticks, which are easily swappable as well. For instance, to one of the included longer sticks that help with aim in shooters (though I'd just stick to using a mouse for shooters that require good aim, personally).</p><h2 id="check-out-all-of-amazon-s-controller-deals">👉 <a href="https://www.amazon.com/s?k=controller&crid=CACRS760D7SD&sprefix=controll%2Caps%2C191&ref=nb_sb_noss_2" target="_blank">Check out all of Amazon's controller deals</a> 👈</h2> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/the-most-satisfying-controller-ive-ever-used-is-on-sale-at-its-lowest-ever-price-for-prime-day/</link>
                                                                            <description>
                            <![CDATA[ There's nothing scuffed about this. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">dzxdiN4C5S8kvenv7SK5r</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/GQNkGa2bGmVufCTE4sBGuC-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 24 Jun 2026 14:51:26 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Fox ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Ee8ZL5rzgTjTNkBFJ4jBnD-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/GQNkGa2bGmVufCTE4sBGuC-1920-80.jpg">
                                                            <media:credit><![CDATA[Scuf]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A Scuf Valor Pro (wired) controller, shown front and back, on a custom PC Gamer Prime Day deal background.]]></media:description>                                                            <media:text><![CDATA[A Scuf Valor Pro (wired) controller, shown front and back, on a custom PC Gamer Prime Day deal background.]]></media:text>
                                <media:title type="plain"><![CDATA[A Scuf Valor Pro (wired) controller, shown front and back, on a custom PC Gamer Prime Day deal background.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/GQNkGa2bGmVufCTE4sBGuC-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <iframe src="https://content.jwplatform.com/players/J4ZqfFKo.html" id="J4ZqfFKo" title="Scuf Controller Deal" width="1920" height="1080" frameborder="0" scrolling="auto" allowfullscreen></iframe><div class="product"><a data-dimension112="56244f2a-6139-45fc-9612-9cc13f17a657" data-action="Deal Block" data-label="Valor Pro (wired)" data-dimension48="Valor Pro (wired)" data-dimension25="$79.99" href="https://www.scufgaming.com/us/en/p/scuf-valor-pro-black" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:602px;"><p class="vanilla-image-block" style="padding-top:99.83%;"><img id="drjqSuWFdQCkPHb5yYa4uK" name="Valor Pro (wired)" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/drjqSuWFdQCkPHb5yYa4uK-1920-80.png" mos="" align="middle" fullscreen="" width="602" height="601" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.scufgaming.com/us/en/p/scuf-valor-pro-black" target="_blank" rel="nofollow" data-dimension112="56244f2a-6139-45fc-9612-9cc13f17a657" data-action="Deal Block" data-label="Valor Pro (wired)" data-dimension48="Valor Pro (wired)" data-dimension25="$79.99">Valor Pro (wired): was $99.99 now $79.99</a></strong><br>This is the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-wired-controller" target="_blank">best wired controller for PC gaming</a> because it's just so damn satisfying to use. Everything about it screams quality, from the clicky DPAD to thunky back paddles. And it's fairly modular and customizable, too.</p><p><strong>Key specs: Wired (USB-C) | Hall effect thumbsticks | 260 g</strong></p><p><strong>Price check: </strong><a href="https://www.amazon.com/gp/aw/d/B0DTB3F17W" target="_blank">Amazon $85.49</a><a class="view-deal button" href="https://www.scufgaming.com/us/en/p/scuf-valor-pro-black" target="_blank" rel="nofollow" data-dimension112="56244f2a-6139-45fc-9612-9cc13f17a657" data-action="Deal Block" data-label="Valor Pro (wired)" data-dimension48="Valor Pro (wired)" data-dimension25="$79.99">View Deal</a></p></div><p>I don't tend to use controller very often. Not out of prejudice, I just mainly play competitive FPS games that require keyboard and mouse. But when I do, my hand goes straight for the Scuf Valor Pro. </p><p>I'm talking specifically about the wired version. While the wireless version is also at its lowest ever price for <a href="https://www.scufgaming.com/us/en/p/scuf-valor-pro-wireless-smoke" target="_blank">$140 at Scuf</a> (<a href="https://www.amazon.com/VALOR-Wireless-Performance-Controller-Gaming-Console/dp/B0FPXJYFRQ" target="_blank">$142 at Amazon</a>), it's a still a bit expensive. This wired one, though, is just <a href="https://www.scufgaming.com/us/en/p/scuf-valor-pro-black" target="_blank">$80 at Scuf</a> or <a href="https://www.amazon.com/gp/aw/d/B0DTB3F17W" target="_blank">$85 at Amazon</a> right now.</p><p>When I <a href="https://www.pcgamer.com/hardware/controllers/scuf-valor-pro-review/" target="_blank">reviewed the controller</a>, and despite rating it highly, I was quite negative about the controller lacking wireless for $100. But over time, I've come to see that the other benefits to it really do make it worth the money despite no wireless connectivity. Throw in the $20 discount and it's not even a question—it just <em>is </em>worth it.</p><ul><li><a href="https://www.pcgamer.com/best-amazon-prime-day-pc-gaming-deals/" target="_blank"><strong>We're keeping track of all the Amazon Prime Day PC gaming deals here</strong></a></li></ul><p>That's because I've never had my hands on such a damn glorious-feeling peripheral, other than the <a href="https://www.pcgamer.com/hardware/gaming-mice/razer-viper-v4-pro-review/" target="_blank">Razer Viper V4 Pro</a>. </p><p>Apart from 8K polling, which is unnecessary anyway, it has everything you might want from a competitive controller: Hall effect thumbsticks, click/squeeze trigger toggles, back paddles, you name it. But the real value comes in the build quality and feel. Every button has a wonderful click, clack, or thunk to it, the Xbox-like shape is incredibly comfy, and the materials keep the controller in place in your hand.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/CwpaU8WXbLjHN4Q6rsjx7a-1920-80.jpg" alt="Scuf Valor Pro wired controller close-up" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/DJxppJVyiBkBnFFWaznPha-1920-80.jpg" alt="Scuf Valor Pro wired controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Ja8baSNEkQtk7tHuZB6Nha-1920-80.jpg" alt="Scuf Valor Pro wired controller with faceplate off" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/opyHQTkvQFq2Ny35haH8ja-1920-80.jpg" alt="Scuf Valor Pro wired controller rear view of paddles" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/sZAgzn4Dnc6EGhM3NTsZea-1920-80.jpg" alt="Scuf Valor Pro wired controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/rY3T4gPV9pdUimMFcze5ga-1920-80.jpg" alt="Scuf Valor Pro wired controller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/jYCCAAKVVwsh5ssQd6qzZa-1920-80.jpg" alt="Scuf Valor Pro wired controller" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>One thing I particularly like about it is how the left and right shoulder buttons wrap around the edges and lie flush, allowing you to shift your index finger very quickly and easily upwards to press them—an intentional design decision that pays off.</p><p>If customization is your jam, you can swap out its front magnetic faceplate, too. That gives access to the thumbsticks, which are easily swappable as well. For instance, to one of the included longer sticks that help with aim in shooters (though I'd just stick to using a mouse for shooters that require good aim, personally).</p><h2 id="check-out-all-of-amazon-s-controller-deals">👉 <a href="https://www.amazon.com/s?k=controller&crid=CACRS760D7SD&sprefix=controll%2Caps%2C191&ref=nb_sb_noss_2" target="_blank">Check out all of Amazon's controller deals</a> 👈</h2>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Looking for a Forza-ready, direct drive racing wheel for less? This $379 Moza bundle is astonishingly good value for Prime Day ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="product"><a data-dimension112="305d1ebf-88a8-4ba0-9ecf-6b088d160e60" data-action="Deal Block" data-label="R5 Racing Wheel Bundle" data-dimension48="R5 Racing Wheel Bundle" data-dimension25="$379" href="https://us.mozaracing.com/products/r5-racing-bundle" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="GcQBfkmCP3CcHzQEv37ZAY" name="1728480629.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/GcQBfkmCP3CcHzQEv37ZAY-1920-80.jpg" mos="" align="middle" fullscreen="" width="1500" height="1500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://us.mozaracing.com/products/r5-racing-bundle" target="_blank" rel="nofollow" data-dimension112="305d1ebf-88a8-4ba0-9ecf-6b088d160e60" data-action="Deal Block" data-label="R5 Racing Wheel Bundle" data-dimension48="R5 Racing Wheel Bundle" data-dimension25="$379">R5 Racing Wheel Bundle: was $599 now $379</a></strong><br>I was blown away by the R5 bundle's build quality and sensitive-yet-powerful feedback when <a href="https://www.pcgamer.com/hardware/steering-wheels/moza-r5-bundle-performance-kit-review/" target="_blank">I reviewed it back in 2024</a>—and I'm still blown away when I use it for a sim racing session now. At this price? I wouldn't think twice, although I would definitely buy the <a href="https://us.mozaracing.com/products/srp-lite-kit?variant=50638943650094" target="_blank">$29 load-cell kit</a> for the brake pedal while I was at it.<br><br><strong>Key specs: Direct drive | 5 nm | Included pedal set</strong><a class="view-deal button" href="https://us.mozaracing.com/products/r5-racing-bundle" target="_blank" rel="nofollow" data-dimension112="305d1ebf-88a8-4ba0-9ecf-6b088d160e60" data-action="Deal Block" data-label="R5 Racing Wheel Bundle" data-dimension48="R5 Racing Wheel Bundle" data-dimension25="$379">View Deal</a></p></div><p>Sometimes you find a Prime Day deal that's so good, you perform a genuine double take. That was me this afternoon, when I spotted the Moza R5 bundle f<a href="https://us.mozaracing.com/products/r5-racing-bundle" target="_blank">or $379 on the Moza storefront</a>.</p><p>I mean, seriously? It's our <a href="https://www.pcgamer.com/best-steering-wheels-for-pc/#section-best-budget-direct-drive-racing-wheel" target="_blank">best budget direct drive racing wheel</a> pick, sure. But it was pretty damn affordable to begin with, as direct drive bundles go. Now? It makes so much sense, I'm thinking of getting another one.</p><ul><li><a href="https://www.pcgamer.com/best-amazon-prime-day-pc-gaming-deals/" target="_blank"><strong>We're keeping track of all the Amazon Prime Day PC gaming deals here</strong></a></li></ul><p>I reviewed the <a href="https://www.pcgamer.com/hardware/steering-wheels/moza-r5-bundle-performance-kit-review/" target="_blank">Moza R5 bundle</a> back in 2024, and I gave it a score of 90%. I've used it regularly since then, and not once has it let me down. In fact, if I were to score it today, I would give it... 90%. That's how much I like this particular wheel, wheelbase, and pedal combo.</p><p>You'll want the extra Performance Kit, which provides a load-cell spring for the brake pedal for the <a href="https://us.mozaracing.com/products/srp-lite-kit?variant=50638943650094" target="_blank">very reasonable price of $29</a>. Why Moza doesn't include it from the off, I have no idea. But other than that, this bundle would make the perfect kit for anyone who wants to feel like they're driving a real car with their gaming PC.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/SWzFfSqWThXB6ZxopbRUoj-1920-80.jpg" alt="A side angle of the MOZA R5 wheelbase mounted to a desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/DqyBksuFpDQT7tU7whiNwX-1920-80.jpg" alt="The MOZA R5 Bundle, including wheel, wheelbase, pedals and desk mount" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/pgFmgLcPEP5P7DB9tSNpNR-1920-80.jpg" alt="The MOZA R5 ES Wheel, included with the MOZA R5 bundle, fresh out of the box " /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/qiP4NQLSfdoasHcHx9nRKS-1920-80.jpg" alt="The MOZA R5 wheelbase sitting upright, showing its small size" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/yMxukEwQunrTBuxtjg9nfk-1920-80.jpg" alt="A drivers eye-view of the MOZA R5 being used for some sim racing, with a terrible driver behind the wheel" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>I've had mountains of fun with mine, and it still looks and feels as solid as it did the day I pulled it from the box. The feedback is superbly detailed, it makes no noise (the wheelbase outer casing acts as a very effective heatsink, negating the need for a fan), and it's the best thing this side of something very expensive yet brilliant, like the <a href="https://www.pcgamer.com/logitech-g-pro-racing-wheel-pedals-review/" target="_blank">Logitech G Pro Racing Wheel</a>.</p><p>Actually, I lied when I said it made no noise. The magnetic paddle shifters have a wonderfully chunky "thonk" to them, which makes changing gear at speed a tactile delight. Honestly, I could go on and on about how much I like the R5 until I ran into my word limit, but I think I've probably said enough.</p><p>It's brilliant, it's extraordinarily well-priced over the Prime Day sales, and if you like a bit of <a href="https://www.pcgamer.com/games/racing/forza-horizon-6-review/" target="_blank">Forza Horizon 6</a>, you should absolutely consider one. </p><p>Or, if it's still much too expensive for your liking, you should take a look at the <a href="https://www.pcgamer.com/hardware/controllers/the-controller-i-use-every-day-in-forza-horizon-6-is-now-just-usd43-thanks-to-prime-day-so-you-too-can-do-the-8bitdo/" target="_blank">$43 gaming controller that our Nick uses for the very same purpose</a>. Me, I like a wheel. And this one? It's downright fantastic.</p><h2 id="check-out-all-of-moza-s-racing-wheel-deals-here">👉<a href="https://us.mozaracing.com/collections/racing-series" target="_blank">Check out all of Moza's racing wheel deals here</a>👈</h2> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/steering-wheels/looking-for-a-forza-ready-direct-drive-racing-wheel-for-less-this-usd379-moza-bundle-is-astonishingly-good-value-for-prime-day/</link>
                                                                            <description>
                            <![CDATA[ It's silly money for such a good sim racing setup. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">w5UpPzwBrCWYVAahyUuwzE</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/teqr2hgU7NAgbzhqpnzA3F-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 23 Jun 2026 16:20:28 +0000</pubDate>                                                                                                                                <updated>Tue, 23 Jun 2026 16:20:32 +0000</updated>
                                                                                                                                            <category><![CDATA[Steering Wheels]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                                    <dc:creator><![CDATA[ Andy Edser ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE-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/teqr2hgU7NAgbzhqpnzA3F-1920-80.jpg">
                                                            <media:credit><![CDATA[Moza]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A Moza R5 direct drive racing wheel bundle on a Prime Day blue and red background]]></media:description>                                                            <media:text><![CDATA[A Moza R5 direct drive racing wheel bundle on a Prime Day blue and red background]]></media:text>
                                <media:title type="plain"><![CDATA[A Moza R5 direct drive racing wheel bundle on a Prime Day blue and red background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/teqr2hgU7NAgbzhqpnzA3F-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="product"><a data-dimension112="305d1ebf-88a8-4ba0-9ecf-6b088d160e60" data-action="Deal Block" data-label="R5 Racing Wheel Bundle" data-dimension48="R5 Racing Wheel Bundle" data-dimension25="$379" href="https://us.mozaracing.com/products/r5-racing-bundle" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="GcQBfkmCP3CcHzQEv37ZAY" name="1728480629.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/GcQBfkmCP3CcHzQEv37ZAY-1920-80.jpg" mos="" align="middle" fullscreen="" width="1500" height="1500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://us.mozaracing.com/products/r5-racing-bundle" target="_blank" rel="nofollow" data-dimension112="305d1ebf-88a8-4ba0-9ecf-6b088d160e60" data-action="Deal Block" data-label="R5 Racing Wheel Bundle" data-dimension48="R5 Racing Wheel Bundle" data-dimension25="$379">R5 Racing Wheel Bundle: was $599 now $379</a></strong><br>I was blown away by the R5 bundle's build quality and sensitive-yet-powerful feedback when <a href="https://www.pcgamer.com/hardware/steering-wheels/moza-r5-bundle-performance-kit-review/" target="_blank">I reviewed it back in 2024</a>—and I'm still blown away when I use it for a sim racing session now. At this price? I wouldn't think twice, although I would definitely buy the <a href="https://us.mozaracing.com/products/srp-lite-kit?variant=50638943650094" target="_blank">$29 load-cell kit</a> for the brake pedal while I was at it.<br><br><strong>Key specs: Direct drive | 5 nm | Included pedal set</strong><a class="view-deal button" href="https://us.mozaracing.com/products/r5-racing-bundle" target="_blank" rel="nofollow" data-dimension112="305d1ebf-88a8-4ba0-9ecf-6b088d160e60" data-action="Deal Block" data-label="R5 Racing Wheel Bundle" data-dimension48="R5 Racing Wheel Bundle" data-dimension25="$379">View Deal</a></p></div><p>Sometimes you find a Prime Day deal that's so good, you perform a genuine double take. That was me this afternoon, when I spotted the Moza R5 bundle f<a href="https://us.mozaracing.com/products/r5-racing-bundle" target="_blank">or $379 on the Moza storefront</a>.</p><p>I mean, seriously? It's our <a href="https://www.pcgamer.com/best-steering-wheels-for-pc/#section-best-budget-direct-drive-racing-wheel" target="_blank">best budget direct drive racing wheel</a> pick, sure. But it was pretty damn affordable to begin with, as direct drive bundles go. Now? It makes so much sense, I'm thinking of getting another one.</p><ul><li><a href="https://www.pcgamer.com/best-amazon-prime-day-pc-gaming-deals/" target="_blank"><strong>We're keeping track of all the Amazon Prime Day PC gaming deals here</strong></a></li></ul><p>I reviewed the <a href="https://www.pcgamer.com/hardware/steering-wheels/moza-r5-bundle-performance-kit-review/" target="_blank">Moza R5 bundle</a> back in 2024, and I gave it a score of 90%. I've used it regularly since then, and not once has it let me down. In fact, if I were to score it today, I would give it... 90%. That's how much I like this particular wheel, wheelbase, and pedal combo.</p><p>You'll want the extra Performance Kit, which provides a load-cell spring for the brake pedal for the <a href="https://us.mozaracing.com/products/srp-lite-kit?variant=50638943650094" target="_blank">very reasonable price of $29</a>. Why Moza doesn't include it from the off, I have no idea. But other than that, this bundle would make the perfect kit for anyone who wants to feel like they're driving a real car with their gaming PC.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/SWzFfSqWThXB6ZxopbRUoj-1920-80.jpg" alt="A side angle of the MOZA R5 wheelbase mounted to a desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/DqyBksuFpDQT7tU7whiNwX-1920-80.jpg" alt="The MOZA R5 Bundle, including wheel, wheelbase, pedals and desk mount" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/pgFmgLcPEP5P7DB9tSNpNR-1920-80.jpg" alt="The MOZA R5 ES Wheel, included with the MOZA R5 bundle, fresh out of the box " /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/qiP4NQLSfdoasHcHx9nRKS-1920-80.jpg" alt="The MOZA R5 wheelbase sitting upright, showing its small size" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/yMxukEwQunrTBuxtjg9nfk-1920-80.jpg" alt="A drivers eye-view of the MOZA R5 being used for some sim racing, with a terrible driver behind the wheel" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>I've had mountains of fun with mine, and it still looks and feels as solid as it did the day I pulled it from the box. The feedback is superbly detailed, it makes no noise (the wheelbase outer casing acts as a very effective heatsink, negating the need for a fan), and it's the best thing this side of something very expensive yet brilliant, like the <a href="https://www.pcgamer.com/logitech-g-pro-racing-wheel-pedals-review/" target="_blank">Logitech G Pro Racing Wheel</a>.</p><p>Actually, I lied when I said it made no noise. The magnetic paddle shifters have a wonderfully chunky "thonk" to them, which makes changing gear at speed a tactile delight. Honestly, I could go on and on about how much I like the R5 until I ran into my word limit, but I think I've probably said enough.</p><p>It's brilliant, it's extraordinarily well-priced over the Prime Day sales, and if you like a bit of <a href="https://www.pcgamer.com/games/racing/forza-horizon-6-review/" target="_blank">Forza Horizon 6</a>, you should absolutely consider one. </p><p>Or, if it's still much too expensive for your liking, you should take a look at the <a href="https://www.pcgamer.com/hardware/controllers/the-controller-i-use-every-day-in-forza-horizon-6-is-now-just-usd43-thanks-to-prime-day-so-you-too-can-do-the-8bitdo/" target="_blank">$43 gaming controller that our Nick uses for the very same purpose</a>. Me, I like a wheel. And this one? It's downright fantastic.</p><h2 id="check-out-all-of-moza-s-racing-wheel-deals-here">👉<a href="https://us.mozaracing.com/collections/racing-series" target="_blank">Check out all of Moza's racing wheel deals here</a>👈</h2>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ The controller I use every day in Forza Horizon 6 is now just $43 thanks to Prime Day, so you too can do the 8BitDo ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="product"><a data-dimension112="cf04b0d7-0419-45b0-b86e-46e75592af77" data-action="Deal Block" data-label="Ultimate 2" data-dimension48="Ultimate 2" data-dimension25="$42.69" href="https://www.amazon.com/Ultimate-Controller-Gaming-Joysticks-Switchable-Console/dp/B0DR8S2DQY/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="kW4QkBqLgDme4trpzgm4Rb" name="8bitdo_ultimate_2_wireless_controller" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/kW4QkBqLgDme4trpzgm4Rb-1920-80.jpg" mos="" align="middle" fullscreen="" width="1500" height="1500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>As a replacement for a standard Xbox controller for your PC, the 8BitDo Ultimate 2 is well worth considering at this price. Packed with features, only its cheap-feeling plastics let it down. <strong>This deal is for Prime members only.</strong></p><p><strong>Key specs: TMR thumbsticks | Hall effect triggers | 2.4 GHz wireless, Bluetooth | Gyro control | Charging base</strong><a class="view-deal button" href="https://www.amazon.com/Ultimate-Controller-Gaming-Joysticks-Switchable-Console/dp/B0DR8S2DQY/" target="_blank" rel="nofollow" data-dimension112="cf04b0d7-0419-45b0-b86e-46e75592af77" data-action="Deal Block" data-label="Ultimate 2" data-dimension48="Ultimate 2" data-dimension25="$42.69">View Deal</a></p></div><p>Every day for the past few weeks, I've been blasting through the highways of Tokyo in <a href="https://www.pcgamer.com/games/racing/forza-horizon-6-review/" target="_blank">Forza Horizon 6</a>. If I had the space for such a setup (and...err...the money), I'd be using <a href="https://www.pcgamer.com/hardware/steering-wheels/looking-for-a-forza-ready-direct-drive-racing-wheel-for-less-this-usd379-moza-bundle-is-astonishingly-good-value-for-prime-day" target="_blank">a really nice wheel-and-pedals setup</a>, but alas, I have to make do with a controller. </p><p>Fortunately, it's a pretty decent one, and right now the 8BitDo Ultimate 2 is a fraction under <a href="https://www.amazon.com/Ultimate-Controller-Gaming-Joysticks-Switchable-Console/dp/B0DR8S2DQY/" target="_blank">$43 at Amazon</a>, though just the white version.</p><ul><li><a href="https://www.pcgamer.com/best-amazon-prime-day-pc-gaming-deals/" target="_blank"><strong>We're curating all the best Prime Day PC gaming deals here</strong></a></li></ul><p>The Ultimate 2 is packed with all kinds of controller goodies: tunnelling magnetoresistance (TMR) thumbsticks and Hall effect triggers give you superb control, as well as no chance of ever experiencing stick drift. There are extra buttons on the shoulders and back to give you even more control options.</p><p>And when you're done gaming, you can just drop the thing into its charging base. It will automatically shut off, but should you need it instantly, it will power up and reconnect to your gaming PC within a second.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/2yEoxTqmneV2gP5S4iAEBf-1920-80.jpg" alt="A photo of the 8BitDo Ultimate 2 Wireless game controller for Windows PC and Android devices" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/VsHpd8fPdPb7HebhTw2GAf-1920-80.jpg" alt="A photo of the 8BitDo Ultimate 2 Wireless game controller for Windows PC and Android devices" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/RHvq4qqjCWAGKnR38Jz6Af-1920-80.jpg" alt="A photo of the 8BitDo Ultimate 2 Wireless game controller for Windows PC and Android devices" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/v67Psd5WC75KXQNoJRQW8f-1920-80.jpg" alt="A photo of the 8BitDo Ultimate 2 Wireless game controller for Windows PC and Android devices" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ZetfV3jc7vVmQotd4QtVBf-1920-80.jpg" alt="A photo of the 8BitDo Ultimate 2 Wireless game controller for Windows PC and Android devices" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/dnU5gtcW8Uat5RE3GCZKBf-1920-80.jpg" alt="A photo of the 8BitDo Ultimate 2 Wireless game controller for Windows PC and Android devices" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>When <a href="https://www.pcgamer.com/hardware/controllers/8bitdo-ultimate-2-wireless-review/" target="_blank">I reviewed 8BitDo's 'ultimate' wireless controller last year</a>, I was impressed by all its features and usability, though I was somewhat less keen on its cheap-feeling plastics, stick caps that made my thumbs sore, and the lack of resistance in the triggers.</p><p>But having used it almost every day since then, I've got used to the sticks and triggers, and they don't really bother me so much any more. It still feels a tad cheap, though, but credit to 8BitDo, the white plastics haven't become grubby in the least bit.</p><p>At its original $60, you'd be forgiven for complaining about such things, but at $43, the Ultimate 2 is genuinely great value for money for what you're getting. And when it's a little cooler in my office tonight, I'll be hammering my little Miata around with ease, thanks to the 8BitDo.</p><h2 id="find-all-of-amazon-s-gaming-controller-deals-here">👉<a href="https://www.amazon.com/s?k=gaming+controller" target="_blank">Find all of Amazon's gaming controller deals here</a>👈</h2> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/the-controller-i-use-every-day-in-forza-horizon-6-is-now-just-usd43-thanks-to-prime-day-so-you-too-can-do-the-8bitdo/</link>
                                                                            <description>
                            <![CDATA[ Do-do, do-do-be-do, do-do-do, bit-do, bit-do. Yes the heat in my office has got to me. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">LupVVnVJzudL4pLmUUfyah</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/8pXQqXyxLMPfMGP9GUfHgH-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 23 Jun 2026 16:17:19 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Nick Evanson ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/HH5qHxdCSKxFpY2HXp2Q5K-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/8pXQqXyxLMPfMGP9GUfHgH-1920-80.jpg">
                                                            <media:credit><![CDATA[8BitDo]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[An image of an 8BitDo Ultimate 2 wireless controller against a colorful blue background, with Prime Day and a PC Gamer logo on the sides]]></media:description>                                                            <media:text><![CDATA[An image of an 8BitDo Ultimate 2 wireless controller against a colorful blue background, with Prime Day and a PC Gamer logo on the sides]]></media:text>
                                <media:title type="plain"><![CDATA[An image of an 8BitDo Ultimate 2 wireless controller against a colorful blue background, with Prime Day and a PC Gamer logo on the sides]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/8pXQqXyxLMPfMGP9GUfHgH-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="product"><a data-dimension112="cf04b0d7-0419-45b0-b86e-46e75592af77" data-action="Deal Block" data-label="Ultimate 2" data-dimension48="Ultimate 2" data-dimension25="$42.69" href="https://www.amazon.com/Ultimate-Controller-Gaming-Joysticks-Switchable-Console/dp/B0DR8S2DQY/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="kW4QkBqLgDme4trpzgm4Rb" name="8bitdo_ultimate_2_wireless_controller" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/kW4QkBqLgDme4trpzgm4Rb-1920-80.jpg" mos="" align="middle" fullscreen="" width="1500" height="1500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>As a replacement for a standard Xbox controller for your PC, the 8BitDo Ultimate 2 is well worth considering at this price. Packed with features, only its cheap-feeling plastics let it down. <strong>This deal is for Prime members only.</strong></p><p><strong>Key specs: TMR thumbsticks | Hall effect triggers | 2.4 GHz wireless, Bluetooth | Gyro control | Charging base</strong><a class="view-deal button" href="https://www.amazon.com/Ultimate-Controller-Gaming-Joysticks-Switchable-Console/dp/B0DR8S2DQY/" target="_blank" rel="nofollow" data-dimension112="cf04b0d7-0419-45b0-b86e-46e75592af77" data-action="Deal Block" data-label="Ultimate 2" data-dimension48="Ultimate 2" data-dimension25="$42.69">View Deal</a></p></div><p>Every day for the past few weeks, I've been blasting through the highways of Tokyo in <a href="https://www.pcgamer.com/games/racing/forza-horizon-6-review/" target="_blank">Forza Horizon 6</a>. If I had the space for such a setup (and...err...the money), I'd be using <a href="https://www.pcgamer.com/hardware/steering-wheels/looking-for-a-forza-ready-direct-drive-racing-wheel-for-less-this-usd379-moza-bundle-is-astonishingly-good-value-for-prime-day" target="_blank">a really nice wheel-and-pedals setup</a>, but alas, I have to make do with a controller. </p><p>Fortunately, it's a pretty decent one, and right now the 8BitDo Ultimate 2 is a fraction under <a href="https://www.amazon.com/Ultimate-Controller-Gaming-Joysticks-Switchable-Console/dp/B0DR8S2DQY/" target="_blank">$43 at Amazon</a>, though just the white version.</p><ul><li><a href="https://www.pcgamer.com/best-amazon-prime-day-pc-gaming-deals/" target="_blank"><strong>We're curating all the best Prime Day PC gaming deals here</strong></a></li></ul><p>The Ultimate 2 is packed with all kinds of controller goodies: tunnelling magnetoresistance (TMR) thumbsticks and Hall effect triggers give you superb control, as well as no chance of ever experiencing stick drift. There are extra buttons on the shoulders and back to give you even more control options.</p><p>And when you're done gaming, you can just drop the thing into its charging base. It will automatically shut off, but should you need it instantly, it will power up and reconnect to your gaming PC within a second.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/2yEoxTqmneV2gP5S4iAEBf-1920-80.jpg" alt="A photo of the 8BitDo Ultimate 2 Wireless game controller for Windows PC and Android devices" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/VsHpd8fPdPb7HebhTw2GAf-1920-80.jpg" alt="A photo of the 8BitDo Ultimate 2 Wireless game controller for Windows PC and Android devices" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/RHvq4qqjCWAGKnR38Jz6Af-1920-80.jpg" alt="A photo of the 8BitDo Ultimate 2 Wireless game controller for Windows PC and Android devices" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/v67Psd5WC75KXQNoJRQW8f-1920-80.jpg" alt="A photo of the 8BitDo Ultimate 2 Wireless game controller for Windows PC and Android devices" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ZetfV3jc7vVmQotd4QtVBf-1920-80.jpg" alt="A photo of the 8BitDo Ultimate 2 Wireless game controller for Windows PC and Android devices" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/dnU5gtcW8Uat5RE3GCZKBf-1920-80.jpg" alt="A photo of the 8BitDo Ultimate 2 Wireless game controller for Windows PC and Android devices" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>When <a href="https://www.pcgamer.com/hardware/controllers/8bitdo-ultimate-2-wireless-review/" target="_blank">I reviewed 8BitDo's 'ultimate' wireless controller last year</a>, I was impressed by all its features and usability, though I was somewhat less keen on its cheap-feeling plastics, stick caps that made my thumbs sore, and the lack of resistance in the triggers.</p><p>But having used it almost every day since then, I've got used to the sticks and triggers, and they don't really bother me so much any more. It still feels a tad cheap, though, but credit to 8BitDo, the white plastics haven't become grubby in the least bit.</p><p>At its original $60, you'd be forgiven for complaining about such things, but at $43, the Ultimate 2 is genuinely great value for money for what you're getting. And when it's a little cooler in my office tonight, I'll be hammering my little Miata around with ease, thanks to the 8BitDo.</p><h2 id="find-all-of-amazon-s-gaming-controller-deals-here">👉<a href="https://www.amazon.com/s?k=gaming+controller" target="_blank">Find all of Amazon's gaming controller deals here</a>👈</h2>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ The best high-end PC controllers used to cost a king's ransom, now it's a little more affordable thanks to Amazon Prime Day ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="product"><a data-dimension112="a74a43cc-6da1-4a3b-a555-d87e3134731b" data-action="Deal Block" data-label="Wolverine V3 Pro 8K PC" data-dimension48="Wolverine V3 Pro 8K PC" data-dimension25="$149.99" href="https://www.amazon.com/Razer-Wolverine-PC-Wireless-Gaming-Controller/dp/B0FC9DTDJ3" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="c5NHFj87XKdjwDX9wXdpoD" name="71YOWPfmyfL._SL1500_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/c5NHFj87XKdjwDX9wXdpoD-1920-80.jpg" mos="" align="middle" fullscreen="" width="1500" height="1500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/Razer-Wolverine-PC-Wireless-Gaming-Controller/dp/B0FC9DTDJ3" target="_blank" rel="nofollow" data-dimension112="a74a43cc-6da1-4a3b-a555-d87e3134731b" data-action="Deal Block" data-label="Wolverine V3 Pro 8K PC" data-dimension48="Wolverine V3 Pro 8K PC" data-dimension25="$149.99">Wolverine V3 Pro 8K PC: was $199.90 now $149.99</a></strong><br>Lighter than its predecessor, it's now also packing in an 8K polling rate. Sturdy construction and magnetic tech throughout means this high-end gamepad will see you through <em>years </em>of gaming.</p><p><strong>Key Specs: Wireless | Asymmetric sticks | TMR sticks | Hall effect HyperTriggers | Up to 8,000 Hz polling rate | Back paddles</strong><br><br><strong>Price watch: </strong><a href="https://www.newegg.com/jaysuing-rz06-05540100-r3u1-gamepad-black/p/232-01A7-00041" target="_blank">Newegg $230.99</a><a class="view-deal button" href="https://www.amazon.com/Razer-Wolverine-PC-Wireless-Gaming-Controller/dp/B0FC9DTDJ3" target="_blank" rel="nofollow" data-dimension112="a74a43cc-6da1-4a3b-a555-d87e3134731b" data-action="Deal Block" data-label="Wolverine V3 Pro 8K PC" data-dimension48="Wolverine V3 Pro 8K PC" data-dimension25="$149.99">View Deal</a></p></div><p>The best of the best often comes at a premium. The controller we rate as the tippy-top of high-end gamepads is no different, going for what Alex describes as a "King's ransom" in his <a href="https://www.pcgamer.com/hardware/controllers/razer-wolverine-v3-pro-8k-pc-review/" target="_blank">Razer Wolverine V3 Pro 8K PC review</a>. Thankfully, the Amazon Prime Day sales is when those premium peripherals tend to take a step down from their pricey podiums.</p><p>Usually, the Razer Wolverine V3 Pro 8K PC controller costs a wince-worthy 200 bucks, which is definitely too rich for my blood when it comes to gamepads. Prime Day has lopped off 25% from that pointed price tag though, and now you can <a href="https://www.amazon.com/Razer-Wolverine-Wireless-Gaming-Controller-Console/dp/B0DB6S6R89" target="_blank">get the Razer Wolverine V3 Pro 8K for $150 from Amazon</a>.</p><ul><li><a href="https://www.pcgamer.com/best-amazon-prime-day-pc-gaming-deals/" target="_blank"><strong>We're curating all the best Prime Day PC gaming deals here</strong></a></li></ul><p>For someone who would rather, say, kneeslide into a bush in <a href="https://www.pcgamer.com/uk/arc-raiders/" target="_blank">Arc Raiders</a> as opposed to pelting through Dire Marsh's nighttime map in <a href="https://www.pcgamer.com/games/fps/marathons-new-pve-experiment-is-bungies-most-genius-decision-yet-so-make-it-a-full-mode-already/" target="_blank">Marathon</a>, $150 is still a bit more than I personally would want to spend on a controller for PC. However, the Razer Wolverine V3 Pro 8K ain't the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-high-end-controller" target="_blank">best high-end controller</a> for nothing; if your budget allows, you're definitely getting a premium experience with this in your palms.</p><p>Asymmetric TMR thumbsticks banish the spectre of stick drift, and you also get your share of Hall Effect triggers that the pad bills as 'HyperTriggers' here. Plenty of budget options now enjoy this tech (including another best of the best, the considerably more affordable <a href="https://www.pcgamer.com/hardware/controllers/gamesir-nova-lite-controller-review/" target="_blank">GameSir Nova Lite</a>), so that's not wholly to blame for the price tag. So, let's take a look at some of the features that make this pad so premium.</p><p>At 220 grams, it's a fairly weighty bit of kit though significantly sighter than its forebear (<a href="https://www.amazon.com/Razer-Wolverine-Wireless-Gaming-Controller-Console/dp/B0DB6S6R89" target="_blank">which is also on sale for the same price</a> even though it doesn't have the 8K polling rate). Alex also praised this PC controller's build quality in particular, writing, "[It's] sturdy and solid all over. The edge of each hand grip is coated in a dimpled, textured surface that helps it stay firmly lodged in the palm of even the sweatiest neckbeard. The durable construction should last you years of gaming, but Razer has included a robust carrying case in the box, just in case."</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/qNk9j8DawGx3mK24pzDea-1920-80.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/43mYXCSSN6cu8RnYj3ZXe-1920-80.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/37u73wiqVwyeN5W7TyxQa-1920-80.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/LpnJhFnNExiSb9fbCdvic-1920-80.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/7vRdHtZVSKG3ote8QmNZb-1920-80.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/CwjEYNLXx7nYyEjUF2wjc-1920-80.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/QBL7vmKU3KthS3BpCcA4b-1920-80.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/LThLVdCUAKtfWZPShC7Ud-1920-80.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Now, I wouldn't recommend flinging such a gamepad, but its sturdy construction assures me it could certainly withstand a few accidental tumbles. According to Alex, you should also get a lot more life out of the battery than the humble advertised 20 hours. He explains, "I tested it for a couple of hours each night over the course of a week, and after 10 hours of gameplay, its battery level had dropped from 68% to 37%. Based on that, I'd expect you to get plenty more than the advertised 20 hours, which is encouraging. Note that I was mostly using the 1,000 Hz polling rate—ramping it up to 8,000 Hz will drain the battery faster."</p><p>That does finally lead us onto the headlining polling rate rather nicely. The 8,000 Hz polling rate can be activated via the Razer Synapse software (and, honestly, it's a lot more than most gamers will need). Coupled with the TMR sticks, you're looking at a precise bit of kit geared towards anyone with pro esports ambition—and that explains the price tag. That's just as well, as any controller entering the esports arena will stare down heavy use, and the construction of the Razer Wolverine V3 Pro 8K PC means it can definitely withstand that for years to come.</p><h3 id="some-cheaper-alternatives">Some cheaper alternatives...</h3><div class="product"><a data-dimension112="c6f982a3-7113-42b0-9f80-cf0c5023ee21" data-action="Deal Block" data-label="Nova Lite" data-dimension48="Nova Lite" data-dimension25="$19.99" href="https://www.walmart.com/ip/GameSir-Nova-Lite-Wireless-Gamepad-Controller-with-Bluetooth-Dongle-Wired-for-Switch-Android-IOS-PC-Steam-Games-Green-with-Receiver/10096719173" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="7G5kFiwPuc34Kq2LEartXH" name="PCGamer Deal Block - 2025-11-26T153342.212" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/7G5kFiwPuc34Kq2LEartXH-1920-80.png" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>It's incredible to think you can spend so little and get a stick drift-resistant wireless controller that doesn't completely suck. Luckily for the GameSir Nova Lite, it does all of the above and manages to feel good and light in the hands, too. </p><p><strong>Key specs: Wireless (Bluetooth and 2.4 GHz) | Asymmetric | Hall effect</strong></p><p><strong>Price check:</strong> <a href="https://www.amazon.com/Wireless-Controller-Switch-Bluetooth-Vibration-Nintendo/dp/B0D9B4MCRF" target="_blank" data-dimension112="c6f982a3-7113-42b0-9f80-cf0c5023ee21" data-action="Deal Block" data-label="Nova Lite" data-dimension48="Nova Lite" data-dimension25="$19.99">Amazon $19.99</a><strong></strong><a class="view-deal button" href="https://www.walmart.com/ip/GameSir-Nova-Lite-Wireless-Gamepad-Controller-with-Bluetooth-Dongle-Wired-for-Switch-Android-IOS-PC-Steam-Games-Green-with-Receiver/10096719173" target="_blank" rel="nofollow" data-dimension112="c6f982a3-7113-42b0-9f80-cf0c5023ee21" data-action="Deal Block" data-label="Nova Lite" data-dimension48="Nova Lite" data-dimension25="$19.99">View Deal</a></p></div><div class="product"><a data-dimension112="310b20ad-be82-41e1-9184-4e1e7d30f073" data-action="Deal Block" data-label="G7 Pro Tri-Mode" data-dimension48="G7 Pro Tri-Mode" data-dimension25="$63.99" href="https://www.bestbuy.com/product/gamesir-g7-pro-controller-for-xbox-series-xsone-pc-android-tmr-sticks-hall-effect-triggers-1000hz-polling-rateaudio-jack-shadow-ember/J3R85HZRHY" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:860px;"><p class="vanilla-image-block" style="padding-top:98.84%;"><img id="9qUkynE2jQsgzsVGxnCXpk" name="1782129189.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/9qUkynE2jQsgzsVGxnCXpk-1920-80.jpg" mos="" align="middle" fullscreen="" width="860" height="850" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.bestbuy.com/product/gamesir-g7-pro-controller-for-xbox-series-xsone-pc-android-tmr-sticks-hall-effect-triggers-1000hz-polling-rateaudio-jack-shadow-ember/J3R85HZRHY" target="_blank" rel="nofollow" data-dimension112="310b20ad-be82-41e1-9184-4e1e7d30f073" data-action="Deal Block" data-label="G7 Pro Tri-Mode" data-dimension48="G7 Pro Tri-Mode" data-dimension25="$63.99">G7 Pro Tri-Mode: was $79.99 now $63.99</a></strong><br>Our current pick for the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming" target="_blank">best PC controller</a> right now, the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review" target="_blank">GameSir G7 Pro</a> is only slightly pricier than a standard Xbox controller but feels and looks nearly identical, and comes with TMR sticks, tactile switches, and a charging dock to keep it topped up and looking pretty on a shelf. This is the lowest we've seen this controller at, and it was already reasonably priced at MSRP. </p><p><strong>Key specs: TMR joysticks | 2.4 GHz wireless, Bluetooth, Wired | Asymmetric | 272 g</strong></p><p><strong>Price check: </strong><a href="https://www.amazon.com/GameSir-Controller-Wireless-Triggers-Gaming-Console/dp/B0FHHFBDNQ/ref=sr_1_1_sspa" target="_blank">Amazon $63.99</a><a class="view-deal button" href="https://www.bestbuy.com/product/gamesir-g7-pro-controller-for-xbox-series-xsone-pc-android-tmr-sticks-hall-effect-triggers-1000hz-polling-rateaudio-jack-shadow-ember/J3R85HZRHY" target="_blank" rel="nofollow" data-dimension112="310b20ad-be82-41e1-9184-4e1e7d30f073" data-action="Deal Block" data-label="G7 Pro Tri-Mode" data-dimension48="G7 Pro Tri-Mode" data-dimension25="$63.99">View Deal</a></p></div><p>Now, obviously at $150 it is a lot of cash to drop on, well, anything at the moment, but in the world of PC pads there are a ton to choose from at a more reasonable price. For just <a href="https://www.walmart.com/ip/GameSir-Nova-Lite-Wireless-Gamepad-Controller-with-Bluetooth-Dongle-Wired-for-Switch-Android-IOS-PC-Steam-Games-Green-with-Receiver/10096719173" target="_blank">$20 you can get a genuine wireless Hall effect pad</a> in a funky colour or spend a bit more and grab our pick as the best overall controller for PC right now, the <a href="https://www.bestbuy.com/product/gamesir-g7-pro-controller-for-xbox-series-xsone-pc-android-tmr-sticks-hall-effect-triggers-1000hz-polling-rateaudio-jack-shadow-ember/J3R85HZRHY" target="_blank">Gamesir G7 Pro Tri-mode for just $64</a>.</p><p>So, there are options if the excellent Razer is still too rich for your blood even with this discount.</p><h2 id="check-out-all-of-amazon-s-pc-controller-deals">👉<a href="https://www.amazon.com/s?k=PC+controller&rh=n%3A402052011&ref=nb_sb_noss" target="_blank">Check out all of Amazon's PC controller deals👈</a></h2> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/the-best-high-end-pc-controllers-used-to-cost-a-kings-ransom-now-its-a-little-more-affordable-thanks-to-amazon-prime-day/</link>
                                                                            <description>
                            <![CDATA[ This here peasant is revolting even with the discount, though. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">VtXw239qzkYxHCFVWvbnMo</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/93n5mHCotkSJexWpHzuo2o-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 23 Jun 2026 13:20:09 +0000</pubDate>                                                                                                                                <updated>Fri, 26 Jun 2026 12:54:36 +0000</updated>
                                                                                                                                            <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jess Kinghorn ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY-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/93n5mHCotkSJexWpHzuo2o-1920-80.jpg">
                                                            <media:credit><![CDATA[Razer]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Razer Wolverine V3 Pro 8K PC wireless controller floats in the funky PC G Prime Day deal void.]]></media:description>                                                            <media:text><![CDATA[The Razer Wolverine V3 Pro 8K PC wireless controller floats in the funky PC G Prime Day deal void.]]></media:text>
                                <media:title type="plain"><![CDATA[The Razer Wolverine V3 Pro 8K PC wireless controller floats in the funky PC G Prime Day deal void.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/93n5mHCotkSJexWpHzuo2o-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="product"><a data-dimension112="a74a43cc-6da1-4a3b-a555-d87e3134731b" data-action="Deal Block" data-label="Wolverine V3 Pro 8K PC" data-dimension48="Wolverine V3 Pro 8K PC" data-dimension25="$149.99" href="https://www.amazon.com/Razer-Wolverine-PC-Wireless-Gaming-Controller/dp/B0FC9DTDJ3" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="c5NHFj87XKdjwDX9wXdpoD" name="71YOWPfmyfL._SL1500_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/c5NHFj87XKdjwDX9wXdpoD-1920-80.jpg" mos="" align="middle" fullscreen="" width="1500" height="1500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/Razer-Wolverine-PC-Wireless-Gaming-Controller/dp/B0FC9DTDJ3" target="_blank" rel="nofollow" data-dimension112="a74a43cc-6da1-4a3b-a555-d87e3134731b" data-action="Deal Block" data-label="Wolverine V3 Pro 8K PC" data-dimension48="Wolverine V3 Pro 8K PC" data-dimension25="$149.99">Wolverine V3 Pro 8K PC: was $199.90 now $149.99</a></strong><br>Lighter than its predecessor, it's now also packing in an 8K polling rate. Sturdy construction and magnetic tech throughout means this high-end gamepad will see you through <em>years </em>of gaming.</p><p><strong>Key Specs: Wireless | Asymmetric sticks | TMR sticks | Hall effect HyperTriggers | Up to 8,000 Hz polling rate | Back paddles</strong><br><br><strong>Price watch: </strong><a href="https://www.newegg.com/jaysuing-rz06-05540100-r3u1-gamepad-black/p/232-01A7-00041" target="_blank">Newegg $230.99</a><a class="view-deal button" href="https://www.amazon.com/Razer-Wolverine-PC-Wireless-Gaming-Controller/dp/B0FC9DTDJ3" target="_blank" rel="nofollow" data-dimension112="a74a43cc-6da1-4a3b-a555-d87e3134731b" data-action="Deal Block" data-label="Wolverine V3 Pro 8K PC" data-dimension48="Wolverine V3 Pro 8K PC" data-dimension25="$149.99">View Deal</a></p></div><p>The best of the best often comes at a premium. The controller we rate as the tippy-top of high-end gamepads is no different, going for what Alex describes as a "King's ransom" in his <a href="https://www.pcgamer.com/hardware/controllers/razer-wolverine-v3-pro-8k-pc-review/" target="_blank">Razer Wolverine V3 Pro 8K PC review</a>. Thankfully, the Amazon Prime Day sales is when those premium peripherals tend to take a step down from their pricey podiums.</p><p>Usually, the Razer Wolverine V3 Pro 8K PC controller costs a wince-worthy 200 bucks, which is definitely too rich for my blood when it comes to gamepads. Prime Day has lopped off 25% from that pointed price tag though, and now you can <a href="https://www.amazon.com/Razer-Wolverine-Wireless-Gaming-Controller-Console/dp/B0DB6S6R89" target="_blank">get the Razer Wolverine V3 Pro 8K for $150 from Amazon</a>.</p><ul><li><a href="https://www.pcgamer.com/best-amazon-prime-day-pc-gaming-deals/" target="_blank"><strong>We're curating all the best Prime Day PC gaming deals here</strong></a></li></ul><p>For someone who would rather, say, kneeslide into a bush in <a href="https://www.pcgamer.com/uk/arc-raiders/" target="_blank">Arc Raiders</a> as opposed to pelting through Dire Marsh's nighttime map in <a href="https://www.pcgamer.com/games/fps/marathons-new-pve-experiment-is-bungies-most-genius-decision-yet-so-make-it-a-full-mode-already/" target="_blank">Marathon</a>, $150 is still a bit more than I personally would want to spend on a controller for PC. However, the Razer Wolverine V3 Pro 8K ain't the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-high-end-controller" target="_blank">best high-end controller</a> for nothing; if your budget allows, you're definitely getting a premium experience with this in your palms.</p><p>Asymmetric TMR thumbsticks banish the spectre of stick drift, and you also get your share of Hall Effect triggers that the pad bills as 'HyperTriggers' here. Plenty of budget options now enjoy this tech (including another best of the best, the considerably more affordable <a href="https://www.pcgamer.com/hardware/controllers/gamesir-nova-lite-controller-review/" target="_blank">GameSir Nova Lite</a>), so that's not wholly to blame for the price tag. So, let's take a look at some of the features that make this pad so premium.</p><p>At 220 grams, it's a fairly weighty bit of kit though significantly sighter than its forebear (<a href="https://www.amazon.com/Razer-Wolverine-Wireless-Gaming-Controller-Console/dp/B0DB6S6R89" target="_blank">which is also on sale for the same price</a> even though it doesn't have the 8K polling rate). Alex also praised this PC controller's build quality in particular, writing, "[It's] sturdy and solid all over. The edge of each hand grip is coated in a dimpled, textured surface that helps it stay firmly lodged in the palm of even the sweatiest neckbeard. The durable construction should last you years of gaming, but Razer has included a robust carrying case in the box, just in case."</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/qNk9j8DawGx3mK24pzDea-1920-80.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/43mYXCSSN6cu8RnYj3ZXe-1920-80.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/37u73wiqVwyeN5W7TyxQa-1920-80.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/LpnJhFnNExiSb9fbCdvic-1920-80.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/7vRdHtZVSKG3ote8QmNZb-1920-80.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/CwjEYNLXx7nYyEjUF2wjc-1920-80.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/QBL7vmKU3KthS3BpCcA4b-1920-80.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/LThLVdCUAKtfWZPShC7Ud-1920-80.jpg" alt="Razer Wolverine V3 Pro 8K Pro controller on a light blue background" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Now, I wouldn't recommend flinging such a gamepad, but its sturdy construction assures me it could certainly withstand a few accidental tumbles. According to Alex, you should also get a lot more life out of the battery than the humble advertised 20 hours. He explains, "I tested it for a couple of hours each night over the course of a week, and after 10 hours of gameplay, its battery level had dropped from 68% to 37%. Based on that, I'd expect you to get plenty more than the advertised 20 hours, which is encouraging. Note that I was mostly using the 1,000 Hz polling rate—ramping it up to 8,000 Hz will drain the battery faster."</p><p>That does finally lead us onto the headlining polling rate rather nicely. The 8,000 Hz polling rate can be activated via the Razer Synapse software (and, honestly, it's a lot more than most gamers will need). Coupled with the TMR sticks, you're looking at a precise bit of kit geared towards anyone with pro esports ambition—and that explains the price tag. That's just as well, as any controller entering the esports arena will stare down heavy use, and the construction of the Razer Wolverine V3 Pro 8K PC means it can definitely withstand that for years to come.</p><h3 id="some-cheaper-alternatives">Some cheaper alternatives...</h3><div class="product"><a data-dimension112="c6f982a3-7113-42b0-9f80-cf0c5023ee21" data-action="Deal Block" data-label="Nova Lite" data-dimension48="Nova Lite" data-dimension25="$19.99" href="https://www.walmart.com/ip/GameSir-Nova-Lite-Wireless-Gamepad-Controller-with-Bluetooth-Dongle-Wired-for-Switch-Android-IOS-PC-Steam-Games-Green-with-Receiver/10096719173" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="7G5kFiwPuc34Kq2LEartXH" name="PCGamer Deal Block - 2025-11-26T153342.212" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/7G5kFiwPuc34Kq2LEartXH-1920-80.png" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>It's incredible to think you can spend so little and get a stick drift-resistant wireless controller that doesn't completely suck. Luckily for the GameSir Nova Lite, it does all of the above and manages to feel good and light in the hands, too. </p><p><strong>Key specs: Wireless (Bluetooth and 2.4 GHz) | Asymmetric | Hall effect</strong></p><p><strong>Price check:</strong> <a href="https://www.amazon.com/Wireless-Controller-Switch-Bluetooth-Vibration-Nintendo/dp/B0D9B4MCRF" target="_blank" data-dimension112="c6f982a3-7113-42b0-9f80-cf0c5023ee21" data-action="Deal Block" data-label="Nova Lite" data-dimension48="Nova Lite" data-dimension25="$19.99">Amazon $19.99</a><strong></strong><a class="view-deal button" href="https://www.walmart.com/ip/GameSir-Nova-Lite-Wireless-Gamepad-Controller-with-Bluetooth-Dongle-Wired-for-Switch-Android-IOS-PC-Steam-Games-Green-with-Receiver/10096719173" target="_blank" rel="nofollow" data-dimension112="c6f982a3-7113-42b0-9f80-cf0c5023ee21" data-action="Deal Block" data-label="Nova Lite" data-dimension48="Nova Lite" data-dimension25="$19.99">View Deal</a></p></div><div class="product"><a data-dimension112="310b20ad-be82-41e1-9184-4e1e7d30f073" data-action="Deal Block" data-label="G7 Pro Tri-Mode" data-dimension48="G7 Pro Tri-Mode" data-dimension25="$63.99" href="https://www.bestbuy.com/product/gamesir-g7-pro-controller-for-xbox-series-xsone-pc-android-tmr-sticks-hall-effect-triggers-1000hz-polling-rateaudio-jack-shadow-ember/J3R85HZRHY" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:860px;"><p class="vanilla-image-block" style="padding-top:98.84%;"><img id="9qUkynE2jQsgzsVGxnCXpk" name="1782129189.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/9qUkynE2jQsgzsVGxnCXpk-1920-80.jpg" mos="" align="middle" fullscreen="" width="860" height="850" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.bestbuy.com/product/gamesir-g7-pro-controller-for-xbox-series-xsone-pc-android-tmr-sticks-hall-effect-triggers-1000hz-polling-rateaudio-jack-shadow-ember/J3R85HZRHY" target="_blank" rel="nofollow" data-dimension112="310b20ad-be82-41e1-9184-4e1e7d30f073" data-action="Deal Block" data-label="G7 Pro Tri-Mode" data-dimension48="G7 Pro Tri-Mode" data-dimension25="$63.99">G7 Pro Tri-Mode: was $79.99 now $63.99</a></strong><br>Our current pick for the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming" target="_blank">best PC controller</a> right now, the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review" target="_blank">GameSir G7 Pro</a> is only slightly pricier than a standard Xbox controller but feels and looks nearly identical, and comes with TMR sticks, tactile switches, and a charging dock to keep it topped up and looking pretty on a shelf. This is the lowest we've seen this controller at, and it was already reasonably priced at MSRP. </p><p><strong>Key specs: TMR joysticks | 2.4 GHz wireless, Bluetooth, Wired | Asymmetric | 272 g</strong></p><p><strong>Price check: </strong><a href="https://www.amazon.com/GameSir-Controller-Wireless-Triggers-Gaming-Console/dp/B0FHHFBDNQ/ref=sr_1_1_sspa" target="_blank">Amazon $63.99</a><a class="view-deal button" href="https://www.bestbuy.com/product/gamesir-g7-pro-controller-for-xbox-series-xsone-pc-android-tmr-sticks-hall-effect-triggers-1000hz-polling-rateaudio-jack-shadow-ember/J3R85HZRHY" target="_blank" rel="nofollow" data-dimension112="310b20ad-be82-41e1-9184-4e1e7d30f073" data-action="Deal Block" data-label="G7 Pro Tri-Mode" data-dimension48="G7 Pro Tri-Mode" data-dimension25="$63.99">View Deal</a></p></div><p>Now, obviously at $150 it is a lot of cash to drop on, well, anything at the moment, but in the world of PC pads there are a ton to choose from at a more reasonable price. For just <a href="https://www.walmart.com/ip/GameSir-Nova-Lite-Wireless-Gamepad-Controller-with-Bluetooth-Dongle-Wired-for-Switch-Android-IOS-PC-Steam-Games-Green-with-Receiver/10096719173" target="_blank">$20 you can get a genuine wireless Hall effect pad</a> in a funky colour or spend a bit more and grab our pick as the best overall controller for PC right now, the <a href="https://www.bestbuy.com/product/gamesir-g7-pro-controller-for-xbox-series-xsone-pc-android-tmr-sticks-hall-effect-triggers-1000hz-polling-rateaudio-jack-shadow-ember/J3R85HZRHY" target="_blank">Gamesir G7 Pro Tri-mode for just $64</a>.</p><p>So, there are options if the excellent Razer is still too rich for your blood even with this discount.</p><h2 id="check-out-all-of-amazon-s-pc-controller-deals">👉<a href="https://www.amazon.com/s?k=PC+controller&rh=n%3A402052011&ref=nb_sb_noss" target="_blank">Check out all of Amazon's PC controller deals👈</a></h2>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Forza Horizon 6 works best with a racing wheel, so I've found nine Amazon Prime Day deals to put you in pole position ]]></title>
                                                                                                <dc:content><![CDATA[ <p><a href="https://www.pcgamer.com/games/racing/forza-horizon-6-review/" target="_blank">Forza Horizon 6</a> is a very good racing game. This, you probably already know. But, while the controller support is very good, sim racing enthusiasts will know that the best way to drive is through a great wheel and pedal set.</p><p>Luckily, we at PC Gamer have tested loads of sim racing gear—from the very affordable to the downright lush. And in case you haven't heard, <strong>it's Amazon Prime Day today</strong> (and until June 26), so I've put together a selection of the very best sim racing deals to get you strapped in and screaming around the streets of Japan. Most are straight from our <a href="https://www.pcgamer.com/best-steering-wheels-for-pc/" target="_blank">best racing wheel</a> guide, no less.</p><ul><li><a href="https://www.pcgamer.com/best-amazon-prime-day-pc-gaming-deals/" target="_blank"><strong>We're curating all the best Prime Day PC gaming deals here</strong></a></li></ul><p>A great wheel might not turn you into Max Verstappen, but when it comes to making you feel like you're at the controls of a bazillion-brake horsepower beast, there's nothing quite like it. You'll also want to consider somewhere to sit for the best racing position, a set of pedals for wheels that don't include them, and possibly even a manual shifter. We've got you covered—I'll see you at the starting line!</p><h2 class="article-body__section" id="section-prime-day-pc-racing-wheels-and-pedals-for-forza-horizon-6"><span>Prime Day PC racing wheels and pedals for Forza Horizon 6</span></h2>        <div class="featured_product_block featured_block_hero" data-id="cf778f55-aeff-4e1c-bf40-80824a5ada9d">            <a href="https://www.amazon.com/Logitech-Gaming-Driving-Force-Shifter/dp/B00Z0UWV3O/" data-model-name="G Driving Force Shifter – Compatible With G29, G920 & G923 Racing Wheels" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/nqAA5HCpJRybxJxW7oYLEW.jpg" alt="A Logitech G Driving Force Shifter on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Logitech</div>                                        <div class="featured__title">G Driving Force Shifter – Compatible With G29, G920 & G923 Racing Wheels</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="afbaa816-0ab5-4e5a-a576-8ccb46612653">            <a href="https://www.amazon.com/Playseat%C2%AE-Challenge-ActiFit-PlayStation/dp/B09MKT7PRZ/" data-model-name="Challenge Sim Racing Simulator Cockpit Chair" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:133.37%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/YGTxKGLHf2jMKj5gj2Q7QR.jpg" alt="A Playseat Challenge X sim racing cockpit chair on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Playseat</div>                                        <div class="featured__title">Challenge Sim Racing Simulator Cockpit Chair</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="3def6010-6dee-4d50-85cd-f786e59d5340">            <a href="https://www.bestbuy.com/product/thrustmaster-t128-racing-wheel-for-playstation-4-5-and-pc-black/JXLH464JCC" data-model-name="T128 Racing Wheel & Pedal Set" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/MhpikktmzTzCD4vDsup6rK.jpg" alt="A Thrustmaster T128 racing wheel and pedal set on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Thrustmaster</div>                                        <div class="featured__title">T128 Racing Wheel & Pedal Set</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="0c1fe490-e9c0-455f-8cfc-02ae4b8ee960">            <a href="https://www.amazon.com/Logitech-featuring-TRUEFORCE-Feedback-Responsive/dp/B07PGGDJSG/" data-model-name="G923 Racing Wheel and Pedals" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/Y4iC2s2LG5webm3RDsd9PE.jpg" alt="A Logitech G923 racing wheel and pedal set on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Logitech</div>                                        <div class="featured__title">G923 Racing Wheel and Pedals</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="44470ce7-e2d0-4327-a8ef-a1b0732231bd">            <a href="https://www.amazon.com/Thrustmaster-T300-Racing-Wheel-Playstation-3/dp/B01M1L2NRL/" data-model-name="T300RS GT Steering Wheel & Pedal Set" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:133.37%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/8qNJ4TU5M4csGaEcjGgtQc.jpg" alt="A Thrustmaster T300RS GT steering wheel and pedal set on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Thrustmaster</div>                                        <div class="featured__title">T300RS GT Steering Wheel & Pedal Set</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="fbc6a79c-926b-48d3-9475-df513dab310c">            <a href="https://www.logitechg.com/en-us/shop/p/pro-racing-pedals.941-000186" data-model-name="G Pro Racing Pedals" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:133.37%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/8SR4utMV2UeAKTFCovu7o8.jpg" alt="Logitech G Pro sim racing pedals on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Logitech</div>                                        <div class="featured__title">G Pro Racing Pedals</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="d6866dbb-7cf3-4a63-9867-d11dbcb8a7fa">            <a href="https://us.mozaracing.com/products/r5-racing-bundle" data-model-name="R5 Bundle" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/84nvm6RXxmTX6MaZRbrXkk.jpg" alt="A Moza Racing R5 bundle with direct drive wheel and pedals"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>MOZA Racing</div>                                        <div class="featured__title">R5 Bundle</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="a5ff5583-98b0-4e49-960d-0b81ac22baa2">            <a href="https://www.amazon.com/Playseat-Trophy-Adjustable-Lightweight-Xbox-One/dp/B0BSTFS6W5/" data-model-name="Trophy - Logitech G Edition Sim Racing Cockpit" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/T4pubKM2EpF9GUEstywWUH.jpg" alt="A Playseat Trophy Logitech G Edition sim racing chair on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Playseat</div>                                        <div class="featured__title">Trophy - Logitech G Edition Sim Racing Cockpit</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_standard" data-id="c4a29261-c1e0-4451-945e-d59353ecc61c">            <a href="https://www.amazon.com/Logitech-PRO-Racing-Wheel-Playstation/dp/B08W27XX75/" data-model-name="G Pro Racing Wheel" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/Syk5iuxjdwq5uxqR5Hqdt3.jpg" alt="A Logitech G Pro racing wheel on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Logitech G</div>                                        <div class="featured__title">G Pro Racing Wheel</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/steering-wheels/forza-horizon-6-is-better-when-youre-in-the-driving-seat-so-ive-picked-out-some-of-our-best-racing-wheels-pedals-and-chairs-to-put-you-in-pole-position/</link>
                                                                            <description>
                            <![CDATA[ Altogether now: Vrooooooooooooom! ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">96kz7bxdJpKp2RzBUfWYJG</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/7cdLzn3FmqBmbi2mDWpB6d-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 23 Jun 2026 11:57:50 +0000</pubDate>                                                                                                                                <updated>Fri, 26 Jun 2026 15:44:48 +0000</updated>
                                                                                                                                            <category><![CDATA[Steering Wheels]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                                    <dc:creator><![CDATA[ Andy Edser ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/ZGont4SjJV38V5HWmjfNAE-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/7cdLzn3FmqBmbi2mDWpB6d-1920-80.jpg">
                                                            <media:credit><![CDATA[Logitech, Playseat]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A selection of sim racing and racing wheel products on a blue and red Amazon Prime Day background]]></media:description>                                                            <media:text><![CDATA[A selection of sim racing and racing wheel products on a blue and red Amazon Prime Day background]]></media:text>
                                <media:title type="plain"><![CDATA[A selection of sim racing and racing wheel products on a blue and red Amazon Prime Day background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/7cdLzn3FmqBmbi2mDWpB6d-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p><a href="https://www.pcgamer.com/games/racing/forza-horizon-6-review/" target="_blank">Forza Horizon 6</a> is a very good racing game. This, you probably already know. But, while the controller support is very good, sim racing enthusiasts will know that the best way to drive is through a great wheel and pedal set.</p><p>Luckily, we at PC Gamer have tested loads of sim racing gear—from the very affordable to the downright lush. And in case you haven't heard, <strong>it's Amazon Prime Day today</strong> (and until June 26), so I've put together a selection of the very best sim racing deals to get you strapped in and screaming around the streets of Japan. Most are straight from our <a href="https://www.pcgamer.com/best-steering-wheels-for-pc/" target="_blank">best racing wheel</a> guide, no less.</p><ul><li><a href="https://www.pcgamer.com/best-amazon-prime-day-pc-gaming-deals/" target="_blank"><strong>We're curating all the best Prime Day PC gaming deals here</strong></a></li></ul><p>A great wheel might not turn you into Max Verstappen, but when it comes to making you feel like you're at the controls of a bazillion-brake horsepower beast, there's nothing quite like it. You'll also want to consider somewhere to sit for the best racing position, a set of pedals for wheels that don't include them, and possibly even a manual shifter. We've got you covered—I'll see you at the starting line!</p><h2 class="article-body__section" id="section-prime-day-pc-racing-wheels-and-pedals-for-forza-horizon-6"><span>Prime Day PC racing wheels and pedals for Forza Horizon 6</span></h2>        <div class="featured_product_block featured_block_hero" data-id="cf778f55-aeff-4e1c-bf40-80824a5ada9d">            <a href="https://www.amazon.com/Logitech-Gaming-Driving-Force-Shifter/dp/B00Z0UWV3O/" data-model-name="G Driving Force Shifter – Compatible With G29, G920 & G923 Racing Wheels" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/nqAA5HCpJRybxJxW7oYLEW.jpg" alt="A Logitech G Driving Force Shifter on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Logitech</div>                                        <div class="featured__title">G Driving Force Shifter – Compatible With G29, G920 & G923 Racing Wheels</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="afbaa816-0ab5-4e5a-a576-8ccb46612653">            <a href="https://www.amazon.com/Playseat%C2%AE-Challenge-ActiFit-PlayStation/dp/B09MKT7PRZ/" data-model-name="Challenge Sim Racing Simulator Cockpit Chair" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:133.37%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/YGTxKGLHf2jMKj5gj2Q7QR.jpg" alt="A Playseat Challenge X sim racing cockpit chair on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Playseat</div>                                        <div class="featured__title">Challenge Sim Racing Simulator Cockpit Chair</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="3def6010-6dee-4d50-85cd-f786e59d5340">            <a href="https://www.bestbuy.com/product/thrustmaster-t128-racing-wheel-for-playstation-4-5-and-pc-black/JXLH464JCC" data-model-name="T128 Racing Wheel & Pedal Set" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/MhpikktmzTzCD4vDsup6rK.jpg" alt="A Thrustmaster T128 racing wheel and pedal set on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Thrustmaster</div>                                        <div class="featured__title">T128 Racing Wheel & Pedal Set</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="0c1fe490-e9c0-455f-8cfc-02ae4b8ee960">            <a href="https://www.amazon.com/Logitech-featuring-TRUEFORCE-Feedback-Responsive/dp/B07PGGDJSG/" data-model-name="G923 Racing Wheel and Pedals" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/Y4iC2s2LG5webm3RDsd9PE.jpg" alt="A Logitech G923 racing wheel and pedal set on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Logitech</div>                                        <div class="featured__title">G923 Racing Wheel and Pedals</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="44470ce7-e2d0-4327-a8ef-a1b0732231bd">            <a href="https://www.amazon.com/Thrustmaster-T300-Racing-Wheel-Playstation-3/dp/B01M1L2NRL/" data-model-name="T300RS GT Steering Wheel & Pedal Set" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:133.37%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/8qNJ4TU5M4csGaEcjGgtQc.jpg" alt="A Thrustmaster T300RS GT steering wheel and pedal set on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Thrustmaster</div>                                        <div class="featured__title">T300RS GT Steering Wheel & Pedal Set</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="fbc6a79c-926b-48d3-9475-df513dab310c">            <a href="https://www.logitechg.com/en-us/shop/p/pro-racing-pedals.941-000186" data-model-name="G Pro Racing Pedals" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:133.37%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/8SR4utMV2UeAKTFCovu7o8.jpg" alt="Logitech G Pro sim racing pedals on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Logitech</div>                                        <div class="featured__title">G Pro Racing Pedals</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="d6866dbb-7cf3-4a63-9867-d11dbcb8a7fa">            <a href="https://us.mozaracing.com/products/r5-racing-bundle" data-model-name="R5 Bundle" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/84nvm6RXxmTX6MaZRbrXkk.jpg" alt="A Moza Racing R5 bundle with direct drive wheel and pedals"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>MOZA Racing</div>                                        <div class="featured__title">R5 Bundle</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="a5ff5583-98b0-4e49-960d-0b81ac22baa2">            <a href="https://www.amazon.com/Playseat-Trophy-Adjustable-Lightweight-Xbox-One/dp/B0BSTFS6W5/" data-model-name="Trophy - Logitech G Edition Sim Racing Cockpit" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/T4pubKM2EpF9GUEstywWUH.jpg" alt="A Playseat Trophy Logitech G Edition sim racing chair on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Playseat</div>                                        <div class="featured__title">Trophy - Logitech G Edition Sim Racing Cockpit</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_standard" data-id="c4a29261-c1e0-4451-945e-d59353ecc61c">            <a href="https://www.amazon.com/Logitech-PRO-Racing-Wheel-Playstation/dp/B08W27XX75/" data-model-name="G Pro Racing Wheel" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.05%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/Syk5iuxjdwq5uxqR5Hqdt3.jpg" alt="A Logitech G Pro racing wheel on a grey background"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Logitech G</div>                                        <div class="featured__title">G Pro Racing Wheel</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ This discounted controller puts the standard Xbox pad to shame for just $64 as Amazon Prime Day wraps up ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="product"><a data-dimension112="9699450a-7e74-4c09-b538-6b356d80da53" data-action="Deal Block" data-label="G7 Pro Tri-Mode" data-dimension48="G7 Pro Tri-Mode" data-dimension25="$63.99" href="https://www.amazon.com/GameSir-Controller-Wireless-Triggers-Gaming-Console/dp/B0FHHFBDNQ/ref=sr_1_1_sspa" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:860px;"><p class="vanilla-image-block" style="padding-top:98.84%;"><img id="9qUkynE2jQsgzsVGxnCXpk" name="1782129189.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/9qUkynE2jQsgzsVGxnCXpk-1920-80.jpg" mos="" align="middle" fullscreen="" width="860" height="850" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/GameSir-Controller-Wireless-Triggers-Gaming-Console/dp/B0FHHFBDNQ/ref=sr_1_1_sspa" target="_blank" rel="nofollow" data-dimension112="9699450a-7e74-4c09-b538-6b356d80da53" data-action="Deal Block" data-label="G7 Pro Tri-Mode" data-dimension48="G7 Pro Tri-Mode" data-dimension25="$63.99">G7 Pro Tri-Mode: was $79.99 now $63.99</a></strong><br>Our current pick for the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming" target="_blank">best PC controller</a> right now, the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review" target="_blank">GameSir G7 Pro</a> is only slightly pricier than a standard Xbox controller but feels and looks nearly identical, and comes with TMR sticks, tactile switches, and a charging dock to keep it topped up and looking pretty on a shelf. This is the lowest we've seen this controller at, and it was already reasonably priced at MSRP. </p><p><strong>Key specs: TMR joysticks | 2.4 GHz wireless, Bluetooth, Wired | Asymmetric | 272 g</strong></p><p><strong>Price check: </strong><a href="https://www.bestbuy.com/product/gamesir-g7-pro-controller-for-xbox-series-xsone-pc-android-tmr-sticks-hall-effect-triggers-1000hz-polling-rateaudio-jack-shadow-ember/J3R85HZRHY" target="_blank">Best Buy $63.99</a><a class="view-deal button" href="https://www.amazon.com/GameSir-Controller-Wireless-Triggers-Gaming-Console/dp/B0FHHFBDNQ/ref=sr_1_1_sspa" target="_blank" rel="nofollow" data-dimension112="9699450a-7e74-4c09-b538-6b356d80da53" data-action="Deal Block" data-label="G7 Pro Tri-Mode" data-dimension48="G7 Pro Tri-Mode" data-dimension25="$63.99">View Deal</a></p></div><p>You can get a pretty good idea of the GameSir G7 Pro from the score we awarded it in <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/" target="_blank">our review</a>: 92%. My colleague Shaun noting how impressive it is in feel and features for not a whole lot more money than an Xbox pad (<a href="https://www.walmart.com/ip/Microsoft-Xbox-Wireless-Controller-Carbon-Black/15060559533" target="_blank">$49</a>). What's more convincing is that it's currently on sale at Best Buy.</p><p>You can grab the GameSir G7 Pro for <a href="https://www.bestbuy.com/product/gamesir-g7-pro-controller-for-xbox-series-xsone-pc-android-tmr-sticks-hall-effect-triggers-1000hz-polling-rateaudio-jack-shadow-ember/J3R85HZRHY" target="_blank">$64 in the Tech Fest sale</a>. That's a $16 saving.</p><p>The G7 Pro is currently our pick for the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/" target="_blank">best controller for PC</a>. It delivers a lot of features not expected of a controller in its price range. For starters, it uses optical micro switches for ABXY and comes with a mechanical D-pad—something often only expected of controllers with triple-digit price tags. </p><ul><li><a href="https://www.pcgamer.com/best-amazon-prime-day-pc-gaming-deals/" target="_blank"><strong>We're curating all the best Prime Day PC gaming deals here</strong></a></li></ul><p>It also has stick-drift resistant thumbsticks. I think we're way past using a potentiometer for a thumbstick these days, and it was back in 2024 that I called time on <a href="https://www.pcgamer.com/im-calling-time-on-stick-drift-and-getting-hall-effect-in-every-one-of-my-controllers-in-2024/" target="_blank">stick drift for all my own future purchases</a>. Luckily, you don't have to look far for a better alternative. The G7 Pro uses TMR sensors to track the analog sticks with accuracy and without requiring a huge deadzone.</p><p>The triggers are Hall effect, though you can toggle a switch on the back of the controller to switch over to micro switches. This turns those triggers into clicky buttons. </p><p>Two more switches on the rear also lock or unlock the two rear paddle buttons. Such a good feature if, like me, you don't really care for extra buttons on the rear of the controller. There are a couple more of these on the G7 Pro: two mini bumpers up top.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/CLUqbm3rpKEfU3gR4VEdpE-1920-80.jpg" alt="The GameSir G7 Pro gamepad sitting in its charging dock" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/mzeh9s5YwadiA8Yfj3F6gn-1920-80.jpg" alt="An image of the GameSir G7 Pro gamepad sitting on a wooden surface" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The G7 Pro is a wireless pad. It offers 2.4 GHz via a provided dongle, with a polling rate up to 1,000 Hz, and Bluetooth. It can also be connected via a USB Type-C cable. Though if you're just looking to charge the pad, it comes with a charging dock in the box. A neater solution for keeping it regularly charged. </p><p>One feature shared by the G7 Pro and the <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">Steam Controller</a> is a gyroscope. The G7's Nexus software lets you map mouse, button, or stick input to the gyroscope for easy movement without a mouse.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/YUAaJWMzjmuS3WAtFzP8dL-1920-80.jpg" alt="GameSir G7 Pro's face buttons" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/TtbtcSpBQvgK5F6xrbsAT3-1920-80.jpg" alt="GameSir G7 Pro's TMR equipped analog stick" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/6tYRgsAwAyu37tYzmjxYKa-1920-80.jpg" alt="The GameSir G7 Pro's directional pad in the foreground, with its two analog sticks in the background" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Altogether, this controller is packed with features for not a lot of cash. </p><p>Shaun says it best in the final line of his review: "it packs pretty much every important pro feature into an $80 piece of kit that betters a lot of its more expensive competitors." Though, importantly, not $80 anymore. Just <a href="https://www.bestbuy.com/product/gamesir-g7-pro-controller-for-xbox-series-xsone-pc-android-tmr-sticks-hall-effect-triggers-1000hz-polling-rateaudio-jack-shadow-ember/J3R85HZRHY" target="_blank">$64</a>.</p><h2 id="check-out-best-buy-s-tech-fest-deals">👉 <a href="https://www.bestbuy.com/top-deals" target="_blank">Check out Best Buy's Tech Fest deals</a> 👈</h2> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/this-discounted-controller-puts-the-standard-xbox-pad-to-shame-wireless-tmr-sticks-and-charging-stand-for-usd64/</link>
                                                                            <description>
                            <![CDATA[ There's so much better value beyond Microsoft and Sony for PC. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">hqTceixKoxiQJ56gVBQhxe</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/46gKp4LyKnubkDaTGggYJX-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 22 Jun 2026 13:14:39 +0000</pubDate>                                                                                                                                <updated>Fri, 26 Jun 2026 10:05:27 +0000</updated>
                                                                                                                                            <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Ridley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/2YNigoLXbckPdRPDe3stwA-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/46gKp4LyKnubkDaTGggYJX-1920-80.jpg">
                                                            <media:credit><![CDATA[Gamesir, Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A GameSir controller on a Prime Day banner with the PC Gamer logo.]]></media:description>                                                            <media:text><![CDATA[A GameSir controller on a Prime Day banner with the PC Gamer logo.]]></media:text>
                                <media:title type="plain"><![CDATA[A GameSir controller on a Prime Day banner with the PC Gamer logo.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/46gKp4LyKnubkDaTGggYJX-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="product"><a data-dimension112="9699450a-7e74-4c09-b538-6b356d80da53" data-action="Deal Block" data-label="G7 Pro Tri-Mode" data-dimension48="G7 Pro Tri-Mode" data-dimension25="$63.99" href="https://www.amazon.com/GameSir-Controller-Wireless-Triggers-Gaming-Console/dp/B0FHHFBDNQ/ref=sr_1_1_sspa" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:860px;"><p class="vanilla-image-block" style="padding-top:98.84%;"><img id="9qUkynE2jQsgzsVGxnCXpk" name="1782129189.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/9qUkynE2jQsgzsVGxnCXpk-1920-80.jpg" mos="" align="middle" fullscreen="" width="860" height="850" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/GameSir-Controller-Wireless-Triggers-Gaming-Console/dp/B0FHHFBDNQ/ref=sr_1_1_sspa" target="_blank" rel="nofollow" data-dimension112="9699450a-7e74-4c09-b538-6b356d80da53" data-action="Deal Block" data-label="G7 Pro Tri-Mode" data-dimension48="G7 Pro Tri-Mode" data-dimension25="$63.99">G7 Pro Tri-Mode: was $79.99 now $63.99</a></strong><br>Our current pick for the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming" target="_blank">best PC controller</a> right now, the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review" target="_blank">GameSir G7 Pro</a> is only slightly pricier than a standard Xbox controller but feels and looks nearly identical, and comes with TMR sticks, tactile switches, and a charging dock to keep it topped up and looking pretty on a shelf. This is the lowest we've seen this controller at, and it was already reasonably priced at MSRP. </p><p><strong>Key specs: TMR joysticks | 2.4 GHz wireless, Bluetooth, Wired | Asymmetric | 272 g</strong></p><p><strong>Price check: </strong><a href="https://www.bestbuy.com/product/gamesir-g7-pro-controller-for-xbox-series-xsone-pc-android-tmr-sticks-hall-effect-triggers-1000hz-polling-rateaudio-jack-shadow-ember/J3R85HZRHY" target="_blank">Best Buy $63.99</a><a class="view-deal button" href="https://www.amazon.com/GameSir-Controller-Wireless-Triggers-Gaming-Console/dp/B0FHHFBDNQ/ref=sr_1_1_sspa" target="_blank" rel="nofollow" data-dimension112="9699450a-7e74-4c09-b538-6b356d80da53" data-action="Deal Block" data-label="G7 Pro Tri-Mode" data-dimension48="G7 Pro Tri-Mode" data-dimension25="$63.99">View Deal</a></p></div><p>You can get a pretty good idea of the GameSir G7 Pro from the score we awarded it in <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/" target="_blank">our review</a>: 92%. My colleague Shaun noting how impressive it is in feel and features for not a whole lot more money than an Xbox pad (<a href="https://www.walmart.com/ip/Microsoft-Xbox-Wireless-Controller-Carbon-Black/15060559533" target="_blank">$49</a>). What's more convincing is that it's currently on sale at Best Buy.</p><p>You can grab the GameSir G7 Pro for <a href="https://www.bestbuy.com/product/gamesir-g7-pro-controller-for-xbox-series-xsone-pc-android-tmr-sticks-hall-effect-triggers-1000hz-polling-rateaudio-jack-shadow-ember/J3R85HZRHY" target="_blank">$64 in the Tech Fest sale</a>. That's a $16 saving.</p><p>The G7 Pro is currently our pick for the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/" target="_blank">best controller for PC</a>. It delivers a lot of features not expected of a controller in its price range. For starters, it uses optical micro switches for ABXY and comes with a mechanical D-pad—something often only expected of controllers with triple-digit price tags. </p><ul><li><a href="https://www.pcgamer.com/best-amazon-prime-day-pc-gaming-deals/" target="_blank"><strong>We're curating all the best Prime Day PC gaming deals here</strong></a></li></ul><p>It also has stick-drift resistant thumbsticks. I think we're way past using a potentiometer for a thumbstick these days, and it was back in 2024 that I called time on <a href="https://www.pcgamer.com/im-calling-time-on-stick-drift-and-getting-hall-effect-in-every-one-of-my-controllers-in-2024/" target="_blank">stick drift for all my own future purchases</a>. Luckily, you don't have to look far for a better alternative. The G7 Pro uses TMR sensors to track the analog sticks with accuracy and without requiring a huge deadzone.</p><p>The triggers are Hall effect, though you can toggle a switch on the back of the controller to switch over to micro switches. This turns those triggers into clicky buttons. </p><p>Two more switches on the rear also lock or unlock the two rear paddle buttons. Such a good feature if, like me, you don't really care for extra buttons on the rear of the controller. There are a couple more of these on the G7 Pro: two mini bumpers up top.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/CLUqbm3rpKEfU3gR4VEdpE-1920-80.jpg" alt="The GameSir G7 Pro gamepad sitting in its charging dock" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/mzeh9s5YwadiA8Yfj3F6gn-1920-80.jpg" alt="An image of the GameSir G7 Pro gamepad sitting on a wooden surface" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The G7 Pro is a wireless pad. It offers 2.4 GHz via a provided dongle, with a polling rate up to 1,000 Hz, and Bluetooth. It can also be connected via a USB Type-C cable. Though if you're just looking to charge the pad, it comes with a charging dock in the box. A neater solution for keeping it regularly charged. </p><p>One feature shared by the G7 Pro and the <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">Steam Controller</a> is a gyroscope. The G7's Nexus software lets you map mouse, button, or stick input to the gyroscope for easy movement without a mouse.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/YUAaJWMzjmuS3WAtFzP8dL-1920-80.jpg" alt="GameSir G7 Pro's face buttons" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/TtbtcSpBQvgK5F6xrbsAT3-1920-80.jpg" alt="GameSir G7 Pro's TMR equipped analog stick" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/6tYRgsAwAyu37tYzmjxYKa-1920-80.jpg" alt="The GameSir G7 Pro's directional pad in the foreground, with its two analog sticks in the background" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Altogether, this controller is packed with features for not a lot of cash. </p><p>Shaun says it best in the final line of his review: "it packs pretty much every important pro feature into an $80 piece of kit that betters a lot of its more expensive competitors." Though, importantly, not $80 anymore. Just <a href="https://www.bestbuy.com/product/gamesir-g7-pro-controller-for-xbox-series-xsone-pc-android-tmr-sticks-hall-effect-triggers-1000hz-polling-rateaudio-jack-shadow-ember/J3R85HZRHY" target="_blank">$64</a>.</p><h2 id="check-out-best-buy-s-tech-fest-deals">👉 <a href="https://www.bestbuy.com/top-deals" target="_blank">Check out Best Buy's Tech Fest deals</a> 👈</h2>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Steam Controller demand is so high that new reservations won't be fulfilled until 2027 ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Valve is struggling to meet demand for its <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">Steam Controller</a>. The trackpad-equipped gamepad <a href="https://www.pcgamer.com/hardware/controllers/valve-says-steam-controller-sold-out-faster-than-we-anticipated-but-previously-told-us-it-has-knobs-it-can-turn-to-get-more">quickly sold out</a> when it released in early May, and ever since there's been a reservation system similar to the one once used for Steam Deck. </p><p>And people have been using it, to such an extent that Valve has needed to upgrade the system to manage expectations regarding when you'll actually get one. "When we launched Steam Controller last month, we quickly saw that initial demand exceeded our expectations," Valve writes in <a href="https://store.steampowered.com/news/group/45479024/view/697641379212297809" target="_blank">an update</a>. </p><p>"We have no plans to stop making Steam Controller. But as we look at the current demand compared to how many we know we can make by the end of the year, we want to manage expectations as much as we can with regards to when folks can expect to receive their order."</p><p>To get to the point: if you're not in the queue already you probably won't get a Steam Controller until 2027. One of my colleagues based in the United States joined the queue today and their "estimated order availability" is 2027. It's the same for me in Australia.</p><p>According to Valve the reservation page now shows one of three estimated shipping windows, including "by September 2026", "by December 2026", and "in 2027", with more specific timing for the latter to come later. If you joined the queue already you can <a href="https://store.steampowered.com/hardware/steamcontroller">revisit the page</a> and it'll show you which of those three categories you fit in.</p><p>Still, I do wonder how many of those in the queue have decided they're <em>definitely </em>going to buy a Steam Controller. It's possible to reserve your place without placing a deposit, so there's really no harm in registering your interest even if you're not committed to making the purchase. When something is in such hot demand, it's probably smarter to make the reservation than to not, because what if you change your mind between now and next year? What if the Steam Machine proves so mindblowing that the Steam Controller becomes an essential piece of kit? </p><p>Whatever the case, once your ticket is called you have 72 hours to make the purchase before you lose your place in the queue. With Steam Machine and Steam Frame seemingly imminent, I'd be very surprised if we don't see the same situation with those.</p><div class="product"><a data-dimension112="4be7c8ea-2c7b-4913-93e5-39a9b98bb90a" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="4be7c8ea-2c7b-4913-93e5-39a9b98bb90a" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/game-pads/steam-controller-demand-is-so-high-that-new-reservations-wont-be-fulfilled-until-2027/</link>
                                                                            <description>
                            <![CDATA[ The queue system has been tweaked to give more useful shipping estimations, but they're not encouraging. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Q9R7Hac6FzTD35qhkGqoQP</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/eodU4CmU7kSxoUnAF2T6HY-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 19 Jun 2026 01:26:31 +0000</pubDate>                                                                                                                                <updated>Fri, 19 Jun 2026 09:00:26 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                <author><![CDATA[ shaun.prescott@futurenet.com (Shaun Prescott) ]]></author>                    <dc:creator><![CDATA[ Shaun Prescott ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/W7q4asCziYRHUEennZcpyC-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/eodU4CmU7kSxoUnAF2T6HY-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:description>                                                            <media:text><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:text>
                                <media:title type="plain"><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/eodU4CmU7kSxoUnAF2T6HY-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Valve is struggling to meet demand for its <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">Steam Controller</a>. The trackpad-equipped gamepad <a href="https://www.pcgamer.com/hardware/controllers/valve-says-steam-controller-sold-out-faster-than-we-anticipated-but-previously-told-us-it-has-knobs-it-can-turn-to-get-more">quickly sold out</a> when it released in early May, and ever since there's been a reservation system similar to the one once used for Steam Deck. </p><p>And people have been using it, to such an extent that Valve has needed to upgrade the system to manage expectations regarding when you'll actually get one. "When we launched Steam Controller last month, we quickly saw that initial demand exceeded our expectations," Valve writes in <a href="https://store.steampowered.com/news/group/45479024/view/697641379212297809" target="_blank">an update</a>. </p><p>"We have no plans to stop making Steam Controller. But as we look at the current demand compared to how many we know we can make by the end of the year, we want to manage expectations as much as we can with regards to when folks can expect to receive their order."</p><p>To get to the point: if you're not in the queue already you probably won't get a Steam Controller until 2027. One of my colleagues based in the United States joined the queue today and their "estimated order availability" is 2027. It's the same for me in Australia.</p><p>According to Valve the reservation page now shows one of three estimated shipping windows, including "by September 2026", "by December 2026", and "in 2027", with more specific timing for the latter to come later. If you joined the queue already you can <a href="https://store.steampowered.com/hardware/steamcontroller">revisit the page</a> and it'll show you which of those three categories you fit in.</p><p>Still, I do wonder how many of those in the queue have decided they're <em>definitely </em>going to buy a Steam Controller. It's possible to reserve your place without placing a deposit, so there's really no harm in registering your interest even if you're not committed to making the purchase. When something is in such hot demand, it's probably smarter to make the reservation than to not, because what if you change your mind between now and next year? What if the Steam Machine proves so mindblowing that the Steam Controller becomes an essential piece of kit? </p><p>Whatever the case, once your ticket is called you have 72 hours to make the purchase before you lose your place in the queue. With Steam Machine and Steam Frame seemingly imminent, I'd be very surprised if we don't see the same situation with those.</p><div class="product"><a data-dimension112="4be7c8ea-2c7b-4913-93e5-39a9b98bb90a" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="4be7c8ea-2c7b-4913-93e5-39a9b98bb90a" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ The DualSense can still drift, but Sony may be exploring magnetic tech for shape-shifting buttons in whatever comes next ]]></title>
                                                                                                <dc:content><![CDATA[ <p>As a console interloper hailing from the PlayStation side of the tracks, I have a soft spot for controller rumble and haptics. It would appear I'm in good company, as a wild Sony patent exploring a fresh avenue for tactile feedback right there in your gamepad has just been published.</p><p><a href="https://patentscope.wipo.int/search/en/detail.jsf?docId=WO2026110304&_cid=P12-MPXZ4A-31241-1" target="_blank">The patent in question</a> concerns reactive buttons that can both soften and harden (via <a href="https://www.cheathappens.com/sony_patents_playStation_controller_buttons.asp" target="_blank">Cheat Happens</a>). In theory, this would offer different tactile sensations by altering button hardness in real-time, depending on either the in-game situation or, ahem, personal preference (steady on).</p><p>I've definitely complained about 'squidgy' controller face buttons and D-pads in the past, so what's the appeal here? Well, the patent pitches a couple of use-cases, including a terrifying 'finger grab' effect that could grip your thumb tip should you, say, get grabbed while wading across yet another poisoned swamp in a Souls game.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eAx2nX"></div>                            </div>                            <script src="https://kwizly.com/embed/eAx2nX.js" async></script><p>Alternatively, this feature could be used to hold your thumb in place and prevent slippage. I'm not exactly jazzed about potentially having to pry my thumbs away from my gamepad for whatever reason. That said, there's a potential accessibility argument here, with the adaptable buttons changing shape to accommodate palms, wrists, elbows, and so on.</p><p>The tech could achieve this shape-shifting effect either through fluid-filled membranes or 'magnetoviscoelastic elastomers'. Not completely dissimilar to magnetic tech you'll already find in your controllers and keyboards, this could cause the reactive buttons to soften or harden depending on the magnetic field strength.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="UtBGaLLyfaJZDeKdRpcnTj" name="DUalSense Edgfe.jpeg" alt="DualSense Edge" src="https://cdn.mos.cms.futurecdn.net/UtBGaLLyfaJZDeKdRpcnTj-1920-80.jpeg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Sony)</span></figcaption></figure><p>In many ways, the idea of reactive buttons feels like a natural follow-on to the DualSense's detailed haptics. While you can use the DualSense over both a wired and Bluetooth connection on PC, you'll be looking to sources other than Sony for haptic support. <a href="http://pcgamer.com/hardware/controllers/dualsense-pc-gamers-have-been-vindicated-at-last-as-haptic-support-is-finally-here-though-no-thanks-to-sony/#mrfhud=true" target="_blank">I wrote about just one of the unofficial options available, DSX+, yesterday</a>.</p><p>Odds are, if we ever do see these reactive buttons on a DualSense successor, Sony won't be the party to bring it to PC; the company has doubled down on making the PS5's tentpole releases, like <a href="https://www.pcgamer.com/games/action/god-of-war-laufey-announcement/" target="_blank">God of War Laufey</a>, console exclusives, so it seems likely this reactive tech will follow a similar path into the walled garden of PlayStation.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/the-dualsense-can-still-drift-but-sony-may-be-exploring-magnetic-tech-for-dynamic-tactile-buttons-in-whatever-comes-next/</link>
                                                                            <description>
                            <![CDATA[ Worth a poke. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">LoyndENoX6mCEFaRvoYtT6</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/qV2bVw74H2XnNEqc4BaVKH-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 17 Jun 2026 11:43:49 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jess Kinghorn ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY-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/qV2bVw74H2XnNEqc4BaVKH-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A DualSense controller is seen on a colourful background, with stripes of pink, purple, and blue.]]></media:description>                                                            <media:text><![CDATA[A DualSense controller is seen on a colourful background, with stripes of pink, purple, and blue.]]></media:text>
                                <media:title type="plain"><![CDATA[A DualSense controller is seen on a colourful background, with stripes of pink, purple, and blue.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/qV2bVw74H2XnNEqc4BaVKH-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>As a console interloper hailing from the PlayStation side of the tracks, I have a soft spot for controller rumble and haptics. It would appear I'm in good company, as a wild Sony patent exploring a fresh avenue for tactile feedback right there in your gamepad has just been published.</p><p><a href="https://patentscope.wipo.int/search/en/detail.jsf?docId=WO2026110304&_cid=P12-MPXZ4A-31241-1" target="_blank">The patent in question</a> concerns reactive buttons that can both soften and harden (via <a href="https://www.cheathappens.com/sony_patents_playStation_controller_buttons.asp" target="_blank">Cheat Happens</a>). In theory, this would offer different tactile sensations by altering button hardness in real-time, depending on either the in-game situation or, ahem, personal preference (steady on).</p><p>I've definitely complained about 'squidgy' controller face buttons and D-pads in the past, so what's the appeal here? Well, the patent pitches a couple of use-cases, including a terrifying 'finger grab' effect that could grip your thumb tip should you, say, get grabbed while wading across yet another poisoned swamp in a Souls game.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eAx2nX"></div>                            </div>                            <script src="https://kwizly.com/embed/eAx2nX.js" async></script><p>Alternatively, this feature could be used to hold your thumb in place and prevent slippage. I'm not exactly jazzed about potentially having to pry my thumbs away from my gamepad for whatever reason. That said, there's a potential accessibility argument here, with the adaptable buttons changing shape to accommodate palms, wrists, elbows, and so on.</p><p>The tech could achieve this shape-shifting effect either through fluid-filled membranes or 'magnetoviscoelastic elastomers'. Not completely dissimilar to magnetic tech you'll already find in your controllers and keyboards, this could cause the reactive buttons to soften or harden depending on the magnetic field strength.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="UtBGaLLyfaJZDeKdRpcnTj" name="DUalSense Edgfe.jpeg" alt="DualSense Edge" src="https://cdn.mos.cms.futurecdn.net/UtBGaLLyfaJZDeKdRpcnTj-1920-80.jpeg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Sony)</span></figcaption></figure><p>In many ways, the idea of reactive buttons feels like a natural follow-on to the DualSense's detailed haptics. While you can use the DualSense over both a wired and Bluetooth connection on PC, you'll be looking to sources other than Sony for haptic support. <a href="http://pcgamer.com/hardware/controllers/dualsense-pc-gamers-have-been-vindicated-at-last-as-haptic-support-is-finally-here-though-no-thanks-to-sony/#mrfhud=true" target="_blank">I wrote about just one of the unofficial options available, DSX+, yesterday</a>.</p><p>Odds are, if we ever do see these reactive buttons on a DualSense successor, Sony won't be the party to bring it to PC; the company has doubled down on making the PS5's tentpole releases, like <a href="https://www.pcgamer.com/games/action/god-of-war-laufey-announcement/" target="_blank">God of War Laufey</a>, console exclusives, so it seems likely this reactive tech will follow a similar path into the walled garden of PlayStation.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ DualSense PC gamers have been vindicated at last, as haptic support is finally here—though no thanks to Sony ]]></title>
                                                                                                <dc:content><![CDATA[ <p>I spent a decent chunk of my early career writing about all things PlayStation. But despite all of that, I wouldn't call Sony's DualSense controller my go-to gamepad for PC gaming. Well, the latest DSX beta update might just make it a real contender.</p><p>Traditionally, <a href="https://www.pcgamer.com/ps5-dualsense-controller-on-pc/" target="_blank">you can use a DualSense controller on PC</a> via a wired connection or over Bluetooth via an extra adapter. What a faff! Furthermore, there's no official support for the pad's detailed haptics on PC—so the team behind DSX are now extending <em>unofficial </em>support over both Bluetooth and wired connections. <a href="https://store.steampowered.com/news/app/1812620/view/713403343824749908?l=english" target="_blank">The v3.2 Beta 01update adds</a> "Virtual DualSense with Audio support, allowing games to send native DualSense audio and haptics through DSX over Bluetooth or USB" (via <a href="https://wccftech.com/playstation-5-dualsense-haptics-pc-bluetooth-sony/" target="_blank">WCCFTech</a>).</p><p>There is a catch, though. The update post notes that haptic and controller-based audio support will require "DSX+ to create a virtual DualSense as it always has been." Essentially, that means you're going to have to pay <a href="https://store.steampowered.com/app/1812620/DSX/" target="_blank">$7.99 for the base software on Steam</a>, and then another <a href="https://store.steampowered.com/app/2345650/DSX_Virtual_DualSense_BT_AudioHaptics_DLC/" target="_blank">$3.99 for the DSX+ 'DLC'</a>. In short, paying over 10 bucks for functionality that's standard on PS5 does feel a wee bit cheeky to me. That said, small teams providing unofficial support like this have gotta eat too.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eAx2nX"></div>                            </div>                            <script src="https://kwizly.com/embed/eAx2nX.js" async></script><p>This update also introduces the handy option to launch the controller software manually outside of Steam. Neat! This does use "a 28-day ownership cache" system, though, so you'll still need to futz with Steam at least once a month to continue enjoying support. To enjoy this functionality alongside haptics support, you'll need to <a href="https://steamcommunity.com/sharedfiles/filedetails/?id=3330635677" target="_blank">set up access to the DSX Beta branch</a> via Steam anyway.</p><p>I've not yet had a chance to go hands-on with DSX's haptic support, so I can't comment on how refined the feedback feels on PC versus console. But given that Sony has u-turned on bringing its tentpole releases to PC, such as <a href="https://www.pcgamer.com/games/action/god-of-war-laufey-announcement/" target="_blank">God of War: Laufey</a>, the case could be made that this unofficial haptic support comes a little too late. Still, if you're curious about what you're missing, this could be a great excuse to finally pick up <a href="https://www.pcgamer.com/returnal-review/" target="_blank">2023's Returnal</a> (we've even got a robust <a href="https://www.pcgamer.com/returnal-beginners-tips/" target="_blank">beginner's guide</a>).</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:520px;"><p class="vanilla-image-block" style="padding-top:56.35%;"><img id="rPdDukUuWhXaDxv37ZN4tA" name="gif 1.gif" alt="An intense gunfight in Returnal." src="https://cdn.mos.cms.futurecdn.net/rPdDukUuWhXaDxv37ZN4tA-1920-80.gif" mos="" align="middle" fullscreen="" width="520" height="293" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Housemarque)</span></figcaption></figure><p>I'm also fond of all the subtle haptics that have since been added to the PS5 version of Final Fantasy XIV Online, though there's no guarantee you'd get this in the PC version of the game. In my humble opinion, the best showcase for the DualSense's haptics are the last two AstroBot games. Unfortunately, Astro's Playroom—a game which I've heard at least one game developer describe as 'the five-hour hand massage'—was a free pack-in release for <a href="https://www.pcgamer.com/hardware/sony-hikes-the-ps5-price-by-usd100-ps5-pro-by-usd150-this-was-a-necessary-step/" target="_blank">the increasingly expensive PlayStation 5 console</a>, so it feels like the bot has a snowball in Hell's chance of ever making it PC-side.</p><p>As a PlayStation girlie, I'd kind of already accepted I'd be stuck with unrefined rumble at best on PC. It's a shame Sony has missed a trick by not offering official haptic support on PC itself, but it's also unsurprising given their doubling down on PS5 exclusives. Still, when a major player closes a door, you can bet a small team with a fraction of the resources will crack open a window. Now, if you'll excuse me, I'm going to chill out in a rainy, forested corner of Atropos and soak up some DualSense ASMR.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/dualsense-pc-gamers-have-been-vindicated-at-last-as-haptic-support-is-finally-here-though-no-thanks-to-sony/</link>
                                                                            <description>
                            <![CDATA[ Power in your hands. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">3jQuQwuX5vuxTkHH8RT7ih</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/N2YVAanjET8THrW4eQe7E3-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 16 Jun 2026 11:28:06 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jess Kinghorn ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY-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/N2YVAanjET8THrW4eQe7E3-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Sony PS5 Dualsense gamepad controller top down view.]]></media:description>                                                            <media:text><![CDATA[The Sony PS5 Dualsense gamepad controller top down view.]]></media:text>
                                <media:title type="plain"><![CDATA[The Sony PS5 Dualsense gamepad controller top down view.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/N2YVAanjET8THrW4eQe7E3-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I spent a decent chunk of my early career writing about all things PlayStation. But despite all of that, I wouldn't call Sony's DualSense controller my go-to gamepad for PC gaming. Well, the latest DSX beta update might just make it a real contender.</p><p>Traditionally, <a href="https://www.pcgamer.com/ps5-dualsense-controller-on-pc/" target="_blank">you can use a DualSense controller on PC</a> via a wired connection or over Bluetooth via an extra adapter. What a faff! Furthermore, there's no official support for the pad's detailed haptics on PC—so the team behind DSX are now extending <em>unofficial </em>support over both Bluetooth and wired connections. <a href="https://store.steampowered.com/news/app/1812620/view/713403343824749908?l=english" target="_blank">The v3.2 Beta 01update adds</a> "Virtual DualSense with Audio support, allowing games to send native DualSense audio and haptics through DSX over Bluetooth or USB" (via <a href="https://wccftech.com/playstation-5-dualsense-haptics-pc-bluetooth-sony/" target="_blank">WCCFTech</a>).</p><p>There is a catch, though. The update post notes that haptic and controller-based audio support will require "DSX+ to create a virtual DualSense as it always has been." Essentially, that means you're going to have to pay <a href="https://store.steampowered.com/app/1812620/DSX/" target="_blank">$7.99 for the base software on Steam</a>, and then another <a href="https://store.steampowered.com/app/2345650/DSX_Virtual_DualSense_BT_AudioHaptics_DLC/" target="_blank">$3.99 for the DSX+ 'DLC'</a>. In short, paying over 10 bucks for functionality that's standard on PS5 does feel a wee bit cheeky to me. That said, small teams providing unofficial support like this have gotta eat too.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eAx2nX"></div>                            </div>                            <script src="https://kwizly.com/embed/eAx2nX.js" async></script><p>This update also introduces the handy option to launch the controller software manually outside of Steam. Neat! This does use "a 28-day ownership cache" system, though, so you'll still need to futz with Steam at least once a month to continue enjoying support. To enjoy this functionality alongside haptics support, you'll need to <a href="https://steamcommunity.com/sharedfiles/filedetails/?id=3330635677" target="_blank">set up access to the DSX Beta branch</a> via Steam anyway.</p><p>I've not yet had a chance to go hands-on with DSX's haptic support, so I can't comment on how refined the feedback feels on PC versus console. But given that Sony has u-turned on bringing its tentpole releases to PC, such as <a href="https://www.pcgamer.com/games/action/god-of-war-laufey-announcement/" target="_blank">God of War: Laufey</a>, the case could be made that this unofficial haptic support comes a little too late. Still, if you're curious about what you're missing, this could be a great excuse to finally pick up <a href="https://www.pcgamer.com/returnal-review/" target="_blank">2023's Returnal</a> (we've even got a robust <a href="https://www.pcgamer.com/returnal-beginners-tips/" target="_blank">beginner's guide</a>).</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:520px;"><p class="vanilla-image-block" style="padding-top:56.35%;"><img id="rPdDukUuWhXaDxv37ZN4tA" name="gif 1.gif" alt="An intense gunfight in Returnal." src="https://cdn.mos.cms.futurecdn.net/rPdDukUuWhXaDxv37ZN4tA-1920-80.gif" mos="" align="middle" fullscreen="" width="520" height="293" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Housemarque)</span></figcaption></figure><p>I'm also fond of all the subtle haptics that have since been added to the PS5 version of Final Fantasy XIV Online, though there's no guarantee you'd get this in the PC version of the game. In my humble opinion, the best showcase for the DualSense's haptics are the last two AstroBot games. Unfortunately, Astro's Playroom—a game which I've heard at least one game developer describe as 'the five-hour hand massage'—was a free pack-in release for <a href="https://www.pcgamer.com/hardware/sony-hikes-the-ps5-price-by-usd100-ps5-pro-by-usd150-this-was-a-necessary-step/" target="_blank">the increasingly expensive PlayStation 5 console</a>, so it feels like the bot has a snowball in Hell's chance of ever making it PC-side.</p><p>As a PlayStation girlie, I'd kind of already accepted I'd be stuck with unrefined rumble at best on PC. It's a shame Sony has missed a trick by not offering official haptic support on PC itself, but it's also unsurprising given their doubling down on PS5 exclusives. Still, when a major player closes a door, you can bet a small team with a fraction of the resources will crack open a window. Now, if you'll excuse me, I'm going to chill out in a rainy, forested corner of Atropos and soak up some DualSense ASMR.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ October Prime Day controller deals ]]></title>
                                                                                                <dc:content><![CDATA[ <p>October's Prime Day, also known as Big Deal Days, has finally passed. The big event took place from October 6 until October 7 this year, but that doesn't mean there aren't any deals to take advantage of. </p><p>In fact, best buy, Walmart, and even Amazon still have a few reasonably priced stragglers to pick up if you need a new controller. </p><p>👉<a href="https://www.amazon.com/s?k=controllers&crid=39ANCIZGH03O&sprefix=controller%2Caps%2C179&ref=nb_sb_noss_1" target="_blank"><strong>ALL of Amazon's controller 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>When it comes to the key high-end technology of today, such as TMR sticks and Hall effect triggers, that isn't necessarily the preserve of the super-premium $200 controllers. Companies such as GameSir and Easy SMX have brought these features down into the mainstream and you can find some of the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/" target="_blank">best PC controllers</a> sporting them for bargain prices right now. </p><h2 id="where-to-find-the-best-prime-day-controller-deals">Where to find the best Prime Day controller deals</h2><ul><li><strong>Amazon: </strong><a href="https://www.amazon.com/s?k=controllers&crid=39ANCIZGH03O&sprefix=controller%2Caps%2C179&ref=nb_sb_noss_1" target="_blank"><strong>All the pads you could ever want</strong></a></li><li><strong>Walmart:</strong> <a href="https://www.walmart.com/search?q=controllers" target="_blank">Solid controllers, series savings</a></li><li><strong>Best Buy:</strong> <a href="https://www.bestbuy.com/site/searchpage.jsp?id=pcat17071&st=controllers" target="_blank">Big name pads with big value discounts</a></li><li><strong>Newegg:</strong> <a href="https://www.newegg.com/p/pl?d=controllers" target="_blank">Big savings on big brand controllers</a></li></ul><div class="vizualizer-embed"><iframe   srcdoc="<!DOCTYPE html><html><head>  <style>    #widget-t4n1495 *:not(svg):not(path) { box-sizing: border-box; }    #widget-t4n1495 h1, #widget-t4n1495 p, #widget-t4n1495 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-t4n1495, :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-t4n1495); 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-t4n1495 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-t4n1495 tr:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { border-bottom-width: 0px; }.prose :where(t#widget-t4n1495 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-t4n1495: 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-t4n1495: 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-t4n1495 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-t4n1495 td:first-child, tfoot td:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-inline-start: 0px; }.prose :where(t#widget-t4n1495 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-t4n1495 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-t4n1495 td:first-child, tfoot td:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-inline-start: 0px; }.prose-lg :where(t#widget-t4n1495 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-t4n1495: 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-t4n1495: 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-t4n1495"><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 55 controller 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 = "Controller";        const INITIALLY_OPEN = false;        // Embedded complete category data        let LOCAL_REVIEWS = JSON.parse(decodeURIComponent("%5B%7B%22id%22%3A%228NKgZmo3fxQQhxjqHrn2AB%22%2C%22title%22%3A%22Scuf%20Omega%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2Fscuf-omega-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-09-07T15%3A02%3A11Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FPfiU4gZmnbsVoGaYsi3iY8.jpg%22%2C%22strapline%22%3A%22Closer%20to%20an%20Alpha%20or%20Beta%20than%20an%20Omega.%22%2C%22categories%22%3A%5B%22Controllers%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22controller%22%2C%22wireless%20controller%22%2C%22wired%20controller%22%2C%22game%20controller%22%2C%22PC%20controller%22%2C%22Scuf%22%2C%22Scuf%20Omega%22%5D%2C%22score%22%3A70%2C%22summary%22%3A%22Closer%20to%20an%20Alpha%20or%20Beta%20than%20an%20Omega.%22%7D%2C%7B%22id%22%3A%22UqYpGJHzTjVNBBmU2SrrJn%22%2C%22title%22%3A%22GameSir%20T7%20Pro%20Sugar%20Whirl%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgame-pads%2Fgamesir-t7-pro-sugar-whirl-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-08-14T13%3A13%3A19Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2Fmx7yo6es2nmRYz34Vbuagg.jpg%22%2C%22strapline%22%3A%22Not%20quite%20the%20sweetest%20of%20treats.%22%2C%22categories%22%3A%5B%22Game%20Pads%22%2C%22Hardware%22%2C%22Controllers%22%5D%2C%22tags%22%3A%5B%22Review%22%2C%22Hardware%22%2C%22GameSir%22%2C%22Xbox%20Wireless%20Controller%22%2C%22Pink%22%2C%22Blue%22%2C%22purple%22%2C%22wireless%20controller%22%2C%22charging%22%2C%22charging%20stand%22%2C%22dock%22%2C%22TMR%20sticks%22%2C%22Hall%20effect%22%5D%2C%22score%22%3A75%2C%22summary%22%3A%22Not%20quite%20the%20sweetest%20of%20treats.%22%7D%2C%7B%22id%22%3A%22LxaJz5yKcWogc5hm5z84mj%22%2C%22title%22%3A%22GameSir%20G7%20Pro%208K%20Aimlabs%20Edition%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2Fgamesir-g7-pro-8k-aimlabs-edition-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-05-01T11%3A37%3A15Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FuT6Y9ABVa5DY9xXcAJrEwf.jpg%22%2C%22strapline%22%3A%22Would%20you%20pay%20%2410%20more%20for%20higher%20polling%3F%22%2C%22categories%22%3A%5B%22Controllers%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22controller%22%2C%22PC%20controller%22%2C%22game%20controller%22%2C%22wireless%20controller%22%2C%22Hardware%22%2C%22GameSir%22%2C%22GameSir%20G7%20Pro%208K%22%2C%22TMR%22%2C%22TMR%20sticks%22%2C%22GameSir%20g7%20Pro%208K%20Aimlabs%20Edition%22%5D%2C%22score%22%3A84%2C%22summary%22%3A%22Would%20you%20pay%20%2410%20more%20for%20higher%20polling%3F%22%7D%2C%7B%22id%22%3A%22B4p3aPJNV2Ckc47kSywXKQ%22%2C%22title%22%3A%22Steam%20Controller%20(2026)%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgame-pads%2Fsteam-controller-2026-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-04-27T17%3A00%3A00Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FaUXA7Xr75b7Xuvt2S6eeKY.jpg%22%2C%22strapline%22%3A%22Second%20time's%20the%20charm.%22%2C%22categories%22%3A%5B%22Game%20Pads%22%2C%22Hardware%22%2C%22Controllers%22%5D%2C%22tags%22%3A%5B%22Hardware%22%2C%22Valve%22%2C%22Steam%20Controller%22%2C%22controller%22%2C%22game%20pad%22%2C%22Steam%22%5D%2C%22score%22%3A83%2C%22summary%22%3A%22Second%20time's%20the%20charm.%22%7D%2C%7B%22id%22%3A%22WRLnnowV6sabshmTC8HujQ%22%2C%22title%22%3A%22EasySMX%20D05%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2Feasysmx-d05-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-03-31T15%3A00%3A43Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FPqjBcwBzNJUwKiWav7NBZF.jpg%22%2C%22strapline%22%3A%22You%20can%20get%20Hall%20effect%20controllers%20slightly%20cheaper%2C%20but%20you'd%20struggle%20to%20find%20as%20feature-rich%20a%20package%20without%20some%20heavy%2C%20heavy%20sales.%20%22%2C%22categories%22%3A%5B%22Controllers%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22controller%22%2C%22wired%20controller%22%2C%22wireless%20controller%22%2C%22budget%22%2C%22Hall%20effect%22%2C%22EasySMX%22%2C%22EasySMX%20D10%22%2C%22Hardware%22%5D%2C%22score%22%3A87%2C%22summary%22%3A%22You%20can%20get%20Hall%20effect%20controllers%20slightly%20cheaper%2C%20but%20you'd%20struggle%20to%20find%20as%20feature-rich%20a%20package%20without%20some%20heavy%2C%20heavy%20sales.%20%22%7D%2C%7B%22id%22%3A%22fM5EQd4AH6qDUADhLjdeqe%22%2C%22title%22%3A%22EasySMX%20D10%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2Feasysmx-d10-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-03-27T15%3A14%3A14Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FUgLVpPDZm7T9ZV36sAHGz4.jpg%22%2C%22strapline%22%3A%22A%20feature-rich%20budget%20TMR%20controller%20that%20only%20sometimes%20feels%20like%20a%20compromise.%22%2C%22categories%22%3A%5B%22Controllers%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22controller%22%2C%22game%20controller%22%2C%22budget%22%2C%22TMR%22%2C%22TMR%20sticks%22%2C%22Hall%20effect%22%2C%22Review%22%2C%22Hardware%22%5D%2C%22score%22%3A80%2C%22summary%22%3A%22A%20feature-rich%20budget%20TMR%20controller%20that%20only%20sometimes%20feels%20like%20a%20compromise.%22%7D%2C%7B%22id%22%3A%22euxMmPNTRBtjcL6Rz4W3kD%22%2C%22title%22%3A%22Hyperkin%20Competitor%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgame-pads%2Fhyperkin-competitor-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-03-24T11%3A59%3A23Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2F3TEoYfnGkzXiCm8xisUHGZ.jpg%22%2C%22strapline%22%3A%22It%20competes%20with%20a%20home%20field%20advantage%20on%20bang%20for%20buck%2C%20but%20can%20fall%20short%20on%20away%20games.%22%2C%22categories%22%3A%5B%22Game%20Pads%22%2C%22Hardware%22%2C%22Controllers%22%5D%2C%22tags%22%3A%5B%22Hardware%22%2C%22controller%22%2C%22game%20pad%22%2C%22Hyperkin%22%5D%2C%22score%22%3A72%2C%22summary%22%3A%22It%20competes%20with%20a%20home%20field%20advantage%20on%20bang%20for%20buck%2C%20but%20can%20fall%20short%20on%20away%20games.%22%7D%2C%7B%22id%22%3A%22fjGZ5xcK8LaBGjLhbCCzjU%22%2C%22title%22%3A%22Moza%20AB9%20FFB%20Base%20%2B%20MH16%20Flightstick%20%2B%20MTP%20Throttle%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2Fmoza-ab9-ffb-base-mh16-flightstick-mtp-throttle-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-02-18T14%3A48%3A01Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2F7sPx82rcLMVn5XmFgPZj97.jpg%22%2C%22strapline%22%3A%22One%20for%20the%20serious%20flight%20simmers%2C%20but%20a%20very%20impressive%20experience.%22%2C%22categories%22%3A%5B%22Controllers%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22Hardware%22%2C%22Flight%20Sims%22%2C%22force%20feedback%22%2C%22MOZA%22%2C%22joystick%22%2C%22flight%20stick%22%2C%22throttle%20controller%22%2C%22Moza%20AB9%20FFB%20Base%22%2C%22Moza%20MH16%20Flightstick%22%2C%22MSFS%202024%22%5D%2C%22score%22%3A86%2C%22summary%22%3A%22One%20for%20the%20serious%20flight%20simmers%2C%20but%20a%20very%20impressive%20experience.%22%7D%2C%7B%22id%22%3A%22NobwmgxJUWpkrLFPmkrnxL%22%2C%22title%22%3A%22Victrix%20Pro%20BFG%20Reloaded%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgame-pads%2Fvictrix-pro-bfg-reloaded-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222025-11-05T10%3A33%3A51Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2Fw5YASeamdYp7YnYfoUvq.jpg%22%2C%22strapline%22%3A%22A%20boon%20for%20fight%20pad%20lovers%2C%20but%20not%20a%20controller%20for%20the%20mainstream.%22%2C%22categories%22%3A%5B%22Game%20Pads%22%2C%22Hardware%22%2C%22Controllers%22%5D%2C%22tags%22%3A%5B%22PDP%22%2C%22Turtle%20Beach%22%2C%22Hardware%22%2C%22controller%22%5D%2C%22score%22%3A70%2C%22summary%22%3A%22A%20boon%20for%20fight%20pad%20lovers%2C%20but%20not%20a%20controller%20for%20the%20mainstream.%22%7D%2C%7B%22id%22%3A%22ifyAnNg9BLtnbkM7627JrR%22%2C%22title%22%3A%228BitDo%20Pro%203%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2F8bitdo-pro-3-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222025-10-24T16%3A21%3A45Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2F2ViNbtNwhhNsspHfd3k2A5.jpg%22%2C%22strapline%22%3A%22My%20new%20everyday%20controller%2C%20despite%20its%20flaws.%22%2C%22categories%22%3A%5B%22Controllers%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22Hardware%22%2C%22controller%22%2C%22wireless%20controller%22%2C%228bitdo%22%2C%228BitDo%20Pro%203%22%2C%22PC%20controller%22%5D%2C%22score%22%3A76%2C%22summary%22%3A%22My%20new%20everyday%20controller%2C%20despite%20its%20flaws.%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 = 55;        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 Controller Widget"></iframe></div><h2 class="article-body__section" id="section-prime-day-controller-deals"><span>Prime Day controller deals </span></h2><div class="product"><a data-dimension112="ed21522a-b8e6-11f1-aad1-9d421446b232" data-action="Deal Block" data-label="Nova Lite" data-dimension48="Nova Lite" data-dimension25="$19.89" href="https://www.walmart.com/ip/GameSir-Nova-Lite-USB-Gamepad-Wireless-Bluetooth-Joystick-for-Apple-Arcade-Games/5394301595" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:425px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="qrNkN3FB5J5tnFHGYuiYtE" name="Nova Lite" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/qrNkN3FB5J5tnFHGYuiYtE-1920-80.jpg" mos="" align="middle" fullscreen="" width="425" height="425" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>It's incredible to think you can spend so little and get a stick drift-resistant wireless controller that doesn't completely suck. Luckily for the GameSir Nova Lite, it does all of the above and manages to feel good and light in the hands, too. </p><p><strong>Key specs: Wireless (Bluetooth and 2.4 GHz) | Asymmetric | Hall effect</strong><a class="view-deal button" href="https://www.walmart.com/ip/GameSir-Nova-Lite-USB-Gamepad-Wireless-Bluetooth-Joystick-for-Apple-Arcade-Games/5394301595" target="_blank" rel="nofollow" data-dimension112="ed21522a-b8e6-11f1-aad1-9d421446b232" data-action="Deal Block" data-label="Nova Lite" data-dimension48="Nova Lite" data-dimension25="$19.89">View Deal</a></p></div><div class="product"><a data-dimension112="ed2152f2-b8e6-11f1-afae-61ffb3df8d38" data-action="Deal Block" data-label="Ultimate 2C" data-dimension48="Ultimate 2C" data-dimension25="$29.99" href="https://www.amazon.com/dp/B0D736BCNM/?th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:200px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="VzGnuWAwAyES8AAmGqAW9d" name="8BitDo Ultimate 2C Wireless Controller.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/VzGnuWAwAyES8AAmGqAW9d-1920-80.jpg" mos="" align="middle" fullscreen="" width="200" height="200" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/dp/B0D736BCNM/?th=1" target="_blank" rel="nofollow" data-dimension112="ed2152f2-b8e6-11f1-afae-61ffb3df8d38" data-action="Deal Block" data-label="Ultimate 2C" data-dimension48="Ultimate 2C" data-dimension25="$29.99">Ultimate 2C: $29.99</a></strong><br>We've already raved about Hall effect joysticks and how they spell the end for the dreaded stick drift. In this wireless gaming controller, they're a welcome feature, but this handful of gaming hardware packs a few quirky surprises too. For instance, there are <em>extra </em>bumper buttons.</p><p><strong>Key specs: Hall effect sticks, triggers | 2.4G wireless | 19 h battery</strong><a class="view-deal button" href="https://www.amazon.com/dp/B0D736BCNM/?th=1" target="_blank" rel="nofollow" data-dimension112="ed2152f2-b8e6-11f1-afae-61ffb3df8d38" data-action="Deal Block" data-label="Ultimate 2C" data-dimension48="Ultimate 2C" data-dimension25="$29.99">View Deal</a></p></div><div class="product"><a data-dimension112="30a0b714-c168-11f1-b9f2-fbacd14b8b5f" data-action="Deal Block" data-label="X05 Pro" data-dimension48="X05 Pro" data-dimension25="$43.69" href="https://www.amazon.com/EasySMX-X05Pro-Wireless-Gaming-Controller-Charging/dp/B0GVS7HTWZ" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:425px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="3eZyZnfyR9iAHvwpLaYTFo" name="D05" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/3eZyZnfyR9iAHvwpLaYTFo-1920-80.jpg" mos="" align="middle" fullscreen="" width="425" height="425" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The X05 Pro doesn't look like a budget controller. It uses Hall effect for the thumbsticks, which makes it resistant to stick drift. Moreover, it's wireless and comes with a charging dock. It's an easy pick even at full price.</p><p><strong>Key specs: Wireless (2.4 + Bluetooth) | HE sticks </strong><a class="view-deal button" href="https://www.amazon.com/EasySMX-X05Pro-Wireless-Gaming-Controller-Charging/dp/B0GVS7HTWZ" target="_blank" rel="nofollow" data-dimension112="30a0b714-c168-11f1-b9f2-fbacd14b8b5f" data-action="Deal Block" data-label="X05 Pro" data-dimension48="X05 Pro" data-dimension25="$43.69">View Deal</a></p></div><div class="product"><a data-dimension112="ed215428-b8e6-11f1-941d-3f082096f317" data-action="Deal Block" data-label="Wireless controller" data-dimension48="Wireless controller" data-dimension25="$49.49" href="https://www.walmart.com/ip/Microsoft-Xbox-Wireless-Controller-Carbon-Black/15060559533?classType=VARIANT&athbdg=L1200&from=/search" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="YTRwUu9W6d8x3mJzaimi69" name="1781604007.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/YTRwUu9W6d8x3mJzaimi69-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="2000" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.walmart.com/ip/Microsoft-Xbox-Wireless-Controller-Carbon-Black/15060559533?classType=VARIANT&athbdg=L1200&from=/search" target="_blank" rel="nofollow" data-dimension112="ed215428-b8e6-11f1-941d-3f082096f317" data-action="Deal Block" data-label="Wireless controller" data-dimension48="Wireless controller" data-dimension25="$49.49">Wireless controller: was $64 now $49.49</a></strong><br>It may be vulnerable to stick drift (and that's a big downside), but it's hard to deny the quality on show with Microsoft's Xbox controller. Textured grips, clicky buttons, a nice weight and feel: it's got everything you need, ergonomically speaking.</p><p><strong>Key specs: Wireless | Asymmetric sticks </strong></p><p><strong>Price watch: </strong><a href="https://www.bestbuy.com/product/microsoft-xbox-wireless-controller-for-xbox-series-x-xbox-series-s-xbox-one-pcs-and-cloud-enabled-devices-deep-pink/JJGXPXQ257" target="_blank">Best Buy $69.99</a><strong> </strong>| <a href="https://www.amazon.com/Xbox-Wireless-Gaming-Controller-Headsets-Console/dp/B0F1J12R6N/ref=sr_1_3" target="_blank">Amazon $54</a></p></div><div class="product"><a data-dimension112="ed215554-b8e6-11f1-be46-59b14b2c9a3c" data-action="Deal Block" data-label="Valor Pro (wired)" data-dimension48="Valor Pro (wired)" data-dimension25="$69.99" href="https://www.scufgaming.com/us/en/p/scuf-valor-pro-black" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:602px;"><p class="vanilla-image-block" style="padding-top:99.83%;"><img id="drjqSuWFdQCkPHb5yYa4uK" name="Valor Pro (wired)" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/drjqSuWFdQCkPHb5yYa4uK-1920-80.png" mos="" align="middle" fullscreen="" width="602" height="601" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.scufgaming.com/us/en/p/scuf-valor-pro-black" target="_blank" rel="nofollow" data-dimension112="ed215554-b8e6-11f1-be46-59b14b2c9a3c" data-action="Deal Block" data-label="Valor Pro (wired)" data-dimension48="Valor Pro (wired)" data-dimension25="$69.99">Valor Pro (wired): was $99.99 now $69.99</a></strong><br>This is the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-wired-controller" target="_blank">best wired controller for PC gaming</a> because it's just so damn satisfying to use. Everything about it screams quality, from the clicky DPAD to thunky back paddles. And it's fairly modular and customizable, too.</p><p><strong>Key specs: Wired (USB-C) | Hall effect thumbsticks | 260 g</strong></p><p><strong>Price check: </strong><a href="https://www.amazon.com/gp/aw/d/B0DTB3F17W" target="_blank">Amazon $99.99</a><a class="view-deal button" href="https://www.scufgaming.com/us/en/p/scuf-valor-pro-black" target="_blank" rel="nofollow" data-dimension112="ed215554-b8e6-11f1-be46-59b14b2c9a3c" data-action="Deal Block" data-label="Valor Pro (wired)" data-dimension48="Valor Pro (wired)" data-dimension25="$69.99">View Deal</a></p></div><div class="product"><a data-dimension112="ed21561c-b8e6-11f1-873d-1b17d12f5b27" data-action="Deal Block" data-label="Valor Pro (wireless)" data-dimension48="Valor Pro (wireless)" data-dimension25="$129.99" href="https://www.scufgaming.com/us/en/p/scuf-valor-pro-wireless-smoke" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:909px;"><p class="vanilla-image-block" style="padding-top:98.90%;"><img id="aekqUpXBiYxL4jfFq7SoSm" name="1782128336.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/aekqUpXBiYxL4jfFq7SoSm-1920-80.jpg" mos="" align="middle" fullscreen="" width="909" height="899" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.scufgaming.com/us/en/p/scuf-valor-pro-wireless-smoke" target="_blank" rel="nofollow" data-dimension112="ed21561c-b8e6-11f1-873d-1b17d12f5b27" data-action="Deal Block" data-label="Valor Pro (wireless)" data-dimension48="Valor Pro (wireless)" data-dimension25="$129.99">Valor Pro (wireless): was $189.99 now $129.99</a></strong><br>We had a lot of good things to say about the <a href="https://www.pcgamer.com/hardware/game-pads/scuf-valor-pro-review/" target="_blank">Scuf Valor Pro in our review</a>. From its comfortable shape to its customizable design. That said, we didn't like the price much, though this deal sure helps.</p><p><strong>Key specs: 2.4 GHz wireless, Bluetooth, Wired | Hall effect thumbsticks | 260 g</strong></p><p><strong>Price check: </strong><a href="https://www.amazon.com/VALOR-Wireless-Performance-Controller-Gaming-Console/dp/B0FPXJYFRQ?th=1" target="_blank">Amazon $139.99</a> | <a href="https://www.bestbuy.com/product/scuf-valor-pro-wireless-performance-controller-for-xbox-series-xs-xbox-one-and-pc-black/J39T25KR67" target="_blank">Best Buy $139.99</a><a class="view-deal button" href="https://www.scufgaming.com/us/en/p/scuf-valor-pro-wireless-smoke" target="_blank" rel="nofollow" data-dimension112="ed21561c-b8e6-11f1-873d-1b17d12f5b27" data-action="Deal Block" data-label="Valor Pro (wireless)" data-dimension48="Valor Pro (wireless)" data-dimension25="$129.99">View Deal</a></p></div><div class="product"><a data-dimension112="9ad2c23a-c163-11f1-9647-1f2dbcd820a7" data-action="Deal Block" data-label="Wolverine V3 Pro 8K" data-dimension48="Wolverine V3 Pro 8K" data-dimension25="$151.99" href="https://www.amazon.com/dp/B0FC9DTDJ3" 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="oyWyECCjM2npsCm4FAktzU" name="PCGamer Deal Block (9)" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/oyWyECCjM2npsCm4FAktzU-1920-80.png" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>With a great feel, superb specs, and a bunch of remappable buttons, the Wolverine V3 Pro 8K is not only viable as a competitive choice, but comfy enough for everyday use. </p><p><strong>Key specs: Up to 8,000 Hz | TMR thumbsticks | Hall effect triggers |</strong> <strong>included carry case | Wireless and wired | 20 hour battery life (with 1,000 Hz polling)</strong><a class="view-deal button" href="https://www.amazon.com/dp/B0FC9DTDJ3" target="_blank" rel="nofollow" data-dimension112="9ad2c23a-c163-11f1-9647-1f2dbcd820a7" data-action="Deal Block" data-label="Wolverine V3 Pro 8K" data-dimension48="Wolverine V3 Pro 8K" data-dimension25="$151.99">View Deal</a></p></div><ul><li><a href="#main"><strong>Back to top ^</strong></a></li></ul><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><h2 class="article-body__section" id="section-prime-day-controller-deals-in-the-uk"><span>Prime Day controller deals in the UK</span></h2><h2 id="where-are-the-best-prime-day-controller-deals-in-the-uk">Where are the best Prime Day controller deals in the UK?</h2><ul><li><strong>Amazon: </strong><a href="https://www.amazon.co.uk/s?k=controllers&crid=60S1AC87VO31&sprefix=controller%2Caps%2C134&ref=nb_sb_noss_1" target="_blank">Big discounts on top-brand controllers</a></li><li><strong>Overclockers:</strong> <a href="https://www.overclockers.co.uk/peripherals/gamepads-game-controllers?q=controllers&_gl=1*hw2u4v*_up*MQ..*_ga*MTQ2NzEzNjg2OC4xNzkwNjgwODU3*_ga_123456*czE3OTA2ODA4NTckbzEkZzAkdDE3OTA2ODA4ODYkajMxJGwwJGgxODc0NzI0ODg.*_ga_7SS7XDNBS9*czE3OTA2ODA4NTckbzEkZzAkdDE3OTA2ODA4ODckajMwJGwwJGgw" target="_blank">A whole bunch of controllers to choose from</a></li><li><strong>Scan:</strong> <a href="https://www.scan.co.uk/shop/computer-hardware/game-controllers/all" target="_blank">Gamepads from just £15</a></li><li><strong>Box: </strong><a href="https://box.co.uk/xbox-controllers" target="_blank">Controllers for everyone</a></li><li><strong>Currys:</strong> <a href="https://www.currys.co.uk/gaming/controllers/controllers/pc-gaming-controllers" target="_blank">Controllers from as little as £20</a></li><li><strong>Argos: </strong><a href="https://www.argos.co.uk/search/controllers/?clickOrigin=searchbar:search:term:controllers" target="_blank">Good prices on budget to high-end controllers</a></li></ul><div class="product"><a data-dimension112="ed2168f0-b8e6-11f1-bd9e-09a49d41ae96" data-action="Deal Block" data-label="Nova Lite" data-dimension48="Nova Lite" data-dimension25="£18.99" href="https://www.amazon.co.uk/GameSir-Wireless-Controller-Bluetooth-Vibration-Nova-Lite-White/dp/B0CMCQ6WMC" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:200px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="soVwABeC6nbkWkMrnx2xcR" name="GameSir Nova Lite 2.4g Wireless Controller.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/soVwABeC6nbkWkMrnx2xcR-1920-80.jpg" mos="" align="middle" fullscreen="" width="200" height="200" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.co.uk/GameSir-Wireless-Controller-Bluetooth-Vibration-Nova-Lite-White/dp/B0CMCQ6WMC" target="_blank" rel="nofollow" data-dimension112="ed2168f0-b8e6-11f1-bd9e-09a49d41ae96" data-action="Deal Block" data-label="Nova Lite" data-dimension48="Nova Lite" data-dimension25="£18.99">Nova Lite: was £24.99 now £18.99</a></strong><br>This gaming controller remains our <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-budget-controller" target="_blank">top budget pick</a> for good reason. <a href="https://www.pcgamer.com/hardware/controllers/gamesir-nova-lite-controller-review/" target="_blank">In our review</a>, James was particularly impressed by just how much GameSir cram into such an affordable package, highlighting the controller's Hall Effect sticks and 2.4 GHz connectivity.</p><p><strong>Key specs: Hall effect thumb sticks | 2.4G wireless | 10 h battery</strong><a class="view-deal button" href="https://www.amazon.co.uk/GameSir-Wireless-Controller-Bluetooth-Vibration-Nova-Lite-White/dp/B0CMCQ6WMC" target="_blank" rel="nofollow" data-dimension112="ed2168f0-b8e6-11f1-bd9e-09a49d41ae96" data-action="Deal Block" data-label="Nova Lite" data-dimension48="Nova Lite" data-dimension25="£18.99">View Deal</a></p></div><div class="product"><a data-dimension112="ed216954-b8e6-11f1-adcd-0932edd735c4" data-action="Deal Block" data-label="Nova Lite 2" data-dimension48="Nova Lite 2" data-dimension25="£24.89" href="https://www.amazon.co.uk/GameSir-Lite-Controller-Joysticks-Remappable/dp/B0F3D25PD3/ref=sr_1_4" 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="VGAcVx239apmX4EGiGsDnE" name="1781519450.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/VGAcVx239apmX4EGiGsDnE-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.co.uk/GameSir-Lite-Controller-Joysticks-Remappable/dp/B0F3D25PD3/ref=sr_1_4" target="_blank" rel="nofollow" data-dimension112="ed216954-b8e6-11f1-adcd-0932edd735c4" data-action="Deal Block" data-label="Nova Lite 2" data-dimension48="Nova Lite 2" data-dimension25="£24.89">Nova Lite 2: was £29.99 now £24.89</a></strong><br>An upgraded and improved version of the Nova Lite, this controller sets the standard for what you can score for a relatively slim amount of money. Hall effect everywhere and a mechanical D-pad.</p><p><strong>Key specs: Hall effect joysticks + triggers | 2.4G wireless | 1000 Hz polling</strong><a class="view-deal button" href="https://www.amazon.co.uk/GameSir-Lite-Controller-Joysticks-Remappable/dp/B0F3D25PD3/ref=sr_1_4" target="_blank" rel="nofollow" data-dimension112="ed216954-b8e6-11f1-adcd-0932edd735c4" data-action="Deal Block" data-label="Nova Lite 2" data-dimension48="Nova Lite 2" data-dimension25="£24.89">View Deal</a></p></div><div class="product"><a data-dimension112="ed216a1c-b8e6-11f1-8b55-b98dde0e4a49" data-action="Deal Block" data-label="Pro 3" data-dimension48="Pro 3" data-dimension25="£52.99" href="https://www.amazon.co.uk/8Bitdo-Pro-Bluetooth-Controller-Switch/dp/B0FFGQ6J35" 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="PkKDcfAPjhcUAT2setQ2WW" name="8BitDo Pro 3 product image" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/PkKDcfAPjhcUAT2setQ2WW-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.co.uk/8Bitdo-Pro-Bluetooth-Controller-Switch/dp/B0FFGQ6J35" target="_blank" rel="nofollow" data-dimension112="ed216a1c-b8e6-11f1-8b55-b98dde0e4a49" data-action="Deal Block" data-label="Pro 3" data-dimension48="Pro 3" data-dimension25="£52.99">Pro 3: was £59.99 now £52.99</a></strong><br>Though a little on the narrower side, this well-balanced controller remains comfortable to play through long sessions. A 20-hour battery life, plus the option to game while you charge (even without using the included dock), ensures this gamepad won't leave you high and dry when you need it most.</p><p><strong>Key specs: TMR sticks | Hall effect triggers | Swappable ABXY Buttons | Charging dock | 2.4 G wireless | 20h battery</strong><a class="view-deal button" href="https://www.amazon.co.uk/8Bitdo-Pro-Bluetooth-Controller-Switch/dp/B0FFGQ6J35" target="_blank" rel="nofollow" data-dimension112="ed216a1c-b8e6-11f1-8b55-b98dde0e4a49" data-action="Deal Block" data-label="Pro 3" data-dimension48="Pro 3" data-dimension25="£52.99">View Deal</a></p></div><div class="product"><a data-dimension112="ed216a80-b8e6-11f1-a77b-dfb6a059ad32" data-action="Deal Block" data-label="Wolverine V3 Pro" data-dimension48="Wolverine V3 Pro" data-dimension25="£158.91" href="https://www.amazon.co.uk/Razer-Wolverine-Pro-Controller-thumbsticks/dp/B0D7W5L9YY/ref=sr_1_1_sspa" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1508px;"><p class="vanilla-image-block" style="padding-top:99.34%;"><img id="bEho7QQ2jdCF6Vr3xoypw" name="1781520197.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/bEho7QQ2jdCF6Vr3xoypw-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/Razer-Wolverine-Pro-Controller-thumbsticks/dp/B0D7W5L9YY/ref=sr_1_1_sspa" target="_blank" rel="nofollow" data-dimension112="ed216a80-b8e6-11f1-a77b-dfb6a059ad32" data-action="Deal Block" data-label="Wolverine V3 Pro" data-dimension48="Wolverine V3 Pro" data-dimension25="£158.91">Wolverine V3 Pro: was £199.99 now £158.91</a></strong><br>A superb controller that's sufficiently endgame for most players. Every button and trigger offers excellent feedback and it features Hall effect sticks for improved stick drift resistance.</p><p><strong>Key specs: Hall effect joysticks | 2.4G wireless | mecha-tactile buttons</strong><a class="view-deal button" href="https://www.amazon.co.uk/Razer-Wolverine-Pro-Controller-thumbsticks/dp/B0D7W5L9YY/ref=sr_1_1_sspa" target="_blank" rel="nofollow" data-dimension112="ed216a80-b8e6-11f1-a77b-dfb6a059ad32" data-action="Deal Block" data-label="Wolverine V3 Pro" data-dimension48="Wolverine V3 Pro" data-dimension25="£158.91">View Deal</a></p></div><ul><li><a href="#main"><strong>Back to top ^</strong></a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/amazon-prime-day-controller-deals/</link>
                                                                            <description>
                            <![CDATA[ The Big Deal Days are over, yet we're still seeing discounts across many of our favorite gamepads. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">mw9a8H3pgvBifUZzC8cL9R</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/X8UdXfBkMC68MFpGMspMXB-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 09 Jun 2026 16:42:00 +0000</pubDate>                                                                                                                                <updated>Thu, 08 Oct 2026 09:59:58 +0000</updated>
                                                                                                                                            <category><![CDATA[Controllers]]></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/X8UdXfBkMC68MFpGMspMXB-1920-80.jpg">
                                                            <media:credit><![CDATA[GameSir]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[GameSir G7 Pro on an abstract blue background]]></media:description>                                                            <media:text><![CDATA[GameSir G7 Pro on an abstract blue background]]></media:text>
                                <media:title type="plain"><![CDATA[GameSir G7 Pro on an abstract blue background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/X8UdXfBkMC68MFpGMspMXB-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>October's Prime Day, also known as Big Deal Days, has finally passed. The big event took place from October 6 until October 7 this year, but that doesn't mean there aren't any deals to take advantage of. </p><p>In fact, best buy, Walmart, and even Amazon still have a few reasonably priced stragglers to pick up if you need a new controller. </p><p>👉<a href="https://www.amazon.com/s?k=controllers&crid=39ANCIZGH03O&sprefix=controller%2Caps%2C179&ref=nb_sb_noss_1" target="_blank"><strong>ALL of Amazon's controller 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>When it comes to the key high-end technology of today, such as TMR sticks and Hall effect triggers, that isn't necessarily the preserve of the super-premium $200 controllers. Companies such as GameSir and Easy SMX have brought these features down into the mainstream and you can find some of the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/" target="_blank">best PC controllers</a> sporting them for bargain prices right now. </p><h2 id="where-to-find-the-best-prime-day-controller-deals">Where to find the best Prime Day controller deals</h2><ul><li><strong>Amazon: </strong><a href="https://www.amazon.com/s?k=controllers&crid=39ANCIZGH03O&sprefix=controller%2Caps%2C179&ref=nb_sb_noss_1" target="_blank"><strong>All the pads you could ever want</strong></a></li><li><strong>Walmart:</strong> <a href="https://www.walmart.com/search?q=controllers" target="_blank">Solid controllers, series savings</a></li><li><strong>Best Buy:</strong> <a href="https://www.bestbuy.com/site/searchpage.jsp?id=pcat17071&st=controllers" target="_blank">Big name pads with big value discounts</a></li><li><strong>Newegg:</strong> <a href="https://www.newegg.com/p/pl?d=controllers" target="_blank">Big savings on big brand controllers</a></li></ul><div class="vizualizer-embed"><iframe   srcdoc="<!DOCTYPE html><html><head>  <style>    #widget-t4n1495 *:not(svg):not(path) { box-sizing: border-box; }    #widget-t4n1495 h1, #widget-t4n1495 p, #widget-t4n1495 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-t4n1495, :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-t4n1495); 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-t4n1495 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-t4n1495 tr:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { border-bottom-width: 0px; }.prose :where(t#widget-t4n1495 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-t4n1495: 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-t4n1495: 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-t4n1495 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-t4n1495 td:first-child, tfoot td:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-inline-start: 0px; }.prose :where(t#widget-t4n1495 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-t4n1495 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-t4n1495 td:first-child, tfoot td:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-inline-start: 0px; }.prose-lg :where(t#widget-t4n1495 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-t4n1495: 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-t4n1495: 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-t4n1495"><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 55 controller 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 = "Controller";        const INITIALLY_OPEN = false;        // Embedded complete category data        let LOCAL_REVIEWS = JSON.parse(decodeURIComponent("%5B%7B%22id%22%3A%228NKgZmo3fxQQhxjqHrn2AB%22%2C%22title%22%3A%22Scuf%20Omega%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2Fscuf-omega-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-09-07T15%3A02%3A11Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FPfiU4gZmnbsVoGaYsi3iY8.jpg%22%2C%22strapline%22%3A%22Closer%20to%20an%20Alpha%20or%20Beta%20than%20an%20Omega.%22%2C%22categories%22%3A%5B%22Controllers%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22controller%22%2C%22wireless%20controller%22%2C%22wired%20controller%22%2C%22game%20controller%22%2C%22PC%20controller%22%2C%22Scuf%22%2C%22Scuf%20Omega%22%5D%2C%22score%22%3A70%2C%22summary%22%3A%22Closer%20to%20an%20Alpha%20or%20Beta%20than%20an%20Omega.%22%7D%2C%7B%22id%22%3A%22UqYpGJHzTjVNBBmU2SrrJn%22%2C%22title%22%3A%22GameSir%20T7%20Pro%20Sugar%20Whirl%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgame-pads%2Fgamesir-t7-pro-sugar-whirl-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-08-14T13%3A13%3A19Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2Fmx7yo6es2nmRYz34Vbuagg.jpg%22%2C%22strapline%22%3A%22Not%20quite%20the%20sweetest%20of%20treats.%22%2C%22categories%22%3A%5B%22Game%20Pads%22%2C%22Hardware%22%2C%22Controllers%22%5D%2C%22tags%22%3A%5B%22Review%22%2C%22Hardware%22%2C%22GameSir%22%2C%22Xbox%20Wireless%20Controller%22%2C%22Pink%22%2C%22Blue%22%2C%22purple%22%2C%22wireless%20controller%22%2C%22charging%22%2C%22charging%20stand%22%2C%22dock%22%2C%22TMR%20sticks%22%2C%22Hall%20effect%22%5D%2C%22score%22%3A75%2C%22summary%22%3A%22Not%20quite%20the%20sweetest%20of%20treats.%22%7D%2C%7B%22id%22%3A%22LxaJz5yKcWogc5hm5z84mj%22%2C%22title%22%3A%22GameSir%20G7%20Pro%208K%20Aimlabs%20Edition%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2Fgamesir-g7-pro-8k-aimlabs-edition-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-05-01T11%3A37%3A15Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FuT6Y9ABVa5DY9xXcAJrEwf.jpg%22%2C%22strapline%22%3A%22Would%20you%20pay%20%2410%20more%20for%20higher%20polling%3F%22%2C%22categories%22%3A%5B%22Controllers%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22controller%22%2C%22PC%20controller%22%2C%22game%20controller%22%2C%22wireless%20controller%22%2C%22Hardware%22%2C%22GameSir%22%2C%22GameSir%20G7%20Pro%208K%22%2C%22TMR%22%2C%22TMR%20sticks%22%2C%22GameSir%20g7%20Pro%208K%20Aimlabs%20Edition%22%5D%2C%22score%22%3A84%2C%22summary%22%3A%22Would%20you%20pay%20%2410%20more%20for%20higher%20polling%3F%22%7D%2C%7B%22id%22%3A%22B4p3aPJNV2Ckc47kSywXKQ%22%2C%22title%22%3A%22Steam%20Controller%20(2026)%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgame-pads%2Fsteam-controller-2026-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-04-27T17%3A00%3A00Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FaUXA7Xr75b7Xuvt2S6eeKY.jpg%22%2C%22strapline%22%3A%22Second%20time's%20the%20charm.%22%2C%22categories%22%3A%5B%22Game%20Pads%22%2C%22Hardware%22%2C%22Controllers%22%5D%2C%22tags%22%3A%5B%22Hardware%22%2C%22Valve%22%2C%22Steam%20Controller%22%2C%22controller%22%2C%22game%20pad%22%2C%22Steam%22%5D%2C%22score%22%3A83%2C%22summary%22%3A%22Second%20time's%20the%20charm.%22%7D%2C%7B%22id%22%3A%22WRLnnowV6sabshmTC8HujQ%22%2C%22title%22%3A%22EasySMX%20D05%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2Feasysmx-d05-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-03-31T15%3A00%3A43Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FPqjBcwBzNJUwKiWav7NBZF.jpg%22%2C%22strapline%22%3A%22You%20can%20get%20Hall%20effect%20controllers%20slightly%20cheaper%2C%20but%20you'd%20struggle%20to%20find%20as%20feature-rich%20a%20package%20without%20some%20heavy%2C%20heavy%20sales.%20%22%2C%22categories%22%3A%5B%22Controllers%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22controller%22%2C%22wired%20controller%22%2C%22wireless%20controller%22%2C%22budget%22%2C%22Hall%20effect%22%2C%22EasySMX%22%2C%22EasySMX%20D10%22%2C%22Hardware%22%5D%2C%22score%22%3A87%2C%22summary%22%3A%22You%20can%20get%20Hall%20effect%20controllers%20slightly%20cheaper%2C%20but%20you'd%20struggle%20to%20find%20as%20feature-rich%20a%20package%20without%20some%20heavy%2C%20heavy%20sales.%20%22%7D%2C%7B%22id%22%3A%22fM5EQd4AH6qDUADhLjdeqe%22%2C%22title%22%3A%22EasySMX%20D10%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2Feasysmx-d10-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-03-27T15%3A14%3A14Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FUgLVpPDZm7T9ZV36sAHGz4.jpg%22%2C%22strapline%22%3A%22A%20feature-rich%20budget%20TMR%20controller%20that%20only%20sometimes%20feels%20like%20a%20compromise.%22%2C%22categories%22%3A%5B%22Controllers%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22controller%22%2C%22game%20controller%22%2C%22budget%22%2C%22TMR%22%2C%22TMR%20sticks%22%2C%22Hall%20effect%22%2C%22Review%22%2C%22Hardware%22%5D%2C%22score%22%3A80%2C%22summary%22%3A%22A%20feature-rich%20budget%20TMR%20controller%20that%20only%20sometimes%20feels%20like%20a%20compromise.%22%7D%2C%7B%22id%22%3A%22euxMmPNTRBtjcL6Rz4W3kD%22%2C%22title%22%3A%22Hyperkin%20Competitor%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgame-pads%2Fhyperkin-competitor-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-03-24T11%3A59%3A23Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2F3TEoYfnGkzXiCm8xisUHGZ.jpg%22%2C%22strapline%22%3A%22It%20competes%20with%20a%20home%20field%20advantage%20on%20bang%20for%20buck%2C%20but%20can%20fall%20short%20on%20away%20games.%22%2C%22categories%22%3A%5B%22Game%20Pads%22%2C%22Hardware%22%2C%22Controllers%22%5D%2C%22tags%22%3A%5B%22Hardware%22%2C%22controller%22%2C%22game%20pad%22%2C%22Hyperkin%22%5D%2C%22score%22%3A72%2C%22summary%22%3A%22It%20competes%20with%20a%20home%20field%20advantage%20on%20bang%20for%20buck%2C%20but%20can%20fall%20short%20on%20away%20games.%22%7D%2C%7B%22id%22%3A%22fjGZ5xcK8LaBGjLhbCCzjU%22%2C%22title%22%3A%22Moza%20AB9%20FFB%20Base%20%2B%20MH16%20Flightstick%20%2B%20MTP%20Throttle%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2Fmoza-ab9-ffb-base-mh16-flightstick-mtp-throttle-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222026-02-18T14%3A48%3A01Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2F7sPx82rcLMVn5XmFgPZj97.jpg%22%2C%22strapline%22%3A%22One%20for%20the%20serious%20flight%20simmers%2C%20but%20a%20very%20impressive%20experience.%22%2C%22categories%22%3A%5B%22Controllers%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22Hardware%22%2C%22Flight%20Sims%22%2C%22force%20feedback%22%2C%22MOZA%22%2C%22joystick%22%2C%22flight%20stick%22%2C%22throttle%20controller%22%2C%22Moza%20AB9%20FFB%20Base%22%2C%22Moza%20MH16%20Flightstick%22%2C%22MSFS%202024%22%5D%2C%22score%22%3A86%2C%22summary%22%3A%22One%20for%20the%20serious%20flight%20simmers%2C%20but%20a%20very%20impressive%20experience.%22%7D%2C%7B%22id%22%3A%22NobwmgxJUWpkrLFPmkrnxL%22%2C%22title%22%3A%22Victrix%20Pro%20BFG%20Reloaded%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgame-pads%2Fvictrix-pro-bfg-reloaded-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222025-11-05T10%3A33%3A51Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2Fw5YASeamdYp7YnYfoUvq.jpg%22%2C%22strapline%22%3A%22A%20boon%20for%20fight%20pad%20lovers%2C%20but%20not%20a%20controller%20for%20the%20mainstream.%22%2C%22categories%22%3A%5B%22Game%20Pads%22%2C%22Hardware%22%2C%22Controllers%22%5D%2C%22tags%22%3A%5B%22PDP%22%2C%22Turtle%20Beach%22%2C%22Hardware%22%2C%22controller%22%5D%2C%22score%22%3A70%2C%22summary%22%3A%22A%20boon%20for%20fight%20pad%20lovers%2C%20but%20not%20a%20controller%20for%20the%20mainstream.%22%7D%2C%7B%22id%22%3A%22ifyAnNg9BLtnbkM7627JrR%22%2C%22title%22%3A%228BitDo%20Pro%203%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2F8bitdo-pro-3-review%22%2C%22author%22%3A%22PC%20Gamer%22%2C%22publishDate%22%3A%222025-10-24T16%3A21%3A45Z%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2F2ViNbtNwhhNsspHfd3k2A5.jpg%22%2C%22strapline%22%3A%22My%20new%20everyday%20controller%2C%20despite%20its%20flaws.%22%2C%22categories%22%3A%5B%22Controllers%22%2C%22Hardware%22%5D%2C%22tags%22%3A%5B%22Hardware%22%2C%22controller%22%2C%22wireless%20controller%22%2C%228bitdo%22%2C%228BitDo%20Pro%203%22%2C%22PC%20controller%22%5D%2C%22score%22%3A76%2C%22summary%22%3A%22My%20new%20everyday%20controller%2C%20despite%20its%20flaws.%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 = 55;        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 Controller Widget"></iframe></div><h2 class="article-body__section" id="section-prime-day-controller-deals"><span>Prime Day controller deals </span></h2><div class="product"><a data-dimension112="ed21522a-b8e6-11f1-aad1-9d421446b232" data-action="Deal Block" data-label="Nova Lite" data-dimension48="Nova Lite" data-dimension25="$19.89" href="https://www.walmart.com/ip/GameSir-Nova-Lite-USB-Gamepad-Wireless-Bluetooth-Joystick-for-Apple-Arcade-Games/5394301595" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:425px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="qrNkN3FB5J5tnFHGYuiYtE" name="Nova Lite" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/qrNkN3FB5J5tnFHGYuiYtE-1920-80.jpg" mos="" align="middle" fullscreen="" width="425" height="425" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>It's incredible to think you can spend so little and get a stick drift-resistant wireless controller that doesn't completely suck. Luckily for the GameSir Nova Lite, it does all of the above and manages to feel good and light in the hands, too. </p><p><strong>Key specs: Wireless (Bluetooth and 2.4 GHz) | Asymmetric | Hall effect</strong><a class="view-deal button" href="https://www.walmart.com/ip/GameSir-Nova-Lite-USB-Gamepad-Wireless-Bluetooth-Joystick-for-Apple-Arcade-Games/5394301595" target="_blank" rel="nofollow" data-dimension112="ed21522a-b8e6-11f1-aad1-9d421446b232" data-action="Deal Block" data-label="Nova Lite" data-dimension48="Nova Lite" data-dimension25="$19.89">View Deal</a></p></div><div class="product"><a data-dimension112="ed2152f2-b8e6-11f1-afae-61ffb3df8d38" data-action="Deal Block" data-label="Ultimate 2C" data-dimension48="Ultimate 2C" data-dimension25="$29.99" href="https://www.amazon.com/dp/B0D736BCNM/?th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:200px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="VzGnuWAwAyES8AAmGqAW9d" name="8BitDo Ultimate 2C Wireless Controller.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/VzGnuWAwAyES8AAmGqAW9d-1920-80.jpg" mos="" align="middle" fullscreen="" width="200" height="200" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/dp/B0D736BCNM/?th=1" target="_blank" rel="nofollow" data-dimension112="ed2152f2-b8e6-11f1-afae-61ffb3df8d38" data-action="Deal Block" data-label="Ultimate 2C" data-dimension48="Ultimate 2C" data-dimension25="$29.99">Ultimate 2C: $29.99</a></strong><br>We've already raved about Hall effect joysticks and how they spell the end for the dreaded stick drift. In this wireless gaming controller, they're a welcome feature, but this handful of gaming hardware packs a few quirky surprises too. For instance, there are <em>extra </em>bumper buttons.</p><p><strong>Key specs: Hall effect sticks, triggers | 2.4G wireless | 19 h battery</strong><a class="view-deal button" href="https://www.amazon.com/dp/B0D736BCNM/?th=1" target="_blank" rel="nofollow" data-dimension112="ed2152f2-b8e6-11f1-afae-61ffb3df8d38" data-action="Deal Block" data-label="Ultimate 2C" data-dimension48="Ultimate 2C" data-dimension25="$29.99">View Deal</a></p></div><div class="product"><a data-dimension112="30a0b714-c168-11f1-b9f2-fbacd14b8b5f" data-action="Deal Block" data-label="X05 Pro" data-dimension48="X05 Pro" data-dimension25="$43.69" href="https://www.amazon.com/EasySMX-X05Pro-Wireless-Gaming-Controller-Charging/dp/B0GVS7HTWZ" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:425px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="3eZyZnfyR9iAHvwpLaYTFo" name="D05" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/3eZyZnfyR9iAHvwpLaYTFo-1920-80.jpg" mos="" align="middle" fullscreen="" width="425" height="425" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The X05 Pro doesn't look like a budget controller. It uses Hall effect for the thumbsticks, which makes it resistant to stick drift. Moreover, it's wireless and comes with a charging dock. It's an easy pick even at full price.</p><p><strong>Key specs: Wireless (2.4 + Bluetooth) | HE sticks </strong><a class="view-deal button" href="https://www.amazon.com/EasySMX-X05Pro-Wireless-Gaming-Controller-Charging/dp/B0GVS7HTWZ" target="_blank" rel="nofollow" data-dimension112="30a0b714-c168-11f1-b9f2-fbacd14b8b5f" data-action="Deal Block" data-label="X05 Pro" data-dimension48="X05 Pro" data-dimension25="$43.69">View Deal</a></p></div><div class="product"><a data-dimension112="ed215428-b8e6-11f1-941d-3f082096f317" data-action="Deal Block" data-label="Wireless controller" data-dimension48="Wireless controller" data-dimension25="$49.49" href="https://www.walmart.com/ip/Microsoft-Xbox-Wireless-Controller-Carbon-Black/15060559533?classType=VARIANT&athbdg=L1200&from=/search" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="YTRwUu9W6d8x3mJzaimi69" name="1781604007.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/YTRwUu9W6d8x3mJzaimi69-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="2000" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.walmart.com/ip/Microsoft-Xbox-Wireless-Controller-Carbon-Black/15060559533?classType=VARIANT&athbdg=L1200&from=/search" target="_blank" rel="nofollow" data-dimension112="ed215428-b8e6-11f1-941d-3f082096f317" data-action="Deal Block" data-label="Wireless controller" data-dimension48="Wireless controller" data-dimension25="$49.49">Wireless controller: was $64 now $49.49</a></strong><br>It may be vulnerable to stick drift (and that's a big downside), but it's hard to deny the quality on show with Microsoft's Xbox controller. Textured grips, clicky buttons, a nice weight and feel: it's got everything you need, ergonomically speaking.</p><p><strong>Key specs: Wireless | Asymmetric sticks </strong></p><p><strong>Price watch: </strong><a href="https://www.bestbuy.com/product/microsoft-xbox-wireless-controller-for-xbox-series-x-xbox-series-s-xbox-one-pcs-and-cloud-enabled-devices-deep-pink/JJGXPXQ257" target="_blank">Best Buy $69.99</a><strong> </strong>| <a href="https://www.amazon.com/Xbox-Wireless-Gaming-Controller-Headsets-Console/dp/B0F1J12R6N/ref=sr_1_3" target="_blank">Amazon $54</a></p></div><div class="product"><a data-dimension112="ed215554-b8e6-11f1-be46-59b14b2c9a3c" data-action="Deal Block" data-label="Valor Pro (wired)" data-dimension48="Valor Pro (wired)" data-dimension25="$69.99" href="https://www.scufgaming.com/us/en/p/scuf-valor-pro-black" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:602px;"><p class="vanilla-image-block" style="padding-top:99.83%;"><img id="drjqSuWFdQCkPHb5yYa4uK" name="Valor Pro (wired)" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/drjqSuWFdQCkPHb5yYa4uK-1920-80.png" mos="" align="middle" fullscreen="" width="602" height="601" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.scufgaming.com/us/en/p/scuf-valor-pro-black" target="_blank" rel="nofollow" data-dimension112="ed215554-b8e6-11f1-be46-59b14b2c9a3c" data-action="Deal Block" data-label="Valor Pro (wired)" data-dimension48="Valor Pro (wired)" data-dimension25="$69.99">Valor Pro (wired): was $99.99 now $69.99</a></strong><br>This is the <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-wired-controller" target="_blank">best wired controller for PC gaming</a> because it's just so damn satisfying to use. Everything about it screams quality, from the clicky DPAD to thunky back paddles. And it's fairly modular and customizable, too.</p><p><strong>Key specs: Wired (USB-C) | Hall effect thumbsticks | 260 g</strong></p><p><strong>Price check: </strong><a href="https://www.amazon.com/gp/aw/d/B0DTB3F17W" target="_blank">Amazon $99.99</a><a class="view-deal button" href="https://www.scufgaming.com/us/en/p/scuf-valor-pro-black" target="_blank" rel="nofollow" data-dimension112="ed215554-b8e6-11f1-be46-59b14b2c9a3c" data-action="Deal Block" data-label="Valor Pro (wired)" data-dimension48="Valor Pro (wired)" data-dimension25="$69.99">View Deal</a></p></div><div class="product"><a data-dimension112="ed21561c-b8e6-11f1-873d-1b17d12f5b27" data-action="Deal Block" data-label="Valor Pro (wireless)" data-dimension48="Valor Pro (wireless)" data-dimension25="$129.99" href="https://www.scufgaming.com/us/en/p/scuf-valor-pro-wireless-smoke" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:909px;"><p class="vanilla-image-block" style="padding-top:98.90%;"><img id="aekqUpXBiYxL4jfFq7SoSm" name="1782128336.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/aekqUpXBiYxL4jfFq7SoSm-1920-80.jpg" mos="" align="middle" fullscreen="" width="909" height="899" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.scufgaming.com/us/en/p/scuf-valor-pro-wireless-smoke" target="_blank" rel="nofollow" data-dimension112="ed21561c-b8e6-11f1-873d-1b17d12f5b27" data-action="Deal Block" data-label="Valor Pro (wireless)" data-dimension48="Valor Pro (wireless)" data-dimension25="$129.99">Valor Pro (wireless): was $189.99 now $129.99</a></strong><br>We had a lot of good things to say about the <a href="https://www.pcgamer.com/hardware/game-pads/scuf-valor-pro-review/" target="_blank">Scuf Valor Pro in our review</a>. From its comfortable shape to its customizable design. That said, we didn't like the price much, though this deal sure helps.</p><p><strong>Key specs: 2.4 GHz wireless, Bluetooth, Wired | Hall effect thumbsticks | 260 g</strong></p><p><strong>Price check: </strong><a href="https://www.amazon.com/VALOR-Wireless-Performance-Controller-Gaming-Console/dp/B0FPXJYFRQ?th=1" target="_blank">Amazon $139.99</a> | <a href="https://www.bestbuy.com/product/scuf-valor-pro-wireless-performance-controller-for-xbox-series-xs-xbox-one-and-pc-black/J39T25KR67" target="_blank">Best Buy $139.99</a><a class="view-deal button" href="https://www.scufgaming.com/us/en/p/scuf-valor-pro-wireless-smoke" target="_blank" rel="nofollow" data-dimension112="ed21561c-b8e6-11f1-873d-1b17d12f5b27" data-action="Deal Block" data-label="Valor Pro (wireless)" data-dimension48="Valor Pro (wireless)" data-dimension25="$129.99">View Deal</a></p></div><div class="product"><a data-dimension112="9ad2c23a-c163-11f1-9647-1f2dbcd820a7" data-action="Deal Block" data-label="Wolverine V3 Pro 8K" data-dimension48="Wolverine V3 Pro 8K" data-dimension25="$151.99" href="https://www.amazon.com/dp/B0FC9DTDJ3" 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="oyWyECCjM2npsCm4FAktzU" name="PCGamer Deal Block (9)" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/oyWyECCjM2npsCm4FAktzU-1920-80.png" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>With a great feel, superb specs, and a bunch of remappable buttons, the Wolverine V3 Pro 8K is not only viable as a competitive choice, but comfy enough for everyday use. </p><p><strong>Key specs: Up to 8,000 Hz | TMR thumbsticks | Hall effect triggers |</strong> <strong>included carry case | Wireless and wired | 20 hour battery life (with 1,000 Hz polling)</strong><a class="view-deal button" href="https://www.amazon.com/dp/B0FC9DTDJ3" target="_blank" rel="nofollow" data-dimension112="9ad2c23a-c163-11f1-9647-1f2dbcd820a7" data-action="Deal Block" data-label="Wolverine V3 Pro 8K" data-dimension48="Wolverine V3 Pro 8K" data-dimension25="$151.99">View Deal</a></p></div><ul><li><a href="#main"><strong>Back to top ^</strong></a></li></ul><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><h2 class="article-body__section" id="section-prime-day-controller-deals-in-the-uk"><span>Prime Day controller deals in the UK</span></h2><h2 id="where-are-the-best-prime-day-controller-deals-in-the-uk">Where are the best Prime Day controller deals in the UK?</h2><ul><li><strong>Amazon: </strong><a href="https://www.amazon.co.uk/s?k=controllers&crid=60S1AC87VO31&sprefix=controller%2Caps%2C134&ref=nb_sb_noss_1" target="_blank">Big discounts on top-brand controllers</a></li><li><strong>Overclockers:</strong> <a href="https://www.overclockers.co.uk/peripherals/gamepads-game-controllers?q=controllers&_gl=1*hw2u4v*_up*MQ..*_ga*MTQ2NzEzNjg2OC4xNzkwNjgwODU3*_ga_123456*czE3OTA2ODA4NTckbzEkZzAkdDE3OTA2ODA4ODYkajMxJGwwJGgxODc0NzI0ODg.*_ga_7SS7XDNBS9*czE3OTA2ODA4NTckbzEkZzAkdDE3OTA2ODA4ODckajMwJGwwJGgw" target="_blank">A whole bunch of controllers to choose from</a></li><li><strong>Scan:</strong> <a href="https://www.scan.co.uk/shop/computer-hardware/game-controllers/all" target="_blank">Gamepads from just £15</a></li><li><strong>Box: </strong><a href="https://box.co.uk/xbox-controllers" target="_blank">Controllers for everyone</a></li><li><strong>Currys:</strong> <a href="https://www.currys.co.uk/gaming/controllers/controllers/pc-gaming-controllers" target="_blank">Controllers from as little as £20</a></li><li><strong>Argos: </strong><a href="https://www.argos.co.uk/search/controllers/?clickOrigin=searchbar:search:term:controllers" target="_blank">Good prices on budget to high-end controllers</a></li></ul><div class="product"><a data-dimension112="ed2168f0-b8e6-11f1-bd9e-09a49d41ae96" data-action="Deal Block" data-label="Nova Lite" data-dimension48="Nova Lite" data-dimension25="£18.99" href="https://www.amazon.co.uk/GameSir-Wireless-Controller-Bluetooth-Vibration-Nova-Lite-White/dp/B0CMCQ6WMC" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:200px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="soVwABeC6nbkWkMrnx2xcR" name="GameSir Nova Lite 2.4g Wireless Controller.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/soVwABeC6nbkWkMrnx2xcR-1920-80.jpg" mos="" align="middle" fullscreen="" width="200" height="200" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.co.uk/GameSir-Wireless-Controller-Bluetooth-Vibration-Nova-Lite-White/dp/B0CMCQ6WMC" target="_blank" rel="nofollow" data-dimension112="ed2168f0-b8e6-11f1-bd9e-09a49d41ae96" data-action="Deal Block" data-label="Nova Lite" data-dimension48="Nova Lite" data-dimension25="£18.99">Nova Lite: was £24.99 now £18.99</a></strong><br>This gaming controller remains our <a href="https://www.pcgamer.com/best-controller-for-pc-gaming/#section-the-best-budget-controller" target="_blank">top budget pick</a> for good reason. <a href="https://www.pcgamer.com/hardware/controllers/gamesir-nova-lite-controller-review/" target="_blank">In our review</a>, James was particularly impressed by just how much GameSir cram into such an affordable package, highlighting the controller's Hall Effect sticks and 2.4 GHz connectivity.</p><p><strong>Key specs: Hall effect thumb sticks | 2.4G wireless | 10 h battery</strong><a class="view-deal button" href="https://www.amazon.co.uk/GameSir-Wireless-Controller-Bluetooth-Vibration-Nova-Lite-White/dp/B0CMCQ6WMC" target="_blank" rel="nofollow" data-dimension112="ed2168f0-b8e6-11f1-bd9e-09a49d41ae96" data-action="Deal Block" data-label="Nova Lite" data-dimension48="Nova Lite" data-dimension25="£18.99">View Deal</a></p></div><div class="product"><a data-dimension112="ed216954-b8e6-11f1-adcd-0932edd735c4" data-action="Deal Block" data-label="Nova Lite 2" data-dimension48="Nova Lite 2" data-dimension25="£24.89" href="https://www.amazon.co.uk/GameSir-Lite-Controller-Joysticks-Remappable/dp/B0F3D25PD3/ref=sr_1_4" 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="VGAcVx239apmX4EGiGsDnE" name="1781519450.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/VGAcVx239apmX4EGiGsDnE-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.co.uk/GameSir-Lite-Controller-Joysticks-Remappable/dp/B0F3D25PD3/ref=sr_1_4" target="_blank" rel="nofollow" data-dimension112="ed216954-b8e6-11f1-adcd-0932edd735c4" data-action="Deal Block" data-label="Nova Lite 2" data-dimension48="Nova Lite 2" data-dimension25="£24.89">Nova Lite 2: was £29.99 now £24.89</a></strong><br>An upgraded and improved version of the Nova Lite, this controller sets the standard for what you can score for a relatively slim amount of money. Hall effect everywhere and a mechanical D-pad.</p><p><strong>Key specs: Hall effect joysticks + triggers | 2.4G wireless | 1000 Hz polling</strong><a class="view-deal button" href="https://www.amazon.co.uk/GameSir-Lite-Controller-Joysticks-Remappable/dp/B0F3D25PD3/ref=sr_1_4" target="_blank" rel="nofollow" data-dimension112="ed216954-b8e6-11f1-adcd-0932edd735c4" data-action="Deal Block" data-label="Nova Lite 2" data-dimension48="Nova Lite 2" data-dimension25="£24.89">View Deal</a></p></div><div class="product"><a data-dimension112="ed216a1c-b8e6-11f1-8b55-b98dde0e4a49" data-action="Deal Block" data-label="Pro 3" data-dimension48="Pro 3" data-dimension25="£52.99" href="https://www.amazon.co.uk/8Bitdo-Pro-Bluetooth-Controller-Switch/dp/B0FFGQ6J35" 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="PkKDcfAPjhcUAT2setQ2WW" name="8BitDo Pro 3 product image" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/PkKDcfAPjhcUAT2setQ2WW-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.co.uk/8Bitdo-Pro-Bluetooth-Controller-Switch/dp/B0FFGQ6J35" target="_blank" rel="nofollow" data-dimension112="ed216a1c-b8e6-11f1-8b55-b98dde0e4a49" data-action="Deal Block" data-label="Pro 3" data-dimension48="Pro 3" data-dimension25="£52.99">Pro 3: was £59.99 now £52.99</a></strong><br>Though a little on the narrower side, this well-balanced controller remains comfortable to play through long sessions. A 20-hour battery life, plus the option to game while you charge (even without using the included dock), ensures this gamepad won't leave you high and dry when you need it most.</p><p><strong>Key specs: TMR sticks | Hall effect triggers | Swappable ABXY Buttons | Charging dock | 2.4 G wireless | 20h battery</strong><a class="view-deal button" href="https://www.amazon.co.uk/8Bitdo-Pro-Bluetooth-Controller-Switch/dp/B0FFGQ6J35" target="_blank" rel="nofollow" data-dimension112="ed216a1c-b8e6-11f1-8b55-b98dde0e4a49" data-action="Deal Block" data-label="Pro 3" data-dimension48="Pro 3" data-dimension25="£52.99">View Deal</a></p></div><div class="product"><a data-dimension112="ed216a80-b8e6-11f1-a77b-dfb6a059ad32" data-action="Deal Block" data-label="Wolverine V3 Pro" data-dimension48="Wolverine V3 Pro" data-dimension25="£158.91" href="https://www.amazon.co.uk/Razer-Wolverine-Pro-Controller-thumbsticks/dp/B0D7W5L9YY/ref=sr_1_1_sspa" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1508px;"><p class="vanilla-image-block" style="padding-top:99.34%;"><img id="bEho7QQ2jdCF6Vr3xoypw" name="1781520197.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/bEho7QQ2jdCF6Vr3xoypw-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/Razer-Wolverine-Pro-Controller-thumbsticks/dp/B0D7W5L9YY/ref=sr_1_1_sspa" target="_blank" rel="nofollow" data-dimension112="ed216a80-b8e6-11f1-a77b-dfb6a059ad32" data-action="Deal Block" data-label="Wolverine V3 Pro" data-dimension48="Wolverine V3 Pro" data-dimension25="£158.91">Wolverine V3 Pro: was £199.99 now £158.91</a></strong><br>A superb controller that's sufficiently endgame for most players. Every button and trigger offers excellent feedback and it features Hall effect sticks for improved stick drift resistance.</p><p><strong>Key specs: Hall effect joysticks | 2.4G wireless | mecha-tactile buttons</strong><a class="view-deal button" href="https://www.amazon.co.uk/Razer-Wolverine-Pro-Controller-thumbsticks/dp/B0D7W5L9YY/ref=sr_1_1_sspa" target="_blank" rel="nofollow" data-dimension112="ed216a80-b8e6-11f1-a77b-dfb6a059ad32" data-action="Deal Block" data-label="Wolverine V3 Pro" data-dimension48="Wolverine V3 Pro" data-dimension25="£158.91">View Deal</a></p></div><ul><li><a href="#main"><strong>Back to top ^</strong></a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 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[ 'Basically Lego for gamers': This new game controller has modular buttons, sticks, grips, and even vibration motors ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Other bits of PC hardware might not be, but controllers are actually in a really good place right now. There are so many options for all kinds of feel, layouts, and designs, and many of them rival Microsoft, Sony, and Nintendo for build quality, too. That's why, when I saw a company touting itself as 'basically Lego for gamers', I felt like I had to pay attention.</p><p><a href="https://x.com/BEITONG_betop/status/2059838687148703866?s=20" target="_blank">Shared on X</a>, company Beitong has decided to show off its PanGu controller. As all good controllers should by now, it comes with a charging dock, but the real selling point is the controller itself. It has swappable joysticks, ABXY buttons, back paddles, grip shells, and even vibration motors, and they can be exchanged without having to grab a screwdriver. </p><p>Though I'm not massively into the fairly blocky white build, I do find the design itself fascinating. The sticks and pads all have little buttons next to them to pop them out and swap them for others. Beitong says its software immediately understands the modules you've chosen and recommends layouts. It even has presets for specific games, which you can activate through the software. If it works, that's pretty neat.  </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XmAkPX"></div>                            </div>                            <script src="https://kwizly.com/embed/XmAkPX.js" async></script><p>The grips look like they function similarly to the Meta Quest 3 ones (i.e., pull down at the right angle to take them off), and this gives you easy access to the vibration motors. If you want to lessen the weight and don't care about vibration, it seems like a solid way of doing so. </p><p>It comes with TMR joystick modules, up to 1,000 Hz polling (wired and wireless), and is compatible with Windows, Switch, Android, and iOS. It's not officially on Beitong's Amazon storefront just yet, but the controller by itself seems to be fetching <a href="https://gadgethyper.com/products/beitong-pangu-modular-game-controller?srsltid=AfmBOoqBx9ckFTA_MsQewWobvvUAR3drLQ5uFa6JpQfAfkl8bhtqDHhX&variant=44195195682902" target="_blank">north of $100</a> from <a href="https://minixpc.com/products/beitong-pangu-customizable-modular-gaming-controller?srsltid=AfmBOopBbkWKHaMIoi0CMUfuk_9wT7ERM0UjpUUbU4rdgyFBHqqb7OuR&variant=45955796500714" target="_blank">other sellers</a>, with the dock bundle, or dock and bag bundle, fetching a bit more. </p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2059838687148703866"><p lang="en" dir="ltr">This Controller Lets You Rebuild EVERYTHING 🤯🎮The BEITONG PanGu Controller is basically LEGO for gamers.Swap joysticks, ABXY buttons, back paddles, grip shells, even vibration motors — all without tools.Symmetrical? Asymmetrical? Lightweight? Fully customized? Your choice.… pic.twitter.com/iaJnF8ZyFR<a href="https://twitter.com/cantworkitout/status/2059838687148703866">May 28, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Personally, that seems like a lot to pay for a brand I'm unfamiliar with, though its competition is a bit more expensive. It's similar in design to the $200 <a href="https://www.pcgamer.com/hardware/game-pads/victrix-pro-bfg-reloaded-review/" target="_blank">Turtle Beach Victrix Pro BFG Reloaded </a>(though that requires a screwdriver and is less customizable).</p><p>As I've learned through my years of testing controllers, feel will be nearly everything here, and is pretty much the only thing you can't tell through a video alone. </p><p>With the market filled with numerous excellent controllers, Beitong has a serious climb ahead of it, but the PanGu looks pretty notable regardless. It's just a shame I'm into the engineering a good bit more than the look. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/basically-lego-for-gamers-this-new-game-controller-has-modular-buttons-sticks-grips-and-even-vibration-motors/</link>
                                                                            <description>
                            <![CDATA[ I do wish the aesthetic was nicer, though. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">NgVdCuckfL32UyFLPF7N2A</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/p5gwpavUKsk4mk56creqaj-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 29 May 2026 11:22:38 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-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/p5gwpavUKsk4mk56creqaj-1920-80.jpg">
                                                            <media:credit><![CDATA[Beitong]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A picture of Beitong&#039;s PanGu controller]]></media:description>                                                            <media:text><![CDATA[A picture of Beitong&#039;s PanGu controller]]></media:text>
                                <media:title type="plain"><![CDATA[A picture of Beitong&#039;s PanGu controller]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/p5gwpavUKsk4mk56creqaj-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Other bits of PC hardware might not be, but controllers are actually in a really good place right now. There are so many options for all kinds of feel, layouts, and designs, and many of them rival Microsoft, Sony, and Nintendo for build quality, too. That's why, when I saw a company touting itself as 'basically Lego for gamers', I felt like I had to pay attention.</p><p><a href="https://x.com/BEITONG_betop/status/2059838687148703866?s=20" target="_blank">Shared on X</a>, company Beitong has decided to show off its PanGu controller. As all good controllers should by now, it comes with a charging dock, but the real selling point is the controller itself. It has swappable joysticks, ABXY buttons, back paddles, grip shells, and even vibration motors, and they can be exchanged without having to grab a screwdriver. </p><p>Though I'm not massively into the fairly blocky white build, I do find the design itself fascinating. The sticks and pads all have little buttons next to them to pop them out and swap them for others. Beitong says its software immediately understands the modules you've chosen and recommends layouts. It even has presets for specific games, which you can activate through the software. If it works, that's pretty neat.  </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XmAkPX"></div>                            </div>                            <script src="https://kwizly.com/embed/XmAkPX.js" async></script><p>The grips look like they function similarly to the Meta Quest 3 ones (i.e., pull down at the right angle to take them off), and this gives you easy access to the vibration motors. If you want to lessen the weight and don't care about vibration, it seems like a solid way of doing so. </p><p>It comes with TMR joystick modules, up to 1,000 Hz polling (wired and wireless), and is compatible with Windows, Switch, Android, and iOS. It's not officially on Beitong's Amazon storefront just yet, but the controller by itself seems to be fetching <a href="https://gadgethyper.com/products/beitong-pangu-modular-game-controller?srsltid=AfmBOoqBx9ckFTA_MsQewWobvvUAR3drLQ5uFa6JpQfAfkl8bhtqDHhX&variant=44195195682902" target="_blank">north of $100</a> from <a href="https://minixpc.com/products/beitong-pangu-customizable-modular-gaming-controller?srsltid=AfmBOopBbkWKHaMIoi0CMUfuk_9wT7ERM0UjpUUbU4rdgyFBHqqb7OuR&variant=45955796500714" target="_blank">other sellers</a>, with the dock bundle, or dock and bag bundle, fetching a bit more. </p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2059838687148703866"><p lang="en" dir="ltr">This Controller Lets You Rebuild EVERYTHING 🤯🎮The BEITONG PanGu Controller is basically LEGO for gamers.Swap joysticks, ABXY buttons, back paddles, grip shells, even vibration motors — all without tools.Symmetrical? Asymmetrical? Lightweight? Fully customized? Your choice.… pic.twitter.com/iaJnF8ZyFR<a href="https://twitter.com/cantworkitout/status/2059838687148703866">May 28, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Personally, that seems like a lot to pay for a brand I'm unfamiliar with, though its competition is a bit more expensive. It's similar in design to the $200 <a href="https://www.pcgamer.com/hardware/game-pads/victrix-pro-bfg-reloaded-review/" target="_blank">Turtle Beach Victrix Pro BFG Reloaded </a>(though that requires a screwdriver and is less customizable).</p><p>As I've learned through my years of testing controllers, feel will be nearly everything here, and is pretty much the only thing you can't tell through a video alone. </p><p>With the market filled with numerous excellent controllers, Beitong has a serious climb ahead of it, but the PanGu looks pretty notable regardless. It's just a shame I'm into the engineering a good bit more than the look. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ The Steam Controller's main competition isn't from Microsoft or Sony: It's from third-party vendors ]]></title>
                                                                                                <dc:content><![CDATA[ <div  class="fancy-box"><div class="fancy_box-title">James Bentley, hardware writer</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="SEb5dKTVfZ5EZF4fEcqdGR" name="PCG Writers 2025 Teal36" caption="" alt="PC Gamer headshots (James Bentley)" src="https://cdn.mos.cms.futurecdn.net/SEb5dKTVfZ5EZF4fEcqdGR-1920-80.png" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude"></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p class="fancy-box__body-text"><strong>This week I've been:</strong> Playing <a data-analytics-id="inline-link" href="https://www.pcgamer.com/games/fps/ive-now-played-exactly-one-bullet-hell-fps-and-im-ready-for-this-to-be-the-next-big-genre/" target="_blank">Luna Abyss</a> and <a data-analytics-id="inline-link" href="https://www.pcgamer.com/games/rpg/zero-parades-for-dead-spies-review/" target="_blank">Zero Parades for Dead Spies</a>, instead of stepping out into all the rain we're getting this British Summer.</p></div></div><p>As strange as it is to say, I often feel like I'm <em>forced </em>to use the Xbox Controller whenever I turn on my Xbox (<a href="https://www.pcgamer.com/hardware/everything-is-an-xbox-now-so-i-see-no-reason-to-buy-xbox-again/" target="_blank">which is getting rarer and rarer nowadays anyway</a>). It's still a lovely feeling pad, but it genuinely feels like a downgrade when putting down the <a href="https://www.pcgamer.com/hardware/game-pads/victrix-pro-bfg-reloaded-review/" target="_blank">Victrix Pro BFG Reloaded</a>, <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-8k-aimlabs-edition-review/" target="_blank">Gamesir G7 Pro</a> 8K, or even <a href="https://www.pcgamer.com/hardware/controllers/easysmx-d10-review/" target="_blank">EasySMX D10</a>, which I usually have to hand for my PC. </p><p>I've come to the realisation that, even ignoring the fact that Sony and Microsoft's standard controllers don't have much protection against stick drift, I still wouldn't pick them if I put them head to head against the rest of the controller market. </p><p>And yet, they still hog most of the conversation around controllers, and still regularly sit on Amazon's best-selling list. Case in point, two different listings for the Xbox controller(<a href="https://www.amazon.com/Xbox-Wireless-Gaming-Controller-Velocity-Console/dp/B0DT5SQ84T">1</a> and <a href="https://www.amazon.com/Xbox-Wireless-Gaming-Controller-Headsets-Console/dp/B0F1J12R6N">2</a>) both have Amazon added tags ("Overall Pick" and "Best Seller" as of time of writing), and these serve to place those controllers front and centre to potential buyers. But this preference isn't only a thing on storefronts. </p><p>I'm interested in the <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">Steam Controller</a>. I don't really like its polling rate or membrane buttons, but its mouse input is neat, and it comes with drift-resistant sticks, which I'd argue should be almost mandatory for a controller now. But I noticed a common narrative came out during its launch: the belief that it's better than Microsoft and Sony's gamepads. While I think that's debatable, I'm left wondering why we are forced to choose only one of those three.</p><p><a href="https://x.com/ErukanuSenpai/status/2050298025126273217" target="_blank">One post</a> went around a few weeks ago, which now has over one million views and over 8K likes as of the time of writing, that directly compares the Steam Controller to Microsoft, Nintendo, and Sony's offerings. It shows that Valve's new controller has tonnes of features that none of the others do, and it justifies the price. It argues, "If your only argument against the Steam Controller is the price, you're stupid."</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/gRJaCxjyjzDp6EwU3RkV-1920-80.jpg" alt="Valve's new and improved Steam Controller during a visit to Valve's HQ in Bellevue, Washington." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/JGwMwTfJXJsyhbgG2WV24-1920-80.jpg" alt="Valve's new and improved Steam Controller during a visit to Valve's HQ in Bellevue, Washington." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/L8JxGPmwD479ht6QSrmY4-1920-80.jpg" alt="Valve's new and improved Steam Controller during a visit to Valve's HQ in Bellevue, Washington." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>And it's easy to see why third-party controllers are often left out of these conversations. For one, as I noted at the start, Microsoft's platform is a finicky beast that only allows controllers to work wirelessly if they use its tech. This is why the GameSir G7 Pro has Xbox wireless versions (like the ZZZ and Wuchang model), which are more expensive. Unlike PC, you can't just grab any old wireless controller and get it working. </p><p>But the second, I think, is its history. Growing up, using a non-official controller often meant you were player two. It meant you had to deal with the jammy buttons, sticky bumpers, and weird thumbsticks. Third party meant cheap, both in cash and in feel. And I'm not convinced it has managed to shake that history. I do really like the EasySMX D10, but it being covered with RGB certainly doesn't help it in that regard. The same is true of the <a href="https://www.pcgamer.com/hardware/controllers/easysmx-d05-review/" target="_blank">D05</a>, which has a flashy gold D-Pad and triggers. </p><p>Let's look at raw specs. The Steam Controller for $100 gets you TMR analogue sticks, extra custom buttons, dual trackpads, dual-stage magnetic triggers, gyro support, and a 35-hour battery life with a charging dock. This does beat out the Xbox pad and Sony's DualSense. But the EasySMX D10 gives you TMR sticks, a polling rate that is four times greater, linear Hall effect and non-linear micro switches, extra reprogrammable buttons, and (in my opinion) a nicer dock. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/CLUqbm3rpKEfU3gR4VEdpE-1920-80.jpg" alt="The GameSir G7 Pro gamepad sitting in its charging dock" /><figcaption>GameSir G7 Pro<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/V5g26wXsS9M8fU28HL3HE5-1920-80.jpg" alt="EasySMX D10 while turned on, in a hand outside" /><figcaption>EasySMX D10<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ERDq49WLsgRGezy5m37wa5-1920-80.jpg" alt="8BitDo Pro 3 controller" /><figcaption>8BitDo Pro 3<small role="credit">Future</small></figcaption></figure></figure><p>The <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/" target="_blank">GameSir G7 Pro </a>offers everything the D10 has, but with a nicer feel and stronger build quality (and it's $20 less than the Steam Controller). Raw stats would matter little if they didn't have feel, but these controllers are great in that regard, too. These, and <a href="https://www.pcgamer.com/hardware/controllers/8bitdo-pro-3-review/" target="_blank">8BitDo</a>, all offer genuinely excellent-feeling controllers, equally matching the big dogs of the controller world. </p><p>This doesn't immediately make them better than the Steam Controller, but instead makes each choice viable. And that's what people miss when they overlook third-party controllers. </p><p>In the weeks since its launch, I've become more and more enamoured with the Steam Controller, and I may pick one up anyway, but that will be at least partially driven by what makes the controller unique, not what makes the controller unique when compared to a limited range. </p><p>I like its touchpads and gyro support. I think it seems genuinely pretty neat, and I like its ergonomics too. But its competition is wide, and only getting wider every day.  And it especially makes sense to know what's out there when you're spending up to $100 on it. Still, the fact that the <a href="https://www.pcgamer.com/hardware/game-pads/hear-the-steam-controller-sing-whole-songs-with-haptics-including-the-wii-store-soundtrack-still-alive-and-even-attempt-a-rick-roll/" target="_blank">controller can sing</a> is kinda cool. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/arguments-that-the-steam-controllers-competition-is-from-microsoft-or-sony-is-categorically-wrong-its-from-third-party-vendors/</link>
                                                                            <description>
                            <![CDATA[ Long gone are the days when third party was for player two. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">vezz6b83Z7dZwtEmYZVDBn</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/gokbuqaWmL94WrqqnmSQ4-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 23 May 2026 13:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-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/gokbuqaWmL94WrqqnmSQ4-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Valve&#039;s new and improved Steam Controller during a visit to Valve&#039;s HQ in Bellevue, Washington.]]></media:description>                                                            <media:text><![CDATA[Valve&#039;s new and improved Steam Controller during a visit to Valve&#039;s HQ in Bellevue, Washington.]]></media:text>
                                <media:title type="plain"><![CDATA[Valve&#039;s new and improved Steam Controller during a visit to Valve&#039;s HQ in Bellevue, Washington.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/gokbuqaWmL94WrqqnmSQ4-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div  class="fancy-box"><div class="fancy_box-title">James Bentley, hardware writer</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="SEb5dKTVfZ5EZF4fEcqdGR" name="PCG Writers 2025 Teal36" caption="" alt="PC Gamer headshots (James Bentley)" src="https://cdn.mos.cms.futurecdn.net/SEb5dKTVfZ5EZF4fEcqdGR-1920-80.png" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude"></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p class="fancy-box__body-text"><strong>This week I've been:</strong> Playing <a data-analytics-id="inline-link" href="https://www.pcgamer.com/games/fps/ive-now-played-exactly-one-bullet-hell-fps-and-im-ready-for-this-to-be-the-next-big-genre/" target="_blank">Luna Abyss</a> and <a data-analytics-id="inline-link" href="https://www.pcgamer.com/games/rpg/zero-parades-for-dead-spies-review/" target="_blank">Zero Parades for Dead Spies</a>, instead of stepping out into all the rain we're getting this British Summer.</p></div></div><p>As strange as it is to say, I often feel like I'm <em>forced </em>to use the Xbox Controller whenever I turn on my Xbox (<a href="https://www.pcgamer.com/hardware/everything-is-an-xbox-now-so-i-see-no-reason-to-buy-xbox-again/" target="_blank">which is getting rarer and rarer nowadays anyway</a>). It's still a lovely feeling pad, but it genuinely feels like a downgrade when putting down the <a href="https://www.pcgamer.com/hardware/game-pads/victrix-pro-bfg-reloaded-review/" target="_blank">Victrix Pro BFG Reloaded</a>, <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-8k-aimlabs-edition-review/" target="_blank">Gamesir G7 Pro</a> 8K, or even <a href="https://www.pcgamer.com/hardware/controllers/easysmx-d10-review/" target="_blank">EasySMX D10</a>, which I usually have to hand for my PC. </p><p>I've come to the realisation that, even ignoring the fact that Sony and Microsoft's standard controllers don't have much protection against stick drift, I still wouldn't pick them if I put them head to head against the rest of the controller market. </p><p>And yet, they still hog most of the conversation around controllers, and still regularly sit on Amazon's best-selling list. Case in point, two different listings for the Xbox controller(<a href="https://www.amazon.com/Xbox-Wireless-Gaming-Controller-Velocity-Console/dp/B0DT5SQ84T">1</a> and <a href="https://www.amazon.com/Xbox-Wireless-Gaming-Controller-Headsets-Console/dp/B0F1J12R6N">2</a>) both have Amazon added tags ("Overall Pick" and "Best Seller" as of time of writing), and these serve to place those controllers front and centre to potential buyers. But this preference isn't only a thing on storefronts. </p><p>I'm interested in the <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">Steam Controller</a>. I don't really like its polling rate or membrane buttons, but its mouse input is neat, and it comes with drift-resistant sticks, which I'd argue should be almost mandatory for a controller now. But I noticed a common narrative came out during its launch: the belief that it's better than Microsoft and Sony's gamepads. While I think that's debatable, I'm left wondering why we are forced to choose only one of those three.</p><p><a href="https://x.com/ErukanuSenpai/status/2050298025126273217" target="_blank">One post</a> went around a few weeks ago, which now has over one million views and over 8K likes as of the time of writing, that directly compares the Steam Controller to Microsoft, Nintendo, and Sony's offerings. It shows that Valve's new controller has tonnes of features that none of the others do, and it justifies the price. It argues, "If your only argument against the Steam Controller is the price, you're stupid."</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/gRJaCxjyjzDp6EwU3RkV-1920-80.jpg" alt="Valve's new and improved Steam Controller during a visit to Valve's HQ in Bellevue, Washington." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/JGwMwTfJXJsyhbgG2WV24-1920-80.jpg" alt="Valve's new and improved Steam Controller during a visit to Valve's HQ in Bellevue, Washington." /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/L8JxGPmwD479ht6QSrmY4-1920-80.jpg" alt="Valve's new and improved Steam Controller during a visit to Valve's HQ in Bellevue, Washington." /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>And it's easy to see why third-party controllers are often left out of these conversations. For one, as I noted at the start, Microsoft's platform is a finicky beast that only allows controllers to work wirelessly if they use its tech. This is why the GameSir G7 Pro has Xbox wireless versions (like the ZZZ and Wuchang model), which are more expensive. Unlike PC, you can't just grab any old wireless controller and get it working. </p><p>But the second, I think, is its history. Growing up, using a non-official controller often meant you were player two. It meant you had to deal with the jammy buttons, sticky bumpers, and weird thumbsticks. Third party meant cheap, both in cash and in feel. And I'm not convinced it has managed to shake that history. I do really like the EasySMX D10, but it being covered with RGB certainly doesn't help it in that regard. The same is true of the <a href="https://www.pcgamer.com/hardware/controllers/easysmx-d05-review/" target="_blank">D05</a>, which has a flashy gold D-Pad and triggers. </p><p>Let's look at raw specs. The Steam Controller for $100 gets you TMR analogue sticks, extra custom buttons, dual trackpads, dual-stage magnetic triggers, gyro support, and a 35-hour battery life with a charging dock. This does beat out the Xbox pad and Sony's DualSense. But the EasySMX D10 gives you TMR sticks, a polling rate that is four times greater, linear Hall effect and non-linear micro switches, extra reprogrammable buttons, and (in my opinion) a nicer dock. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/CLUqbm3rpKEfU3gR4VEdpE-1920-80.jpg" alt="The GameSir G7 Pro gamepad sitting in its charging dock" /><figcaption>GameSir G7 Pro<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/V5g26wXsS9M8fU28HL3HE5-1920-80.jpg" alt="EasySMX D10 while turned on, in a hand outside" /><figcaption>EasySMX D10<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ERDq49WLsgRGezy5m37wa5-1920-80.jpg" alt="8BitDo Pro 3 controller" /><figcaption>8BitDo Pro 3<small role="credit">Future</small></figcaption></figure></figure><p>The <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/" target="_blank">GameSir G7 Pro </a>offers everything the D10 has, but with a nicer feel and stronger build quality (and it's $20 less than the Steam Controller). Raw stats would matter little if they didn't have feel, but these controllers are great in that regard, too. These, and <a href="https://www.pcgamer.com/hardware/controllers/8bitdo-pro-3-review/" target="_blank">8BitDo</a>, all offer genuinely excellent-feeling controllers, equally matching the big dogs of the controller world. </p><p>This doesn't immediately make them better than the Steam Controller, but instead makes each choice viable. And that's what people miss when they overlook third-party controllers. </p><p>In the weeks since its launch, I've become more and more enamoured with the Steam Controller, and I may pick one up anyway, but that will be at least partially driven by what makes the controller unique, not what makes the controller unique when compared to a limited range. </p><p>I like its touchpads and gyro support. I think it seems genuinely pretty neat, and I like its ergonomics too. But its competition is wide, and only getting wider every day.  And it especially makes sense to know what's out there when you're spending up to $100 on it. Still, the fact that the <a href="https://www.pcgamer.com/hardware/game-pads/hear-the-steam-controller-sing-whole-songs-with-haptics-including-the-wii-store-soundtrack-still-alive-and-even-attempt-a-rick-roll/" target="_blank">controller can sing</a> is kinda cool. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ You need to know the Steam Controller's charging puck is always live, so if you accidentally touch it with something conductive, you're in for a shock ]]></title>
                                                                                                <dc:content><![CDATA[ <figure><blockquote class="reddit-card"  ><a href="https://www.reddit.com/r/SteamController/comments/1tjhiyv/psa_watch_out_for_the_exposed_contacts_of_the">PSA: Watch out for the exposed contacts of the Puck! Almost started a fire due to metallic smartwatch strap</a><figcaption><cite> from <a href="https://www.reddit.com/r/SteamController">r/SteamController</a></cite></figcaption></blockquote></figure><script async src="//embed.redditmedia.com/widgets/platform.js" charset="UTF-8"></script><p><br>Despite the relatively high price tag and software restrictions, the new <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">Steam Controller</a> has been a massive success for Valve. And just like so many high-end gamepads, it also comes with a neat charging system that conveniently keeps it always ready for action. However, as one redditor found out, the simple puck will punish quite noticeably if you're not careful about keeping certain materials well away from it.</p><p>Essentially, Reddit user Toikka discovered that the charging puck for the Steam Controller is constantly 'live' when it's plugged in, i.e. the little metal pins don't 'deactivate' when you lift the gamepad off the puck. This was discovered when the user accidentally let their smartwatch's wrist strap briefly touch the pins.</p><p>Since it was a magnetically-latching band, the whole thing is metal-based and thus electrically conductive. Result? Valve's puck tried to 'charge' Toikka's wrist strap, and it "started sizzling due to a short circuit."</p><p>This kind of potential hazard isn't exclusive to Valve's unit, as the charging dock for my <a href="https://www.pcgamer.com/hardware/controllers/8bitdo-ultimate-2-wireless-review/" target="_blank">8BitDo Ultimate 2</a> controller does the same thing. I used a multimeter to check, and there's a constant voltage across them. Both companies are using a simple, low-cost design for their chargers to offset higher material costs elsewhere in the device, so this is perfectly normal.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-O6jx1O"></div>                            </div>                            <script src="https://kwizly.com/embed/O6jx1O.js" async></script><p>An ideal, but less cost-effective, solution would be to have an additional contact that acts as a sense pin. With it, the charger could be designed so that the remaining pins only become live when the sense pin is grounded by the gamepad, much like how those in the 12VHPWR power connector on Nvidia's latest RTX graphics cards work.</p><p>Of course, a far simpler and practically free solution to the whole issue is to just keep the charging system out of the way when you're not using it, and absolutely never put anything conductive anywhere near it. Or at the very least, unplug the puck so it's not live (edit: This will essentially nix the controller, as reader Marasi has reminded me that the puck also acts as the wireless dongle).</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2559px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="gVDBhcWUcvzBBvVapZzK6f" name="8bitdo_ultimate_2_wireless_controller_08" alt="A photo of the 8BitDo Ultimate 2 Wireless game controller base" src="https://cdn.mos.cms.futurecdn.net/gVDBhcWUcvzBBvVapZzK6f-1920-80.jpg" mos="" align="middle" fullscreen="" width="2559" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">8BitDo's Ultimate 2 charging dock has spicey pins too </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>There is one thing that I do think Valve et al. <em>should</em> be doing, though, and it's to add a very clear warning about the live nature of the puck. I hasten to add that such an instruction might actually be there somewhere in the documentation; unfortunately, I don't have the Steam Controller or Ultimate 2 boxes to hand to double-check, but there's nothing relating to this on either company's website.</p><p>But even so, given the litigious nature of today's world, I dare say that Valve might want to beef up whatever hints or warnings it already offers. Because I wouldn't be surprised if a bunch of social media nitwits decide to start a new trend of puckifying various things, resulting in an even greater nitwit causing a serious accident or harm.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/you-need-to-know-the-steam-controllers-charging-puck-is-always-live-so-if-you-accidentally-touch-it-with-something-conductive-youre-in-for-a-shock/</link>
                                                                            <description>
                            <![CDATA[ It's not an issue exclusive to Valve's hardware, but at the same time, it's something that shouldn't really exist ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">yJpDucP8dQkJJ8TdpxZm8o</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/iCStRVfbcgSCJWxZgdUX4Y-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 22 May 2026 10:26:50 +0000</pubDate>                                                                                                                                <updated>Fri, 22 May 2026 16:45:19 +0000</updated>
                                                                                                                                            <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Nick Evanson ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/HH5qHxdCSKxFpY2HXp2Q5K-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/iCStRVfbcgSCJWxZgdUX4Y-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:description>                                                            <media:text><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:text>
                                <media:title type="plain"><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/iCStRVfbcgSCJWxZgdUX4Y-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <figure><blockquote class="reddit-card"  ><a href="https://www.reddit.com/r/SteamController/comments/1tjhiyv/psa_watch_out_for_the_exposed_contacts_of_the">PSA: Watch out for the exposed contacts of the Puck! Almost started a fire due to metallic smartwatch strap</a><figcaption><cite> from <a href="https://www.reddit.com/r/SteamController">r/SteamController</a></cite></figcaption></blockquote></figure><script async src="//embed.redditmedia.com/widgets/platform.js" charset="UTF-8"></script><p><br>Despite the relatively high price tag and software restrictions, the new <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">Steam Controller</a> has been a massive success for Valve. And just like so many high-end gamepads, it also comes with a neat charging system that conveniently keeps it always ready for action. However, as one redditor found out, the simple puck will punish quite noticeably if you're not careful about keeping certain materials well away from it.</p><p>Essentially, Reddit user Toikka discovered that the charging puck for the Steam Controller is constantly 'live' when it's plugged in, i.e. the little metal pins don't 'deactivate' when you lift the gamepad off the puck. This was discovered when the user accidentally let their smartwatch's wrist strap briefly touch the pins.</p><p>Since it was a magnetically-latching band, the whole thing is metal-based and thus electrically conductive. Result? Valve's puck tried to 'charge' Toikka's wrist strap, and it "started sizzling due to a short circuit."</p><p>This kind of potential hazard isn't exclusive to Valve's unit, as the charging dock for my <a href="https://www.pcgamer.com/hardware/controllers/8bitdo-ultimate-2-wireless-review/" target="_blank">8BitDo Ultimate 2</a> controller does the same thing. I used a multimeter to check, and there's a constant voltage across them. Both companies are using a simple, low-cost design for their chargers to offset higher material costs elsewhere in the device, so this is perfectly normal.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-O6jx1O"></div>                            </div>                            <script src="https://kwizly.com/embed/O6jx1O.js" async></script><p>An ideal, but less cost-effective, solution would be to have an additional contact that acts as a sense pin. With it, the charger could be designed so that the remaining pins only become live when the sense pin is grounded by the gamepad, much like how those in the 12VHPWR power connector on Nvidia's latest RTX graphics cards work.</p><p>Of course, a far simpler and practically free solution to the whole issue is to just keep the charging system out of the way when you're not using it, and absolutely never put anything conductive anywhere near it. Or at the very least, unplug the puck so it's not live (edit: This will essentially nix the controller, as reader Marasi has reminded me that the puck also acts as the wireless dongle).</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2559px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="gVDBhcWUcvzBBvVapZzK6f" name="8bitdo_ultimate_2_wireless_controller_08" alt="A photo of the 8BitDo Ultimate 2 Wireless game controller base" src="https://cdn.mos.cms.futurecdn.net/gVDBhcWUcvzBBvVapZzK6f-1920-80.jpg" mos="" align="middle" fullscreen="" width="2559" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">8BitDo's Ultimate 2 charging dock has spicey pins too </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>There is one thing that I do think Valve et al. <em>should</em> be doing, though, and it's to add a very clear warning about the live nature of the puck. I hasten to add that such an instruction might actually be there somewhere in the documentation; unfortunately, I don't have the Steam Controller or Ultimate 2 boxes to hand to double-check, but there's nothing relating to this on either company's website.</p><p>But even so, given the litigious nature of today's world, I dare say that Valve might want to beef up whatever hints or warnings it already offers. Because I wouldn't be surprised if a bunch of social media nitwits decide to start a new trend of puckifying various things, resulting in an even greater nitwit causing a serious accident or harm.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Don't buy an Xbox controller when you can get one with drift-free TMR sticks, 8x the polling rate, and a charging stand for less at Amazon ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="product"><a data-dimension112="66bf4b92-f61f-4630-8a2d-4512581ddc55" data-action="Deal Block" data-label="D10" data-dimension48="D10" data-dimension25="$49.99" href="https://www.amazon.com/EasySMX-D10-Wireless-Game-Controller/dp/B0F8BPMSFM?th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="tETQ5DGMQn7RgEfWDyxvna" name="PCGamer Deal Block (57)" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/tETQ5DGMQn7RgEfWDyxvna-1920-80.png" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>With an included charging dock/wireless receiver, TMR thumbsticks, and 1,000 Hz polling, the D10 has pro-level features at a value-oriented price. Both the black and purple models are included in the sale. </p><p><strong>Key specs: TMR thumbsticks | Hall effect triggers | 1,000 Hz polling | Wired and wireless</strong><a class="view-deal button" href="https://www.amazon.com/EasySMX-D10-Wireless-Game-Controller/dp/B0F8BPMSFM?th=1" target="_blank" rel="nofollow" data-dimension112="66bf4b92-f61f-4630-8a2d-4512581ddc55" data-action="Deal Block" data-label="D10" data-dimension48="D10" data-dimension25="$49.99">View Deal</a></p></div><p>There was once a time when Microsoft's Xbox Controller was at the top of the pile, thanks to its great feel and sturdy weight. Since testing out the offerings of GameSir, 8BitDo, and EasySMX, I can say that time is no longer. </p><p>Right now, for <a href="https://www.amazon.com/EasySMX-D10-Wireless-Game-Controller/dp/B0F8BPMSFM?th=1" target="_blank">$50 at Amazon</a>, you can get the <a href="https://www.amazon.com/EasySMX-D10-Wireless-Game-Controller/dp/B0F8BPMSFM?th=1" target="_blank">EasySMX D10</a>: a comfortable and snappy controller with unique lighting and top-notch specs. You're only getting a $10 discount with this deal, but it's still one of the most reasonably priced controllers out there today. </p><ul><li><strong>Join us on </strong><a href="https://whatsapp.com/channel/0029VaZEGnpAu3aYJa8PuS2t" target="_blank"><strong>WhatsApp for daily deals</strong></a><strong>, direct to your phone.</strong></li></ul><p>Technically, that's not cheaper than the Xbox controller, because <a href="www.amazon.com/Xbox-Wireless-Gaming-Controller-Velocity-Console/dp/B0DT5SQ84T" target="_blank">Microsoft's gamepad is also on sale</a>, but when you factor in the optional wireless adapter you need to actually play the Xbox controller wirelessly on PC, you're paying significantly more for the Xbox pad, and getting an inferior pick. </p><p>Let's start with the obvious. The D10's TMR sticks and Hall effect triggers not only make it snappier than the Xbox pad, but also mean it's less likely to break down in 12 months. If you're sick of stick drift, EasySMX has you covered.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/U3XqRaKMv4NcjW4e4Nv5F5-1920-80.jpg" alt="EasySMX D10 (on) on the charging stand on a black desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/L8ifj69LrNhoXWT93JJHF5-1920-80.jpg" alt="EasySMX D10 (off) on a charging stand on a black desk" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The polling rate of 1,000 Hz is also eight times greater than the measly 125 Hz in the Xbox controller, which means it sends responses to your PC eight times more frequently. Though it's very much debatable how much value you get out of anything greater than 1,000 Hz, it has become the sweet spot for battery efficiency/speed. </p><p>I really like the D10's dock, too. Like the controller, it's covered in RGB, and the dock comes with a small USB port to slot in the 2.4 GHz receiver. This means it can both charge your controller when you're done gaming for the night and connect it to your PC, from a single cable. It's neat and tidy. </p><p>Thanks in part to the chunky build and asymmetrical sticks, it's actually quite a similar controller to the Xbox controller. Its weight is comfortable, and it fits smoothly in my palms. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/V5g26wXsS9M8fU28HL3HE5-1920-80.jpg" alt="EasySMX D10 while turned on, in a hand outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/79wLwkLR2JGn3Y66EfUpD5-1920-80.jpg" alt="the back of the EasySMX D10 in a hand, in a garden" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>If you want to spend even less and don't particularly care about RGB or TMR sticks, the <a href="https://www.amazon.com/EasySMX-D05-PC-Controller-Enhanced-Bluetooth/dp/B0DTDZSZWJ" target="_blank">EasySMX D05</a> is also on sale—<a href="https://www.amazon.com/EasySMX-D05-PC-Controller-Enhanced-Bluetooth/dp/B0DTDZSZWJ" target="_blank">$10 cheaper than the D10</a>— and is also well worth considering. </p><p>I've been testing this controller out for a few months now, and I'm a big fan. The only real caveats I have to bring to the table are that I think its triggers and D-pads are merely okay, and this is an area where Microsoft take a win. As well as this, the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/" target="_blank">GameSir G7 Pro</a> is a better controller for pure feel, though it is around $30 more expensive than the EasySMX D10. </p><p>Still, after getting my hands on tons of controllers over the last few years, I can say the D10 offers excellent value, and I'd be picking it over the Xbox controller pretty much any day of the week, and that's only partly because the charging stand means I'll never let the battery go dry. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/dont-buy-an-xbox-controller-when-you-can-get-one-with-drift-free-tmr-sticks-8x-the-polling-rate-and-a-charging-stand-for-less-at-amazon/</link>
                                                                            <description>
                            <![CDATA[ The D10 is a bit of a beast. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">cBVHRNqRUBeFRKqrM3bKiT</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/2f53R8FqFudzkQitejXFC9-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 20 May 2026 12:18:19 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-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/2f53R8FqFudzkQitejXFC9-1920-80.jpg">
                                                            <media:credit><![CDATA[EasySMX]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The purple and black EasySMX D10 on a pink deals background]]></media:description>                                                            <media:text><![CDATA[The purple and black EasySMX D10 on a pink deals background]]></media:text>
                                <media:title type="plain"><![CDATA[The purple and black EasySMX D10 on a pink deals background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/2f53R8FqFudzkQitejXFC9-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="product"><a data-dimension112="66bf4b92-f61f-4630-8a2d-4512581ddc55" data-action="Deal Block" data-label="D10" data-dimension48="D10" data-dimension25="$49.99" href="https://www.amazon.com/EasySMX-D10-Wireless-Game-Controller/dp/B0F8BPMSFM?th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="tETQ5DGMQn7RgEfWDyxvna" name="PCGamer Deal Block (57)" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/tETQ5DGMQn7RgEfWDyxvna-1920-80.png" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>With an included charging dock/wireless receiver, TMR thumbsticks, and 1,000 Hz polling, the D10 has pro-level features at a value-oriented price. Both the black and purple models are included in the sale. </p><p><strong>Key specs: TMR thumbsticks | Hall effect triggers | 1,000 Hz polling | Wired and wireless</strong><a class="view-deal button" href="https://www.amazon.com/EasySMX-D10-Wireless-Game-Controller/dp/B0F8BPMSFM?th=1" target="_blank" rel="nofollow" data-dimension112="66bf4b92-f61f-4630-8a2d-4512581ddc55" data-action="Deal Block" data-label="D10" data-dimension48="D10" data-dimension25="$49.99">View Deal</a></p></div><p>There was once a time when Microsoft's Xbox Controller was at the top of the pile, thanks to its great feel and sturdy weight. Since testing out the offerings of GameSir, 8BitDo, and EasySMX, I can say that time is no longer. </p><p>Right now, for <a href="https://www.amazon.com/EasySMX-D10-Wireless-Game-Controller/dp/B0F8BPMSFM?th=1" target="_blank">$50 at Amazon</a>, you can get the <a href="https://www.amazon.com/EasySMX-D10-Wireless-Game-Controller/dp/B0F8BPMSFM?th=1" target="_blank">EasySMX D10</a>: a comfortable and snappy controller with unique lighting and top-notch specs. You're only getting a $10 discount with this deal, but it's still one of the most reasonably priced controllers out there today. </p><ul><li><strong>Join us on </strong><a href="https://whatsapp.com/channel/0029VaZEGnpAu3aYJa8PuS2t" target="_blank"><strong>WhatsApp for daily deals</strong></a><strong>, direct to your phone.</strong></li></ul><p>Technically, that's not cheaper than the Xbox controller, because <a href="www.amazon.com/Xbox-Wireless-Gaming-Controller-Velocity-Console/dp/B0DT5SQ84T" target="_blank">Microsoft's gamepad is also on sale</a>, but when you factor in the optional wireless adapter you need to actually play the Xbox controller wirelessly on PC, you're paying significantly more for the Xbox pad, and getting an inferior pick. </p><p>Let's start with the obvious. The D10's TMR sticks and Hall effect triggers not only make it snappier than the Xbox pad, but also mean it's less likely to break down in 12 months. If you're sick of stick drift, EasySMX has you covered.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/U3XqRaKMv4NcjW4e4Nv5F5-1920-80.jpg" alt="EasySMX D10 (on) on the charging stand on a black desk" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/L8ifj69LrNhoXWT93JJHF5-1920-80.jpg" alt="EasySMX D10 (off) on a charging stand on a black desk" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The polling rate of 1,000 Hz is also eight times greater than the measly 125 Hz in the Xbox controller, which means it sends responses to your PC eight times more frequently. Though it's very much debatable how much value you get out of anything greater than 1,000 Hz, it has become the sweet spot for battery efficiency/speed. </p><p>I really like the D10's dock, too. Like the controller, it's covered in RGB, and the dock comes with a small USB port to slot in the 2.4 GHz receiver. This means it can both charge your controller when you're done gaming for the night and connect it to your PC, from a single cable. It's neat and tidy. </p><p>Thanks in part to the chunky build and asymmetrical sticks, it's actually quite a similar controller to the Xbox controller. Its weight is comfortable, and it fits smoothly in my palms. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/V5g26wXsS9M8fU28HL3HE5-1920-80.jpg" alt="EasySMX D10 while turned on, in a hand outside" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/79wLwkLR2JGn3Y66EfUpD5-1920-80.jpg" alt="the back of the EasySMX D10 in a hand, in a garden" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>If you want to spend even less and don't particularly care about RGB or TMR sticks, the <a href="https://www.amazon.com/EasySMX-D05-PC-Controller-Enhanced-Bluetooth/dp/B0DTDZSZWJ" target="_blank">EasySMX D05</a> is also on sale—<a href="https://www.amazon.com/EasySMX-D05-PC-Controller-Enhanced-Bluetooth/dp/B0DTDZSZWJ" target="_blank">$10 cheaper than the D10</a>— and is also well worth considering. </p><p>I've been testing this controller out for a few months now, and I'm a big fan. The only real caveats I have to bring to the table are that I think its triggers and D-pads are merely okay, and this is an area where Microsoft take a win. As well as this, the <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/" target="_blank">GameSir G7 Pro</a> is a better controller for pure feel, though it is around $30 more expensive than the EasySMX D10. </p><p>Still, after getting my hands on tons of controllers over the last few years, I can say the D10 offers excellent value, and I'd be picking it over the Xbox controller pretty much any day of the week, and that's only partly because the charging stand means I'll never let the battery go dry. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Hear the Steam Controller sing whole songs with haptics, including the Wii Store soundtrack, Still Alive, and even attempt a Rick Roll ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">Steam Controller</a> is full of surprises. It screams when you drop it and it even sings songs if you program it to. You don't have to program it yourself, however, just drop a MIDI track into this software on Github and it'll do its best to to sing its little heart out.</p><p>It's called <a href="https://github.com/CrazyCritic89/SteamHapticsSinger" target="_blank">SteamHapticsSinger</a> and it's been recently published by CrazyCritic89. Though it's a fork of previous iterations of the same software originally created 10 years ago for the Steam Controller (2015), from <a href="https://gitlab.com/Pilatomic/SteamControllerSinger" target="_blank">Pila</a> and <a href="https://github.com/Roboron3042/SteamControllerSinger" target="_blank">Roboron3042</a>, this time with fixes and upgrades for the new Steam device.</p><p>Here's the application in action, using a MIDI file of Portal's 'Still Alive' included with the package.</p><iframe src="https://content.jwplatform.com/players/3HLoXsqj.html" id="3HLoXsqj" title="Steam Controller Songs" width="1920" height="1080" frameborder="0" scrolling="auto" allowfullscreen></iframe><p>I also gave it a go with the Wii Shop Soundtrack, which was musical perfection in rumble form.</p><iframe src="https://content.jwplatform.com/players/eKXyKGDO.html" id="eKXyKGDO" title="Wii Song" width="1920" height="1080" frameborder="0" scrolling="auto" allowfullscreen></iframe><p>And another absolute smash-hit.</p><iframe src="https://content.jwplatform.com/players/l2USK1C6.html" id="l2USK1C6" title="Astley" width="1920" height="1080" frameborder="0" scrolling="auto" allowfullscreen></iframe><p>Alright, so it couldn't quite pull off a Rick Roll, nor match the musical genius of Rick Astley. But it's still hella impressive. </p><p>You can throw a bunch of MIDI files at the software and see what sounds good. You just drag and drop onto the exe file. You do need <a href="https://github.com/daynix/usbdk/releases" target="_blank">USBDK</a> to get the software working in the first instance, however, but it should also work with the <a href="https://www.pcgamer.com/steam-deck-review/" target="_blank">Steam Deck</a> and original <a href="https://www.pcgamer.com/hardware/controllers/steam-controller-re-review-a-fresh-look-at-valves-flawed-but-influential-10-year-old-controller/" target="_blank">Steam Controller</a> too. I'm just waiting for someone to lash 20 of these things together and start an orchestra. Though maybe once that reservation queue is a little lower, yeah?</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/game-pads/hear-the-steam-controller-sing-whole-songs-with-haptics-including-the-wii-store-soundtrack-still-alive-and-even-attempt-a-rick-roll/</link>
                                                                            <description>
                            <![CDATA[ This was a triumph. I'm making a note here, 'huge success'. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">yw3oLW8un3JcQr3SGBzNoA</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/vkFPQdKBSBXq7oQu3T6JKY-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 15 May 2026 13:23:51 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jacob Ridley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/2YNigoLXbckPdRPDe3stwA-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/vkFPQdKBSBXq7oQu3T6JKY-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Steam Controller on a desk in front of a Steam Deck.]]></media:description>                                                            <media:text><![CDATA[The Steam Controller on a desk in front of a Steam Deck.]]></media:text>
                                <media:title type="plain"><![CDATA[The Steam Controller on a desk in front of a Steam Deck.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/vkFPQdKBSBXq7oQu3T6JKY-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">Steam Controller</a> is full of surprises. It screams when you drop it and it even sings songs if you program it to. You don't have to program it yourself, however, just drop a MIDI track into this software on Github and it'll do its best to to sing its little heart out.</p><p>It's called <a href="https://github.com/CrazyCritic89/SteamHapticsSinger" target="_blank">SteamHapticsSinger</a> and it's been recently published by CrazyCritic89. Though it's a fork of previous iterations of the same software originally created 10 years ago for the Steam Controller (2015), from <a href="https://gitlab.com/Pilatomic/SteamControllerSinger" target="_blank">Pila</a> and <a href="https://github.com/Roboron3042/SteamControllerSinger" target="_blank">Roboron3042</a>, this time with fixes and upgrades for the new Steam device.</p><p>Here's the application in action, using a MIDI file of Portal's 'Still Alive' included with the package.</p><iframe src="https://content.jwplatform.com/players/3HLoXsqj.html" id="3HLoXsqj" title="Steam Controller Songs" width="1920" height="1080" frameborder="0" scrolling="auto" allowfullscreen></iframe><p>I also gave it a go with the Wii Shop Soundtrack, which was musical perfection in rumble form.</p><iframe src="https://content.jwplatform.com/players/eKXyKGDO.html" id="eKXyKGDO" title="Wii Song" width="1920" height="1080" frameborder="0" scrolling="auto" allowfullscreen></iframe><p>And another absolute smash-hit.</p><iframe src="https://content.jwplatform.com/players/l2USK1C6.html" id="l2USK1C6" title="Astley" width="1920" height="1080" frameborder="0" scrolling="auto" allowfullscreen></iframe><p>Alright, so it couldn't quite pull off a Rick Roll, nor match the musical genius of Rick Astley. But it's still hella impressive. </p><p>You can throw a bunch of MIDI files at the software and see what sounds good. You just drag and drop onto the exe file. You do need <a href="https://github.com/daynix/usbdk/releases" target="_blank">USBDK</a> to get the software working in the first instance, however, but it should also work with the <a href="https://www.pcgamer.com/steam-deck-review/" target="_blank">Steam Deck</a> and original <a href="https://www.pcgamer.com/hardware/controllers/steam-controller-re-review-a-fresh-look-at-valves-flawed-but-influential-10-year-old-controller/" target="_blank">Steam Controller</a> too. I'm just waiting for someone to lash 20 of these things together and start an orchestra. Though maybe once that reservation queue is a little lower, yeah?</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 'Average Valve W': After some Steam Controller packages were sent to the wrong country, Valve is reportedly giving 'any standard-edition title' to affected shoppers ]]></title>
                                                                                                <dc:content><![CDATA[ <p>It seems like the <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">Steam Controller</a> is a hit. After selling out immediately, Valve implemented a <a href="https://www.pcgamer.com/hardware/valve-forming-an-orderly-queue-for-the-steam-controller-makes-it-clear-we-need-the-same-for-the-steam-machine-frame-and-perhaps-a-lot-more-in-demand-tech-too/" target="_blank">reservation system</a> to get your hands on it without having to <a href="https://www.pcgamer.com/hardware/game-pads/ebay-resellers-are-turning-a-tidy-profit-on-steam-controllers/" target="_blank">fight so many scalpers</a>. If you recently purchased one, and your package has been sent to the wrong country by mistake, there's a chance Valve will reimburse you with a game of your choosing. That's not bad for a short wait. </p><p>That's according to user <a href="https://www.reddit.com/r/Steam/comments/1tcaprh/average_valve_w/" target="_blank">hvhhggggh over on the Steam Subreddit</a>. Their Steam Controller was reportedly routed to the UK by accident, and while they wait for it to be rerouted, Valve said, "To thank you for your patience, we would like to offer to add a game to your library. Please pick any standard-edition title available for purchase in your region and reply here with your selection" </p><p>I have reached out to Valve to confirm if this is the real policy around Steam Controller shipping delays and if there are any caveats. Given that most of the games on Steam are not owned by Valve, one would assume that the company would be paying out of pocket for any non-Valve choices here. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eM7mDO"></div>                            </div>                            <script src="https://kwizly.com/embed/eM7mDO.js" async></script><p>The email does clarify that only a "small number of packages were mistakenly sent to the UK", but we don't have concrete figures on how many just yet. </p><p>It is worth noting that <a href="https://www.reddit.com/r/Steam/comments/1tcaprh/comment/olmrstd/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button" target="_blank">this user reached out to complain</a> when their package was late, so that's worth doing if yours has also been held up in shipping. This gesture from Valve has been met with widespread support, with the original Reddit user calling it an "Average Valve W". </p><p>The <a href="https://www.reddit.com/r/Steam/comments/1tcaprh/comment/olmr5nb/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button" target="_blank">top comment </a>is a double compliment for Valve, saying "Sometimes I wish I had a reason to use the customer service and experience something like this, but so far Steam has been a frustratingly great experience and I have no substantive complaints."</p><figure><blockquote class="reddit-card"  ><a href="https://www.reddit.com/r/Steam/comments/1tcaprh/average_valve_w">Average valve W</a><figcaption><cite> from <a href="https://www.reddit.com/r/Steam">r/Steam</a></cite></figcaption></blockquote></figure><script async src="//embed.redditmedia.com/widgets/platform.js" charset="UTF-8"></script><p>When someone mentioned that they could pick the most expensive standard-edition game out there, the <a href="https://www.reddit.com/r/Steam/comments/1tcaprh/comment/olmp9fh/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button" target="_blank">original poster</a> said <a href="https://www.pcgamer.com/games/racing/forza-horizon-6-review/" target="_blank">Forza Horizon 6</a> was on their list. They later confirmed it was between that and <a href="https://www.pcgamer.com/games/action/after-3-hours-with-007-first-light-ios-weaknesses-are-on-display-in-a-way-they-havent-been-since-hitman-absolution/" target="_blank">007 First Light</a>, but Forza being Steam Deck verified made them pick the new racing game instead. </p><p>Though a seemingly small gesture, giving away games to those getting their Steam Controllers late has picked up a lot of goodwill for the company, and the original Reddit thread is filled with users sharing good experiences with Valve support. </p><p>At least those who get their controllers late will have a fancy new game to test the controller with. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/average-valve-w-after-some-steam-controller-packages-were-sent-to-the-wrong-country-valve-is-reportedly-giving-any-standard-edition-title-to-affected-shoppers/</link>
                                                                            <description>
                            <![CDATA[ Apparently, a small number of packages were accidentally sent to the UK. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">dbwuzoxCEmvcEUiGgBhQLm</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/JVzVspDAf3wen3Zpg7z8-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 15 May 2026 11:54:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ James Bentley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PVsHAkx27zJptZHndizEAE-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/JVzVspDAf3wen3Zpg7z8-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Valve&#039;s new and improved Steam Controller during a visit to Valve&#039;s HQ in Bellevue, Washington.]]></media:description>                                                            <media:text><![CDATA[Valve&#039;s new and improved Steam Controller during a visit to Valve&#039;s HQ in Bellevue, Washington.]]></media:text>
                                <media:title type="plain"><![CDATA[Valve&#039;s new and improved Steam Controller during a visit to Valve&#039;s HQ in Bellevue, Washington.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/JVzVspDAf3wen3Zpg7z8-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>It seems like the <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">Steam Controller</a> is a hit. After selling out immediately, Valve implemented a <a href="https://www.pcgamer.com/hardware/valve-forming-an-orderly-queue-for-the-steam-controller-makes-it-clear-we-need-the-same-for-the-steam-machine-frame-and-perhaps-a-lot-more-in-demand-tech-too/" target="_blank">reservation system</a> to get your hands on it without having to <a href="https://www.pcgamer.com/hardware/game-pads/ebay-resellers-are-turning-a-tidy-profit-on-steam-controllers/" target="_blank">fight so many scalpers</a>. If you recently purchased one, and your package has been sent to the wrong country by mistake, there's a chance Valve will reimburse you with a game of your choosing. That's not bad for a short wait. </p><p>That's according to user <a href="https://www.reddit.com/r/Steam/comments/1tcaprh/average_valve_w/" target="_blank">hvhhggggh over on the Steam Subreddit</a>. Their Steam Controller was reportedly routed to the UK by accident, and while they wait for it to be rerouted, Valve said, "To thank you for your patience, we would like to offer to add a game to your library. Please pick any standard-edition title available for purchase in your region and reply here with your selection" </p><p>I have reached out to Valve to confirm if this is the real policy around Steam Controller shipping delays and if there are any caveats. Given that most of the games on Steam are not owned by Valve, one would assume that the company would be paying out of pocket for any non-Valve choices here. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eM7mDO"></div>                            </div>                            <script src="https://kwizly.com/embed/eM7mDO.js" async></script><p>The email does clarify that only a "small number of packages were mistakenly sent to the UK", but we don't have concrete figures on how many just yet. </p><p>It is worth noting that <a href="https://www.reddit.com/r/Steam/comments/1tcaprh/comment/olmrstd/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button" target="_blank">this user reached out to complain</a> when their package was late, so that's worth doing if yours has also been held up in shipping. This gesture from Valve has been met with widespread support, with the original Reddit user calling it an "Average Valve W". </p><p>The <a href="https://www.reddit.com/r/Steam/comments/1tcaprh/comment/olmr5nb/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button" target="_blank">top comment </a>is a double compliment for Valve, saying "Sometimes I wish I had a reason to use the customer service and experience something like this, but so far Steam has been a frustratingly great experience and I have no substantive complaints."</p><figure><blockquote class="reddit-card"  ><a href="https://www.reddit.com/r/Steam/comments/1tcaprh/average_valve_w">Average valve W</a><figcaption><cite> from <a href="https://www.reddit.com/r/Steam">r/Steam</a></cite></figcaption></blockquote></figure><script async src="//embed.redditmedia.com/widgets/platform.js" charset="UTF-8"></script><p>When someone mentioned that they could pick the most expensive standard-edition game out there, the <a href="https://www.reddit.com/r/Steam/comments/1tcaprh/comment/olmp9fh/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button" target="_blank">original poster</a> said <a href="https://www.pcgamer.com/games/racing/forza-horizon-6-review/" target="_blank">Forza Horizon 6</a> was on their list. They later confirmed it was between that and <a href="https://www.pcgamer.com/games/action/after-3-hours-with-007-first-light-ios-weaknesses-are-on-display-in-a-way-they-havent-been-since-hitman-absolution/" target="_blank">007 First Light</a>, but Forza being Steam Deck verified made them pick the new racing game instead. </p><p>Though a seemingly small gesture, giving away games to those getting their Steam Controllers late has picked up a lot of goodwill for the company, and the original Reddit thread is filled with users sharing good experiences with Valve support. </p><p>At least those who get their controllers late will have a fancy new game to test the controller with. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Leaked Xbox Elite 3 controller images show at least one oddball addition, but it'll struggle to compete in a radically changed market ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Earlier today, Brazilian tech outlet <a href="https://tecnoblog.net/noticias/este-e-o-novo-controle-da-microsoft-para-xbox-cloud-gaming/">Tecnoblog</a> published images of two unannounced Xbox controllers reportedly obtained from the country's telecommunications regulator. One is a small form factor gamepad designed for cloud gaming, resembling similar third-party gamepads by the likes of 8bitDo. The other is the successor to the Xbox Elite Controller 2.</p><p>I've been looking forward to news about this gamepad because, since the last iteration released in 2019, the whole landscape for gamepads has changed. Nowadays a third-party gamepad with all the pro accoutrements—rear paddle buttons, interchangeable D-pads, replaceable sticks—can be had for bargain prices, or at least, well below the Series 2's $180 going price. The <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/">Gamesir G7 Pro</a>, for example, which is in some ways <em>more </em>feature-rich, goes for $80. What can a titan like Microsoft do to stand out?</p><p>Microsoft obviously hasn't announced this controller, we don't know its price, and we don't know the full extent of its features. But based on the images and Tecnoblog's intel from the regulator's documents, it's a curious beast, chiefly due to what resembles two scroll wheels on either side of the headphone jack.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:880px;"><p class="vanilla-image-block" style="padding-top:47.50%;"><img id="XLTJeF6dikV6iMn8FdppzV" name="xbox-elite-3-2113-4" alt="The scroll wheels on the Xbox Elite 3 controller" src="https://cdn.mos.cms.futurecdn.net/XLTJeF6dikV6iMn8FdppzV-1920-80.webp" mos="" align="middle" fullscreen="" width="880" height="418" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tecnoblog)</span></figcaption></figure><p>What could these be for? Tecnoblog speculates they could be designed for flight sims, but that seems like an extremely niche focus: I reckon flight sim fanatics would prefer proper flight sim peripherals. How would they be implemented in far more mainstream games, like FPSes? </p><p>Here's two more images from Tecnoblog:</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:658px;"><p class="vanilla-image-block" style="padding-top:72.95%;"><img id="ZGGiTRX7kLSWhtfk9wfqV9" name="Xbox Series 3" alt="An image of the unannounced Xbox Series 3 pro controller" src="https://cdn.mos.cms.futurecdn.net/ZGGiTRX7kLSWhtfk9wfqV9-1920-80.webp" mos="" align="middle" fullscreen="" width="658" height="480" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tecnoblog)</span></figcaption></figure><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:739px;"><p class="vanilla-image-block" style="padding-top:53.59%;"><img id="LqhMQz4z6P8AX2VHXoBGX9" name="Xbox Series 3" alt="An image of the unannounced Xbox Series 3 pro controller" src="https://cdn.mos.cms.futurecdn.net/LqhMQz4z6P8AX2VHXoBGX9-1920-80.webp" mos="" align="middle" fullscreen="" width="739" height="396" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tecnoblog)</span></figcaption></figure><p>Based on the images alone, that's about as radical as the Elite 3 controller gets. Like the previous model it'll have interchangeable rear paddles, and swappable sticks and D-pads. That middle button just under the Xbox button switches between local and cloud modes, the latter connecting to Xbox Cloud Gaming servers. The battery is still rechargeable and replaceable albeit smaller.</p><p>One thing that's impossible to glean from the images is the thing that's most important. Will Microsoft implement drift-free Hall Effect technology in the analog sticks, thus eliminating the ever-present fear of stick drift? Or might they implement Tunnel Magnetoresistance (TMR) sticks, which are similarly drift-free, but marginally more accurate? </p><p>Let's be blunt: If they don't implement either it's a non-starter. As I've written before, in 2026 you should <em>refuse</em> to buy any controller that comes with the problems endemic to Sony, Xbox, and Nintendo's controllers. You can buy third-party Hall Effect controllers for a pittance nowadays.</p><p>I'm also—I won't lie—kinda bored by the Elite 3 controller. Why would I buy this instead of the Steam Controller which has those still severely underrated trackpads? Valve's controller has TMR sticks as well, and while its rear paddle buttons are baked in and there's only two of them, I reckon four paddle buttons is a more niche proposition than trackpads (<a href="https://www.pcgamer.com/hardware/game-pads/i-cant-live-without-the-steam-decks-trackpads-anymore-and-i-hope-the-steam-controller-forces-the-competition-to-adopt-them">time will prove me right!</a>).</p><p>The smaller controller is very much a meat and potatoes affair: it's got all the usual features without any of the pro trimmings, it's remarkably small and designed for carrying around, and bears the same new toggle button beneath the Xbox button.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1060px;"><p class="vanilla-image-block" style="padding-top:50.38%;"><img id="2ecbzfxFCrq3vKiM5UVhwc" name="controle-xbox-montagem-1060x534" alt="The new, unannounced Xbox controller" src="https://cdn.mos.cms.futurecdn.net/2ecbzfxFCrq3vKiM5UVhwc-1920-80.webp" mos="" align="middle" fullscreen="" width="1060" height="534" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tecnoblog)</span></figcaption></figure><p>When will these be properly announced? Microsoft hasn't given any hints, but my best guess would be at its Xbox Games Showcase on June 7, which happens as part of <a href="https://www.pcgamer.com/gaming-industry/events-conferences/summer-game-fest-2026/">Summer Game Fest 2026</a>.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W2YRoe"></div>                            </div>                            <script src="https://kwizly.com/embed/W2YRoe.js" async></script> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/leaked-xbox-elite-3-controller-images-show-at-least-one-oddball-addition-but-itll-struggle-to-compete-in-a-radically-changed-market/</link>
                                                                            <description>
                            <![CDATA[ Gamepads are better, and cheaper, than they've ever been. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">qaT6DtsnjEHBcZpp8FjbgH</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/WNbCwztuujXpqSgcDyWgkE-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 14 May 2026 23:14:27 +0000</pubDate>                                                                                                                                <updated>Thu, 14 May 2026 23:41:12 +0000</updated>
                                                                                                                                            <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                <author><![CDATA[ shaun.prescott@futurenet.com (Shaun Prescott) ]]></author>                    <dc:creator><![CDATA[ Shaun Prescott ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/W7q4asCziYRHUEennZcpyC-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/WNbCwztuujXpqSgcDyWgkE-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A close up of the Xbox button on an Xbox controller]]></media:description>                                                            <media:text><![CDATA[A close up of the Xbox button on an Xbox controller]]></media:text>
                                <media:title type="plain"><![CDATA[A close up of the Xbox button on an Xbox controller]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/WNbCwztuujXpqSgcDyWgkE-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Earlier today, Brazilian tech outlet <a href="https://tecnoblog.net/noticias/este-e-o-novo-controle-da-microsoft-para-xbox-cloud-gaming/">Tecnoblog</a> published images of two unannounced Xbox controllers reportedly obtained from the country's telecommunications regulator. One is a small form factor gamepad designed for cloud gaming, resembling similar third-party gamepads by the likes of 8bitDo. The other is the successor to the Xbox Elite Controller 2.</p><p>I've been looking forward to news about this gamepad because, since the last iteration released in 2019, the whole landscape for gamepads has changed. Nowadays a third-party gamepad with all the pro accoutrements—rear paddle buttons, interchangeable D-pads, replaceable sticks—can be had for bargain prices, or at least, well below the Series 2's $180 going price. The <a href="https://www.pcgamer.com/hardware/controllers/gamesir-g7-pro-tri-mode-review/">Gamesir G7 Pro</a>, for example, which is in some ways <em>more </em>feature-rich, goes for $80. What can a titan like Microsoft do to stand out?</p><p>Microsoft obviously hasn't announced this controller, we don't know its price, and we don't know the full extent of its features. But based on the images and Tecnoblog's intel from the regulator's documents, it's a curious beast, chiefly due to what resembles two scroll wheels on either side of the headphone jack.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:880px;"><p class="vanilla-image-block" style="padding-top:47.50%;"><img id="XLTJeF6dikV6iMn8FdppzV" name="xbox-elite-3-2113-4" alt="The scroll wheels on the Xbox Elite 3 controller" src="https://cdn.mos.cms.futurecdn.net/XLTJeF6dikV6iMn8FdppzV-1920-80.webp" mos="" align="middle" fullscreen="" width="880" height="418" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tecnoblog)</span></figcaption></figure><p>What could these be for? Tecnoblog speculates they could be designed for flight sims, but that seems like an extremely niche focus: I reckon flight sim fanatics would prefer proper flight sim peripherals. How would they be implemented in far more mainstream games, like FPSes? </p><p>Here's two more images from Tecnoblog:</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:658px;"><p class="vanilla-image-block" style="padding-top:72.95%;"><img id="ZGGiTRX7kLSWhtfk9wfqV9" name="Xbox Series 3" alt="An image of the unannounced Xbox Series 3 pro controller" src="https://cdn.mos.cms.futurecdn.net/ZGGiTRX7kLSWhtfk9wfqV9-1920-80.webp" mos="" align="middle" fullscreen="" width="658" height="480" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tecnoblog)</span></figcaption></figure><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:739px;"><p class="vanilla-image-block" style="padding-top:53.59%;"><img id="LqhMQz4z6P8AX2VHXoBGX9" name="Xbox Series 3" alt="An image of the unannounced Xbox Series 3 pro controller" src="https://cdn.mos.cms.futurecdn.net/LqhMQz4z6P8AX2VHXoBGX9-1920-80.webp" mos="" align="middle" fullscreen="" width="739" height="396" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tecnoblog)</span></figcaption></figure><p>Based on the images alone, that's about as radical as the Elite 3 controller gets. Like the previous model it'll have interchangeable rear paddles, and swappable sticks and D-pads. That middle button just under the Xbox button switches between local and cloud modes, the latter connecting to Xbox Cloud Gaming servers. The battery is still rechargeable and replaceable albeit smaller.</p><p>One thing that's impossible to glean from the images is the thing that's most important. Will Microsoft implement drift-free Hall Effect technology in the analog sticks, thus eliminating the ever-present fear of stick drift? Or might they implement Tunnel Magnetoresistance (TMR) sticks, which are similarly drift-free, but marginally more accurate? </p><p>Let's be blunt: If they don't implement either it's a non-starter. As I've written before, in 2026 you should <em>refuse</em> to buy any controller that comes with the problems endemic to Sony, Xbox, and Nintendo's controllers. You can buy third-party Hall Effect controllers for a pittance nowadays.</p><p>I'm also—I won't lie—kinda bored by the Elite 3 controller. Why would I buy this instead of the Steam Controller which has those still severely underrated trackpads? Valve's controller has TMR sticks as well, and while its rear paddle buttons are baked in and there's only two of them, I reckon four paddle buttons is a more niche proposition than trackpads (<a href="https://www.pcgamer.com/hardware/game-pads/i-cant-live-without-the-steam-decks-trackpads-anymore-and-i-hope-the-steam-controller-forces-the-competition-to-adopt-them">time will prove me right!</a>).</p><p>The smaller controller is very much a meat and potatoes affair: it's got all the usual features without any of the pro trimmings, it's remarkably small and designed for carrying around, and bears the same new toggle button beneath the Xbox button.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1060px;"><p class="vanilla-image-block" style="padding-top:50.38%;"><img id="2ecbzfxFCrq3vKiM5UVhwc" name="controle-xbox-montagem-1060x534" alt="The new, unannounced Xbox controller" src="https://cdn.mos.cms.futurecdn.net/2ecbzfxFCrq3vKiM5UVhwc-1920-80.webp" mos="" align="middle" fullscreen="" width="1060" height="534" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tecnoblog)</span></figcaption></figure><p>When will these be properly announced? Microsoft hasn't given any hints, but my best guess would be at its Xbox Games Showcase on June 7, which happens as part of <a href="https://www.pcgamer.com/gaming-industry/events-conferences/summer-game-fest-2026/">Summer Game Fest 2026</a>.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W2YRoe"></div>                            </div>                            <script src="https://kwizly.com/embed/W2YRoe.js" async></script>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Here's when the Steam Controller will be available again in Australia, and I hope you like being awake at 3am ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Steam Controller launched on Tuesday in Australia and promptly sold out. It's perhaps not surprising, but it sure is <em>annoying</em>. As a result of the rush—and to combat opportunistic resellers—Valve has announced it will kick off a reservation queue for the next drop. </p><p>The queue will reopen tomorrow, May 9 at 3am AEST. Yes, that's a somewhat inconvenient time to reserve your placement in a digital queue, but Australians should be used to this. Keep in mind it's a queue: getting in line at 3:01am tomorrow morning won't mean you'll have your controller immediately, but it'll mean you'll get one before everyone else.</p><p>As per Valve, reservations may take a while to fulfil in Australia. "Replenishment of inventory will vary from region to region. We will start fulfilling reservations next week in the US / Canada, and UK / EU / AU in the following weeks."</p><p>Only one Steam Controller can be reserved per Steam account, and once you've received the order email you'll need to make the purchase within 72 hours. Also, if you've already bought a Steam Controller, you're not eligible to be a part of this queue: sorry, it's everyone else's turn.</p><p>As Ted Litchfield <a href="https://www.pcgamer.com/hardware/game-pads/steam-controllers-to-come-back-in-stock-with-reprise-of-steam-deck-reservation-system/">pointed out</a> earlier today, this is the same process Valve resorted to when the Steam Deck was first launched. It's obviously not as convenient as buying something and expecting it to ship immediately, but then, if it means controllers fall into the hands of actual users <a href="https://www.pcgamer.com/hardware/game-pads/ebay-resellers-are-turning-a-tidy-profit-on-steam-controllers/">and not eBay resellers</a>, it's definitely for the best.</p><p>The Steam Controller costs AU$149 in Australia, with shipping included. Valve didn't specify exactly where the reservation page will be, but my best guess is on the <a href="https://store.steampowered.com/sale/steamcontroller" target="_blank">Steam Controller listing</a>.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/heres-when-the-steam-controller-will-be-available-again-in-australia-and-i-hope-you-like-being-awake-at-3am/</link>
                                                                            <description>
                            <![CDATA[ It's time to start feeling anxious. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">xwe8megd55zr9atz7kKDUa</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/eodU4CmU7kSxoUnAF2T6HY-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 08 May 2026 03:33:51 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                <author><![CDATA[ shaun.prescott@futurenet.com (Shaun Prescott) ]]></author>                    <dc:creator><![CDATA[ Shaun Prescott ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/W7q4asCziYRHUEennZcpyC-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/eodU4CmU7kSxoUnAF2T6HY-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:description>                                                            <media:text><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:text>
                                <media:title type="plain"><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/eodU4CmU7kSxoUnAF2T6HY-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Steam Controller launched on Tuesday in Australia and promptly sold out. It's perhaps not surprising, but it sure is <em>annoying</em>. As a result of the rush—and to combat opportunistic resellers—Valve has announced it will kick off a reservation queue for the next drop. </p><p>The queue will reopen tomorrow, May 9 at 3am AEST. Yes, that's a somewhat inconvenient time to reserve your placement in a digital queue, but Australians should be used to this. Keep in mind it's a queue: getting in line at 3:01am tomorrow morning won't mean you'll have your controller immediately, but it'll mean you'll get one before everyone else.</p><p>As per Valve, reservations may take a while to fulfil in Australia. "Replenishment of inventory will vary from region to region. We will start fulfilling reservations next week in the US / Canada, and UK / EU / AU in the following weeks."</p><p>Only one Steam Controller can be reserved per Steam account, and once you've received the order email you'll need to make the purchase within 72 hours. Also, if you've already bought a Steam Controller, you're not eligible to be a part of this queue: sorry, it's everyone else's turn.</p><p>As Ted Litchfield <a href="https://www.pcgamer.com/hardware/game-pads/steam-controllers-to-come-back-in-stock-with-reprise-of-steam-deck-reservation-system/">pointed out</a> earlier today, this is the same process Valve resorted to when the Steam Deck was first launched. It's obviously not as convenient as buying something and expecting it to ship immediately, but then, if it means controllers fall into the hands of actual users <a href="https://www.pcgamer.com/hardware/game-pads/ebay-resellers-are-turning-a-tidy-profit-on-steam-controllers/">and not eBay resellers</a>, it's definitely for the best.</p><p>The Steam Controller costs AU$149 in Australia, with shipping included. Valve didn't specify exactly where the reservation page will be, but my best guess is on the <a href="https://store.steampowered.com/sale/steamcontroller" target="_blank">Steam Controller listing</a>.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Steam Controllers to come back in stock with reprise of Steam Deck reservation system ]]></title>
                                                                                                <dc:content><![CDATA[ <p><a href="https://store.steampowered.com/news/group/45479024/view/702141174212725149" target="_blank">Valve has announced</a> that the next wave of <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">Steam Controllers</a> will only be purchasable through a reservation system similar to the one used early in the Steam Deck's life cycle. The announcement post does not specify when, exactly, this next round of controllers will make it into customers' hands, but reservations are set to open tomorrow, May 8, at 10 AM Pacific / 1 PM Central / 6 PM BST.</p><p>Valve will open a "reservation queue" at that time. "Once you reserve, your place in line will be saved," the company wrote in its <a href="https://store.steampowered.com/news/group/45479024/view/702141174212725149" target="_blank">announcement post</a>. "When we go back in stock, order emails will be sent in the same order that reservations were made."</p><p>Valve is at least as unhappy as we are to see how quickly Steam Controller orders <a href="https://www.pcgamer.com/hardware/game-pads/ebay-resellers-are-turning-a-tidy-profit-on-steam-controllers/" target="_blank">started turning around on eBay</a>, so in addition to the queue, the company is bringing back familiar restrictions to who can reserve a Steam Controller order:</p><ul><li>Only one per customer.</li><li>You get three days to act on your reservation once the controller's back in stock.</li><li>If you already bought a Steam Controller, you can't make a reservation.</li><li>Your Steam account has to be "in good standing" and have made a purchase prior to April 27.</li></ul><p>Reservation priority is going to the US and Canada first, with initial reservation fulfillment—when you can actually place your order, basically— starting the week of May 11, while the UK, Europe, and Australia will see their reservations fulfilled "in the following weeks." </p><p>The first round of orders initially had three to five day shipping estimates, increasing to six to ten days as demand surged⁠—it's unclear what final delivery timetables will look like with round two.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XkGmNX"></div>                            </div>                            <script src="https://kwizly.com/embed/XkGmNX.js" async></script><p>This seems like a smart move after the <a href="https://www.pcgamer.com/hardware/controllers/the-steam-controller-sold-out-in-30-minutes-utterly-breaking-steam-in-the-process/" target="_blank">first wave of Steam Controllers sold out in just 30 minutes</a>, causing payment processing errors across the Steam Store in the process. This is basically the same system Valve used at the beginning of the Steam Deck's availability, and I gotta say I find it preferable to the law of the jungle. Even if you're waiting a long time regardless, at least it feels fair and there's a process to trust.</p><p>That Valve didn't opt for reservations in the first wave speaks to how much it was <a href="https://www.pcgamer.com/hardware/controllers/valve-says-steam-controller-sold-out-faster-than-we-anticipated-but-previously-told-us-it-has-knobs-it-can-turn-to-get-more/" target="_blank">genuinely caught off-guard</a> by the Steam Controller's popularity. If I had to hazard a guess, I would assume that Valve was planning on reservations for Steam Machines and open season for Steam Controllers. With its hardware launches now hindered by AI-related component shortages, consumer demand only has the Steam Controller to focus on.</p><div class="product"><a data-dimension112="dc9b8ba2-5956-40bb-9905-2abdcf61e454" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="dc9b8ba2-5956-40bb-9905-2abdcf61e454" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/game-pads/steam-controllers-to-come-back-in-stock-with-reprise-of-steam-deck-reservation-system/</link>
                                                                            <description>
                            <![CDATA[ I shall have my revenge. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">KA2h2KumLg2gEGYFQhpXsC</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/rJZF2ynFyLsqQj769NLLTY-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 07 May 2026 18:32:04 +0000</pubDate>                                                                                                                                <updated>Fri, 08 May 2026 10:59:08 +0000</updated>
                                                                                                                                            <category><![CDATA[Game Pads]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                    <category><![CDATA[Controllers]]></category>
                                                                                                <author><![CDATA[ ted.litchfield@futurenet.com (Ted Litchfield) ]]></author>                    <dc:creator><![CDATA[ Ted Litchfield ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/8DyQVBz7FCynDY9QiJyH9D-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;&lt;br&gt;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/rJZF2ynFyLsqQj769NLLTY-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:description>                                                            <media:text><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:text>
                                <media:title type="plain"><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/rJZF2ynFyLsqQj769NLLTY-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p><a href="https://store.steampowered.com/news/group/45479024/view/702141174212725149" target="_blank">Valve has announced</a> that the next wave of <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">Steam Controllers</a> will only be purchasable through a reservation system similar to the one used early in the Steam Deck's life cycle. The announcement post does not specify when, exactly, this next round of controllers will make it into customers' hands, but reservations are set to open tomorrow, May 8, at 10 AM Pacific / 1 PM Central / 6 PM BST.</p><p>Valve will open a "reservation queue" at that time. "Once you reserve, your place in line will be saved," the company wrote in its <a href="https://store.steampowered.com/news/group/45479024/view/702141174212725149" target="_blank">announcement post</a>. "When we go back in stock, order emails will be sent in the same order that reservations were made."</p><p>Valve is at least as unhappy as we are to see how quickly Steam Controller orders <a href="https://www.pcgamer.com/hardware/game-pads/ebay-resellers-are-turning-a-tidy-profit-on-steam-controllers/" target="_blank">started turning around on eBay</a>, so in addition to the queue, the company is bringing back familiar restrictions to who can reserve a Steam Controller order:</p><ul><li>Only one per customer.</li><li>You get three days to act on your reservation once the controller's back in stock.</li><li>If you already bought a Steam Controller, you can't make a reservation.</li><li>Your Steam account has to be "in good standing" and have made a purchase prior to April 27.</li></ul><p>Reservation priority is going to the US and Canada first, with initial reservation fulfillment—when you can actually place your order, basically— starting the week of May 11, while the UK, Europe, and Australia will see their reservations fulfilled "in the following weeks." </p><p>The first round of orders initially had three to five day shipping estimates, increasing to six to ten days as demand surged⁠—it's unclear what final delivery timetables will look like with round two.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XkGmNX"></div>                            </div>                            <script src="https://kwizly.com/embed/XkGmNX.js" async></script><p>This seems like a smart move after the <a href="https://www.pcgamer.com/hardware/controllers/the-steam-controller-sold-out-in-30-minutes-utterly-breaking-steam-in-the-process/" target="_blank">first wave of Steam Controllers sold out in just 30 minutes</a>, causing payment processing errors across the Steam Store in the process. This is basically the same system Valve used at the beginning of the Steam Deck's availability, and I gotta say I find it preferable to the law of the jungle. Even if you're waiting a long time regardless, at least it feels fair and there's a process to trust.</p><p>That Valve didn't opt for reservations in the first wave speaks to how much it was <a href="https://www.pcgamer.com/hardware/controllers/valve-says-steam-controller-sold-out-faster-than-we-anticipated-but-previously-told-us-it-has-knobs-it-can-turn-to-get-more/" target="_blank">genuinely caught off-guard</a> by the Steam Controller's popularity. If I had to hazard a guess, I would assume that Valve was planning on reservations for Steam Machines and open season for Steam Controllers. With its hardware launches now hindered by AI-related component shortages, consumer demand only has the Steam Controller to focus on.</p><div class="product"><a data-dimension112="dc9b8ba2-5956-40bb-9905-2abdcf61e454" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:661px;"><p class="vanilla-image-block" style="padding-top:98.94%;"><img id="6offQUY4CXebir2TC27dMd" name="kingdom come 2 square" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6offQUY4CXebir2TC27dMd-1920-80.jpg" mos="" align="middle" fullscreen="" width="661" height="654" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://www.pcgamer.com/games/new-pc-games-2026/" target="_blank" data-dimension112="dc9b8ba2-5956-40bb-9905-2abdcf61e454" data-action="Deal Block" data-label="2026 games" data-dimension48="2026 games" data-dimension25=""><strong>2026 games</strong></a>: All the upcoming games<br><a href="https://www.pcgamer.com/the-best-pc-games/" target="_blank"><strong>Best PC games</strong></a>: Our all-time favorites<br><a href="https://www.pcgamer.com/the-50-best-free-pc-games/" target="_blank"><strong>Free PC games</strong></a>: Freebie fest<br><a href="https://www.pcgamer.com/best-fps-games/" target="_blank"><strong>Best FPS games</strong></a>: Finest gunplay<br><a href="https://www.pcgamer.com/best-rpgs-of-all-time/" target="_blank"><strong>Best RPGs</strong></a>: Grand adventures<br><a href="https://www.pcgamer.com/the-best-co-op-games/" target="_blank"><strong>Best co-op games</strong></a>: Better together</p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Valve releases the CAD files for the Steam Controller and its Puck, no doubt ushering in an era of unholy 3D printed creations ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The new Steam Controller launched on May 4 and promptly <a href="https://www.pcgamer.com/hardware/controllers/the-steam-controller-sold-out-in-30-minutes-utterly-breaking-steam-in-the-process/" target="_blank">sold out in about 30 minutes</a>, bringing Steam to its knees in the process. There's already a lot to like about Valve's funky fresh gamepad, as our Jacob's <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">Steam Controller review</a> can attest, but the company is now offering what is no doubt the cherry on the cake for modders.</p><p>Valve has just released <a href="https://steamcommunity.com/groups/steam_hardware/announcements/detail/702141174212723353" target="_blank">the CAD files for the external shell of the Steam Controller itself</a>, and its rechargeable puck as well. So, if our <a href="https://www.youtube.com/watch?v=Va9aTIktlSk" target="_blank">Steam Controller teardown video</a> left you hankering to get into the guts of the thing yourself, you've now got options for how you put it back together again.</p><p>Released under <a href="https://gitlab.steamos.cloud/SteamHardware/SteamController/-/blob/main/license.txt?ref_type=heads" target="_blank">a Creative Commons license</a>, the hardware mod squad can use the free files to 3D model and print their own take on the Steam Controller's "surface topology". Specifically, the files shared via <a href="https://gitlab.steamos.cloud/SteamHardware/SteamController" target="_blank">GitLab</a> have been released under a '<a href="https://creativecommons.org/licenses/by-nc-sa/4.0/" target="_blank">CC BY-NC-SA 4.0</a>' license, which means you can share your creations so long as you do so under the same license, and with credit to Valve.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xp4ZAX"></div>                            </div>                            <script src="https://kwizly.com/embed/Xp4ZAX.js" async></script><p>Typically, the main restriction of this type of Creative Commons license is that you can't sell your custom creations or otherwise make them with commercial uses in mind. However, Valve includes the following addendum at the top of the license.txt file: "If you are interested in creating a commercial product based on the Materials, please get in touch with Valve."</p><p>Historically, Valve has been surprisingly chill about allowing folks to sell remixed creations based on its properties. For instance, all the way back in 2017, Valve <a href="https://www.pcgamer.com/valve-will-allow-fans-to-create-and-sell-merchandise-based-on-its-games/" target="_blank">allowed fans to create and sell merchandise based on its games</a> via 3D printing service Shapeways. Furthermore, unlike other massive gaming corporations I could name, it's not been aggressively litigious about its own IP, software or otherwise. In other words, if you have a commercial purpose in mind for your custom Steam Controller casing, Valve would probably quite like to hear about it.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/Va9aTIktlSk" allowfullscreen></iframe></div></div><p>Personally, I had been looking for some way to zhuzh up the Steam Controller's outer shell. <a href="https://www.pcgamer.com/hardware/controllers/weve-never-met-a-cult-we-didnt-want-to-be-a-part-of-so-were-getting-in-on-the-ground-floor-dbrand-announces-skins-for-the-new-steam-controller-in-the-most-dbrand-way/" target="_blank">Dbrand already offers a selection of skins for the gamepad</a>, though I'm not particularly partial to any of these (not to mention the fact that the more premium options cost close to a quarter of the Steam Controller's price tag).</p><p>I'm much more intrigued by <a href="https://www.pcgamer.com/hardware/pc-cases/dbrand-has-teased-a-render-of-a-portal-companion-cube-steam-machine-case-so-you-can-put-a-case-around-your-case/" target="_blank">the Companion Cube-style housing</a> Dbrand is already teasing for the Steam Machine. Not just because I've never lived down incinerating the Weighted Companion Cube in the original Portal, but also because it demonstrates what fun you can have with a custom shell design. Personally, I'm wondering if I can get my Steam Controller to look anything like that <a href="https://www.pcgamer.com/a-hardware-hacker-turned-that-horrid-toy-controller-into-a-working-one/" target="_blank">horrid Fisher-Price toy controller</a>.</p><p>Mind you, it'll be a minute before I can get my mitts on my own Steam Controller. As of time of writing, <a href="https://store.steampowered.com/sale/steamcontroller" target="_blank">the controllers are still out of stock on Steam</a> (though <a href="https://www.pcgamer.com/hardware/game-pads/ebay-resellers-are-turning-a-tidy-profit-on-steam-controllers/" target="_blank">a slew of Valve's funky fresh gamepad hit eBay at astronomical prices</a>).</p><p><a href="https://x.com/valvesoftware/status/2051695149026353424?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E2051695149026353424%7Ctwgr%5Ef75d3ab1f239e3a51324c6ff71f8d46bf232cae4%7Ctwcon%5Es1_&ref_url=https%3A%2F%2Fvideocardz.com%2Fnewz%2Fvalve-releases-steam-controller-cad-files-modding-may-begin" target="_blank">Valve shared on X</a> this week that the "Steam Controller ran out faster than we anticipated, and we hate that not everyone who wanted one was able to get it. We’re working on getting more in stock and will have an update on expected timeline soon."</p> ]]></dc:content>
                                                                                                                                            <link>https://www.pcgamer.com/hardware/controllers/valve-releases-the-cad-files-for-the-steam-controller-and-its-puck-no-doubt-ushering-in-an-era-of-unholy-3d-printed-creations/</link>
                                                                            <description>
                            <![CDATA[ Making it your own. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">FDTsw6BBMeysFqkQtDqDt9</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/BFyCvxhF5rvguJAynziMSY-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 06 May 2026 14:11:33 +0000</pubDate>                                                                                                                                <updated>Thu, 07 May 2026 09:55:54 +0000</updated>
                                                                                                                                            <category><![CDATA[Controllers]]></category>
                                                    <category><![CDATA[Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jess Kinghorn ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cMDJJibKgeMg3wogzv9AgY-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/BFyCvxhF5rvguJAynziMSY-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:description>                                                            <media:text><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:text>
                                <media:title type="plain"><![CDATA[The Steam Controller on a desk during a teardown, with various parts removed.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/BFyCvxhF5rvguJAynziMSY-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The new Steam Controller launched on May 4 and promptly <a href="https://www.pcgamer.com/hardware/controllers/the-steam-controller-sold-out-in-30-minutes-utterly-breaking-steam-in-the-process/" target="_blank">sold out in about 30 minutes</a>, bringing Steam to its knees in the process. There's already a lot to like about Valve's funky fresh gamepad, as our Jacob's <a href="https://www.pcgamer.com/hardware/game-pads/steam-controller-2026-review/" target="_blank">Steam Controller review</a> can attest, but the company is now offering what is no doubt the cherry on the cake for modders.</p><p>Valve has just released <a href="https://steamcommunity.com/groups/steam_hardware/announcements/detail/702141174212723353" target="_blank">the CAD files for the external shell of the Steam Controller itself</a>, and its rechargeable puck as well. So, if our <a href="https://www.youtube.com/watch?v=Va9aTIktlSk" target="_blank">Steam Controller teardown video</a> left you hankering to get into the guts of the thing yourself, you've now got options for how you put it back together again.</p><p>Released under <a href="https://gitlab.steamos.cloud/SteamHardware/SteamController/-/blob/main/license.txt?ref_type=heads" target="_blank">a Creative Commons license</a>, the hardware mod squad can use the free files to 3D model and print their own take on the Steam Controller's "surface topology". Specifically, the files shared via <a href="https://gitlab.steamos.cloud/SteamHardware/SteamController" target="_blank">GitLab</a> have been released under a '<a href="https://creativecommons.org/licenses/by-nc-sa/4.0/" target="_blank">CC BY-NC-SA 4.0</a>' license, which means you can share your creations so long as you do so under the same license, and with credit to Valve.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xp4ZAX"></div>                            </div>                            <script src="https://kwizly.com/embed/Xp4ZAX.js" async></script><p>Typically, the main restriction of this type of Creative Commons license is that you can't sell your custom creations or otherwise make them with commercial uses in mind. However, Valve includes the following addendum at the top of the license.txt file: "If you are interested in creating a commercial product based on the Materials, please get in touch with Valve."</p><p>Historically, Valve has been surprisingly chill about allowing folks to sell remixed creations based on its properties. For instance, all the way back in 2017, Valve <a href="https://www.pcgamer.com/valve-will-allow-fans-to-create-and-sell-merchandise-based-on-its-games/" target="_blank">allowed fans to create and sell merchandise based on its games</a> via 3D printing service Shapeways. Furthermore, unlike other massive gaming corporations I could name, it's not been aggressively litigious about its own IP, software or otherwise. In other words, if you have a commercial purpose in mind for your custom Steam Controller casing, Valve would probably quite like to hear about it.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/Va9aTIktlSk" allowfullscreen></iframe></div></div><p>Personally, I had been looking for some way to zhuzh up the Steam Controller's outer shell. <a href="https://www.pcgamer.com/hardware/controllers/weve-never-met-a-cult-we-didnt-want-to-be-a-part-of-so-were-getting-in-on-the-ground-floor-dbrand-announces-skins-for-the-new-steam-controller-in-the-most-dbrand-way/" target="_blank">Dbrand already offers a selection of skins for the gamepad</a>, though I'm not particularly partial to any of these (not to mention the fact that the more premium options cost close to a quarter of the Steam Controller's price tag).</p><p>I'm much more intrigued by <a href="https://www.pcgamer.com/hardware/pc-cases/dbrand-has-teased-a-render-of-a-portal-companion-cube-steam-machine-case-so-you-can-put-a-case-around-your-case/" target="_blank">the Companion Cube-style housing</a> Dbrand is already teasing for the Steam Machine. Not just because I've never lived down incinerating the Weighted Companion Cube in the original Portal, but also because it demonstrates what fun you can have with a custom shell design. Personally, I'm wondering if I can get my Steam Controller to look anything like that <a href="https://www.pcgamer.com/a-hardware-hacker-turned-that-horrid-toy-controller-into-a-working-one/" target="_blank">horrid Fisher-Price toy controller</a>.</p><p>Mind you, it'll be a minute before I can get my mitts on my own Steam Controller. As of time of writing, <a href="https://store.steampowered.com/sale/steamcontroller" target="_blank">the controllers are still out of stock on Steam</a> (though <a href="https://www.pcgamer.com/hardware/game-pads/ebay-resellers-are-turning-a-tidy-profit-on-steam-controllers/" target="_blank">a slew of Valve's funky fresh gamepad hit eBay at astronomical prices</a>).</p><p><a href="https://x.com/valvesoftware/status/2051695149026353424?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E2051695149026353424%7Ctwgr%5Ef75d3ab1f239e3a51324c6ff71f8d46bf232cae4%7Ctwcon%5Es1_&ref_url=https%3A%2F%2Fvideocardz.com%2Fnewz%2Fvalve-releases-steam-controller-cad-files-modding-may-begin" target="_blank">Valve shared on X</a> this week that the "Steam Controller ran out faster than we anticipated, and we hate that not everyone who wanted one was able to get it. We’re working on getting more in stock and will have an update on expected timeline soon."</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
            </channel>
</rss>