Pc Gamers

Best Amazon Prime Day keyboard, mouse and controller deals – get your hands on these discounted peripherals | ongames

Best <a href=ongames.cc">Amazon Prime Day keyboard, mouse and controller deals - get your hands on these discounted peripherals" style="max-width:100%;border-radius:12px;margin-bottom:25px">

Best Amazon Prime Day keyboard, mouse and controller deals – get your hands on these discounted peripherals

If you’re looking to upgrade your gaming setup, it’s a good time to shop around. We’re in the lead-up to Amazon Prime Day, which takes place on June 23–26, and for the next couple of weeks, I’ll be checking Amazon and other retailers regularly to spot the best deals on keyboards, controllers and mice.

👉ALL of Amazon’s peripheral deals👈
👉OUR favorite Prime Day PC gaming deals👈

You don’t need to be an Amazon Prime member to save some money this month, as most online retailers join in on the discount frenzy. Though the retailer will put many of its best deals behind the Prime paywall, you can sign up for a free 30-day trial to take advantage of what’s offered and cancel before the first payment goes out.

Where to find the best Prime Day keyboard, mouse and controller deals

Keyboard:

Mouse:

Controller:

Retailers:

Prime Day gaming keyboard deals

body { margin: 0; padding: 0; background: transparent; } <iframe srcdoc=" #widget-2pe6tsy *:not(svg):not(path) { box-sizing: border-box; } #widget-2pe6tsy h1, #widget-2pe6tsy p, #widget-2pe6tsy 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-rotate-x: initial; –tw-rotate-y: initial; –tw-rotate-z: initial; –tw-skew-x: initial; –tw-skew-y: initial; –tw-space-y-reverse: 0; –tw-divide-y-reverse: 0; –tw-border-style: solid; –tw-leading: initial; –tw-font-weight: initial; –tw-tracking: 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-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; –tw-scale-x: 1; –tw-scale-y: 1; –tw-scale-z: 1; }}#widget-2pe6tsy, :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-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-green-50: oklch(98.2% .018 155.826); –color-green-600: oklch(62.7% .194 149.214); –color-green-700: oklch(52.7% .154 150.069); –color-emerald-600: oklch(59.6% .145 163.225); –color-blue-50: oklch(97% .014 254.604); –color-blue-600: oklch(54.6% .245 262.881); –color-indigo-50: oklch(96.2% .018 272.314); –color-indigo-600: oklch(51.1% .262 276.966); –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-rose-700: oklch(51.4% .222 16.935); –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-black: #000; –color-white: #fff; –spacing: 4px; –container-sm: 384px; –container-md: 448px; –container-2xl: 672px; –container-6xl: 1152px; –text-xs: 12px; –text-xsline-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-medium: 500; –font-weight-semibold: 600; –font-weight-bold: 700; –font-weight-black: 900; –tracking-tight: -.025em; –tracking-wider: .05em; –tracking-widest: .1em; –leading-tight: 1.25; –leading-relaxed: 1.625; –radius-lg: 8px; –radius-xl: 12px; –radius-2xl: 16px; –ease-out: cubic-bezier(0, 0, .2, 1); –animate-spin: spin 1s linear infinite; –animate-pulse: pulse 2s cubic-bezier(.4, 0, .6, 1) infinite; –blur-sm: 8px; –blur-md: 12px; –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;.pointer-events-none { pointer-events: none; }.absolute { position: absolute; }.fixed { position: fixed; }.relative { position: relative; }.inset-0 { inset: calc(var(–spacing) * 0); }.top-1/2 { top: 50%; }.top-[76px] { top: 76px; }.top-[80px] { top: 80px; }.right-2 { right: calc(var(–spacing) * 2); }.right-3 { right: calc(var(–spacing) * 3); }.right-4 { right: calc(var(–spacing) * 4); }.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); }.z-20 { z-index: 20; }.z-50 { z-index: 50; }.z-[60] { z-index: 60; }.z-[100] { z-index: 100; }.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); }.mx-auto { margin-inline: auto; }.prose { color: var(–tw-prose-#widget-2pe6tsy); 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-2pe6tsy 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-2pe6tsy tr:last-child):not(:where([class~=”not-prose”], [class~=”not-prose”] *)) { border-bottom-width: 0px; }.prose :where(t#widget-2pe6tsy 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-2pe6tsy: 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-2pe6tsy: 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-2pe6tsy 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-2pe6tsy td:first-child, tfoot td:first-child):not(:where([class~=”not-prose”], [class~=”not-prose”] *)) { padding-inline-start: 0px; }.prose :where(t#widget-2pe6tsy 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-2pe6tsy 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-2pe6tsy td:first-child, tfoot td:first-child):not(:where([class~=”not-prose”], [class~=”not-prose”] *)) { padding-inline-start: 0px; }.prose-lg :where(t#widget-2pe6tsy 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-1 { margin-top: calc(var(–spacing) * 1); }.mt-2 { margin-top: calc(var(–spacing) * 2); }.mt-4 { margin-top: calc(var(–spacing) * 4); }.mt-8 { margin-top: calc(var(–spacing) * 8); }.mt-auto { margin-top: auto; }.mr-5 { margin-right: calc(var(–spacing) * 5); }.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-6 { margin-bottom: calc(var(–spacing) * 6); }.mb-8 { margin-bottom: calc(var(–spacing) * 8); }.ml-auto { margin-left: auto; }.line-clamp-2 { -webkit-line-clamp: 2; -webkit-box-orient: vertical; display: -webkit-box; overflow: hidden; }.block { display: block; }.flex { display: flex; }.hidden { display: none; }.inline { display: inline; }.inline-block { display: inline-block; }.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-8 { height: calc(var(–spacing) * 8); }.h-10 { height: calc(var(–spacing) * 10); }.h-24 { height: calc(var(–spacing) * 24); }.h-[76px] { height: 76px; }.h-[600px] { height: 600px; }.h-auto { height: auto; }.h-full { height: 100%; }.max-h-[90vh] { max-height: 90vh; }.min-h-[400px] { min-height: 400px; }.min-h-screen { min-height: 100vh; }.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-8 { width: calc(var(–spacing) * 8); }.w-10 { width: calc(var(–spacing) * 10); }.w-20 { width: calc(var(–spacing) * 20); }.w-32 { width: calc(var(–spacing) * 32); }.w-40 { width: calc(var(–spacing) * 40); }.w-full { width: 100%; }.w-px { width: 1px; }.max-w-2xl { max-width: var(–container-2xl); }.max-w-6xl { max-width: var(–container-6xl); }.max-w-[65ch] { max-width: 65ch; }.max-w-md { max-width: var(–container-md); }.max-w-none { max-width: none; }.max-w-sm { max-width: var(–container-sm); }.min-w-0 { min-width: calc(var(–spacing) * 0); }.min-w-[800px] { min-width: 800px; }.flex-1 { flex: 1 1 0%; }.flex-none { flex: 0 0 auto; }.flex-shrink-0, .shrink-0 { flex-shrink: 0; }.-translate-x-1/2 { –tw-translate-x: -50%; 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); }.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-pointer { cursor: pointer; }.resize-y { resize: vertical; }.list-none { list-style-type: none; }.appearance-none { appearance: none; }.flex-col { flex-direction: column; }.flex-wrap { flex-wrap: wrap; }.items-center { align-items: center; }.items-start { align-items: flex-start; }.justify-between { justify-content: space-between; }.justify-center { justify-content: center; }.justify-end { justify-content: flex-end; }.gap-1 { gap: calc(var(–spacing) * 1); }.gap-1.5 { gap: calc(var(–spacing) * 1.5); }.gap-2 { gap: calc(var(–spacing) * 2); }.gap-3 { gap: calc(var(–spacing) * 3); }.gap-4 { gap: calc(var(–spacing) * 4); }.gap-6 { gap: calc(var(–spacing) * 6); }.gap-8 { gap: calc(var(–spacing) * 8); }:where(.space-y-2 > :not(:last-child)) { –tw-space-y-reverse: 0; margin-block-start: calc(calc(var(–spacing) * 2) * var(–tw-space-y-reverse)); margin-block-end: calc(calc(var(–spacing) * 2) * calc(1 – var(–tw-space-y-reverse))); }.gap-x-4 { column-gap: calc(var(–spacing) * 4); }.gap-y-2 { row-gap: calc(var(–spacing) * 2); }: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); }.self-start { align-self: flex-start; }.truncate { text-overflow: ellipsis; white-space: nowrap; overflow: hidden; }.overflow-auto { overflow: auto; }.overflow-hidden { overflow: hidden; }.overflow-y-auto { overflow-y: auto; }.rounded-2xl { border-radius: var(–radius-2xl); }.rounded-full { border-radius: 3.40282e+38px; }.rounded-lg { border-radius: var(–radius-lg); }.rounded-xl { border-radius: var(–radius-xl); }.border { border-style: var(–tw-border-style); border-width: 1px; }.border-2 { border-style: var(–tw-border-style); border-width: 2px; }.border-t { border-top-style: var(–tw-border-style); border-top-width: 1px; }.border-t-4 { border-top-style: var(–tw-border-style); border-top-width: 4px; }.border-r { border-right-style: var(–tw-border-style); border-right-width: 1px; }.border-b { border-bottom-style: var(–tw-border-style); border-bottom-width: 1px; }.border-dashed { –tw-border-style: dashed; border-style: dashed; }.border-none { –tw-border-style: none; border-style: none; }.border-[#DC1F26] { border-color: rgb(220, 31, 38); }.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-100 { border-color: var(–color-red-100); }.border-rose-100 { border-color: var(–color-rose-100); }.bg-[#DC1F26] { background-color: rgb(220, 31, 38); }.bg-[#ededed] { background-color: rgb(237, 237, 237); }.bg-black { background-color: var(–color-black); }.bg-green-600 { background-color: var(–color-green-600); }.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-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-red-50 { background-color: var(–color-red-50); }.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-rose-600 { background-color: var(–color-rose-600); }.bg-transparent { background-color: rgba(0, 0, 0, 0); }.bg-white { background-color: var(–color-white); }.fill-current { fill: currentcolor; }.object-contain { object-fit: contain; }.object-cover { object-fit: cover; }.p-0 { padding: calc(var(–spacing) * 0); }.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-6 { padding: calc(var(–spacing) * 6); }.p-8 { padding: calc(var(–spacing) * 8); }.px-2 { padding-inline: calc(var(–spacing) * 2); }.px-3 { padding-inline: calc(var(–spacing) * 3); }.px-4 { padding-inline: calc(var(–spacing) * 4); }.px-6 { padding-inline: calc(var(–spacing) * 6); }.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-3 { padding-block: calc(var(–spacing) * 3); }.py-4 { padding-block: calc(var(–spacing) * 4); }.py-12 { padding-block: calc(var(–spacing) * 12); }.pt-8 { padding-top: calc(var(–spacing) * 8); }.pr-4 { padding-right: calc(var(–spacing) * 4); }.pr-8 { padding-right: calc(var(–spacing) * 8); }.pr-10 { padding-right: calc(var(–spacing) * 10); }.pb-4 { padding-bottom: calc(var(–spacing) * 4); }.pb-8 { padding-bottom: calc(var(–spacing) * 8); }.pl-1.5 { padding-left: calc(var(–spacing) * 1.5); }.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; }.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-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; }.leading-none { –tw-leading: 1; line-height: 1; }.leading-relaxed { –tw-leading: var(–leading-relaxed); line-height: var(–leading-relaxed); }.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-medium { –tw-font-weight: var(–font-weight-medium); font-weight: var(–font-weight-medium); }.font-semibold { –tw-font-weight: var(–font-weight-semibold); font-weight: var(–font-weight-semibold); }.tracking-tight { –tw-tracking: var(–tracking-tight); letter-spacing: var(–tracking-tight); }.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-ellipsis { text-overflow: ellipsis; }.text-[#DC1F26] { color: rgb(220, 31, 38); }.text-black { color: var(–color-black); }.text-emerald-600 { color: var(–color-emerald-600); }.text-green-600 { color: var(–color-green-600); }.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-900 { color: var(–color-neutral-900); }.text-red-500 { color: var(–color-red-500); }.text-red-600 { color: var(–color-red-600); }.text-rose-500 { color: var(–color-rose-500); }.text-rose-600 { color: var(–color-rose-600); }.text-white { color: var(–color-white); }.uppercase { text-transform: uppercase; }.italic { font-style: italic; }.placeholder-neutral-500::placeholder { color: var(–color-neutral-500); }.opacity-0 { opacity: 0; }.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-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-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); }.backdrop-blur-md { –tw-backdrop-blur: blur(var(–blur-md)); 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-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,); }.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)); }.duration-300 { –tw-duration: .3s; transition-duration: 0.3s; }.ease-out { –tw-ease: var(–ease-out); transition-timing-function: var(–ease-out); }.prose-neutral { –tw-prose-#widget-2pe6tsy: 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-2pe6tsy: 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; }@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; } .hover:border-black:hover { border-color: var(–color-black); } .hover:border-neutral-300:hover { border-color: var(–color-neutral-300); } .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-200:hover { background-color: var(–color-neutral-200); } .hover:bg-neutral-300:hover { background-color: var(–color-neutral-300); } .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:bg-rose-600:hover { background-color: var(–color-rose-600); } .hover:bg-rose-700:hover { background-color: var(–color-rose-700); } .hover:text-[#DC1F26]:hover { color: rgb(220, 31, 38); } .hover:text-blue-600:hover { color: var(–color-blue-600); } .hover:text-indigo-600:hover { color: var(–color-indigo-600); } .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:text-rose-600:hover { color: var(–color-rose-600); }}.focus:border-rose-500:focus { border-color: var(–color-rose-500); }.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]/20:focus { –tw-ring-color: oklab(57.3239% .195826 .0976754/.2); }.focus:ring-rose-500:focus { –tw-ring-color: var(–color-rose-500); }.focus:outline-none:focus { –tw-outline-style: none; outline-style: none; }.active:scale-95:active { –tw-scale-x: 95%; –tw-scale-y: 95%; –tw-scale-z: 95%; scale: var(–tw-scale-x) var(–tw-scale-y); }@media (min-width: 640px) { .sm:top-[88px] { top: 88px; } .sm:top-[92px] { top: 92px; } .sm:right-3 { right: calc(var(–spacing) * 3); } .sm:left-3 { left: calc(var(–spacing) * 3); } .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:h-6 { height: calc(var(–spacing) * 6); } .sm:w-6 { width: calc(var(–spacing) * 6); } .sm:w-64 { width: calc(var(–spacing) * 64); } .sm:flex-row { flex-direction: row; } .sm:items-center { align-items: center; } .sm:p-3 { padding: calc(var(–spacing) * 3); } .sm:p-8 { padding: calc(var(–spacing) * 8); } .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:h-screen { height: 100vh; } .md:w-80 { width: calc(var(–spacing) * 80); } .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-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-space-y-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-leading { syntax: “*”; inherits: false; }@property –tw-font-weight { syntax: “*”; inherits: false; }@property –tw-tracking { 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: “”; 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: “”; 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: “”; 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-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; }@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; }@keyframes spin { 100% { transform: rotate(360deg); }}@keyframes pulse { 50% { opacity: 0.5; }}

const API_BASE = “https://review-widget-builder-1098919444017.us-west1.run.app”; const CATEGORY = “Gaming Keyboards”; // Embedded complete category data const LOCAL_REVIEWS = JSON.parse(decodeURIComponent(“%5B%7B%22publishDate%22%3A%222026-05-28T15%3A01%3A08Z%22%2C%22strapline%22%3A%22A%20lovely%20keyboard%20I%20couldn’t%20actually%20recommend%20buying%2C%20unless%20you’re%20a%20big%20space%20nerd%20in%20need%20of%20a%20touchscreen.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FNJL54WqHVfV4GetNebzSPL-2560-80.jpg%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fmelgeek-centauri-80-review%2F%22%2C%22title%22%3A%22MelGeek%20Centauri%2080%20review%22%2C%22score%22%3A70%2C%22summary%22%3A%22A%20lovely%20keyboard%20I%20couldn’t%20actually%20recommend%20buying%2C%20unless%20you’re%20a%20big%20space%20nerd%20in%20need%20of%20a%20touchscreen.%22%7D%2C%7B%22title%22%3A%22Logitech%20G512%20X%20review%22%2C%22score%22%3A90%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Flogitech-g512-x-review%2F%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22publishDate%22%3A%222026-04-28T07%3A01%3A00Z%22%2C%22strapline%22%3A%22Logitech’s%20first%20foray%20into%20TMR%20switches%20is%20a%20triumph%2C%20and%20easily%20one%20of%20the%20best%20gaming%20keyboards%20I’ve%20used%20in%20recent%20memory.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2F2CFAqkbavRHGfpd2GuKGoT-2560-80.jpg%22%2C%22summary%22%3A%22Logitech’s%20first%20foray%20into%20TMR%20switches%20is%20a%20triumph%2C%20and%20easily%20one%20of%20the%20best%20gaming%20keyboards%20I’ve%20used%20in%20recent%20memory.%22%7D%2C%7B%22score%22%3A76%2C%22title%22%3A%22Cherry%20XTRFY%20K5%20Pro%20TMR%20Compact%20review%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fcherry-k5-pro-tmr-compact-review%2F%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22publishDate%22%3A%222026-04-09T10%3A00%3A00Z%22%2C%22strapline%22%3A%22It%20ticks%20all%20of%20the%20right%20boxes%2C%20but%20I%20was%20left%20wanting%20just%20a%20little%20more.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FNGvN2pffCkRzZGxW5VKbQ5-1920-80.png%22%2C%22summary%22%3A%22It%20ticks%20all%20of%20the%20right%20boxes%2C%20but%20I%20was%20left%20wanting%20just%20a%20little%20more.%22%7D%2C%7B%22title%22%3A%22Asus%20ROG%20Strix%20Morph%2096%20Wireless%20review%22%2C%22score%22%3A73%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fasus-rog-strix-morph-96-wireless-review%2F%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22strapline%22%3A%22Not%20that%20new.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FqUG8ZKVvwPehbo9hpJ3WA9-1920-80.jpg%22%2C%22publishDate%22%3A%222026-03-24T16%3A19%3A22Z%22%2C%22summary%22%3A%22Not%20that%20new.%22%7D%2C%7B%22publishDate%22%3A%222026-03-24T11%3A46%3A24Z%22%2C%22strapline%22%3A%22An%20ace%20keyboard.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FRvH7EP8da6Zz4N9bWgWmWS-1920-80.jpg%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fasus-rog-falchion-ace-75-he-review%2F%22%2C%22score%22%3A82%2C%22title%22%3A%22Asus%20ROG%20Falchion%20Ace%2075%20HE%20review%22%2C%22summary%22%3A%22An%20ace%20keyboard.%22%7D%2C%7B%22category%22%3A%22Gaming%20Keyboards%22%2C%22strapline%22%3A%22Low-profile%2C%20optical%20mechanical%20switches%20in%20a%2099%25%20form%20factor%20with%20100%25%20pricing.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FQSBbE8sXu6xvVf4Xu5ZQuV-2560-80.jpg%22%2C%22publishDate%22%3A%222026-03-23T15%3A00%3A57Z%22%2C%22title%22%3A%22Corsair%20Vanguard%20Air%2099%20Wireless%20review%22%2C%22score%22%3A70%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fcorsair-vanguard-air-99-wireless-review%2F%22%2C%22summary%22%3A%22Low-profile%2C%20optical%20mechanical%20switches%20in%20a%2099%25%20form%20factor%20with%20100%25%20pricing.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fgravastar-mercury-v60-pro-review%2F%22%2C%22title%22%3A%22Gravastar%20Mercury%20V60%20Pro%20review%22%2C%22score%22%3A75%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FmEyBhuBgVGgWLUgyNZSvx3-2000-80.jpg%22%2C%22strapline%22%3A%22A%2060%25%20gaming%20keyboard%20with%20magnetic%20switches%20and%20a%20hint%20of%20body%20horror.%22%2C%22publishDate%22%3A%222026-03-05T16%3A21%3A27Z%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22summary%22%3A%22A%2060%25%20gaming%20keyboard%20with%20magnetic%20switches%20and%20a%20hint%20of%20body%20horror.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fcherry-xtrfy-mx-8-2-pro-tmr-tkl-review%2F%22%2C%22title%22%3A%22Cherry%20Xtrfy%20MX%208.2%20Pro%20TMR%20TKL%20review%22%2C%22score%22%3A74%2C%22strapline%22%3A%22Is%20TMR%20really%20worth%20that%20much%20to%20you%3F%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2F28jch5Ngha8yVKfhR7Mdjj-2560-80.jpg%22%2C%22publishDate%22%3A%222026-03-02T16%3A49%3A41Z%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22summary%22%3A%22Is%20TMR%20really%20worth%20that%20much%20to%20you%3F%22%7D%2C%7B%22title%22%3A%22Wooting%2060HE%20v2%20review%22%2C%22score%22%3A93%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fwooting-60he-v2-review%2F%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22publishDate%22%3A%222026-02-27T15%3A14%3A17Z%22%2C%22strapline%22%3A%22Its%20best%20yet.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FfcwgNGFgwLYXKePxMGUYj5-2560-80.jpg%22%2C%22summary%22%3A%22Its%20best%20yet.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fcorsair-galleon-100-sd-review%2F%22%2C%22title%22%3A%22Corsair%20Galleon%20100%20SD%20review%22%2C%22score%22%3A74%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FUQXzSSJRynHoucMau8QfXM-2000-80.jpg%22%2C%22strapline%22%3A%22Thocky%20keys%20meet%20a%20built-in%20Stream%20Deck.%22%2C%22publishDate%22%3A%222026-02-17T17%3A34%3A16Z%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22summary%22%3A%22Thocky%20keys%20meet%20a%20built-in%20Stream%20Deck.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fasus-rog-azoth-96-he-review%2F%22%2C%22title%22%3A%22Asus%20ROG%20Azoth%2096%20HE%20review%22%2C%22score%22%3A75%2C%22publishDate%22%3A%222026-01-23T16%3A54%3A33Z%22%2C%22strapline%22%3A%22Power%20at%20a%20price.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FxVXLbkXa7QCPa6kz94E2YH-1920-80.jpg%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22summary%22%3A%22Power%20at%20a%20price.%22%7D%2C%7B%22category%22%3A%22Gaming%20Keyboards%22%2C%22strapline%22%3A%22QPAD%20re-enters%20the%20market%20with%20a%20wonderful%20little%20clacker.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FTmRP9kpzY7vkwPZvPBfyN8-2560-80.jpg%22%2C%22publishDate%22%3A%222026-01-15T16%3A30%3A09Z%22%2C%22title%22%3A%22QPAD%20Flux%2065%20Model%205%20review%22%2C%22score%22%3A87%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fqpad-flux-65-model-5-review%2F%22%2C%22summary%22%3A%22QPAD%20re-enters%20the%20market%20with%20a%20wonderful%20little%20clacker.%22%7D%2C%7B%22strapline%22%3A%22For%20those%20who%20measure%20their%20lives%20in%20fractions%20of%20a%20second.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FYc7KK2PPvs6qBj5TbxisNR-2000-80.jpg%22%2C%22publishDate%22%3A%222026-01-15T14%3A11%3A52Z%22%2C%22category%22%3A%22Gaming%20Laptops%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-laptops%2Fmchose-ace-68-16-khz-gaming-keyboard-review%2F%22%2C%22title%22%3A%22Mchose%20Ace%2068%2016%20kHz%20gaming%20keyboard%20review%22%2C%22score%22%3A75%2C%22summary%22%3A%22For%20those%20who%20measure%20their%20lives%20in%20fractions%20of%20a%20second.%22%7D%2C%7B%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FgM7Na5Y74pMS5yDwAURg2H-1920-80.jpg%22%2C%22strapline%22%3A%22Ultra-thin%20and%20compact%2C%20space-conscious%20minimalists%20will%20want%20to%20give%20this%20keyboard%20a%20look.%22%2C%22publishDate%22%3A%222025-12-16T15%3A02%3A08Z%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fzsa-voyager-navigator-review%2F%22%2C%22title%22%3A%22ZSA%20Voyager%20%2B%20Navigator%20review%22%2C%22score%22%3A78%2C%22summary%22%3A%22Ultra-thin%20and%20compact%2C%20space-conscious%20minimalists%20will%20want%20to%20give%20this%20keyboard%20a%20look.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fglorious-gmbk-75-percent-review%2F%22%2C%22title%22%3A%22Glorious%20GMBK%2075%25%20review%22%2C%22score%22%3A60%2C%22strapline%22%3A%22Membrane%3F%20Eh.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FiaTuL5BoTLNHT24NraXzKW-1920-80.jpg%22%2C%22publishDate%22%3A%222025-12-03T16%3A45%3A42Z%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22summary%22%3A%22Membrane%3F%20Eh.%22%7D%2C%7B%22category%22%3A%22Gaming%20Keyboards%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FoWk68cUM4uUiQLPWfY79E8-1920-80.jpg%22%2C%22strapline%22%3A%22Power%20at%20a%20high%20price.%22%2C%22publishDate%22%3A%222025-12-03T15%3A48%3A46Z%22%2C%22title%22%3A%22Corsair%20Vanguard%20Pro%2096%20review%22%2C%22score%22%3A85%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fcorsair-vanguard-pro-96-review%2F%22%2C%22summary%22%3A%22Power%20at%20a%20high%20price.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fmsi-forge-gk600-tkl-wireless-review%2F%22%2C%22title%22%3A%22MSI%20Forge%20GK600%20TKL%20Wireless%20review%22%2C%22score%22%3A79%2C%22strapline%22%3A%22A%20middle%20of%20the%20road%20gaming%20keyboard%20with%20on-screen%20mascot%20to%20keep%20things%20in%20order.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FJudJ5fKC3FAsph9xnjKeM9-2560-80.jpg%22%2C%22publishDate%22%3A%222025-12-03T15%3A34%3A24Z%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22summary%22%3A%22A%20middle%20of%20the%20road%20gaming%20keyboard%20with%20on-screen%20mascot%20to%20keep%20things%20in%20order.%22%7D%2C%7B%22category%22%3A%22Gaming%20Keyboards%22%2C%22strapline%22%3A%22Maybe%20mainstream%20isn’t%20always%20best%20after%20all.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FjMweXEcqJHBuFiwRzPxVw7-1920-80.jpg%22%2C%22publishDate%22%3A%222025-12-03T15%3A33%3A31Z%22%2C%22title%22%3A%22Logitech%20G515%20Rapid%20TKL%20review%22%2C%22score%22%3A72%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Flogitech-g515-rapid-tkl-review%2F%22%2C%22summary%22%3A%22Maybe%20mainstream%20isn’t%20always%20best%20after%20all.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fturtle-beach-vulcan-ii-tkl-review%2F%22%2C%22title%22%3A%22Turtle%20Beach%20Vulcan%20II%20TKL%20review%22%2C%22score%22%3A83%2C%22publishDate%22%3A%222025-11-14T12%3A42%3A46Z%22%2C%22strapline%22%3A%22A%20great%20value%20tenkeyless%20board%20with%20a%20very%20distinct%20keystroke%E2%80%94it’s%20a%20smooth%20operator.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FVHWyNFB6jGzFntGkRsKXJg-2560-80.jpg%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22summary%22%3A%22A%20great%20value%20tenkeyless%20board%20with%20a%20very%20distinct%20keystroke%E2%80%94it’s%20a%20smooth%20operator.%22%7D%2C%7B%22title%22%3A%22Razer%20Blackwidow%20V4%20Low-Profile%20Tenkeyless%20Hyperspeed%20review%22%2C%22score%22%3A76%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Frazer-blackwidow-v4-low-profile-tenkeyless-hyperspeed-review%2F%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22publishDate%22%3A%222025-11-14T12%3A01%3A19Z%22%2C%22strapline%22%3A%22Can%20the%20mechanical%20low-profile%20combo%20cut%20it%20in%20the%20age%20of%20analog%3F%20Razer%20thinks%20so.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FXPciqmDiirZq3uvSeW7aca-2560-80.jpg%22%2C%22summary%22%3A%22Can%20the%20mechanical%20low-profile%20combo%20cut%20it%20in%20the%20age%20of%20analog%3F%20Razer%20thinks%20so.%22%7D%2C%7B%22publishDate%22%3A%222025-11-11T09%3A40%3A22Z%22%2C%22strapline%22%3A%22The%20best%20ergonomic%20gaming%20keyboard%20is%20now%20that%20little%20bit%20better.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FDD2uvCWNBgEyrPpXueB3EM-1919-80.jpg%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fkinesis-gaming-freestyle-edge-rgb-plus-review%2F%22%2C%22title%22%3A%22Kinesis%20Gaming%20Freestyle%20Edge%20RGB%20Plus%20review%22%2C%22score%22%3A92%2C%22summary%22%3A%22The%20best%20ergonomic%20gaming%20keyboard%20is%20now%20that%20little%20bit%20better.%22%7D%2C%7B%22score%22%3A86%2C%22title%22%3A%22Lofree%20Flow%202%20review%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Flofree-flow-2-review%2F%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22publishDate%22%3A%222025-10-13T11%3A45%3A25Z%22%2C%22strapline%22%3A%22Going%20with%20the%20flow.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FZENpXDtSQ9duzNEdghZhHS-1920-80.jpg%22%2C%22summary%22%3A%22Going%20with%20the%20flow.%22%7D%2C%7B%22publishDate%22%3A%222025-09-09T13%3A43%3A03Z%22%2C%22strapline%22%3A%22When%20Early%20Access%20and%20boutique%20ergonomic%20keyboards%20collide.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FBwRrSM2WKnKnHXvcP93Ybg-2560-80.jpg%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fnaya-create-review%2F%22%2C%22score%22%3A68%2C%22title%22%3A%22Naya%20Create%20review%22%2C%22summary%22%3A%22When%20Early%20Access%20and%20boutique%20ergonomic%20keyboards%20collide.%22%7D%2C%7B%22publishDate%22%3A%222025-07-18T11%3A54%3A29Z%22%2C%22strapline%22%3A%22The%20original%20Azoth%20with%20a%20fresh%20trim.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2F5D8TuVRe7HqKHao2zQJpj-1920-80.jpg%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fasus-rog-azoth-x-review%2F%22%2C%22score%22%3A60%2C%22title%22%3A%22Asus%20ROG%20Azoth%20X%20review%22%2C%22summary%22%3A%22The%20original%20Azoth%20with%20a%20fresh%20trim.%22%7D%2C%7B%22category%22%3A%22Gaming%20Keyboards%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FPQLoEERFRPHSYBbkwvPPWS-2560-80.jpg%22%2C%22strapline%22%3A%22Barebones%20keyboard%20kits%20hit%20the%20mainstream%2C%20for%20a%20price.%22%2C%22publishDate%22%3A%222025-07-15T10%3A59%3A18Z%22%2C%22title%22%3A%22Corsair%20MAKR%2075%20review%22%2C%22score%22%3A70%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fcorsair-makr-75-review%2F%22%2C%22summary%22%3A%22Barebones%20keyboard%20kits%20hit%20the%20mainstream%2C%20for%20a%20price.%22%7D%2C%7B%22score%22%3A77%2C%22title%22%3A%22Gamakay%20TK75HE%20V2%20review%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fgamakay-tk75he-v2-review%2F%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22publishDate%22%3A%222025-06-19T15%3A08%3A32Z%22%2C%22strapline%22%3A%22A%20surprisingly%20excellent%20Hall%20effect%20option.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FzfTUWB8wm7Xb5r4wCAHRkj-1920-80.jpg%22%2C%22summary%22%3A%22A%20surprisingly%20excellent%20Hall%20effect%20option.%22%7D%2C%7B%22category%22%3A%22Gaming%20Keyboards%22%2C%22publishDate%22%3A%222025-06-18T16%3A15%3A33Z%22%2C%22strapline%22%3A%22More%20than%20a%20surprising%20price%20tag.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FnhrCwuUt4dZJUJzV8tTgfK-1920-80.jpg%22%2C%22score%22%3A85%2C%22title%22%3A%22Gamakay%20x%20NaughShark%20NS68%20review%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fgamakay-x-naughshark-ns68-review%2F%22%2C%22summary%22%3A%22More%20than%20a%20surprising%20price%20tag.%22%7D%2C%7B%22category%22%3A%22Gaming%20Keyboards%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2Fs3SrfNbR3bhYTWjnLMUu2W-1920-80.jpg%22%2C%22strapline%22%3A%22Das%20does%20different.%22%2C%22publishDate%22%3A%222025-06-18T15%3A03%3A42Z%22%2C%22title%22%3A%22Das%20Keyboard%20DeltaForce%2065%20review%22%2C%22score%22%3A62%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fdas-keyboard-deltaforce-65-review%2F%22%2C%22summary%22%3A%22Das%20does%20different.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fkinesis-mwave-keyboard-review%2F%22%2C%22title%22%3A%22Kinesis%20mWave%20keyboard%20review%22%2C%22score%22%3A83%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FsqswMsfxbXiPCymxNGaPDk-2560-80.jpg%22%2C%22strapline%22%3A%22The%20affordable%20and%20mechanical%20alternative%20to%20Microsoft%20and%20Logitech’s%20ergonomic%20keyboards.%22%2C%22publishDate%22%3A%222025-06-10T13%3A39%3A25Z%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22summary%22%3A%22The%20affordable%20and%20mechanical%20alternative%20to%20Microsoft%20and%20Logitech’s%20ergonomic%20keyboards.%22%7D%2C%7B%22score%22%3A89%2C%22title%22%3A%22Be%20Quiet!%20Dark%20Mount%20gaming%20keyboard%20review%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fbe-quiet-dark-mount-review%2F%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22publishDate%22%3A%222025-04-29T11%3A00%3A10Z%22%2C%22strapline%22%3A%22A%20modular%20keyboard%20desperate%20for%20the%20spotlight.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FbSaowa4mKTpxEMN7ThnX69-1920-80.jpg%22%2C%22summary%22%3A%22A%20modular%20keyboard%20desperate%20for%20the%20spotlight.%22%7D%2C%7B%22publishDate%22%3A%222025-04-29T11%3A00%3A00Z%22%2C%22strapline%22%3A%22A%20full-size%20sound-dampened%20board%20exuding%20far%20from%20quiet%20confidence.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2F8yaowqDd6ea4uJeybdKD28-1920-80.jpg%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fbe-quiet-light-mount-review%2F%22%2C%22score%22%3A93%2C%22title%22%3A%22Be%20Quiet!%20Light%20Mount%20gaming%20keyboard%20review%22%2C%22summary%22%3A%22A%20full-size%20sound-dampened%20board%20exuding%20far%20from%20quiet%20confidence.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fcherry-mx-8-2-wireless-xaga-review%2F%22%2C%22title%22%3A%22Cherry%20MX%208.2%20TKL%20Wireless%20XAGA%20review%22%2C%22score%22%3A75%2C%22publishDate%22%3A%222025-03-18T12%3A03%3A37Z%22%2C%22strapline%22%3A%22Looks%20suave%2C%20feels%20great%2C%20and%20has%20all%20the%20right%20connections%2C%20but%20this%20lavish%20lifestyle%20comes%20with%20an%20extravagant%20price%20tag.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FwzjAEScuRn39eGcWBPM4Ff-2560-80.jpg%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22summary%22%3A%22Looks%20suave%2C%20feels%20great%2C%20and%20has%20all%20the%20right%20connections%2C%20but%20this%20lavish%20lifestyle%20comes%20with%20an%20extravagant%20price%20tag.%22%7D%2C%7B%22title%22%3A%22Cherry%20Xtrfy%20K4V2%20TKL%20review%22%2C%22score%22%3A63%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fcherry-xtrfy-k4v2-tkl-review%2F%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FDdXQbvMcPEtBGRV27rmq5M-2560-80.jpg%22%2C%22strapline%22%3A%22Like%20a%20skeleton%20playing%20their%20own%20ribs%20xylophone-style%2C%20while%20also%20falling%20down%20the%20stairs.%22%2C%22publishDate%22%3A%222025-03-17T16%3A06%3A03Z%22%2C%22summary%22%3A%22Like%20a%20skeleton%20playing%20their%20own%20ribs%20xylophone-style%2C%20while%20also%20falling%20down%20the%20stairs.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fcorsair-k70-pro-tkl-review%2F%22%2C%22title%22%3A%22Corsair%20K70%20Pro%20TKL%20review%22%2C%22score%22%3A83%2C%22publishDate%22%3A%222025-03-12T14%3A22%3A59Z%22%2C%22strapline%22%3A%22A%20far%20from%20small%20tenkeyless%20board%20boasting%20a%20premium%20feature%20set.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FJhA7q4VMHaC8BWDJGZKHjT-2560-80.jpg%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22summary%22%3A%22A%20far%20from%20small%20tenkeyless%20board%20boasting%20a%20premium%20feature%20set.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2F8bitdo-retro-mechanical-keyboard-review-c64-edition%2F%22%2C%22title%22%3A%228BitDo%20Retro%20Mechanical%20Keyboard%20review%20(C64%20Edition)%22%2C%22score%22%3A83%2C%22publishDate%22%3A%222025-02-27T16%3A01%3A28Z%22%2C%22strapline%22%3A%22This%20Commodore-themed%20keyboard%20has%20a%20commanding%20presence.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2F4Fm9SKiBgHgQc4Fkpeqjg8-2560-80.png%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22summary%22%3A%22This%20Commodore-themed%20keyboard%20has%20a%20commanding%20presence.%22%7D%2C%7B%22category%22%3A%22Gaming%20Keyboards%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2Fx3vJGuPk9P6J6uWtbP9sfC-2197-80.jpg%22%2C%22strapline%22%3A%22A%20compact%20but%20chonky%20boi%20with%20Hall%20effect%20switches.%22%2C%22publishDate%22%3A%222025-02-24T14%3A24%3A07Z%22%2C%22title%22%3A%22Lemokey%20L5%20HE%208K%20keyboard%20review%22%2C%22score%22%3A87%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Flemokey-l5-he-8k-keyboard-review%2F%22%2C%22summary%22%3A%22A%20compact%20but%20chonky%20boi%20with%20Hall%20effect%20switches.%22%7D%2C%7B%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2Fiehqwgjbk2LEXLDZNhrs5G-1920-80.jpg%22%2C%22strapline%22%3A%22The%20world’s%20first%20induction%20keyboard%20fails%20to%20materialise%20into%20a%20must-have%20product.%22%2C%22publishDate%22%3A%222025-02-18T10%3A00%3A00Z%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fducky-one-x-review%2F%22%2C%22title%22%3A%22Ducky%20One%20X%20review%22%2C%22score%22%3A60%2C%22summary%22%3A%22The%20world’s%20first%20induction%20keyboard%20fails%20to%20materialise%20into%20a%20must-have%20product.%22%7D%2C%7B%22category%22%3A%22Gaming%20Keyboards%22%2C%22publishDate%22%3A%222025-02-11T13%3A16%3A11Z%22%2C%22strapline%22%3A%22Gamakay’s%20latest%20mechanical%20choice%20is%20cheap%2C%20but%20not%20entirely%20cheerful.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FG993ivJgpPPQQM2FmRGBfS-2560-80.jpg%22%2C%22title%22%3A%22Gamakay%20TK101%20review%22%2C%22score%22%3A64%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fgamakay-tk101-review%2F%22%2C%22summary%22%3A%22Gamakay’s%20latest%20mechanical%20choice%20is%20cheap%2C%20but%20not%20entirely%20cheerful.%22%7D%2C%7B%22category%22%3A%22Gaming%20Keyboards%22%2C%22strapline%22%3A%22Low-profile%2C%20reasonably%20priced%2C%20and%20hella%20Hall%20effect.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FvVTM8UwsCNrfGVC5YmEnyb-2560-80.jpg%22%2C%22publishDate%22%3A%222025-01-28T17%3A23%3A24Z%22%2C%22title%22%3A%22NuPhy%20Air60%20HE%20review%22%2C%22score%22%3A92%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fnuphy-air60-he-review%2F%22%2C%22summary%22%3A%22Low-profile%2C%20reasonably%20priced%2C%20and%20hella%20Hall%20effect.%22%7D%2C%7B%22title%22%3A%22NZXT%20Function%20Elite%20MiniTKL%20review%22%2C%22score%22%3A77%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fnzxt-function-elite-minitkl-review%2F%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FNrzmC7AXdYAaMzpStsgvf3-2560-80.jpg%22%2C%22strapline%22%3A%22Form%20and%20function%2C%20though%20pricier%20than%20the%20competition.%22%2C%22publishDate%22%3A%222025-01-28T16%3A00%3A00Z%22%2C%22summary%22%3A%22Form%20and%20function%2C%20though%20pricier%20than%20the%20competition.%22%7D%2C%7B%22publishDate%22%3A%222025-01-17T17%3A29%3A17Z%22%2C%22strapline%22%3A%22Logitech%20has%20offered%20a%20solid%20entrypoint%20into%20rapid%20trigger%20play.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FWwm69LS4MtwHR5az7PNZAc-2560-80.jpg%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Flogitech-g-pro-x-tkl-rapid-review%2F%22%2C%22title%22%3A%22Logitech%20G%20Pro%20X%20TKL%20Rapid%20review%22%2C%22score%22%3A86%2C%22summary%22%3A%22Logitech%20has%20offered%20a%20solid%20entrypoint%20into%20rapid%20trigger%20play.%22%7D%2C%7B%22category%22%3A%22Gaming%20Keyboards%22%2C%22publishDate%22%3A%222025-01-16T12%3A46%3A36Z%22%2C%22strapline%22%3A%22Paying%20the%20price%20for%20top-tier%20typing.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2F6SRREkZNdawHq2ee6cPhyh-1920-80.jpg%22%2C%22score%22%3A77%2C%22title%22%3A%22Razer%20BlackWidow%20V4%20Pro%2075%25%20review%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Frazer-blackwidow-v4-pro-75-percent-review%2F%22%2C%22summary%22%3A%22Paying%20the%20price%20for%20top-tier%20typing.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fcorsair-k70-core-review%2F%22%2C%22title%22%3A%22Corsair%20K70%20Core%20review%22%2C%22score%22%3A83%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FsMKjpva2D56oAKNwVSMwg5-1920-80.jpg%22%2C%22strapline%22%3A%22Clicky%20but%20quiet%2C%20the%20Corsair%20K70%20Core%20RGB%20is%20an%20excellent%20mid-price%20board.%22%2C%22publishDate%22%3A%222024-12-26T15%3A00%3A00Z%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22summary%22%3A%22Clicky%20but%20quiet%2C%20the%20Corsair%20K70%20Core%20RGB%20is%20an%20excellent%20mid-price%20board.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fsteelseries-apex-pro-tkl-gen-3-review%2F%22%2C%22title%22%3A%22SteelSeries%20Apex%20Pro%20TKL%20Gen%203%20review%22%2C%22score%22%3A82%2C%22publishDate%22%3A%222024-11-07T14%3A47%3A01Z%22%2C%22strapline%22%3A%22You’re%20paying%20a%20lot%20for%20a%20TKL%20board%20here%2C%20but%20you%20get%20a%20lot%20in%20return.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2F9hrgaGRR433RzYBiQFUzL5-1920-80.jpg%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22summary%22%3A%22You’re%20paying%20a%20lot%20for%20a%20TKL%20board%20here%2C%20but%20you%20get%20a%20lot%20in%20return.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Flogitech-g915-x-lightspeed-review%2F%22%2C%22title%22%3A%22Logitech%20G915%20X%20Lightspeed%20review%22%2C%22score%22%3A70%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FKi8ktJdsYoQAJ2ihdY7wTj-1920-80.jpg%22%2C%22strapline%22%3A%22This%20is%20a%20lovely%20keyboard%20that’s%20spoiled%20by%20the%20worst%20parts%20of%20Logitech.%22%2C%22publishDate%22%3A%222024-10-31T11%3A00%3A46Z%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22summary%22%3A%22This%20is%20a%20lovely%20keyboard%20that’s%20spoiled%20by%20the%20worst%20parts%20of%20Logitech.%22%7D%2C%7B%22strapline%22%3A%22A%20lesser-spotted%20near%20full-size%20option%20with%20Hall%20effect%20switches.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FKPT6tXSiM675XNjxbicdra-2560-80.jpg%22%2C%22publishDate%22%3A%222024-10-29T12%3A40%3A04Z%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fkeychron-q5-he-review%2F%22%2C%22title%22%3A%22Keychron%20Q5%20HE%20review%22%2C%22score%22%3A82%2C%22summary%22%3A%22A%20lesser-spotted%20near%20full-size%20option%20with%20Hall%20effect%20switches.%22%7D%2C%7B%22category%22%3A%22Gaming%20Keyboards%22%2C%22publishDate%22%3A%222024-10-29T11%3A19%3A41Z%22%2C%22strapline%22%3A%22Rapid%20trigger%20switches%20make%20this%20a%20snappy%20customer.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2F2gNnwiuz8GzrW7VVLw3wFe-2560-80.jpg%22%2C%22title%22%3A%22Wooting%2080HE%20review%22%2C%22score%22%3A78%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fwooting-80he-review%2F%22%2C%22summary%22%3A%22Rapid%20trigger%20switches%20make%20this%20a%20snappy%20customer.%22%7D%2C%7B%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2Fs2ENajd8krmsVYKCuEy9hH-2560-80.jpg%22%2C%22strapline%22%3A%22The%20Lemokey%20L4%20delivers%20a%20premium%20experience%20from%20Keychron%E2%80%99s%20more%20affordable%20brand%20at%20an%20odd%20price.%22%2C%22publishDate%22%3A%222024-10-22T14%3A41%3A09Z%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Flemokey-l4-review%2F%22%2C%22title%22%3A%22Lemokey%20L4%20review%22%2C%22score%22%3A85%2C%22summary%22%3A%22The%20Lemokey%20L4%20delivers%20a%20premium%20experience%20from%20Keychron%E2%80%99s%20more%20affordable%20brand%20at%20an%20odd%20price.%22%7D%2C%7B%22category%22%3A%22Gaming%20Keyboards%22%2C%22publishDate%22%3A%222024-10-10T16%3A14%3A03Z%22%2C%22strapline%22%3A%22A%20massively%20customisable%20keeb%2C%20but%20what%20you%20get%20out%20of%20the%20box%20is%20strangely%20average%20for%20the%20price.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2F5L32uCcwTqoVi7TDdqAYFF-2560-80.jpg%22%2C%22title%22%3A%22Glorious%20GMMK%203%20HE%20keyboard%20review%22%2C%22score%22%3A73%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fglorious-gmmk-3-he-keyboard-review%2F%22%2C%22summary%22%3A%22A%20massively%20customisable%20keeb%2C%20but%20what%20you%20get%20out%20of%20the%20box%20is%20strangely%20average%20for%20the%20price.%22%7D%2C%7B%22title%22%3A%22Dygma%20Defy%20review%22%2C%22score%22%3A75%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fdygma-defy-review%2F%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22publishDate%22%3A%222024-10-04T15%3A10%3A08Z%22%2C%22strapline%22%3A%22Powerful%2C%20pretty%2C%20and%20very%2C%20very%20pricey.%20Alas%2C%20not%20perfect.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FVNioL7qXHqrV6ikbCoKywj-1920-80.jpg%22%2C%22summary%22%3A%22Powerful%2C%20pretty%2C%20and%20very%2C%20very%20pricey.%20Alas%2C%20not%20perfect.%22%7D%2C%7B%22category%22%3A%22Gaming%20Keyboards%22%2C%22publishDate%22%3A%222024-10-01T14%3A02%3A51Z%22%2C%22strapline%22%3A%22If%20you’re%20looking%20for%20a%20mechanical%20keeb%2C%20there%20are%20options%20here%20galore.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FNgWpeAnqjPvzNrheax3LDW-1890-80.jpg%22%2C%22score%22%3Anull%2C%22title%22%3A%22This%20compact%20gaming%20keyboard%20scored%2093%25%20in%20review%20and%20is%20down%20to%20%2450%20with%20a%20variety%20of%20switches%20and%20colors%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fthis-compact-gaming-keyboard-scored-93-in-review-and-is-down-to-dollar50-with-a-variety-of-switches-and-colors%2F%22%2C%22summary%22%3A%22If%20you’re%20looking%20for%20a%20mechanical%20keeb%2C%20there%20are%20options%20here%20galore.%22%7D%2C%7B%22title%22%3A%22Logitech’s%20new%20G915%20X%20keyboard%20is%20influenced%20by%20negative%20Amazon%20reviews%3A%20Engineers%20looked%20at%20community%20feedback%20and%20’wanted%20to%20address%20that’%22%2C%22score%22%3Anull%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Flogitechs-new-g915-x-keyboard-is-influenced-by-negative-amazon-reviews-engineers-looked-at-community-feedback-and-wanted-to-address-that%2F%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22publishDate%22%3A%222024-09-17T18%3A01%3A00Z%22%2C%22strapline%22%3A%22Low%20profile%2C%20high%20impact.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FeC3bWM53yQgtLFu3nARfkF-2000-80.jpg%22%2C%22summary%22%3A%22Low%20profile%2C%20high%20impact.%22%7D%2C%7B%22publishDate%22%3A%222024-09-05T15%3A25%3A13Z%22%2C%22strapline%22%3A%22Take%20a%20low-profile%2C%20wireless%20mechanical%20keyboard%2C%20split%20the%20keys%20in%20two%20and%20stick%20a%20touchpad%20between%20them.%20Now%20you’ve%20got%20a%20Kinesis%20Form.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2F6RATBFNKjmVNAtBNHz3YG-1920-80.jpg%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fkinesis-form-review%2F%22%2C%22title%22%3A%22Kinesis%20Form%20review%22%2C%22score%22%3A83%2C%22summary%22%3A%22Take%20a%20low-profile%2C%20wireless%20mechanical%20keyboard%2C%20split%20the%20keys%20in%20two%20and%20stick%20a%20touchpad%20between%20them.%20Now%20you’ve%20got%20a%20Kinesis%20Form.%22%7D%2C%7B%22category%22%3A%22Gaming%20Keyboards%22%2C%22publishDate%22%3A%222024-08-24T11%3A00%3A56Z%22%2C%22strapline%22%3A%22A%20marvellous%20wooden%20finish%20with%20all%20the%20benefits%20of%20the%20very%20latest%20Hall%20effect%20switches.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FYm4T7mEWYS6CcyhTDBns2Z-2560-80.jpg%22%2C%22score%22%3A88%2C%22title%22%3A%22Keychron%20K2%20HE%20review%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fkeychron-k2-he-review%2F%22%2C%22summary%22%3A%22A%20marvellous%20wooden%20finish%20with%20all%20the%20benefits%20of%20the%20very%20latest%20Hall%20effect%20switches.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fducky-zero-6108-review%2F%22%2C%22title%22%3A%22Ducky%20Zero%206108%20review%22%2C%22score%22%3A86%2C%22publishDate%22%3A%222024-07-30T14%3A51%3A31Z%22%2C%22strapline%22%3A%22Ducky%20delivers%20an%20excellent%20mechanical%20gaming%20keyboard%20for%20just%20under%20%24100.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FxNemvXyNkDDGDjfQtcATHG-2560-80.jpg%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22summary%22%3A%22Ducky%20delivers%20an%20excellent%20mechanical%20gaming%20keyboard%20for%20just%20under%20%24100.%22%7D%2C%7B%22strapline%22%3A%22One%20of%20the%20gaming%20greats%20weighed%20down%20by%20an%20absurdly%20heavy%20price%20tag.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FJ2uKQnu33wbpScW4cLhCmP-1920-80.jpg%22%2C%22publishDate%22%3A%222024-07-25T13%3A14%3A33Z%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fasus-rog-azoth-extreme-review%2F%22%2C%22title%22%3A%22Asus%20ROG%20Azoth%20Extreme%20review%22%2C%22score%22%3A70%2C%22summary%22%3A%22One%20of%20the%20gaming%20greats%20weighed%20down%20by%20an%20absurdly%20heavy%20price%20tag.%22%7D%2C%7B%22title%22%3A%22Alienware%20Pro%20Wireless%20Gaming%20Keyboard%20review%22%2C%22score%22%3A84%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Falienware-pro-wireless-gaming-keyboard-review%2F%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22strapline%22%3A%22Refreshingly%20old-school%20yet%20with%20all%20the%20mod%20cons.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FgwFyWPwbvZ4K7PpHyM6JeR-2560-80.jpg%22%2C%22publishDate%22%3A%222024-07-12T10%3A07%3A46Z%22%2C%22summary%22%3A%22Refreshingly%20old-school%20yet%20with%20all%20the%20mod%20cons.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Fkeychron-q3-max-review%2F%22%2C%22title%22%3A%22Keychron%20Q3%20Max%20review%22%2C%22score%22%3A92%2C%22strapline%22%3A%22The%20complete%20package.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2F7aagRTLWQVoENFfdSpZKgR-1920-80.jpg%22%2C%22publishDate%22%3A%222024-07-09T15%3A56%3A32Z%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22summary%22%3A%22The%20complete%20package.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Frazer-blackwidow-v4-75-review%2F%22%2C%22title%22%3A%22Razer%20BlackWidow%20V4%2075%25%20review%22%2C%22score%22%3A75%2C%22publishDate%22%3A%222024-06-27T14%3A07%3A41Z%22%2C%22strapline%22%3A%22A%20solid%20compact%20gaming%20keyboard%20with%20hot-swappable%20switches.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2F3pqB4LbYN3monJRA64DMNg-2560-80.jpg%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22summary%22%3A%22A%20solid%20compact%20gaming%20keyboard%20with%20hot-swappable%20switches.%22%7D%2C%7B%22title%22%3A%22Razer%20Huntsman%20V3%20Pro%20TKL%20review%22%2C%22score%22%3A85%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Frazer-huntsman-v3-pro-tkl-review%2F%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FeDW8sx2TJbPpJnhkAsnQ2K-2560-80.jpg%22%2C%22strapline%22%3A%22Pricey%20but%20powerful%20performance%20in%20a%20compact%20package.%22%2C%22publishDate%22%3A%222024-06-27T10%3A38%3A23Z%22%2C%22summary%22%3A%22Pricey%20but%20powerful%20performance%20in%20a%20compact%20package.%22%7D%2C%7B%22title%22%3A%22Logitech%20Pro%20X%2060%20keyboard%20review%22%2C%22score%22%3A77%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-keyboards%2Flogitech-pro-x60-keyboard-review%2F%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22strapline%22%3A%22Are%20you%20an%20esports%20pro%3F%20No%2C%20me%20neither.%20But%20what%20of%20their%20keebs%3F%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2F6XQgM5MFsiTPtpdVY2UTyC-2560-80.jpg%22%2C%22publishDate%22%3A%222024-05-20T16%3A33%3A58Z%22%2C%22summary%22%3A%22Are%20you%20an%20esports%20pro%3F%20No%2C%20me%20neither.%20But%20what%20of%20their%20keebs%3F%22%7D%2C%7B%22title%22%3A%22Cherry%20Xtrfy%20K5V2%20review%22%2C%22score%22%3A71%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-desktops%2Fcherry-xtrfy-k5v2-review%2F%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FawxuPbPJbfsEqW9wckPoCT-1920-80.jpg%22%2C%22strapline%22%3A%22New%20switches%2C%20who%20dis%3F%22%2C%22publishDate%22%3A%222024-04-19T13%3A32%3A15Z%22%2C%22summary%22%3A%22New%20switches%2C%20who%20dis%3F%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-desktops%2Fasus-rog-falchion-rx-low-profile-review%2F%22%2C%22title%22%3A%22Asus%20ROG%20Falchion%20RX%20Low%20Profile%20review%22%2C%22score%22%3A88%2C%22strapline%22%3A%22A%20gaming%20keyboard%20with%20a%20lot%20to%20offer%20considering%20its%20small%20stature.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FNkuGeHFSwz3WWghG6FLnpL-1920-80.jpg%22%2C%22publishDate%22%3A%222024-03-27T13%3A55%3A59Z%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22summary%22%3A%22A%20gaming%20keyboard%20with%20a%20lot%20to%20offer%20considering%20its%20small%20stature.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-desktops%2Fdas-keyboard-6-professional-review%2F%22%2C%22title%22%3A%22Das%20Keyboard%206%20Professional%20review%22%2C%22score%22%3A90%2C%22publishDate%22%3A%222024-03-20T15%3A47%3A21Z%22%2C%22strapline%22%3A%22Das%E2%80%99%20latest%20keyboard%20is%20a%20winner%20for%20the%20typists%20and%20mechanical%20traditionalists.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FDjVpBMe59frci8FWFhR93E-2560-80.jpg%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22summary%22%3A%22Das%E2%80%99%20latest%20keyboard%20is%20a%20winner%20for%20the%20typists%20and%20mechanical%20traditionalists.%22%7D%2C%7B%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FyfXAtrwVmUxmfCRVQv55GY-2560-80.jpg%22%2C%22strapline%22%3A%22A%20little%20keyboard%20with%20very%20little%20to%20complain%20about.%22%2C%22publishDate%22%3A%222024-03-20T11%3A42%3A04Z%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-desktops%2Fcorsair-k65-plus-review%2F%22%2C%22title%22%3A%22Corsair%20K65%20Plus%20review%22%2C%22score%22%3A88%2C%22summary%22%3A%22A%20little%20keyboard%20with%20very%20little%20to%20complain%20about.%22%7D%2C%7B%22publishDate%22%3A%222024-03-11T15%3A15%3A08Z%22%2C%22strapline%22%3A%22A%20solid%20mid-range%20optical%20gaming%20keyboard%20with%20a%20couple%20aces%20up%20its%20sleeve.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FyaUevV5xMUU6q6qM6Pxw79-1920-80.jpg%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-desktops%2Fnzxt-function-2-gaming-keyboard-review%2F%22%2C%22score%22%3A75%2C%22title%22%3A%22NZXT%20Function%202%20review%22%2C%22summary%22%3A%22A%20solid%20mid-range%20optical%20gaming%20keyboard%20with%20a%20couple%20aces%20up%20its%20sleeve.%22%7D%2C%7B%22title%22%3A%22Endgame%20Gear%20KB65HE%20review%22%2C%22score%22%3A88%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fendgame-gear-kb65he-review%2F%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FjAakHDNzZPhU2SKAqHSKxH-2560-80.jpg%22%2C%22strapline%22%3A%22Endgame%20Gear%E2%80%99s%20first%20gaming%20keyboard%20is%20a%20real%20winner%2C%20especially%20for%20FPS%20titles%22%2C%22publishDate%22%3A%222024-02-14T16%3A10%3A14Z%22%2C%22summary%22%3A%22Endgame%20Gear%E2%80%99s%20first%20gaming%20keyboard%20is%20a%20real%20winner%2C%20especially%20for%20FPS%20titles%22%7D%2C%7B%22strapline%22%3A%22When%20the%20saying%20’look%20but%20don’t%20touch’%20gets%20applied%20to%20a%20keyboard.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FR2CW3AAWVqu4vdvhKgNdan-1920-80.jpg%22%2C%22publishDate%22%3A%222024-02-13T15%3A28%3A40Z%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Flogitech-wave-keys-review%2F%22%2C%22title%22%3A%22Logitech%20Wave%20Keys%20review%22%2C%22score%22%3A55%2C%22summary%22%3A%22When%20the%20saying%20’look%20but%20don’t%20touch’%20gets%20applied%20to%20a%20keyboard.%22%7D%2C%7B%22title%22%3A%22Logitech%20ERGO%20K860%20review%22%2C%22score%22%3A78%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Flogitech-ergo-k860-keyboard-review%2F%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22strapline%22%3A%22Is%20an%20office-focused%20ergonomic%20keyboard%20worth%20considering%20if%20you’re%20a%20PC%20gamer%3F%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FB6JQGtU4hR85VAuFgLCdAJ-1920-80.jpg%22%2C%22publishDate%22%3A%222024-02-13T11%3A40%3A37Z%22%2C%22summary%22%3A%22Is%20an%20office-focused%20ergonomic%20keyboard%20worth%20considering%20if%20you’re%20a%20PC%20gamer%3F%22%7D%2C%7B%22publishDate%22%3A%222024-02-09T15%3A05%3A33Z%22%2C%22strapline%22%3A%22One%20small%20step%20for%20ergo%20keebs%2C%20one%20giant%20leap%20of%20a%20learning%20curve.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FD9DBsPyNeR77CP2kNx2cMj-1920-80.jpg%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fzsa-moonlander-review%2F%22%2C%22title%22%3A%22ZSA%20Moonlander%20review%22%2C%22score%22%3A89%2C%22summary%22%3A%22One%20small%20step%20for%20ergo%20keebs%2C%20one%20giant%20leap%20of%20a%20learning%20curve.%22%7D%2C%7B%22title%22%3A%22MoErgo%20Glove80%20review%22%2C%22score%22%3A87%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fmoergo-glove80-review%2F%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FADNhqFGjL8EHnxxtMZ2PtN-1920-80.jpg%22%2C%22strapline%22%3A%22The%20Matterhorn%20of%20ergo%20keebs%3A%20Steep%20curves%2C%20steep%20price%2C%20steep%20learning%20period.%22%2C%22publishDate%22%3A%222024-01-26T12%3A29%3A15Z%22%2C%22summary%22%3A%22The%20Matterhorn%20of%20ergo%20keebs%3A%20Steep%20curves%2C%20steep%20price%2C%20steep%20learning%20period.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fkinesis-gaming-freestyle-edge-rgb-review%2F%22%2C%22title%22%3A%22Kinesis%20Gaming%20Freestyle%20Edge%20RGB%20review%22%2C%22score%22%3A91%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FcwAyGNuRXBLnBUQqSFdRi6-1920-80.jpg%22%2C%22strapline%22%3A%22A%20near-perfect%20but%20pricey%20ergonomic%20keyboard%20for%20PC%20gamers.%22%2C%22publishDate%22%3A%222024-01-19T14%3A45%3A18Z%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22summary%22%3A%22A%20near-perfect%20but%20pricey%20ergonomic%20keyboard%20for%20PC%20gamers.%22%7D%2C%7B%22strapline%22%3A%22A%20legend%20returns%2C%20this%20time%20with%20added%20nerdiness%2C%20and%20new%20switches.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FSPLEks4VbPKUNqkrdoDheU-2560-80.jpg%22%2C%22publishDate%22%3A%222024-01-16T15%3A36%3A57Z%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fdrop-shift-v2-review%2F%22%2C%22title%22%3A%22Drop%20Shift%20V2%20review%22%2C%22score%22%3A79%2C%22summary%22%3A%22A%20legend%20returns%2C%20this%20time%20with%20added%20nerdiness%2C%20and%20new%20switches.%22%7D%2C%7B%22title%22%3A%22Cloud%20Nine%20C959%20ErgoTKL%20review%22%2C%22score%22%3A86%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fcloud-nine-c959-ergotkl-review%2F%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22strapline%22%3A%22An%20ideal%20entry%20to%20the%20world%20of%20ergo%20keebs%20for%20gamers.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2Fhqb6kqpKoByHqBbf3QYmbW-1920-80.jpg%22%2C%22publishDate%22%3A%222024-01-16T14%3A21%3A01Z%22%2C%22summary%22%3A%22An%20ideal%20entry%20to%20the%20world%20of%20ergo%20keebs%20for%20gamers.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fducky-projectd-outlaw65-keyboard-review-build%2F%22%2C%22score%22%3A88%2C%22title%22%3A%22Ducky%20ProjectD%20Outlaw65%20review%22%2C%22publishDate%22%3A%222023-12-01T14%3A58%3A47Z%22%2C%22strapline%22%3A%22Build%20yourself%20a%20killer%20keyboard.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2F5FkCajXVcedpthQV6Jpbz4-1920-80.jpg%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22summary%22%3A%22Build%20yourself%20a%20killer%20keyboard.%22%7D%2C%7B%22category%22%3A%22Gaming%20Keyboards%22%2C%22strapline%22%3A%22A%20tactile%20mechanical%20keyboard%20with%20an%20executive%20design.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FdP2cPWNTfFnxTcL39PRWKJ-1948-80.jpg%22%2C%22publishDate%22%3A%222023-11-29T11%3A52%3A02Z%22%2C%22title%22%3A%22Cherry%20KC%20200%20MX%20review%22%2C%22score%22%3A79%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fcherry-kc-200-mx-review%2F%22%2C%22summary%22%3A%22A%20tactile%20mechanical%20keyboard%20with%20an%20executive%20design.%22%7D%2C%7B%22category%22%3A%22Gaming%20Keyboards%22%2C%22strapline%22%3A%22Probably%20the%20fastest%20gaming%20keyboard%20I’ve%20ever%20used.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FtEiA9zNJGxKrNoPhRsGJgC-1920-80.jpg%22%2C%22publishDate%22%3A%222023-09-06T15%3A44%3A59Z%22%2C%22title%22%3A%22Corsair%20K70%20Max%20review%22%2C%22score%22%3A80%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fcorsair-k70-max-gaming-keyboard-review%2F%22%2C%22summary%22%3A%22Probably%20the%20fastest%20gaming%20keyboard%20I’ve%20ever%20used.%22%7D%2C%7B%22score%22%3A93%2C%22title%22%3A%22Asus%20ROG%20Strix%20Scope%20II%2096%20Wireless%20review%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fasus-rog-strix-scope-ii-96-wireless-review%2F%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22publishDate%22%3A%222023-08-11T11%3A30%3A29Z%22%2C%22strapline%22%3A%22This%20is%20quite%20simply%20the%20best%20new%20gaming%20keyboard%20I’ve%20used%20in%20years.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FLbuwR79hS5RRmxcTrUJwN8-1920-80.jpg%22%2C%22summary%22%3A%22This%20is%20quite%20simply%20the%20best%20new%20gaming%20keyboard%20I’ve%20used%20in%20years.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fmountain-makalu-max-review%2F%22%2C%22title%22%3A%22Mountain%20Makalu%20Max%22%2C%22score%22%3A74%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FbaUcX8ngrkzcG8iVCX4mHW-1920-80.jpg%22%2C%22strapline%22%3A%22A%20great%20customisable%20wired%20gaming%20mouse%2C%20but%20a%20sometimes%20frustrating%20wireless%20one.%22%2C%22publishDate%22%3A%222023-07-27T11%3A49%3A43Z%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22summary%22%3A%22A%20great%20customisable%20wired%20gaming%20mouse%2C%20but%20a%20sometimes%20frustrating%20wireless%20one.%22%7D%2C%7B%22title%22%3A%22DrunkDeer%20A75%22%2C%22score%22%3A71%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fdrunkdeer-a75-gaming-keyboard-review%2F%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FiqGjoBkyesZG3xEEsdPqom-1920-80.jpg%22%2C%22strapline%22%3A%22A%20lovely%20piece%20of%20hardware%20hugely%20let%20down%20by%20its%20frustratingly%20limited%20software.%22%2C%22publishDate%22%3A%222023-06-08T09%3A13%3A02Z%22%2C%22summary%22%3A%22A%20lovely%20piece%20of%20hardware%20hugely%20let%20down%20by%20its%20frustratingly%20limited%20software.%22%7D%2C%7B%22strapline%22%3A%22The%20best%20budget%20gaming%20keyboard%2C%20and%20one%20with%20more%20than%20just%20a%20nod%20to%20the%20enthusiast%20keeb%20community.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FTahrQjZsMBfnFKLfNGrdKU-1920-80.jpg%22%2C%22publishDate%22%3A%222023-04-20T11%3A21%3A17Z%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fgskill-km250-rgb-gaming-keyboard-review%2F%22%2C%22title%22%3A%22G.Skill%20KM250%20RGB%22%2C%22score%22%3A90%2C%22summary%22%3A%22The%20best%20budget%20gaming%20keyboard%2C%20and%20one%20with%20more%20than%20just%20a%20nod%20to%20the%20enthusiast%20keeb%20community.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fdrop-sense75-mechnical-keyboard-review%2F%22%2C%22title%22%3A%22Drop%20Sense75%22%2C%22score%22%3A71%2C%22strapline%22%3A%22A%20new%2075%25%20contender%20at%20an%20incredibly%20high%20price.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FaFH8zincUYKEft49aLxCS6-2560-80.jpg%22%2C%22publishDate%22%3A%222023-04-14T16%3A23%3A33Z%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22summary%22%3A%22A%20new%2075%25%20contender%20at%20an%20incredibly%20high%20price.%22%7D%2C%7B%22score%22%3A80%2C%22title%22%3A%22SteelSeries%20Apex%20Pro%20TKL%20Wireless%20(2023)%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fsteelseries-apex-pro-tkl-wireless-2023-review%2F%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22publishDate%22%3A%222023-04-04T11%3A04%3A41Z%22%2C%22strapline%22%3A%22A%20compact%20keyboard%20that%20focuses%20on%20swift%20switches%20for%20fast-paced%20gaming.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FM4wSvX8J8EEUE26uPSMzjC-1920-80.jpg%22%2C%22summary%22%3A%22A%20compact%20keyboard%20that%20focuses%20on%20swift%20switches%20for%20fast-paced%20gaming.%22%7D%2C%7B%22score%22%3A75%2C%22title%22%3A%22Roccat%20Magma%20Mini%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Froccat-magma-mini-review%2F%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22publishDate%22%3A%222023-02-16T14%3A57%3A21Z%22%2C%22strapline%22%3A%22An%20impressive%20budget%20gaming%20membrane%20keyboard%20for%20the%2060%25%20enthusiast%2C%20and%20all%20for%20%2450.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FCKWiArthUtfqiFxVbQDCyh-2560-80.jpg%22%2C%22summary%22%3A%22An%20impressive%20budget%20gaming%20membrane%20keyboard%20for%20the%2060%25%20enthusiast%2C%20and%20all%20for%20%2450.%22%7D%2C%7B%22publishDate%22%3A%222023-02-09T16%3A38%3A39Z%22%2C%22strapline%22%3A%22An%20ultra-thin%2C%20wireless%20gaming%20keyboard%20with%20exclusive%20Cherry%20MX%20keyswitches%2C%20though%20that%20exclusivity%20comes%20at%20a%20price.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FM7xtqUkTh6ExkQPnjk7zMR-1920-80.jpg%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fcorsair-k100-air-review%2F%22%2C%22title%22%3A%22Corsair%20K100%20Air%22%2C%22score%22%3A76%2C%22summary%22%3A%22An%20ultra-thin%2C%20wireless%20gaming%20keyboard%20with%20exclusive%20Cherry%20MX%20keyswitches%2C%20though%20that%20exclusivity%20comes%20at%20a%20price.%22%7D%2C%7B%22strapline%22%3A%22Move%20out%20of%20the%20way%2C%20the%20king%20of%20small%20keyboards%20is%20here%20(as%20long%20as%20you%20can%20afford%20it).%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2Fm6sNDZmGxnyiUXLiWtaucG-2560-80.jpg%22%2C%22publishDate%22%3A%222023-02-03T12%3A39%3A57Z%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhhkb-professional-hybrid-type-s-review%2F%22%2C%22title%22%3A%22HHKB%20Professional%20Hybrid%20Type%20S%22%2C%22score%22%3A90%2C%22summary%22%3A%22Move%20out%20of%20the%20way%2C%20the%20king%20of%20small%20keyboards%20is%20here%20(as%20long%20as%20you%20can%20afford%20it).%22%7D%2C%7B%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2Fkaepex27kFE3RK4AnrPZP4-1920-80.jpg%22%2C%22strapline%22%3A%22This%20compact%20optical%20keyboard%20is%20built%20for%20competitive%20gaming.%22%2C%22publishDate%22%3A%222023-01-09T13%3A47%3A22Z%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fsteelseries-apex-9-tkl-gaming-keyboard-review%2F%22%2C%22title%22%3A%22SteelSeries%20Apex%209%20TKL%22%2C%22score%22%3A70%2C%22summary%22%3A%22This%20compact%20optical%20keyboard%20is%20built%20for%20competitive%20gaming.%22%7D%2C%7B%22title%22%3A%22Logitech%20G715%22%2C%22score%22%3A68%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Flogitech-g715-wireless-gaming-keyboard-review%2F%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22publishDate%22%3A%222022-08-11T16%3A11%3A49Z%22%2C%22strapline%22%3A%22A%20highly%20customizable%2C%20wireless%20gaming%20keyboard%20that%20asks%20a%20little%20too%20much.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FYubV8g6bacJiCrCifC94Si-1920-80.jpg%22%2C%22summary%22%3A%22A%20highly%20customizable%2C%20wireless%20gaming%20keyboard%20that%20asks%20a%20little%20too%20much.%22%7D%2C%7B%22title%22%3A%22Wooting%2060HE%22%2C%22score%22%3A91%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fwooting-60he-review%2F%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FoQaqiCa4RjBFmjydjqgRuC-1920-80.jpg%22%2C%22strapline%22%3A%22A%20sublime%20gaming%20keyboard%20that%20really%20can%20improve%20your%20game.%22%2C%22publishDate%22%3A%222022-08-02T16%3A14%3A38Z%22%2C%22summary%22%3A%22A%20sublime%20gaming%20keyboard%20that%20really%20can%20improve%20your%20game.%22%7D%2C%7B%22category%22%3A%22Gaming%20Keyboards%22%2C%22strapline%22%3A%22A%20low%20profile%20wireless%20gaming%20keyboard%20that%20doesn’t%20quite%20clack%20how%20I’d%20like.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2Farwr9KKjjMKjchCFPQFt5Y-1920-80.jpg%22%2C%22publishDate%22%3A%222022-07-26T15%3A48%3A24Z%22%2C%22title%22%3A%22Razer%20DeathStalker%20V2%20Pro%22%2C%22score%22%3A70%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Frazer-deathstalker-v2-pro-review%2F%22%2C%22summary%22%3A%22A%20low%20profile%20wireless%20gaming%20keyboard%20that%20doesn’t%20quite%20clack%20how%20I’d%20like.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fducky-one-3-review%2F%22%2C%22score%22%3A88%2C%22title%22%3A%22Ducky%20One%203%20Fuji%22%2C%22publishDate%22%3A%222022-06-08T16%3A30%3A43Z%22%2C%22strapline%22%3A%22Other%20gaming%20keyboards%20need%20to%20convince%20you%20why%20they’re%20better%20than%20a%20Ducky%2C%20not%20the%20other%20way%20around.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FEyfPckag7hf4f7Ywmx5huK-1920-80.jpg%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22summary%22%3A%22Other%20gaming%20keyboards%20need%20to%20convince%20you%20why%20they’re%20better%20than%20a%20Ducky%2C%20not%20the%20other%20way%20around.%22%7D%2C%7B%22publishDate%22%3A%222022-04-21T16%3A38%3A48Z%22%2C%22strapline%22%3A%22Even%20though%20I’ve%20got%20the%20keyboard%2C%20at%20this%20price%2C%20it%20still%20feels%20like%20stealing.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FGZs5qggGeZUjphPT5KvFLj-1920-80.jpg%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fvissles-v84-gaming-keyboard-review%2F%22%2C%22title%22%3A%22Vissles%20V84%20gaming%20keyboard%20review%22%2C%22score%22%3A89%2C%22summary%22%3A%22Even%20though%20I’ve%20got%20the%20keyboard%2C%20at%20this%20price%2C%20it%20still%20feels%20like%20stealing.%22%7D%2C%7B%22publishDate%22%3A%222022-04-19T14%3A58%3A04Z%22%2C%22strapline%22%3A%22A%20simply%20stunning%20board%2C%20and%20the%20best%2060%25%20keeb%20we’ve%20ever%20had%20the%20pleasure%20of%20testing.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FEtpBorKdGh8RYJUGbTxzSe-1920-80.jpg%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fmountain-everest-60-gaming-keyboard-review%2F%22%2C%22title%22%3A%22Mountain%20Everest%2060%20gaming%20keyboard%20review%22%2C%22score%22%3A93%2C%22summary%22%3A%22A%20simply%20stunning%20board%2C%20and%20the%20best%2060%25%20keeb%20we’ve%20ever%20had%20the%20pleasure%20of%20testing.%22%7D%2C%7B%22title%22%3A%22Cherry%20MX%2010.0N%20RGB%20keyboard%20review%22%2C%22score%22%3A85%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fcherry-mx-10-0-n-gaming-keyboard-review%2F%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FQM37Dq42xAi8NcoiEedTxn-1920-80.jpg%22%2C%22strapline%22%3A%22A%20sleek%2C%20low-profile%20gaming%20keyboard%20that%20doesn’t%20let%20up%20on%20speed.%22%2C%22publishDate%22%3A%222022-04-11T11%3A30%3A52Z%22%2C%22summary%22%3A%22A%20sleek%2C%20low-profile%20gaming%20keyboard%20that%20doesn’t%20let%20up%20on%20speed.%22%7D%2C%7B%22publishDate%22%3A%222022-03-15T17%3A27%3A27Z%22%2C%22strapline%22%3A%22The%20techy%20terrarium%20of%20gaming%20PC%20chassis.%20FYI%2C%20that’s%20a%20good%20thing.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2Fpw6KVDWSt9xmAuMy7hkNza-1920-80.jpg%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhyte-y60-pc-case-review%2F%22%2C%22title%22%3A%22Hyte%20Y60%20PC%20case%20review%22%2C%22score%22%3A77%2C%22summary%22%3A%22The%20techy%20terrarium%20of%20gaming%20PC%20chassis.%20FYI%2C%20that’s%20a%20good%20thing.%22%7D%2C%7B%22title%22%3A%22MSI%20Vigor%20GK50%20Low%20Profile%20Gaming%20Keyboard%20review%22%2C%22score%22%3A71%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fmsi-vigor-gk50-low-profile-gaming-keyboard-review%2F%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22strapline%22%3A%22MSI’s%20newest%20low-profile%20keyboard%20frees%20you%20from%20needing%20a%20wrist%20rest%20but%20it%20lacks%20the%20wow%20factor.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FzRsR3nzhKCJwjWa2kWbddA-1920-80.jpg%22%2C%22publishDate%22%3A%222022-02-01T11%3A20%3A30Z%22%2C%22summary%22%3A%22MSI’s%20newest%20low-profile%20keyboard%20frees%20you%20from%20needing%20a%20wrist%20rest%20but%20it%20lacks%20the%20wow%20factor.%22%7D%2C%7B%22publishDate%22%3A%222022-01-13T13%3A55%3A26Z%22%2C%22strapline%22%3A%22Wireless%2C%20compact%2C%20mechanical%2C%20and%20cheap%3B%20the%20Keychron%20K2%20offers%20the%20lot.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FsCVjjFFcgYh4MeMwzvzQa6-1920-80.jpg%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fkeychron-k2-review%2F%22%2C%22title%22%3A%22Keychron%20K2%20Version%202%20review%22%2C%22score%22%3A82%2C%22summary%22%3A%22Wireless%2C%20compact%2C%20mechanical%2C%20and%20cheap%3B%20the%20Keychron%20K2%20offers%20the%20lot.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fakko-prunus-lannesiana-3098b-keyboard-review%2F%22%2C%22title%22%3A%22Akko%20Prunus%20Lannesiana%203098B%20gaming%20keyboard%20review%22%2C%22score%22%3A87%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FvWz8VY2X8teAvNztfLey2J-1920-80.jpg%22%2C%22strapline%22%3A%22If%20you’re%20not%20into%20your%20horticultural%20latin%2C%20that’s%20a%20cherry%20blossom%20tree.%20Hence%20the%20pink.%22%2C%22publishDate%22%3A%222022-01-12T16%3A58%3A46Z%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22summary%22%3A%22If%20you’re%20not%20into%20your%20horticultural%20latin%2C%20that’s%20a%20cherry%20blossom%20tree.%20Hence%20the%20pink.%22%7D%2C%7B%22category%22%3A%22Gaming%20Keyboards%22%2C%22strapline%22%3A%22A%20do-it-all%20gaming%20keyboard%20that%20won%E2%80%99t%20break%20the%20bank.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FYHhhrM92xVhofbhPXcENbR-1920-80.jpg%22%2C%22publishDate%22%3A%222022-01-07T17%3A11%3A51Z%22%2C%22title%22%3A%22Roccat%20Pyro%20review%22%2C%22score%22%3A89%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Froccat-pyro-review%2F%22%2C%22summary%22%3A%22A%20do-it-all%20gaming%20keyboard%20that%20won%E2%80%99t%20break%20the%20bank.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fwooting-two-he-review%2F%22%2C%22title%22%3A%22Wooting%20Two%20HE%20gaming%20keyboard%20review%22%2C%22score%22%3A91%2C%22publishDate%22%3A%222021-12-13T12%3A00%3A48Z%22%2C%22strapline%22%3A%22The%20Wooting%20Two%20HE%20uses%20the%20magic%20of%20magnets%20to%20deliver%20a%20gaming%20keyboard%20like%20no%20other.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FRSXUAoyJmJueMuY92diAPc-1920-80.jpg%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22summary%22%3A%22The%20Wooting%20Two%20HE%20uses%20the%20magic%20of%20magnets%20to%20deliver%20a%20gaming%20keyboard%20like%20no%20other.%22%7D%2C%7B%22title%22%3A%22Whirlwind%20FX%20Atom%2060%25%20keyboard%20review%22%2C%22score%22%3A69%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fwhirlwind-fx-atom-60-keyboard-review%2F%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22strapline%22%3A%22A%20budget%2060%25%20mechanical%20keyboard%20with%20Gateron%20switches%20and%20multi-device%20RGB%20sync%20support.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2Fif4GMZ8mozi8EtyMLPfJ47-1920-80.jpg%22%2C%22publishDate%22%3A%222021-11-16T15%3A27%3A24Z%22%2C%22summary%22%3A%22A%20budget%2060%25%20mechanical%20keyboard%20with%20Gateron%20switches%20and%20multi-device%20RGB%20sync%20support.%22%7D%2C%7B%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FyevWaMLN4g3r4MfEH7X5aX-2560-80.jpg%22%2C%22strapline%22%3A%22The%20German%20brand%20goes%20big%20with%20its%20first%20mic%20for%20gamers.%22%2C%22publishDate%22%3A%222021-10-21T10%3A43%3A45Z%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Froccat-torch-microphone-review%2F%22%2C%22title%22%3A%22Roccat%20Torch%20microphone%20review%22%2C%22score%22%3A80%2C%22summary%22%3A%22The%20German%20brand%20goes%20big%20with%20its%20first%20mic%20for%20gamers.%22%7D%2C%7B%22category%22%3A%22Gaming%20Keyboards%22%2C%22publishDate%22%3A%222021-09-27T16%3A57%3A44Z%22%2C%22strapline%22%3A%22Bringing%208K%20HyperPolling%2C%20sound%20dampening%2C%20and%20simpler%20cordage%20to%20the%20Huntsman%20Elite’s%20design.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FJvefevPfHz23nSsAVZP4aK-1920-80.jpg%22%2C%22title%22%3A%22Razer%20Huntsman%20V2%20mechanical%20gaming%20keyboard%20review%22%2C%22score%22%3A89%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Frazer-huntsman-v2-mechanical-gaming-keyboard-review%2F%22%2C%22summary%22%3A%22Bringing%208K%20HyperPolling%2C%20sound%20dampening%2C%20and%20simpler%20cordage%20to%20the%20Huntsman%20Elite’s%20design.%22%7D%2C%7B%22category%22%3A%22Gaming%20Keyboards%22%2C%22publishDate%22%3A%222021-08-31T10%3A47%3A36Z%22%2C%22strapline%22%3A%22One%20rubber%20dome%20to%20rule%20them%20all.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FarGFLJ9tGpqdifEkPa9Lki-1920-80.jpg%22%2C%22title%22%3A%22Roccat%20Magma%20membrane%20gaming%20keyboard%20review%22%2C%22score%22%3A79%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Froccat-magma-gaming-keyboard-review%2F%22%2C%22summary%22%3A%22One%20rubber%20dome%20to%20rule%20them%20all.%22%7D%2C%7B%22title%22%3A%22Unicomp%20New%20Model%20M%20review%22%2C%22score%22%3A88%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Funicomp-new-model-m-review%2F%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22strapline%22%3A%22A%20modern%20take%20on%20a%20computing%20classic.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FeVaGHBztYCsYzoLAz88F7P-1919-80.jpg%22%2C%22publishDate%22%3A%222021-08-03T17%3A04%3A58Z%22%2C%22summary%22%3A%22A%20modern%20take%20on%20a%20computing%20classic.%22%7D%2C%7B%22category%22%3A%22Gaming%20Keyboards%22%2C%22publishDate%22%3A%222021-06-01T11%3A50%3A14Z%22%2C%22strapline%22%3A%22Razer%20shrinks%20the%20BlackWidow%20V3%20Pro%20into%20a%2065%25%20keyboard%20and%20it’s%20great.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FGQzBBfKZ9jBAqiR8rtTKDU-1920-80.jpg%22%2C%22score%22%3A88%2C%22title%22%3A%22Razer%20BlackWidow%20V3%20Mini%20HyperSpeed%20review%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Frazer-blackwidow-v3-mini-hyperspeed-review%2F%22%2C%22summary%22%3A%22Razer%20shrinks%20the%20BlackWidow%20V3%20Pro%20into%20a%2065%25%20keyboard%20and%20it’s%20great.%22%7D%2C%7B%22title%22%3A%22Corsair%20K70%20RGB%20TKL%20Champion%20Series%20gaming%20keyboard%20review%22%2C%22score%22%3A93%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fcorsair-k70-rgb-tkl-champion-series-gaming-keyboard-review%2F%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FQqnBCpZdkt3niadNCnqztY-1920-80.jpg%22%2C%22strapline%22%3A%22The%20Champ%20is%20here.%22%2C%22publishDate%22%3A%222021-04-21T16%3A15%3A58Z%22%2C%22summary%22%3A%22The%20Champ%20is%20here.%22%7D%2C%7B%22title%22%3A%22Mountain%20Everest%20Max%20gaming%20keyboard%20review%22%2C%22score%22%3A89%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fmountain-everest-max-review-gaming-keyboard%2F%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22publishDate%22%3A%222020-12-04T16%3A59%3A13Z%22%2C%22strapline%22%3A%22The%20new%20peripheral%20kid%20on%20the%20block%20is%20trying%20to%20ascend%20to%20the%20heights%2C%20and%20is%20looking%20good%20doing%20it.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FGxdRAeQgyiqiKEFidagHim-1494-80.jpg%22%2C%22summary%22%3A%22The%20new%20peripheral%20kid%20on%20the%20block%20is%20trying%20to%20ascend%20to%20the%20heights%2C%20and%20is%20looking%20good%20doing%20it.%22%7D%2C%7B%22title%22%3A%22Glorious%20Modular%20Mechanical%20Keyboard%20(GMMK)%20review%22%2C%22score%22%3A88%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fglorious-modular-mechanical-gaming-keyboard-gmmk-review-performance%2F%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FbvYSfJ6sS5EYwuiS7JwpDN-1920-80.jpg%22%2C%22strapline%22%3A%22The%20world’s%20first%20fully%20RGB%20modular%20mechanical%20gaming%20keyboard.%22%2C%22publishDate%22%3A%222020-11-03T11%3A37%3A50Z%22%2C%22summary%22%3A%22The%20world’s%20first%20fully%20RGB%20modular%20mechanical%20gaming%20keyboard.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Ffnatic-ministreak-speed-switch-gaming-keyboard-review%2F%22%2C%22title%22%3A%22Fnatic%20Ministreak%20Keyboard%20review%22%2C%22score%22%3A75%2C%22strapline%22%3A%22Fnatic%20has%20updated%20its%20popular%20Ministreak%20keyboard%20with%20a%20compact%20design%20and%20fast%20activating%20switches.%20But%20how%20good%20is%20it%20for%20gaming%3F%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FJcZHaVxG529fh5BFKggboi-1920-80.jpg%22%2C%22publishDate%22%3A%222020-10-02T12%3A13%3A29Z%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22summary%22%3A%22Fnatic%20has%20updated%20its%20popular%20Ministreak%20keyboard%20with%20a%20compact%20design%20and%20fast%20activating%20switches.%20But%20how%20good%20is%20it%20for%20gaming%3F%22%7D%2C%7B%22category%22%3A%22Gaming%20Keyboards%22%2C%22publishDate%22%3A%222020-10-01T13%3A25%3A48Z%22%2C%22strapline%22%3A%22Can%20you%20improve%20on%20keyboard%20perfection%3F%20Corsair%20thinks%20it%20can.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FLLcFqVQsifPgizMWbdh4c-1920-80.jpg%22%2C%22score%22%3A91%2C%22title%22%3A%22Corsair%20K100%20RGB%20Optical-Mechanical%20Gaming%20Keyboard%20review%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fcorsair-k100-gaming-keyboard-review%2F%22%2C%22summary%22%3A%22Can%20you%20improve%20on%20keyboard%20perfection%3F%20Corsair%20thinks%20it%20can.%22%7D%2C%7B%22publishDate%22%3A%222020-07-20T16%3A10%3A12Z%22%2C%22strapline%22%3A%22HyperX%20livens%20up%20the%20Alloy%20Elite%202%20by%20adding%20some%20pudding.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2For9FLc5t6jWmh7feVbGz4V-1280-80.jpg%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhyperx-alloy-elite-2-gaming-keyboard-review-pudding-keycaps%2F%22%2C%22title%22%3A%22HyperX%20Alloy%20Elite%202%20gaming%20keyboard%20review%22%2C%22score%22%3A86%2C%22summary%22%3A%22HyperX%20livens%20up%20the%20Alloy%20Elite%202%20by%20adding%20some%20pudding.%22%7D%2C%7B%22category%22%3A%22Gaming%20Keyboards%22%2C%22strapline%22%3A%22The%20Logitech%20G915%20TKL%20delivers%20wireless%20gaming%20in%20a%20compact%20package%20for%20a%20high%20price.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2F4WLBi8XasMjhXKXoGhxQVX-1930-80.jpg%22%2C%22publishDate%22%3A%222020-05-29T09%3A06%3A00Z%22%2C%22title%22%3A%22Logitech%20G915%20TKL%20gaming%20keyboard%20review%22%2C%22score%22%3A82%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Flogitech-g915-tkl-wireless-gaming-keyboard-review%2F%22%2C%22summary%22%3A%22The%20Logitech%20G915%20TKL%20delivers%20wireless%20gaming%20in%20a%20compact%20package%20for%20a%20high%20price.%22%7D%2C%7B%22title%22%3A%22HyperX%20x%20Ducky%20One%202%20Mini%20gaming%20keyboard%20review%22%2C%22score%22%3A80%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhyperx-x-ducky-one-2-mini-gaming-keyboard-review%2F%22%2C%22category%22%3A%22Gaming%20Keyboards%22%2C%22strapline%22%3A%22This%20limited-run%20Ducky%20has%20the%20flash%20and%20performance%20you%20want%20in%20a%20portable%20keyboard.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2Fn6draufCRTcVzZtDoj2fKZ-2560-80.jpg%22%2C%22publishDate%22%3A%222020-05-14T19%3A53%3A16Z%22%2C%22summary%22%3A%22This%20limited-run%20Ducky%20has%20the%20flash%20and%20performance%20you%20want%20in%20a%20portable%20keyboard.%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(); } 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 = 1348; const CATEGORY_COUNT = 114; 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”; } const qLower = (q || ”).toLowerCase(); const catReq = CATEGORY.replace(/s$/i, ”).toLowerCase(); let localResults = LOCAL_REVIEWS; if (q) { localResults = LOCAL_REVIEWS.filter(r => { const titleLower = (r.title || ”).toLowerCase(); const urlLower = (r.url || ”).toLowerCase(); const qWords = qLower.split(‘ ‘).filter(w => w.trim().length > 0); return qWords.every(w => titleLower.includes(w) || urlLower.includes(w)); }); } let finalResults = localResults; if (!q && finalResults.length > 50) { finalResults = finalResults.slice(0, 50); } if (finalResults.length > 0) { renderResults(finalResults); } else { renderResults([]); } } function renderResults(results) { if(!results || results.length === 0) { resultsContainer.innerHTML = ‘

No results found.

‘; return; } let html = ‘

    ‘; results.forEach((res, i) => { let scoreHtml = res.score ? ‘

    ‘ + res.score + ‘

    ‘ : ”; // Format URL properly let targetUrl = res.url.startsWith(“http”) ? res.url : “https://www.pcgamer.com” + res.url; let borderBottom = i < results.length – 1 ? 'border-bottom:1px solid #f5f5f5;' : ''; html += '

  • ‘; }); html += ‘

‘; 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 = ‘Read full review‘; } readerContent.innerHTML = ‘

Loading article…

‘; fetch(API_BASE + “/api/read?url=” + encodeURIComponent(targetUrl) + “&t=” + Date.now()) .then(res => res.json()) .then(data => { if(!data || !data.content) { readerContent.innerHTML = ‘

Could not load article content.

‘; return; } let html = ‘

‘; html += ‘

‘; html += ‘

‘ + (data.title || ”) + ‘

‘; if (data.byline || data.date) { html += ‘

‘; if (data.byline) { html += ‘BY ‘ + data.byline + ‘‘; } if (data.byline && data.date) { html += ‘|‘; } if (data.date) { html += ‘PUBLISHED ‘ + data.date + ‘‘; } html += ‘

‘; } html += ‘

‘; html += ‘

‘; html += data.content; html += ‘

‘; html += ‘.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; }’; readerContent.innerHTML = html; }) .catch(err => { console.error(err); readerContent.innerHTML = ‘

An error occurred loading the article.

‘; }); } 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 fetch fetchResults(“”); } ” width=”100%” height=”140″ style=”border: none; width: 100%; max-width: 1024px; margin: 0 auto; display: block; background: transparent; transition: height 0.3s ease-out;” title=”PC Gamer Gaming Keyboards Widget”> function sendMessageToParentWindow(typeOfMessage, message = null) { let postMessage = { bordeaux: message }; let url = “http://crow.futurecdn.net/output/pcg-widget-gaming-keyboards-00055/pcg-widget-gaming-keyboards-00055.html”; if (typeOfMessage === “analytics”) { postMessage = { analytics: { …message } }; } if (postMessage !== {}) { window.parent.postMessage( postMessage, url ); } } let message = { targeting: { [“pcg-widget-gaming-keyboards-00055.html”]: “PC Gamer Gaming Keyboards Widget” } } window.onload = sendMessageToParentWindow(“bordeaux”, message);

An 8 KHz polling rate, Hall effect switches, rapid trigger, and nice double-shot PBT keycaps. To think you can get all of this, and a pretty unique aesthetic for just $40, makes the geeky hardware kid in me very happy. The Gamakay x NaughShark NS68 is noticeably a cheaper keyboard in feel, but those internals truly are phenomenal.

Key specs: Bluetooth, 2.4 GHz and wired | 8 KHz | Hall effect View Deal

We reviewed the 8BitDo Retro mechanical keyboard, and it still claims a place on James’ desk. That’s because it combines a neat look with a great feel, and we even manage to get use out of its admittedly pretty niche Super Buttons.

Key specs: Wired / wireless | Dye-sub PBT keycaps | TKL | 200-hour battery life

Price check: Best Buy $79.99View Deal

A teeny-tiny keyboard with impressive credentials. You can customize the lighting to your heart’s content with Razer’s Chroma RGB lighting, but the headline feature here is the inclusion of optical-mechanical switches. It’s also got PBT keys and Razer Hypershift for all your favorite macros.

Key specs: Tenkeyless | Razer optomechanical switch (clicky or linear) | Chroma RGB lighting

Price check: Best Buy $99.99 (black model)View Deal

This Logitech G Pro gives you all the functionality with less of the fuss. It comes with a choice of key switches, a detachable Micro USB cable for easy portability, 3-step angle adjustment and a lot of customization options in the G Hub software. Those backlit keys are on the subtle side of RGB lighting, and the Logitech comes off as a class act for less at this price.

Key specs: Tenkeyless | Mechanical | Lightsync RGB backlit keys

Price check: Best Buy $84.48View Deal

Considered to be the best low-profile mechanical gaming keyboard by us, thanks to great switches, super solid build quality, and great media controls, this is a great board, only really let down by its usually high price. With $30 off, this becomes a more attractive package.

Key specs: Tenkeyless | Wireless | Low profile mechanical switches

Price check: Asus $119.99View Deal

This is one of the best keyboards going and right now it’s at a cracking price. You’re getting excellent typing feel, stellar gaming performance, sound dampening that actually works, and a build quality that stands well above most of the competition.

Key specs: Numpad | Wireless | Hot-swappable mechanical switchesView Deal

That’s quite a lot of cash for a keyboard, but it shows in not only the tech underneath the keys (like some impressive switches) but also build quality and extra quality-of-life features. If you’re looking for a rapid trigger keyboard to cut fractions off your reaction time, and like the idea of an extra little screen to display in-game information, this is an excellent choice, especially with a tidy discount.

Key specs: OmniPoint 3.0 HyperMagnetic Switches | Wired | Rapid trigger

Price check: Best Buy $259.99View Deal

The Asus ROG Azoth Extreme Wireless is still a pricey ‘ol keeb even with a discount. We still liked it a lot in our review, though, and that’s for good reason. It’s beautifully constructed, with a super typing feel and useful media controls.

Key specs: 75% | ROG NX Snow linear switches | Aluminium chassis | OLED screen

Price check: Best Buy $439.99View Deal

Prime Day gaming mouse deals

body { margin: 0; padding: 0; background: transparent; } <iframe srcdoc=" #widget-anawyq4 *:not(svg):not(path) { box-sizing: border-box; } #widget-anawyq4 h1, #widget-anawyq4 p, #widget-anawyq4 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-rotate-x: initial; –tw-rotate-y: initial; –tw-rotate-z: initial; –tw-skew-x: initial; –tw-skew-y: initial; –tw-space-y-reverse: 0; –tw-divide-y-reverse: 0; –tw-border-style: solid; –tw-leading: initial; –tw-font-weight: initial; –tw-tracking: 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-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; –tw-scale-x: 1; –tw-scale-y: 1; –tw-scale-z: 1; }}#widget-anawyq4, :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-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-green-50: oklch(98.2% .018 155.826); –color-green-600: oklch(62.7% .194 149.214); –color-green-700: oklch(52.7% .154 150.069); –color-emerald-600: oklch(59.6% .145 163.225); –color-blue-50: oklch(97% .014 254.604); –color-blue-600: oklch(54.6% .245 262.881); –color-indigo-50: oklch(96.2% .018 272.314); –color-indigo-600: oklch(51.1% .262 276.966); –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-rose-700: oklch(51.4% .222 16.935); –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-black: #000; –color-white: #fff; –spacing: 4px; –container-sm: 384px; –container-md: 448px; –container-2xl: 672px; –container-6xl: 1152px; –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-medium: 500; –font-weight-semibold: 600; –font-weight-bold: 700; –font-weight-black: 900; –tracking-tight: -.025em; –tracking-wider: .05em; –tracking-widest: .1em; –leading-tight: 1.25; –leading-relaxed: 1.625; –radius-lg: 8px; –radius-xl: 12px; –radius-2xl: 16px; –ease-out: cubic-bezier(0, 0, .2, 1); –animate-spin: spin 1s linear infinite; –animate-pulse: pulse 2s cubic-bezier(.4, 0, .6, 1) infinite; –blur-sm: 8px; –blur-md: 12px; –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;.pointer-events-none { pointer-events: none; }.absolute { position: absolute; }.fixed { position: fixed; }.relative { position: relative; }.inset-0 { inset: calc(var(–spacing) * 0); }.top-1/2 { top: 50%; }.top-[76px] { top: 76px; }.top-[80px] { top: 80px; }.right-2 { right: calc(var(–spacing) * 2); }.right-3 { right: calc(var(–spacing) * 3); }.right-4 { right: calc(var(–spacing) * 4); }.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); }.z-20 { z-index: 20; }.z-50 { z-index: 50; }.z-[60] { z-index: 60; }.z-[100] { z-index: 100; }.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); }.mx-auto { margin-inline: auto; }.prose { color: var(–tw-prose-#widget-anawyq4); 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-anawyq4 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-anawyq4 tr:last-child):not(:where([class~=”not-prose”], [class~=”not-prose”] *)) { border-bottom-width: 0px; }.prose :where(t#widget-anawyq4 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-anawyq4: 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-anawyq4: 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-anawyq4 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-anawyq4 td:first-child, tfoot td:first-child):not(:where([class~=”not-prose”], [class~=”not-prose”] *)) { padding-inline-start: 0px; }.prose :where(t#widget-anawyq4 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-anawyq4 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-anawyq4 td:first-child, tfoot td:first-child):not(:where([class~=”not-prose”], [class~=”not-prose”] *)) { padding-inline-start: 0px; }.prose-lg :where(t#widget-anawyq4 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-1 { margin-top: calc(var(–spacing) * 1); }.mt-2 { margin-top: calc(var(–spacing) * 2); }.mt-4 { margin-top: calc(var(–spacing) * 4); }.mt-8 { margin-top: calc(var(–spacing) * 8); }.mt-auto { margin-top: auto; }.mr-5 { margin-right: calc(var(–spacing) * 5); }.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-6 { margin-bottom: calc(var(–spacing) * 6); }.mb-8 { margin-bottom: calc(var(–spacing) * 8); }.ml-auto { margin-left: auto; }.line-clamp-2 { -webkit-line-clamp: 2; -webkit-box-orient: vertical; display: -webkit-box; overflow: hidden; }.block { display: block; }.flex { display: flex; }.hidden { display: none; }.inline { display: inline; }.inline-block { display: inline-block; }.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-8 { height: calc(var(–spacing) * 8); }.h-10 { height: calc(var(–spacing) * 10); }.h-24 { height: calc(var(–spacing) * 24); }.h-[76px] { height: 76px; }.h-[600px] { height: 600px; }.h-auto { height: auto; }.h-full { height: 100%; }.max-h-[90vh] { max-height: 90vh; }.min-h-[400px] { min-height: 400px; }.min-h-screen { min-height: 100vh; }.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-8 { width: calc(var(–spacing) * 8); }.w-10 { width: calc(var(–spacing) * 10); }.w-20 { width: calc(var(–spacing) * 20); }.w-32 { width: calc(var(–spacing) * 32); }.w-40 { width: calc(var(–spacing) * 40); }.w-full { width: 100%; }.w-px { width: 1px; }.max-w-2xl { max-width: var(–container-2xl); }.max-w-6xl { max-width: var(–container-6xl); }.max-w-[65ch] { max-width: 65ch; }.max-w-md { max-width: var(–container-md); }.max-w-none { max-width: none; }.max-w-sm { max-width: var(–container-sm); }.min-w-0 { min-width: calc(var(–spacing) * 0); }.min-w-[800px] { min-width: 800px; }.flex-1 { flex: 1 1 0%; }.flex-none { flex: 0 0 auto; }.flex-shrink-0, .shrink-0 { flex-shrink: 0; }.-translate-x-1/2 { –tw-translate-x: -50%; 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); }.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-pointer { cursor: pointer; }.resize-y { resize: vertical; }.list-none { list-style-type: none; }.appearance-none { appearance: none; }.flex-col { flex-direction: column; }.flex-wrap { flex-wrap: wrap; }.items-center { align-items: center; }.items-start { align-items: flex-start; }.justify-between { justify-content: space-between; }.justify-center { justify-content: center; }.justify-end { justify-content: flex-end; }.gap-1 { gap: calc(var(–spacing) * 1); }.gap-1.5 { gap: calc(var(–spacing) * 1.5); }.gap-2 { gap: calc(var(–spacing) * 2); }.gap-3 { gap: calc(var(–spacing) * 3); }.gap-4 { gap: calc(var(–spacing) * 4); }.gap-6 { gap: calc(var(–spacing) * 6); }.gap-8 { gap: calc(var(–spacing) * 8); }:where(.space-y-2 > :not(:last-child)) { –tw-space-y-reverse: 0; margin-block-start: calc(calc(var(–spacing) * 2) * var(–tw-space-y-reverse)); margin-block-end: calc(calc(var(–spacing) * 2) * calc(1 – var(–tw-space-y-reverse))); }.gap-x-4 { column-gap: calc(var(–spacing) * 4); }.gap-y-2 { row-gap: calc(var(–spacing) * 2); }: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); }.self-start { align-self: flex-start; }.truncate { text-overflow: ellipsis; white-space: nowrap; overflow: hidden; }.overflow-auto { overflow: auto; }.overflow-hidden { overflow: hidden; }.overflow-y-auto { overflow-y: auto; }.rounded-2xl { border-radius: var(–radius-2xl); }.rounded-full { border-radius: 3.40282e+38px; }.rounded-lg { border-radius: var(–radius-lg); }.rounded-xl { border-radius: var(–radius-xl); }.border { border-style: var(–tw-border-style); border-width: 1px; }.border-2 { border-style: var(–tw-border-style); border-width: 2px; }.border-t { border-top-style: var(–tw-border-style); border-top-width: 1px; }.border-t-4 { border-top-style: var(–tw-border-style); border-top-width: 4px; }.border-r { border-right-style: var(–tw-border-style); border-right-width: 1px; }.border-b { border-bottom-style: var(–tw-border-style); border-bottom-width: 1px; }.border-dashed { –tw-border-style: dashed; border-style: dashed; }.border-none { –tw-border-style: none; border-style: none; }.border-[#DC1F26] { border-color: rgb(220, 31, 38); }.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-100 { border-color: var(–color-red-100); }.border-rose-100 { border-color: var(–color-rose-100); }.bg-[#DC1F26] { background-color: rgb(220, 31, 38); }.bg-[#ededed] { background-color: rgb(237, 237, 237); }.bg-black { background-color: var(–color-black); }.bg-green-600 { background-color: var(–color-green-600); }.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-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-red-50 { background-color: var(–color-red-50); }.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-rose-600 { background-color: var(–color-rose-600); }.bg-transparent { background-color: rgba(0, 0, 0, 0); }.bg-white { background-color: var(–color-white); }.fill-current { fill: currentcolor; }.object-contain { object-fit: contain; }.object-cover { object-fit: cover; }.p-0 { padding: calc(var(–spacing) * 0); }.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-6 { padding: calc(var(–spacing) * 6); }.p-8 { padding: calc(var(–spacing) * 8); }.px-2 { padding-inline: calc(var(–spacing) * 2); }.px-3 { padding-inline: calc(var(–spacing) * 3); }.px-4 { padding-inline: calc(var(–spacing) * 4); }.px-6 { padding-inline: calc(var(–spacing) * 6); }.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-3 { padding-block: calc(var(–spacing) * 3); }.py-4 { padding-block: calc(var(–spacing) * 4); }.py-12 { padding-block: calc(var(–spacing) * 12); }.pt-8 { padding-top: calc(var(–spacing) * 8); }.pr-4 { padding-right: calc(var(–spacing) * 4); }.pr-8 { padding-right: calc(var(–spacing) * 8); }.pr-10 { padding-right: calc(var(–spacing) * 10); }.pb-4 { padding-bottom: calc(var(–spacing) * 4); }.pb-8 { padding-bottom: calc(var(–spacing) * 8); }.pl-1.5 { padding-left: calc(var(–spacing) * 1.5); }.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; }.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-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; }.leading-none { –tw-leading: 1; line-height: 1; }.leading-relaxed { –tw-leading: var(–leading-relaxed); line-height: var(–leading-relaxed); }.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-medium { –tw-font-weight: var(–font-weight-medium); font-weight: var(–font-weight-medium); }.font-semibold { –tw-font-weight: var(–font-weight-semibold); font-weight: var(–font-weight-semibold); }.tracking-tight { –tw-tracking: var(–tracking-tight); letter-spacing: var(–tracking-tight); }.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-ellipsis { text-overflow: ellipsis; }.text-[#DC1F26] { color: rgb(220, 31, 38); }.text-black { color: var(–color-black); }.text-emerald-600 { color: var(–color-emerald-600); }.text-green-600 { color: var(–color-green-600); }.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-900 { color: var(–color-neutral-900); }.text-red-500 { color: var(–color-red-500); }.text-red-600 { color: var(–color-red-600); }.text-rose-500 { color: var(–color-rose-500); }.text-rose-600 { color: var(–color-rose-600); }.text-white { color: var(–color-white); }.uppercase { text-transform: uppercase; }.italic { font-style: italic; }.placeholder-neutral-500::placeholder { color: var(–color-neutral-500); }.opacity-0 { opacity: 0; }.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-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-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); }.backdrop-blur-md { –tw-backdrop-blur: blur(var(–blur-md)); 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-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,); }.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)); }.duration-300 { –tw-duration: .3s; transition-duration: 0.3s; }.ease-out { –tw-ease: var(–ease-out); transition-timing-function: var(–ease-out); }.prose-neutral { –tw-prose-#widget-anawyq4: 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-anawyq4: 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; }@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; } .hover:border-black:hover { border-color: var(–color-black); } .hover:border-neutral-300:hover { border-color: var(–color-neutral-300); } .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-200:hover { background-color: var(–color-neutral-200); } .hover:bg-neutral-300:hover { background-color: var(–color-neutral-300); } .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:bg-rose-600:hover { background-color: var(–color-rose-600); } .hover:bg-rose-700:hover { background-color: var(–color-rose-700); } .hover:text-[#DC1F26]:hover { color: rgb(220, 31, 38); } .hover:text-blue-600:hover { color: var(–color-blue-600); } .hover:text-indigo-600:hover { color: var(–color-indigo-600); } .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:text-rose-600:hover { color: var(–color-rose-600); }}.focus:border-rose-500:focus { border-color: var(–color-rose-500); }.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]/20:focus { –tw-ring-color: oklab(57.3239% .195826 .0976754/.2); }.focus:ring-rose-500:focus { –tw-ring-color: var(–color-rose-500); }.focus:outline-none:focus { –tw-outline-style: none; outline-style: none; }.active:scale-95:active { –tw-scale-x: 95%; –tw-scale-y: 95%; –tw-scale-z: 95%; scale: var(–tw-scale-x) var(–tw-scale-y); }@media (min-width: 640px) { .sm:top-[88px] { top: 88px; } .sm:top-[92px] { top: 92px; } .sm:right-3 { right: calc(var(–spacing) * 3); } .sm:left-3 { left: calc(var(–spacing) * 3); } .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:h-6 { height: calc(var(–spacing) * 6); } .sm:w-6 { width: calc(var(–spacing) * 6); } .sm:w-64 { width: calc(var(–spacing) * 64); } .sm:flex-row { flex-direction: row; } .sm:items-center { align-items: center; } .sm:p-3 { padding: calc(var(–spacing) * 3); } .sm:p-8 { padding: calc(var(–spacing) * 8); } .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:h-screen { height: 100vh; } .md:w-80 { width: calc(var(–spacing) * 80); } .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-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-space-y-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-leading { syntax: “*”; inherits: false; }@property –tw-font-weight { syntax: “*”; inherits: false; }@property –tw-tracking { 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: “”; 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: “”; 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: “”; 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-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; }@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; }@keyframes spin { 100% { transform: rotate(360deg); }}@keyframes pulse { 50% { opacity: 0.5; }}

const API_BASE = “https://review-widget-builder-1098919444017.us-west1.run.app”; const CATEGORY = “Gaming Mice”; // Embedded complete category data const LOCAL_REVIEWS = JSON.parse(decodeURIComponent(“%5B%7B%22publishDate%22%3A%222026-05-19T10%3A23%3A40Z%22%2C%22strapline%22%3A%22The%20mouse%20of%20my%20dreams%2C%20but%20my%20dreams%20are%20all%20Counter-Strike%2C%20baby.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2F8bJ322ApjmmmP3PtmZu8US-1595-80.jpg%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Fzowie-ec2-dw-review%2F%22%2C%22score%22%3A82%2C%22title%22%3A%22Zowie%20EC2-DW%20review%22%2C%22summary%22%3A%22The%20mouse%20of%20my%20dreams%2C%20but%20my%20dreams%20are%20all%20Counter-Strike%2C%20baby.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Fsteelseries-aerox-3-wireless-gen-2-review%2F%22%2C%22title%22%3A%22SteelSeries%20Aerox%203%20Wireless%20Gen%202%20review%22%2C%22score%22%3A84%2C%22strapline%22%3A%22A%20worthwhile%20update.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FSqAwbdjSoxvLTT5MURyLqb-1920-80.jpg%22%2C%22publishDate%22%3A%222026-04-07T16%3A30%3A26Z%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22summary%22%3A%22A%20worthwhile%20update.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Frazer-viper-v4-pro-review%2F%22%2C%22score%22%3A95%2C%22title%22%3A%22Razer%20Viper%20V4%20Pro%20review%22%2C%22publishDate%22%3A%222026-04-07T15%3A04%3A03Z%22%2C%22strapline%22%3A%22There’s%20a%20new%20rodent%20king%20in%20town.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FxoAQ3gfaVyEyyQzmpLvNhC-2560-80.jpg%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22summary%22%3A%22There’s%20a%20new%20rodent%20king%20in%20town.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Fmchose-g3-v2-review%2F%22%2C%22score%22%3A84%2C%22title%22%3A%22Mchose%20G3%20V2%20review%22%2C%22publishDate%22%3A%222026-04-02T13%3A21%3A49Z%22%2C%22strapline%22%3A%22Cheap%20and%20cheerful%2C%20without%20feeling%20cheap.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FbTohxd6xZaSCkjVPWGbC7S-2560-80.jpg%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22summary%22%3A%22Cheap%20and%20cheerful%2C%20without%20feeling%20cheap.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Fpulsar-x3-crazylight-mini-review%2F%22%2C%22title%22%3A%22Pulsar%20X3%20CrazyLight%20Mini%20review%22%2C%22score%22%3A89%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FhQTSykvd4eTkUSmpRkeumL-2560-80.jpg%22%2C%22strapline%22%3A%22Hand%20heaven%20for%20relaxed%20claw%20grippers.%22%2C%22publishDate%22%3A%222026-03-16T11%3A00%3A07Z%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22summary%22%3A%22Hand%20heaven%20for%20relaxed%20claw%20grippers.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Fcorsair-sabre-v2-pro-wireless-cf-review%2F%22%2C%22title%22%3A%22Corsair%20Sabre%20V2%20Pro%20Wireless%20CF%20review%22%2C%22score%22%3A68%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FRkwujbWt2JDyBbpqu7RTtE-2560-80.jpg%22%2C%22strapline%22%3A%22A%20carbon%20fibre%20mouse%20for%20an%20eye-watering%20price.%22%2C%22publishDate%22%3A%222026-03-10T11%3A57%3A16Z%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22summary%22%3A%22A%20carbon%20fibre%20mouse%20for%20an%20eye-watering%20price.%22%7D%2C%7B%22title%22%3A%22Mchose%20L7%20Pro%2B%20review%22%2C%22score%22%3A85%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Fmchose-l7-pro-review%2F%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22strapline%22%3A%22Light%20in%20weight%20and%20light%20on%20price.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FciVRHPZ7ccnyiGge9xkN6g-2560-80.jpg%22%2C%22publishDate%22%3A%222026-02-20T16%3A32%3A25Z%22%2C%22summary%22%3A%22Light%20in%20weight%20and%20light%20on%20price.%22%7D%2C%7B%22strapline%22%3A%22Smooth%20and%20’spensive.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FkRFxcGa6FESmoy8D5MKLFD-2560-80.jpg%22%2C%22publishDate%22%3A%222026-02-17T15%3A28%3A29Z%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Fqpad-obsidian-glass-mouse-pad-review%2F%22%2C%22title%22%3A%22QPAD%20Obsidian%20Glass%20mouse%20pad%20review%22%2C%22score%22%3A79%2C%22summary%22%3A%22Smooth%20and%20’spensive.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Frazer-cobra-hyperspeed-review%2F%22%2C%22title%22%3A%22Razer%20Cobra%20HyperSpeed%20review%22%2C%22score%22%3A86%2C%22strapline%22%3A%22Good%20things%20come%20in%20small%20packages.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FtPifCZ7gDhqWYKp5RZ8o8n-2560-80.jpg%22%2C%22publishDate%22%3A%222026-02-10T15%3A52%3A34Z%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22summary%22%3A%22Good%20things%20come%20in%20small%20packages.%22%7D%2C%7B%22category%22%3A%22Gaming%20Mice%22%2C%22publishDate%22%3A%222026-02-10T08%3A01%3A00Z%22%2C%22strapline%22%3A%22Rapid%20trigger%20in%20a%20gaming%20mouse%2C%20and%20it’s%20beautiful.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FvrQmQASs2CggcdvmcpvWsT-2560-80.jpg%22%2C%22score%22%3A95%2C%22title%22%3A%22Logitech%20G%20Pro%20X2%20Superstrike%20review%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Flogitech-g-pro-x2-superstrike-review%2F%22%2C%22summary%22%3A%22Rapid%20trigger%20in%20a%20gaming%20mouse%2C%20and%20it’s%20beautiful.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Fbe-quiet-dark-perk-ergo-review%2F%22%2C%22title%22%3A%22Be%20Quiet!%20Dark%20Perk%20Ergo%20review%22%2C%22score%22%3A70%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FkY34NW973phREqRFQaJ6NG-1920-80.jpg%22%2C%22strapline%22%3A%22Be%20Quiet!%20knows%20how%20to%20build%20a%20gaming%20mouse%20but%20not%20how%20to%20make%20it%20beat%20the%20competition.%22%2C%22publishDate%22%3A%222026-02-03T12%3A00%3A00Z%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22summary%22%3A%22Be%20Quiet!%20knows%20how%20to%20build%20a%20gaming%20mouse%20but%20not%20how%20to%20make%20it%20beat%20the%20competition.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Fpulsar-x2-crazylight-medium-review%2F%22%2C%22score%22%3A79%2C%22title%22%3A%22Pulsar%20X2%20CrazyLight%20Medium%20review%22%2C%22publishDate%22%3A%222026-01-22T16%3A18%3A56Z%22%2C%22strapline%22%3A%22A%20premium%20lightweight%20rodent%20facing%20stiff%20competition.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FrhmHaXBivGYrQV4atsunH-2560-80.jpg%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22summary%22%3A%22A%20premium%20lightweight%20rodent%20facing%20stiff%20competition.%22%7D%2C%7B%22title%22%3A%22MSI%20Versa%20Pro%20Wireless%20%26%20Mouse%20Dock%20Pro%20review%22%2C%22score%22%3A87%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Fmsi-versa-pro-wireless-and-mouse-dock-pro-review%2F%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FUgUK7DoBGpHBwB3Kaosi77-2560-80.jpg%22%2C%22strapline%22%3A%22Plenty%20of%20frills%20for%20less.%22%2C%22publishDate%22%3A%222025-12-03T13%3A59%3A39Z%22%2C%22summary%22%3A%22Plenty%20of%20frills%20for%20less.%22%7D%2C%7B%22title%22%3A%22Orbital%20Pathfinder%20review%22%2C%22score%22%3A91%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Forbital-pathfinder-review%2F%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FoYuVcyScnR2pWiu74V3i8i-1918-80.jpg%22%2C%22strapline%22%3A%22Unlike%20any%20rodent%20we’ve%20ever%20seen%20before.%22%2C%22publishDate%22%3A%222025-11-12T16%3A52%3A22Z%22%2C%22summary%22%3A%22Unlike%20any%20rodent%20we’ve%20ever%20seen%20before.%22%7D%2C%7B%22title%22%3A%22Logitech%20MX%20Master%204%20review%22%2C%22score%22%3A78%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Flogitech-mx-master-4-review%2F%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22publishDate%22%3A%222025-11-07T16%3A21%3A13Z%22%2C%22strapline%22%3A%22A%20mixed%20bag%2C%20but%20it’s%20still%20a%20great%20productivity%20mouse.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FUkiFfPTysJtDStFR8bwCBX-2560-80.jpg%22%2C%22summary%22%3A%22A%20mixed%20bag%2C%20but%20it’s%20still%20a%20great%20productivity%20mouse.%22%7D%2C%7B%22title%22%3A%22Razer%20HyperFlux%20V2%20Wireless%20Charging%20System%20review%22%2C%22score%22%3A68%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Frazer-hyperflux-v2-wireless-charging-system-review%2F%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22publishDate%22%3A%222025-10-28T15%3A35%3A15Z%22%2C%22strapline%22%3A%22How%20much%20are%20you%20willing%20to%20pay%20to%20keep%20cables%20away%3F%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FnzpdTjHWMYs39E3FVQ5ChG-2560-80.jpg%22%2C%22summary%22%3A%22How%20much%20are%20you%20willing%20to%20pay%20to%20keep%20cables%20away%3F%22%7D%2C%7B%22score%22%3A87%2C%22title%22%3A%228BitDo%20Retro%20R8%20review%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2F8bitdo-retro-r8-gaming-mouse-review%2F%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22publishDate%22%3A%222025-10-21T10%3A28%3A00Z%22%2C%22strapline%22%3A%22A%20striking%20look%2C%20great%20charging%20stand%2C%20and%20even%20better%20price%20make%20for%20a%20great%20mouse.%20If%20a%20little%20niche.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FVvGpJYo3HsPZx6zM6ZTGL3-1920-80.jpg%22%2C%22summary%22%3A%22A%20striking%20look%2C%20great%20charging%20stand%2C%20and%20even%20better%20price%20make%20for%20a%20great%20mouse.%20If%20a%20little%20niche.%22%7D%2C%7B%22title%22%3A%22Corsair%20Sabre%20V2%20Pro%20Ultralight%20Wireless%20gaming%20mouse%20review%22%2C%22score%22%3A92%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Fcorsair-sabre-v2-pro-ultralight-wireless-gaming-mouse-review%2F%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FPimsRhmX3h7ryLobyHZMDG-1920-80.jpg%22%2C%22strapline%22%3A%22A%20mouse%20that%20can%20truly%20lay%20claim%20to%20the%20’ultralight’%20title.%22%2C%22publishDate%22%3A%222025-09-26T09%3A40%3A45Z%22%2C%22summary%22%3A%22A%20mouse%20that%20can%20truly%20lay%20claim%20to%20the%20’ultralight’%20title.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Fglorious-model-o3-wireless-review%2F%22%2C%22score%22%3A79%2C%22title%22%3A%22Glorious%20Model%20O3%20Wireless%20review%22%2C%22publishDate%22%3A%222025-09-25T14%3A00%3A00Z%22%2C%22strapline%22%3A%22A%20mouse%20with%20genuine%20battery%20life%20innovation.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FHQf8W2nEuTLMfk2s5DqJVW-2560-80.jpg%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22summary%22%3A%22A%20mouse%20with%20genuine%20battery%20life%20innovation.%22%7D%2C%7B%22title%22%3A%22Corsair%20Scimitar%20Elite%20Wireless%20SE%20review%22%2C%22score%22%3A89%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Fcorsair-scimitar-elite-wireless-se-review%2F%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22strapline%22%3A%22A%20new%20headliner%20for%20the%20best%20MMO%20mouse.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FjYcbDneKHTL2i8Qeq8fHP3-2560-80.jpg%22%2C%22publishDate%22%3A%222025-09-02T12%3A06%3A17Z%22%2C%22summary%22%3A%22A%20new%20headliner%20for%20the%20best%20MMO%20mouse.%22%7D%2C%7B%22score%22%3A90%2C%22title%22%3A%22Razer%20DeathAdder%20V4%20Pro%20review%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Frazer-deathadder-v4-pro-review%2F%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22publishDate%22%3A%222025-07-23T16%3A42%3A30Z%22%2C%22strapline%22%3A%22For%20the%20budding%20professional%20gamer%2C%20the%20new%20DeathAdder%20has%20everything%20you%20could%20want.%20For%20everyone%20else%20it%20might%20be%20a%20stretch.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2Fae8NVtCNRwQbzgB7xrH7gA-2560-80.jpg%22%2C%22summary%22%3A%22For%20the%20budding%20professional%20gamer%2C%20the%20new%20DeathAdder%20has%20everything%20you%20could%20want.%20For%20everyone%20else%20it%20might%20be%20a%20stretch.%22%7D%2C%7B%22title%22%3A%22Razer%20Pro%20Click%20V2%20Vertical%20Edition%20review%22%2C%22score%22%3A80%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Frazer-pro-click-v2-vertical-edition-review%2F%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22strapline%22%3A%22Tall%20and%20heavy%20like%20a%20mountain%2C%20and%20just%20as%20challenging%20to%20traverse.%20But%20the%20view’s%20worth%20it%20once%20you’re%20at%20the%20top.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FKvdW7NePRBAJ3nGA5fq7tP-1920-80.jpg%22%2C%22publishDate%22%3A%222025-07-16T09%3A57%3A11Z%22%2C%22summary%22%3A%22Tall%20and%20heavy%20like%20a%20mountain%2C%20and%20just%20as%20challenging%20to%20traverse.%20But%20the%20view’s%20worth%20it%20once%20you’re%20at%20the%20top.%22%7D%2C%7B%22category%22%3A%22Gaming%20Mice%22%2C%22strapline%22%3A%22There’s%20a%20very%20good%20reason%20why%20it%20has%20such%20a%20big%20thumb%20rest.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FwBumKpgkADiko4zxo8vk4i-1920-80.jpg%22%2C%22publishDate%22%3A%222025-07-15T13%3A18%3A44Z%22%2C%22title%22%3A%22Keychron%20M7%208K%20Wireless%20review%22%2C%22score%22%3A81%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Fkeychron-m7-8k-wireless-review%2F%22%2C%22summary%22%3A%22There’s%20a%20very%20good%20reason%20why%20it%20has%20such%20a%20big%20thumb%20rest.%22%7D%2C%7B%22category%22%3A%22Gaming%20Mice%22%2C%22publishDate%22%3A%222025-06-27T16%3A37%3A39Z%22%2C%22strapline%22%3A%22How%20much%20would%20you%20sacrifice%20for%20portability%3F%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FjPXmpigJNr7sadMQfosxCT-1920-80.jpg%22%2C%22title%22%3A%22Razer%20Joro%20%26%20Basilisk%20Mobile%20review%22%2C%22score%22%3A55%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Frazer-joro-and-basilisk-mobile-review%2F%22%2C%22summary%22%3A%22How%20much%20would%20you%20sacrifice%20for%20portability%3F%22%7D%2C%7B%22title%22%3A%22Glorious%20Model%20O%20Eternal%20review%22%2C%22score%22%3A92%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Fglorious-model-o-eternal-review%2F%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FGSLmtjiLnzGVJByC4JWSxV-1920-80.jpg%22%2C%22strapline%22%3A%22Cheap%20AND%20cheerful.%22%2C%22publishDate%22%3A%222025-06-27T16%3A16%3A10Z%22%2C%22summary%22%3A%22Cheap%20AND%20cheerful.%22%7D%2C%7B%22category%22%3A%22Gaming%20Mice%22%2C%22publishDate%22%3A%222025-06-18T11%3A53%3A16Z%22%2C%22strapline%22%3A%22A%20mean%2C%20lightweight%20mousing%20machine.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FKkNmjZRLQJ4JbgQiggwgSd-1920-80.jpg%22%2C%22score%22%3A73%2C%22title%22%3A%22Endgame%20Gear%20OP1w%204K%20review%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Fendgame-gear-op1w-4k-review%2F%22%2C%22summary%22%3A%22A%20mean%2C%20lightweight%20mousing%20machine.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Fendgame-gear-xm2w-4k-review%2F%22%2C%22title%22%3A%22Endgame%20Gear%20XM2w%204K%20review%22%2C%22score%22%3A82%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FWfedvXm6ECiGUyvWqNiPrF-1920-80.jpg%22%2C%22strapline%22%3A%22Comfortable%20and%20powerful!%22%2C%22publishDate%22%3A%222025-06-18T11%3A52%3A43Z%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22summary%22%3A%22Comfortable%20and%20powerful!%22%7D%2C%7B%22category%22%3A%22Gaming%20Mice%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FBEL4pqNbW3xNjmMNnFD589-1918-80.jpg%22%2C%22strapline%22%3A%22Punching%20well%20above%20its%20weight%20class%2C%20but%20not%20priced%20right%20just%20yet.%22%2C%22publishDate%22%3A%222025-06-16T16%3A44%3A40Z%22%2C%22title%22%3A%22PowerColor%20Alphyn%20AM10%20Wireless%20Gaming%20Mouse%20review%22%2C%22score%22%3A75%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Fpowercolor-alphyn-am10-wireless-gaming-mouse-review%2F%22%2C%22summary%22%3A%22Punching%20well%20above%20its%20weight%20class%2C%20but%20not%20priced%20right%20just%20yet.%22%7D%2C%7B%22score%22%3A66%2C%22title%22%3A%22SteelSeries%20Rival%203%20Gen%202%20Wireless%20review%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Fsteelseries-rival-3-gen-2-wireless-review%2F%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22publishDate%22%3A%222025-05-30T16%3A06%3A52Z%22%2C%22strapline%22%3A%22Great%20battery%20life%20isn’t%20enough%20to%20turn%20my%20opinion%20here.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FfAZz6wquqejg3dMTs7Kp4b-2560-80.jpg%22%2C%22summary%22%3A%22Great%20battery%20life%20isn’t%20enough%20to%20turn%20my%20opinion%20here.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Fkeychron-m5-review%2F%22%2C%22score%22%3A85%2C%22title%22%3A%22Keychron%20M5%20review%22%2C%22publishDate%22%3A%222025-05-15T14%3A37%3A33Z%22%2C%22strapline%22%3A%22This%20is%20what%20you%20get%20if%20you%20take%20an%20ergonomic%2C%20vertical%20mouse%20shell%20and%20stuff%20ultra-fast%20gaming%20hardware%20inside%20it.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FLehaykpBkZxnm3GMdSx3Wa-1920-80.jpg%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22summary%22%3A%22This%20is%20what%20you%20get%20if%20you%20take%20an%20ergonomic%2C%20vertical%20mouse%20shell%20and%20stuff%20ultra-fast%20gaming%20hardware%20inside%20it.%22%7D%2C%7B%22title%22%3A%22Logitech%20G%20PowerPlay%202%20mouse%20pad%20review%22%2C%22score%22%3A40%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Flogitech-g-powerplay-2-mouse-pad-review%2F%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FvafvFNkxffvD7idULjKrW-2560-80.jpg%22%2C%22strapline%22%3A%22A%20downgrade%20over%20the%20first%20version%20in%20almost%20every%20way.%22%2C%22publishDate%22%3A%222025-03-21T17%3A37%3A18Z%22%2C%22summary%22%3A%22A%20downgrade%20over%20the%20first%20version%20in%20almost%20every%20way.%22%7D%2C%7B%22publishDate%22%3A%222025-03-14T13%3A01%3A30Z%22%2C%22strapline%22%3A%22Top-notch%20competitive%20gaming%20performance%20for%20a%20price.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FNRGfeXPMndnNHnVJowTbSH-2560-80.jpg%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Fsteelseries-qck-performance-mouse-pad-review%2F%22%2C%22title%22%3A%22SteelSeries%20QcK%20Performance%20mouse%20pad%20review%22%2C%22score%22%3A91%2C%22summary%22%3A%22Top-notch%20competitive%20gaming%20performance%20for%20a%20price.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Fthe-logitech-g-pro-2-lightspeed-gaming-mouse-is-good-but-as-someone-that-reviewed-it-id-pick-its-predecessor-on-offer-instead%2F%22%2C%22score%22%3Anull%2C%22title%22%3A%22The%20Logitech%20G%20Pro%202%20Lightspeed%20gaming%20mouse%20is%20good%2C%20but%20as%20someone%20that%20reviewed%20it%2C%20I’d%20pick%20its%20predecessor%20on%20offer%20instead%22%2C%22publishDate%22%3A%222025-02-26T15%3A53%3A03Z%22%2C%22strapline%22%3A%22Just%20under%20half%20off%20makes%20an%20already%20good%20mouse%20great.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FNRNFMWHnryjPRb6XvMpaYF-1920-80.jpg%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22summary%22%3A%22Just%20under%20half%20off%20makes%20an%20already%20good%20mouse%20great.%22%7D%2C%7B%22publishDate%22%3A%222025-01-28T16%3A00%3A00Z%22%2C%22strapline%22%3A%22Light%20and%20lovely%2C%20there’s%20just%20something%20missing%20to%20tip%20it%20into%20top-tier%20territory.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2F4ZiTbn7AK8KejVRcLmhxLf-2560-80.jpg%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Fnzxt-lift-elite-wireless-review%2F%22%2C%22title%22%3A%22NZXT%20Lift%20Elite%20Wireless%20review%22%2C%22score%22%3A74%2C%22summary%22%3A%22Light%20and%20lovely%2C%20there’s%20just%20something%20missing%20to%20tip%20it%20into%20top-tier%20territory.%22%7D%2C%7B%22strapline%22%3A%22A%20stripped-down%20racecar%20of%20a%20gaming%20mouse.%20To%20a%20fault%2C%20perhaps.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FY7aok2zLnj3tqt8QUsRgFF-2560-80.jpg%22%2C%22publishDate%22%3A%222025-01-23T14%3A33%3A10Z%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Fglorious-series-2-pro-wireless-mouse-review%2F%22%2C%22title%22%3A%22Glorious%20Series%202%20Pro%20wireless%20mouse%20review%22%2C%22score%22%3A72%2C%22summary%22%3A%22A%20stripped-down%20racecar%20of%20a%20gaming%20mouse.%20To%20a%20fault%2C%20perhaps.%22%7D%2C%7B%22score%22%3A83%2C%22title%22%3A%22Asus%20ROG%20Harpe%20Ace%20Mini%20wireless%20mouse%20review%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Fasus-rog-harpe-ace-mini-wireless-mouse-review%2F%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22publishDate%22%3A%222024-12-27T15%3A00%3A10Z%22%2C%22strapline%22%3A%22A%20super%20speedy%2C%20stylish%20little%20rodent.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FnEtVjoRjhj2tHQsvT27nDf-2560-80.jpg%22%2C%22summary%22%3A%22A%20super%20speedy%2C%20stylish%20little%20rodent.%22%7D%2C%7B%22strapline%22%3A%22A%20well-rounded%2C%20wireless%20gaming%20mouse%20with%20very%20little%20to%20complain%20about.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FKZNesrqx2RaGBqyPxY3ZM6-2560-80.jpg%22%2C%22publishDate%22%3A%222024-11-19T17%3A20%3A23Z%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Fturtle-beach-kone-ii-air-review%2F%22%2C%22title%22%3A%22Turtle%20Beach%20Kone%20II%20Air%20review%22%2C%22score%22%3A89%2C%22summary%22%3A%22A%20well-rounded%2C%20wireless%20gaming%20mouse%20with%20very%20little%20to%20complain%20about.%22%7D%2C%7B%22title%22%3A%22Logitech%20Pro%20X%20Superlight%202%20Dex%20review%22%2C%22score%22%3A84%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Flogitech-pro-x-superlight-2-dex-review%2F%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2Fw8BjFqwM4SuftLTaX2zWgF-2560-80.png%22%2C%22strapline%22%3A%22If%20you%20like%20everything%20about%20the%20Superlight%202%20but%20its%20shape%2C%20this%20is%20a%20great%20alternative.%22%2C%22publishDate%22%3A%222024-11-14T17%3A14%3A19Z%22%2C%22summary%22%3A%22If%20you%20like%20everything%20about%20the%20Superlight%202%20but%20its%20shape%2C%20this%20is%20a%20great%20alternative.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Flemokey-g1-review%2F%22%2C%22title%22%3A%22Lemokey%20G1%20review%22%2C%22score%22%3A81%2C%22publishDate%22%3A%222024-11-04T14%3A42%3A30Z%22%2C%22strapline%22%3A%22A%20very%20Keychron%20wireless%20gaming%20mouse%3A%20Affordable%2C%20simple%2C%20and%20feature-rich.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2Fsit3jVvqfWLeH3dNWWRG4n-2560-80.jpg%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22summary%22%3A%22A%20very%20Keychron%20wireless%20gaming%20mouse%3A%20Affordable%2C%20simple%2C%20and%20feature-rich.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Flogitech-g-pro-2-lightspeed-review%2F%22%2C%22score%22%3A80%2C%22title%22%3A%22Logitech%20G%20Pro%202%20Lightspeed%20Review%22%2C%22publishDate%22%3A%222024-10-21T15%3A55%3A48Z%22%2C%22strapline%22%3A%22Logitech%20G%20Pro%202%20is%20a%20solid%20technical%20upgrade%20that%20most%20won’t%20really%20notice.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FEvLBAuvo9XTb5GhQheeubY-1920-80.jpg%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22summary%22%3A%22Logitech%20G%20Pro%202%20is%20a%20solid%20technical%20upgrade%20that%20most%20won’t%20really%20notice.%22%7D%2C%7B%22strapline%22%3A%22Light%20and%20fast%2C%20with%20everything%20you%20need%20from%20a%20competitive%20gaming%20mouse.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FMfDAvex89mBEYYixdtPT9h-1920-80.jpg%22%2C%22publishDate%22%3A%222024-07-15T15%3A47%3A58Z%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Fturtle-beach-burst-ii-air-review%2F%22%2C%22title%22%3A%22Turtle%20Beach%20Burst%20II%20Air%20review%22%2C%22score%22%3A85%2C%22summary%22%3A%22Light%20and%20fast%2C%20with%20everything%20you%20need%20from%20a%20competitive%20gaming%20mouse.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Falienware-pro-wireless-review%2F%22%2C%22title%22%3A%22Alienware%20Pro%20wireless%20review%22%2C%22score%22%3A73%2C%22strapline%22%3A%22Smooth%2C%20speedy%20and%20incredibly%20light.%20To%20a%20fault%2C%20perhaps.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FPyhTm9gh3gG5jjhic28tTa-2560-80.jpg%22%2C%22publishDate%22%3A%222024-07-05T14%3A25%3A36Z%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22summary%22%3A%22Smooth%2C%20speedy%20and%20incredibly%20light.%20To%20a%20fault%2C%20perhaps.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Frazer-deathadder-v3-hyperspeed-review%2F%22%2C%22title%22%3A%22Razer%20DeathAdder%20V3%20HyperSpeed%20review%22%2C%22score%22%3A91%2C%22publishDate%22%3A%222024-06-28T09%3A11%3A03Z%22%2C%22strapline%22%3A%22Take%20a%20DeathAdder%20V3%20Pro%2C%20swap%20its%20hardware%20for%20something%20simpler%2C%20hack%20down%20the%20price%20and%20you’ve%20got%20a%20brilliant%20gaming%20mouse.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FZdAxgwbzz3HSSKYCWt2cXk-1920-80.jpg%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22summary%22%3A%22Take%20a%20DeathAdder%20V3%20Pro%2C%20swap%20its%20hardware%20for%20something%20simpler%2C%20hack%20down%20the%20price%20and%20you’ve%20got%20a%20brilliant%20gaming%20mouse.%22%7D%2C%7B%22score%22%3A83%2C%22title%22%3A%22Corsair%20M75%20Wireless%20review%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Fcorsair-m75-wireless-review%2F%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22publishDate%22%3A%222024-06-25T15%3A04%3A13Z%22%2C%22strapline%22%3A%22Righties%20and%20lefties%20rejoice!%20A%20wireless%20gaming%20mouse%20that’s%20genuinely%20suitable%20for%20any%20hand.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FthdjYVsn9opsApvpkDErfM-1920-80.jpg%22%2C%22summary%22%3A%22Righties%20and%20lefties%20rejoice!%20A%20wireless%20gaming%20mouse%20that’s%20genuinely%20suitable%20for%20any%20hand.%22%7D%2C%7B%22score%22%3A75%2C%22title%22%3A%22Glorious%20Model%20D%202%20gaming%20mouse%20review%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Fglorious-model-d-2-gaming-mouse-review%2F%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22publishDate%22%3A%222024-05-22T11%3A25%3A49Z%22%2C%22strapline%22%3A%22Glorious%20has%20attempted%20a%20much%20more%20traditional%20gaming%20mouse%20here%20and%20mostly%20succeeded.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FLBLDUMVkEHcGwsZCE4WtjJ-2560-80.jpg%22%2C%22summary%22%3A%22Glorious%20has%20attempted%20a%20much%20more%20traditional%20gaming%20mouse%20here%20and%20mostly%20succeeded.%22%7D%2C%7B%22category%22%3A%22Gaming%20Mice%22%2C%22publishDate%22%3A%222024-05-17T09%3A44%3A54Z%22%2C%22strapline%22%3A%22Lighter%20and%20faster%20than%20ever%2C%20the%20new%20Viper%20is%20the%20ultimate%20esports%20mouse.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FV2u9BXiuBDTFEVy6hNZoRf-1920-80.jpg%22%2C%22score%22%3A84%2C%22title%22%3A%22Razer%20Viper%20V3%20Pro%20review%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Frazer-viper-v3-pro-review%2F%22%2C%22summary%22%3A%22Lighter%20and%20faster%20than%20ever%2C%20the%20new%20Viper%20is%20the%20ultimate%20esports%20mouse.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Fendgame-gear-op1-8k-wired-gaming-mouse-review%2F%22%2C%22title%22%3A%22Endgame%20Gear%20OP1%208K%20wired%20gaming%20mouse%20review%22%2C%22score%22%3A81%2C%22publishDate%22%3A%222024-05-03T09%3A10%3A47Z%22%2C%22strapline%22%3A%22A%20lightweight%20wired%20gaming%20mouse%20with%20zero%20drag%20and%20a%20superb%20polling%20rate%2C%20but%20a%20price%20that%20doesn’t%20quite%20sit%20right.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2Fc3WugDXZr5pbk6rgbTKWqf-2560-80.jpg%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22summary%22%3A%22A%20lightweight%20wired%20gaming%20mouse%20with%20zero%20drag%20and%20a%20superb%20polling%20rate%2C%20but%20a%20price%20that%20doesn’t%20quite%20sit%20right.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Fglorious-model-d-2-pro-4k8khz-edition-review%2F%22%2C%22title%22%3A%22Glorious%20Model%20D%202%20Pro%204K%2F8KHz%20Edition%20review%22%2C%22score%22%3A66%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FyVNq4ksC8WrSYEtBj8DUAm-1920-80.jpg%22%2C%22strapline%22%3A%228%2C000%20Hz%20polling%20is%20wasted%20on%20me.%22%2C%22publishDate%22%3A%222024-04-11T15%3A10%3A32Z%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22summary%22%3A%228%2C000%20Hz%20polling%20is%20wasted%20on%20me.%22%7D%2C%7B%22category%22%3A%22Gaming%20Mice%22%2C%22publishDate%22%3A%222024-03-08T15%3A31%3A49Z%22%2C%22strapline%22%3A%22The%20Lift%202%20Symm%20is%20fast%2C%20affordable%2C%20and%20lightweight%20for%20competitive%20gaming%20on%20a%20budget.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FeuQ6Qe4gMk9j3ou35qg235-1920-80.jpg%22%2C%22title%22%3A%22NZXT%20Lift%202%20Symm%20review%22%2C%22score%22%3A80%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgaming-mice%2Fnzxt-lift-2-symm-gaming-mouse-review%2F%22%2C%22summary%22%3A%22The%20Lift%202%20Symm%20is%20fast%2C%20affordable%2C%20and%20lightweight%20for%20competitive%20gaming%20on%20a%20budget.%22%7D%2C%7B%22category%22%3A%22Gaming%20Mice%22%2C%22publishDate%22%3A%222023-10-02T15%3A13%3A44Z%22%2C%22strapline%22%3A%22Hold%20it%20down%20or%20it’ll%20float%20away.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FRqP2Qdit8FHHhKUPPU88DV-1920-80.jpg%22%2C%22score%22%3A88%2C%22title%22%3A%22Logitech%20Pro%20X%20Superlight%202%20review%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Flogitech-g-pro-x-superlight-2-gaming-mouse-review%2F%22%2C%22summary%22%3A%22Hold%20it%20down%20or%20it’ll%20float%20away.%22%7D%2C%7B%22title%22%3A%22Logitech%20Pro%20X%202%20Lightspeed%20review%22%2C%22score%22%3A72%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Flogitech-g-pro-x-2-lightspeed-gaming-headset-review%2F%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FKxosVCKFutTi5jsMeYvGFo-1920-80.jpg%22%2C%22strapline%22%3A%22Science%20plus%20gaming%20equals%E2%80%A6%20disappointingly%20unspectacular%20audio%3F%22%2C%22publishDate%22%3A%222023-08-15T10%3A42%3A04Z%22%2C%22summary%22%3A%22Science%20plus%20gaming%20equals%E2%80%A6%20disappointingly%20unspectacular%20audio%3F%22%7D%2C%7B%22score%22%3A70%2C%22title%22%3A%22Endgame%20Gear%20XM2we%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fendgame-gear-xm2we-review%2F%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22publishDate%22%3A%222023-04-21T11%3A27%3A20Z%22%2C%22strapline%22%3A%22A%20straightforward%20wireless%20gaming%20mouse%20that%20gets%20down%20to%20basics.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FwjDVqkmpX2YczU4VFsZiRm-1920-80.jpg%22%2C%22summary%22%3A%22A%20straightforward%20wireless%20gaming%20mouse%20that%20gets%20down%20to%20basics.%22%7D%2C%7B%22publishDate%22%3A%222023-03-15T16%3A49%3A16Z%22%2C%22strapline%22%3A%22A%20great%20wireless%20gaming%20mouse%20at%20an%20even%20better%20price.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2Fv3PJELHHaR2BJ3DuuQJ5JS-2560-80.jpg%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fglorious-model-o-2-review%2F%22%2C%22title%22%3A%22Glorious%20Model%20O%202%20wireless%22%2C%22score%22%3A84%2C%22summary%22%3A%22A%20great%20wireless%20gaming%20mouse%20at%20an%20even%20better%20price.%22%7D%2C%7B%22category%22%3A%22Gaming%20Mice%22%2C%22publishDate%22%3A%222022-11-10T12%3A22%3A29Z%22%2C%22strapline%22%3A%22Razer’s%20outdone%20itself%20again%2C%20but%20for%20a%20hefty%20price%20hike.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FLeZ7536b3KujzsoxR63qiK-1920-80.jpg%22%2C%22score%22%3A80%2C%22title%22%3A%22Razer%20Basilisk%20V3%20Pro%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Frazer-basilisk-v3-pro-review%2F%22%2C%22summary%22%3A%22Razer’s%20outdone%20itself%20again%2C%20but%20for%20a%20hefty%20price%20hike.%22%7D%2C%7B%22title%22%3A%22Razer%20Deathadder%20V3%20Pro%22%2C%22score%22%3A89%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Frazer-deathadder-v3-pro-review%2F%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2Fqtwsnje7PGvNXxzJ4SzyWc-1920-80.jpg%22%2C%22strapline%22%3A%22The%20legend%20continues%20in%20a%20leaner%2C%20meaner%2C%20more%20focused%20death-dealing%20machine.%22%2C%22publishDate%22%3A%222022-10-27T14%3A04%3A16Z%22%2C%22summary%22%3A%22The%20legend%20continues%20in%20a%20leaner%2C%20meaner%2C%20more%20focused%20death-dealing%20machine.%22%7D%2C%7B%22score%22%3A89%2C%22title%22%3A%22Logitech%20G502%20X%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Flogitech-g502x-wired-gaming-mouse-review%2F%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22publishDate%22%3A%222022-10-17T11%3A32%3A55Z%22%2C%22strapline%22%3A%22A%20lightweight%20and%20ergonomically%20superior%20addition%20to%20the%20Logitech%20G502%20gaming%20mouse%20lineup.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FajMtiBYs4DmTN89UyT36B6-1920-80.jpg%22%2C%22summary%22%3A%22A%20lightweight%20and%20ergonomically%20superior%20addition%20to%20the%20Logitech%20G502%20gaming%20mouse%20lineup.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Flogitech-g705-wireless-gaming-mouse-review%2F%22%2C%22title%22%3A%22Logitech%20G705%22%2C%22score%22%3A68%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FiGz7hyNcAxPww9w56pFZ9L-1920-80.jpg%22%2C%22strapline%22%3A%22A%20cloudlike%20gaming%20mouse%20that’s%20super%20light%20in%20terms%20of%20weight%20but%20also%20on%20features.%22%2C%22publishDate%22%3A%222022-09-07T16%3A45%3A28Z%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22summary%22%3A%22A%20cloudlike%20gaming%20mouse%20that’s%20super%20light%20in%20terms%20of%20weight%20but%20also%20on%20features.%22%7D%2C%7B%22strapline%22%3A%22A%20lightweight%20wireless%20mouse%20absolutely%20worth%20checking%20out%20for%20the%20FPS%20devoted.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FKsg7Khca2wPW8NcAL5ErXf-1920-80.jpg%22%2C%22publishDate%22%3A%222022-09-05T10%3A21%3A00Z%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Froccat-burst-pro-air-review%2F%22%2C%22title%22%3A%22Roccat%20Burst%20Pro%20Air%22%2C%22score%22%3A74%2C%22summary%22%3A%22A%20lightweight%20wireless%20mouse%20absolutely%20worth%20checking%20out%20for%20the%20FPS%20devoted.%22%7D%2C%7B%22category%22%3A%22Gaming%20Mice%22%2C%22strapline%22%3A%22It’s%20not%20just%20the%20RGB%20that%20shines%20here.%20Roccat%20has%20a%20real%20winner.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FMMPaSY5FXuWWMGVw5UsNZk-1920-80.jpg%22%2C%22publishDate%22%3A%222022-08-18T14%3A24%3A07Z%22%2C%22title%22%3A%22Roccat%20Kone%20XP%22%2C%22score%22%3A91%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Froccat-kone-xp-review%2F%22%2C%22summary%22%3A%22It’s%20not%20just%20the%20RGB%20that%20shines%20here.%20Roccat%20has%20a%20real%20winner.%22%7D%2C%7B%22strapline%22%3A%22A%20great%20versatile%20controller%20for%20mobile%20gaming%2C%20but%20maybe%20not%20for%20PC%20gamers.%20Yet.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FJcnW2ebg7HHHFenFEEZbZR-1920-80.jpg%22%2C%22publishDate%22%3A%222022-07-28T11%3A06%3A28Z%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhyper-x-clutch-controller-review%2F%22%2C%22title%22%3A%22HyperX%20Clutch%22%2C%22score%22%3A78%2C%22summary%22%3A%22A%20great%20versatile%20controller%20for%20mobile%20gaming%2C%20but%20maybe%20not%20for%20PC%20gamers.%20Yet.%22%7D%2C%7B%22score%22%3A75%2C%22title%22%3A%22SteelSeries%20Aerox%205%20Wireless%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fsteelseries-aerox-5-wireless-review%2F%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22publishDate%22%3A%222022-06-07T08%3A35%3A56Z%22%2C%22strapline%22%3A%22A%20great%20lightweight%20all-rounder.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FJRt7cWcq4V3ehYoKWeDxA6-1920-80.jpg%22%2C%22summary%22%3A%22A%20great%20lightweight%20all-rounder.%22%7D%2C%7B%22publishDate%22%3A%222022-03-01T11%3A28%3A16Z%22%2C%22strapline%22%3A%22MSI%20tries%20to%20capture%20the%20same%20lightning%20in%20a%20bottle%20as%20the%20Razer%20Viper%20Ultimate%20but%20comes%20up%20short.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FFmhpAsrLSbGPxPTspZovGN-1920-80.jpg%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fmsi-clutch-gm41-wireless-gaming-mouse-review%2F%22%2C%22title%22%3A%22MSI%20Clutch%20GM41%20wireless%20gaming%20mouse%20review%22%2C%22score%22%3A78%2C%22summary%22%3A%22MSI%20tries%20to%20capture%20the%20same%20lightning%20in%20a%20bottle%20as%20the%20Razer%20Viper%20Ultimate%20but%20comes%20up%20short.%22%7D%2C%7B%22title%22%3A%22Cooler%20Master%20MM731%20review%22%2C%22score%22%3A70%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fcooler-master-mm731-review%2F%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22publishDate%22%3A%222022-01-13T12%3A47%3A48Z%22%2C%22strapline%22%3A%22A%20simple%2C%20wireless%20gaming%20mouse%20with%20Bluetooth%20and%202.4GHz%20connectivity.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FbAFiZgGCHD7ovbe7oQd9Uc-1920-80.jpg%22%2C%22summary%22%3A%22A%20simple%2C%20wireless%20gaming%20mouse%20with%20Bluetooth%20and%202.4GHz%20connectivity.%22%7D%2C%7B%22strapline%22%3A%22Razer%20makes%20some%20subtle%2C%20and%20some%20hyper%20changes%20to%20the%20classic%20Basilisk%20for%20yet%20another%20winning%20rodent.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FBsWjPoBkqF8tGqvSapDjwV-1920-80.jpg%22%2C%22publishDate%22%3A%222021-09-09T15%3A27%3A52Z%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Frazer-basilisk-v3-gaming-mouse-review%2F%22%2C%22title%22%3A%22Razer%20Basilisk%20V3%20gaming%20mouse%20review%22%2C%22score%22%3A90%2C%22summary%22%3A%22Razer%20makes%20some%20subtle%2C%20and%20some%20hyper%20changes%20to%20the%20classic%20Basilisk%20for%20yet%20another%20winning%20rodent.%22%7D%2C%7B%22score%22%3A74%2C%22title%22%3A%22SteelSeries%20Rival%205%20gaming%20mouse%20review%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fsteelseries-rival-5-gaming-mouse-review%2F%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22publishDate%22%3A%222021-07-13T14%3A46%3A44Z%22%2C%22strapline%22%3A%22Can%20this%20%2460%20gaming%20mouse%20give%20battle%20royale%20players%20the%20winning%20edge%3F%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FjJsqcNPyPEnrBswJpiuQFj-2560-80.jpg%22%2C%22summary%22%3A%22Can%20this%20%2460%20gaming%20mouse%20give%20battle%20royale%20players%20the%20winning%20edge%3F%22%7D%2C%7B%22strapline%22%3A%22Honeycomb%20RGBs%20and%20hours%20of%20gaming%20at%20your%20fingertips.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2Fzkvy6JZn3Dbfc9w6hGYHFF-1920-80.jpg%22%2C%22publishDate%22%3A%222021-06-30T16%3A10%3A37Z%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Froccat-kone-pro-air-review%2F%22%2C%22title%22%3A%22Roccat%20Kone%20Pro%20Air%20wireless%20gaming%20mouse%20review%22%2C%22score%22%3A80%2C%22summary%22%3A%22Honeycomb%20RGBs%20and%20hours%20of%20gaming%20at%20your%20fingertips.%22%7D%2C%7B%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FbNBAF6sXhttE5Wyct36JyR-1920-80.jpg%22%2C%22strapline%22%3A%22Corsair%20Sabre%20RGB%20Pro%20is%20the%20quintissential%20pro%20gamers%20mouse%20with%20little%20frills%20but%20tons%20of%20performance%22%2C%22publishDate%22%3A%222021-04-30T15%3A30%3A57Z%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fcorsair-sabre-rgb-pro-champion-gaming-mouse-review%2F%22%2C%22title%22%3A%22Corsair%20Sabre%20RGB%20Pro%20Champion%20Series%20review%22%2C%22score%22%3A90%2C%22summary%22%3A%22Corsair%20Sabre%20RGB%20Pro%20is%20the%20quintissential%20pro%20gamers%20mouse%20with%20little%20frills%20but%20tons%20of%20performance%22%7D%2C%7B%22publishDate%22%3A%222021-02-23T09%3A44%3A14Z%22%2C%22strapline%22%3A%22Razer%20took%20the%20most%20versatile%20gaming%20mouse%20and%20made%20it%20a%20one-trick%20pony.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FxESMnbxMH5MorqSdtXhGme-2560-80.jpg%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Frazer-naga-x-gaming-mouse-review%2F%22%2C%22title%22%3A%22Razer%20Naga%20X%20gaming%20mouse%20review%22%2C%22score%22%3A79%2C%22summary%22%3A%22Razer%20took%20the%20most%20versatile%20gaming%20mouse%20and%20made%20it%20a%20one-trick%20pony.%22%7D%2C%7B%22score%22%3A87%2C%22title%22%3A%22Logitech%20G%20Pro%20X%20Superlight%20gaming%20mouse%20review%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Flogitech-g-pro-x-superlight-gaming-mouse-review%2F%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22publishDate%22%3A%222021-02-16T11%3A52%3A18Z%22%2C%22strapline%22%3A%22Oh%20you%20thought%20the%20Logitech%20G%20Pro%20Wireless%20was%20light%3F%20Think%20again.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2Ft9BZRL4VFPLYNJTLZsCVhP-1920-80.jpg%22%2C%22summary%22%3A%22Oh%20you%20thought%20the%20Logitech%20G%20Pro%20Wireless%20was%20light%3F%20Think%20again.%22%7D%2C%7B%22publishDate%22%3A%222021-02-11T15%3A08%3A56Z%22%2C%22strapline%22%3A%22The%20Aerox%203%20Wireless%20is%20a%20lightweight%20alternative%20for%20the%20cable-free%20gamer.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FLJLaFWmnWWXfH4eiGKaBm5-1920-80.jpg%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fsteelseries-aerox-3-wireless-gaming-mouse-review-performance-price%2F%22%2C%22title%22%3A%22SteelSeries%20Aerox%203%20Wireless%20gaming%20mouse%20review%22%2C%22score%22%3A84%2C%22summary%22%3A%22The%20Aerox%203%20Wireless%20is%20a%20lightweight%20alternative%20for%20the%20cable-free%20gamer.%22%7D%2C%7B%22publishDate%22%3A%222021-01-28T17%3A15%3A20Z%22%2C%22strapline%22%3A%22Razer%20ups%20the%20polling%20rate%20of%20its%20Viper%20mouse%20to%208%2C000Hz%20for%20a%20more%20accurate%20rodent.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FoPwATrxWwjN6efy6gCWWXT-1920-80.jpg%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Frazer-viper-8k-hz-gaming-mouse-review%2F%22%2C%22score%22%3A80%2C%22title%22%3A%22Razer%20Viper%208K%20Hz%20gaming%20mouse%20review%22%2C%22summary%22%3A%22Razer%20ups%20the%20polling%20rate%20of%20its%20Viper%20mouse%20to%208%2C000Hz%20for%20a%20more%20accurate%20rodent.%22%7D%2C%7B%22category%22%3A%22Gaming%20Mice%22%2C%22publishDate%22%3A%222021-01-27T10%3A30%3A20Z%22%2C%22strapline%22%3A%22A%20sturdy%2C%20cheap%20wireless%20gaming%20mouse%20for%20on-the-go%20claw%20grippers.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FaPFvKob9PCpwMMbr8f9kYV-1920-80.jpg%22%2C%22score%22%3A76%2C%22title%22%3A%22SteelSeries%20Rival%203%20Wireless%20gaming%20mouse%20review%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fsteelseries-rival-3-wireless-gaming-mouse-review-performance%2F%22%2C%22summary%22%3A%22A%20sturdy%2C%20cheap%20wireless%20gaming%20mouse%20for%20on-the-go%20claw%20grippers.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fglorious-model-o-lightweight-gaming-mouse-review%2F%22%2C%22score%22%3A80%2C%22title%22%3A%22Glorious%20Model%20O%20Gaming%20Mouse%20Review%22%2C%22publishDate%22%3A%222020-10-23T16%3A41%3A03Z%22%2C%22strapline%22%3A%22Ascend%2C%20with%20the%20lightest%20RGB%20mouse%20around.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2Fv7B9jdL65JQDmpR9foMYJA-1920-80.jpg%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22summary%22%3A%22Ascend%2C%20with%20the%20lightest%20RGB%20mouse%20around.%22%7D%2C%7B%22title%22%3A%22Razer%20Naga%20Pro%20wireless%20gaming%20mouse%20review%22%2C%22score%22%3A90%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Frazer-naga-pro-review-wireless-gaming-mouse%2F%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22publishDate%22%3A%222020-09-15T09%3A06%3A09Z%22%2C%22strapline%22%3A%22Razer’s%20new%20Naga%20elevates%20the%20multi-genre%20mouse%20to%20a%20whole%20new%20level.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FA4rPRmLt3Zhy8c7yYqaS3o-1920-80.jpg%22%2C%22summary%22%3A%22Razer’s%20new%20Naga%20elevates%20the%20multi-genre%20mouse%20to%20a%20whole%20new%20level.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Frazer-deathadder-v2-mini-gaming-mouse-review%2F%22%2C%22score%22%3A80%2C%22title%22%3A%22Razer%20Deathadder%20V2%20Mini%20gaming%20mouse%20review%22%2C%22publishDate%22%3A%222020-07-09T15%3A07%3A51Z%22%2C%22strapline%22%3A%22Honey%2C%20I%20shrunk%20the%20Deathadder!%20We%20mess%20around%20with%20Razer’s%20lightest%20gaming%20mouse%20ever.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FcmeHgNgQHeBpyr7jCganaS-1280-80.jpg%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22summary%22%3A%22Honey%2C%20I%20shrunk%20the%20Deathadder!%20We%20mess%20around%20with%20Razer’s%20lightest%20gaming%20mouse%20ever.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Frazer-deathadder-v2-review%2F%22%2C%22title%22%3A%22Razer%20Deathadder%20V2%20review%22%2C%22score%22%3A88%2C%22strapline%22%3A%22The%20Razer%20Deathadder%20V2%20is%20an%20improvement%20over%20the%20Elite%20in%20almost%20every%20way.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FoKG8af4ZbJqjttMd2jKGzZ-2048-80.jpg%22%2C%22publishDate%22%3A%222020-05-27T15%3A54%3A02Z%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22summary%22%3A%22The%20Razer%20Deathadder%20V2%20is%20an%20improvement%20over%20the%20Elite%20in%20almost%20every%20way.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Flogitech-g203-lightsync-review-performance%2F%22%2C%22title%22%3A%22Logitech%20G203%20Lightsync%20gaming%20mouse%20review%22%2C%22score%22%3A80%2C%22publishDate%22%3A%222020-05-06T08%3A55%3A48Z%22%2C%22strapline%22%3A%22The%20Logitech%20G203%20Lightsync%20is%20an%20awful%20lot%20like%20what%20came%20before%2C%20but%20that’s%20not%20such%20a%20bad%20thing.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FvTtE5LKQ9KPtFPtGAhedPQ-1920-80.jpg%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22summary%22%3A%22The%20Logitech%20G203%20Lightsync%20is%20an%20awful%20lot%20like%20what%20came%20before%2C%20but%20that’s%20not%20such%20a%20bad%20thing.%22%7D%2C%7B%22category%22%3A%22Gaming%20Mice%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2F5r3gRgyH6oJcWjZFbPptFg-1280-80.jpg%22%2C%22strapline%22%3A%22A%20wireless%20gaming%20mouse%20with%20premium%20speeds%20at%20an%20affordable%20price.%22%2C%22publishDate%22%3A%222020-04-16T17%3A46%3A15Z%22%2C%22title%22%3A%22Corsair%20Dark%20Core%20RGB%20Pro%20SE%20wireless%20gaming%20mouse%20review%22%2C%22score%22%3A80%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fcorsair-dark-core-rgb-pro-se-wireless-gaming-mouse-review%2F%22%2C%22summary%22%3A%22A%20wireless%20gaming%20mouse%20with%20premium%20speeds%20at%20an%20affordable%20price.%22%7D%2C%7B%22category%22%3A%22Gaming%20Mice%22%2C%22publishDate%22%3A%222020-01-25T00%3A07%3A58Z%22%2C%22strapline%22%3A%22A%20good%20all-rounder%20with%20Qi%20charging%2C%20but%20HyperX%E2%80%99s%20PC%20software%20is%20insufferable.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FCXANNrFmWFGH2sQEkXXuXP-1248-80.jpg%22%2C%22title%22%3A%22HyperX%20Pulsefire%20Dart%20review%22%2C%22score%22%3A70%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhyperx-pulsefire-dart-review%2F%22%2C%22summary%22%3A%22A%20good%20all-rounder%20with%20Qi%20charging%2C%20but%20HyperX%E2%80%99s%20PC%20software%20is%20insufferable.%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(); } 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 = 1343; const CATEGORY_COUNT = 79; 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”; } const qLower = (q || ”).toLowerCase(); const catReq = CATEGORY.replace(/s$/i, ”).toLowerCase(); let localResults = LOCAL_REVIEWS; if (q) { localResults = LOCAL_REVIEWS.filter(r => { const titleLower = (r.title || ”).toLowerCase(); const urlLower = (r.url || ”).toLowerCase(); const qWords = qLower.split(‘ ‘).filter(w => w.trim().length > 0); return qWords.every(w => titleLower.includes(w) || urlLower.includes(w)); }); } let finalResults = localResults; if (!q && finalResults.length > 50) { finalResults = finalResults.slice(0, 50); } if (finalResults.length > 0) { renderResults(finalResults); } else { renderResults([]); } } function renderResults(results) { if(!results || results.length === 0) { resultsContainer.innerHTML = ‘

No results found.

‘; return; } let html = ‘

    ‘; results.forEach((res, i) => { let scoreHtml = res.score ? ‘

    ‘ + res.score + ‘

    ‘ : ”; // Format URL properly let targetUrl = res.url.startsWith(“http”) ? res.url : “https://www.pcgamer.com” + res.url; let borderBottom = i < results.length – 1 ? 'border-bottom:1px solid #f5f5f5;' : ''; html += '

  • ‘; }); html += ‘

‘; 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 = ‘Read full review‘; } readerContent.innerHTML = ‘

Loading article…

‘; fetch(API_BASE + “/api/read?url=” + encodeURIComponent(targetUrl) + “&t=” + Date.now()) .then(res => res.json()) .then(data => { if(!data || !data.content) { readerContent.innerHTML = ‘

Could not load article content.

‘; return; } let html = ‘

‘; html += ‘

‘; html += ‘

‘ + (data.title || ”) + ‘

‘; if (data.byline || data.date) { html += ‘

‘; if (data.byline) { html += ‘BY ‘ + data.byline + ‘‘; } if (data.byline && data.date) { html += ‘|‘; } if (data.date) { html += ‘PUBLISHED ‘ + data.date + ‘‘; } html += ‘

‘; } html += ‘

‘; html += ‘

‘; html += data.content; html += ‘

‘; html += ‘.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; }’; readerContent.innerHTML = html; }) .catch(err => { console.error(err); readerContent.innerHTML = ‘

An error occurred loading the article.

‘; }); } 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 fetch fetchResults(“”); } ” width=”100%” height=”140″ style=”border: none; width: 100%; max-width: 1024px; margin: 0 auto; display: block; background: transparent; transition: height 0.3s ease-out;” title=”PC Gamer Gaming Mice Widget”> function sendMessageToParentWindow(typeOfMessage, message = null) { let postMessage = { bordeaux: message }; let url = “http://crow.futurecdn.net/output/pcg-widget-gaming-mice-00059/pcg-widget-gaming-mice-00059.html”; if (typeOfMessage === “analytics”) { postMessage = { analytics: { …message } }; } if (postMessage !== {}) { window.parent.postMessage( postMessage, url ); } } let message = { targeting: { [“pcg-widget-gaming-mice-00059.html”]: “PC Gamer Gaming Mice Widget” } } window.onload = sendMessageToParentWindow(“bordeaux”, message);

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 $29.99View Deal

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 $39.99View Deal

You aren’t packing an incredibly high DPI or polling rate with this mouse, but you are getting strong performance for the price, as well as a lightweight, comfortable build, and solid software. Cheap and cheerful is the aim here.

Key specs: 12,000 DPI | 300 IPS | 1,000 Hz | 55 g

Price check: Best Buy $34.99View Deal

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 $37.98View Deal

Sometimes simplicity is what you’re looking for in a peripheral, and if all you want in your next purchase is something solid and reliable with a wireless connection and a standard load out of 5 buttons, this mouse is for you. It’s got an accurate TrueMove optical sensor, dual wireless connections and a 400-hour plus battery life, all wrapped up in a smooth and sleek chassis.

Key specs: Wireless | 18,000 DPI | Right-handedView Deal

Our James reviewed the 8BitDo Retro R8, giving it an 87%, and for good reason. It’s a mouse with a super unique look, good specs for the price, and it even comes with a cute charging stand. The retro feel is definitely something to get used to, with buttons that are sunkern into the mouse itself, but it’s a joy to use regardless.

Key specs: up to 8,000 Hz polling | 26,000 DPI | 77 g | up to 100-hour battery life

Price check: Best Buy $49.99View Deal

We gave this mouse an 85% in our review just earlier this year, 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 $49.99View Deal

This mouse is incredibly light at just 36 g, and somehow it’s achieved this with nary a hole in sight. Apart from this, it’s pretty barebones, but a good sensor and light weight is all that’s needed for some seriously competitive FPS gameplay, and this mouse delivers on both fronts.

Key specs: 33K sensor | wireless | 36 g weight | 70-hr batteryView Deal

Simple, lightweight, fast and accurate. What more do you need from a gaming mouse? Because it eschews all the fancy gadgets that so many mice have these days, you save a bundle of cash and get a really long battery life.

Key specs: 26K sensor | Wireless | 55 g weight

Price check: Razer $99.99View Deal

An MMO mouse and a Stream Deck in one, this rodent is a bit heavy but great for productivity and MMO usage. In our review, Hope said the Scimitar Elite Wireless SE “might not match the active use of lighter, more FPS-oriented esports mice, but it’s a productivity and streaming powerhouse.”

Key specs: 16 buttons | 33K DPI | 1,000 Hz | 161 g

Price check: Best Buy $74.99 | Newegg $74.99 (with promo code “BFE2363”)View Deal

This extremely competitive gaming mouse is down to a pretty stellar price, here. It’s also a fantastic gaming mouse, which I swear by—I use it every single day, and when I replace it for a new mouse to review, I bring the Superlight right back in when I’m done.

Key specs: 25K sensor | Wireless | 63 g weight

Price check: Best Buy $129.99View Deal

Though it doesn’t quite look as impressive as the Superlight 2, the G Pro 2 Lightspeed matches the same internals and is truly ambidextrous, thanks to swappable side buttons.

Key specs: 44,000 DPI | 888 IPS | 88g accelerations | 4 side buttons

Price check: Amazon $119.99View Deal

The Superlight 2 has a 44K DPI and 888 IPS, setting it even further apart from its predecessor. While the original Superlight is better value when the Superlight 2 is full price, with this discount in play, it’s difficult to pick between the two. With the second version, you’re getting a better sensor, higher polling, extra battery life, and Type-C charging.

Key specs: 44K sensor | Wireless | 60 g weight

Price check: Best Buy $159.99View Deal

Prime Day controller deals

body { margin: 0; padding: 0; background: transparent; } <iframe srcdoc=" #widget-yv1l8h5 *:not(svg):not(path) { box-sizing: border-box; } #widget-yv1l8h5 h1, #widget-yv1l8h5 p, #widget-yv1l8h5 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-rotate-x: initial; –tw-rotate-y: initial; –tw-rotate-z: initial; –tw-skew-x: initial; –tw-skew-y: initial; –tw-space-y-reverse: 0; –tw-divide-y-reverse: 0; –tw-border-style: solid; –tw-leading: initial; –tw-font-weight: initial; –tw-tracking: 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-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; –tw-scale-x: 1; –tw-scale-y: 1; –tw-scale-z: 1; }}#widget-yv1l8h5, :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-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-green-50: oklch(98.2% .018 155.826); –color-green-600: oklch(62.7% .194 149.214); –color-green-700: oklch(52.7% .154 150.069); –color-emerald-600: oklch(59.6% .145 163.225); –color-blue-50: oklch(97% .014 254.604); –color-blue-600: oklch(54.6% .245 262.881); –color-indigo-50: oklch(96.2% .018 272.314); –color-indigo-600: oklch(51.1% .262 276.966); –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-rose-700: oklch(51.4% .222 16.935); –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-black: #000; –color-white: #fff; –spacing: 4px; –container-sm: 384px; –container-md: 448px; –container-2xl: 672px; –container-6xl: 1152px; –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-medium: 500; –font-weight-semibold: 600; –font-weight-bold: 700; –font-weight-black: 900; –tracking-tight: -.025em; –tracking-wider: .05em; –tracking-widest: .1em; –leading-tight: 1.25; –leading-relaxed: 1.625; –radius-lg: 8px; –radius-xl: 12px; –radius-2xl: 16px; –ease-out: cubic-bezier(0, 0, .2, 1); –animate-spin: spin 1s linear infinite; –animate-pulse: pulse 2s cubic-bezier(.4, 0, .6, 1) infinite; –blur-sm: 8px; –blur-md: 12px; –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;.pointer-events-none { pointer-events: none; }.absolute { position: absolute; }.fixed { position: fixed; }.relative { position: relative; }.inset-0 { inset: calc(var(–spacing) * 0); }.top-1/2 { top: 50%; }.top-[76px] { top: 76px; }.top-[80px] { top: 80px; }.right-2 { right: calc(var(–spacing) * 2); }.right-3 { right: calc(var(–spacing) * 3); }.right-4 { right: calc(var(–spacing) * 4); }.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); }.z-20 { z-index: 20; }.z-50 { z-index: 50; }.z-[60] { z-index: 60; }.z-[100] { z-index: 100; }.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); }.mx-auto { margin-inline: auto; }.prose { color: var(–tw-prose-#widget-yv1l8h5); 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-yv1l8h5 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-yv1l8h5 tr:last-child):not(:where([class~=”not-prose”], [class~=”not-prose”] *)) { border-bottom-width: 0px; }.prose :where(t#widget-yv1l8h5 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-yv1l8h5: 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-yv1l8h5: 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-yv1l8h5 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-yv1l8h5 td:first-child, tfoot td:first-child):not(:where([class~=”not-prose”], [class~=”not-prose”] *)) { padding-inline-start: 0px; }.prose :where(t#widget-yv1l8h5 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-yv1l8h5 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-yv1l8h5 td:first-child, tfoot td:first-child):not(:where([class~=”not-prose”], [class~=”not-prose”] *)) { padding-inline-start: 0px; }.prose-lg :where(t#widget-yv1l8h5 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-1 { margin-top: calc(var(–spacing) * 1); }.mt-2 { margin-top: calc(var(–spacing) * 2); }.mt-4 { margin-top: calc(var(–spacing) * 4); }.mt-8 { margin-top: calc(var(–spacing) * 8); }.mt-auto { margin-top: auto; }.mr-5 { margin-right: calc(var(–spacing) * 5); }.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-6 { margin-bottom: calc(var(–spacing) * 6); }.mb-8 { margin-bottom: calc(var(–spacing) * 8); }.ml-auto { margin-left: auto; }.line-clamp-2 { -webkit-line-clamp: 2; -webkit-box-orient: vertical; display: -webkit-box; overflow: hidden; }.block { display: block; }.flex { display: flex; }.hidden { display: none; }.inline { display: inline; }.inline-block { display: inline-block; }.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-8 { height: calc(var(–spacing) * 8); }.h-10 { height: calc(var(–spacing) * 10); }.h-24 { height: calc(var(–spacing) * 24); }.h-[76px] { height: 76px; }.h-[600px] { height: 600px; }.h-auto { height: auto; }.h-full { height: 100%; }.max-h-[90vh] { max-height: 90vh; }.min-h-[400px] { min-height: 400px; }.min-h-screen { min-height: 100vh; }.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-8 { width: calc(var(–spacing) * 8); }.w-10 { width: calc(var(–spacing) * 10); }.w-20 { width: calc(var(–spacing) * 20); }.w-32 { width: calc(var(–spacing) * 32); }.w-40 { width: calc(var(–spacing) * 40); }.w-full { width: 100%; }.w-px { width: 1px; }.max-w-2xl { max-width: var(–container-2xl); }.max-w-6xl { max-width: var(–container-6xl); }.max-w-[65ch] { max-width: 65ch; }.max-w-md { max-width: var(–container-md); }.max-w-none { max-width: none; }.max-w-sm { max-width: var(–container-sm); }.min-w-0 { min-width: calc(var(–spacing) * 0); }.min-w-[800px] { min-width: 800px; }.flex-1 { flex: 1 1 0%; }.flex-none { flex: 0 0 auto; }.flex-shrink-0, .shrink-0 { flex-shrink: 0; }.-translate-x-1/2 { –tw-translate-x: -50%; 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); }.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-pointer { cursor: pointer; }.resize-y { resize: vertical; }.list-none { list-style-type: none; }.appearance-none { appearance: none; }.flex-col { flex-direction: column; }.flex-wrap { flex-wrap: wrap; }.items-center { align-items: center; }.items-start { align-items: flex-start; }.justify-between { justify-content: space-between; }.justify-center { justify-content: center; }.justify-end { justify-content: flex-end; }.gap-1 { gap: calc(var(–spacing) * 1); }.gap-1.5 { gap: calc(var(–spacing) * 1.5); }.gap-2 { gap: calc(var(–spacing) * 2); }.gap-3 { gap: calc(var(–spacing) * 3); }.gap-4 { gap: calc(var(–spacing) * 4); }.gap-6 { gap: calc(var(–spacing) * 6); }.gap-8 { gap: calc(var(–spacing) * 8); }:where(.space-y-2 > :not(:last-child)) { –tw-space-y-reverse: 0; margin-block-start: calc(calc(var(–spacing) * 2) * var(–tw-space-y-reverse)); margin-block-end: calc(calc(var(–spacing) * 2) * calc(1 – var(–tw-space-y-reverse))); }.gap-x-4 { column-gap: calc(var(–spacing) * 4); }.gap-y-2 { row-gap: calc(var(–spacing) * 2); }: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); }.self-start { align-self: flex-start; }.truncate { text-overflow: ellipsis; white-space: nowrap; overflow: hidden; }.overflow-auto { overflow: auto; }.overflow-hidden { overflow: hidden; }.overflow-y-auto { overflow-y: auto; }.rounded-2xl { border-radius: var(–radius-2xl); }.rounded-full { border-radius: 3.40282e+38px; }.rounded-lg { border-radius: var(–radius-lg); }.rounded-xl { border-radius: var(–radius-xl); }.border { border-style: var(–tw-border-style); border-width: 1px; }.border-2 { border-style: var(–tw-border-style); border-width: 2px; }.border-t { border-top-style: var(–tw-border-style); border-top-width: 1px; }.border-t-4 { border-top-style: var(–tw-border-style); border-top-width: 4px; }.border-r { border-right-style: var(–tw-border-style); border-right-width: 1px; }.border-b { border-bottom-style: var(–tw-border-style); border-bottom-width: 1px; }.border-dashed { –tw-border-style: dashed; border-style: dashed; }.border-none { –tw-border-style: none; border-style: none; }.border-[#DC1F26] { border-color: rgb(220, 31, 38); }.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-100 { border-color: var(–color-red-100); }.border-rose-100 { border-color: var(–color-rose-100); }.bg-[#DC1F26] { background-color: rgb(220, 31, 38); }.bg-[#ededed] { background-color: rgb(237, 237, 237); }.bg-black { background-color: var(–color-black); }.bg-green-600 { background-color: var(–color-green-600); }.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-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-red-50 { background-color: var(–color-red-50); }.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-rose-600 { background-color: var(–color-rose-600); }.bg-transparent { background-color: rgba(0, 0, 0, 0); }.bg-white { background-color: var(–color-white); }.fill-current { fill: currentcolor; }.object-contain { object-fit: contain; }.object-cover { object-fit: cover; }.p-0 { padding: calc(var(–spacing) * 0); }.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-6 { padding: calc(var(–spacing) * 6); }.p-8 { padding: calc(var(–spacing) * 8); }.px-2 { padding-inline: calc(var(–spacing) * 2); }.px-3 { padding-inline: calc(var(–spacing) * 3); }.px-4 { padding-inline: calc(var(–spacing) * 4); }.px-6 { padding-inline: calc(var(–spacing) * 6); }.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-3 { padding-block: calc(var(–spacing) * 3); }.py-4 { padding-block: calc(var(–spacing) * 4); }.py-12 { padding-block: calc(var(–spacing) * 12); }.pt-8 { padding-top: calc(var(–spacing) * 8); }.pr-4 { padding-right: calc(var(–spacing) * 4); }.pr-8 { padding-right: calc(var(–spacing) * 8); }.pr-10 { padding-right: calc(var(–spacing) * 10); }.pb-4 { padding-bottom: calc(var(–spacing) * 4); }.pb-8 { padding-bottom: calc(var(–spacing) * 8); }.pl-1.5 { padding-left: calc(var(–spacing) * 1.5); }.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; }.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-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; }.leading-none { –tw-leading: 1; line-height: 1; }.leading-relaxed { –tw-leading: var(–leading-relaxed); line-height: var(–leading-relaxed); }.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-medium { –tw-font-weight: var(–font-weight-medium); font-weight: var(–font-weight-medium); }.font-semibold { –tw-font-weight: var(–font-weight-semibold); font-weight: var(–font-weight-semibold); }.tracking-tight { –tw-tracking: var(–tracking-tight); letter-spacing: var(–tracking-tight); }.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-ellipsis { text-overflow: ellipsis; }.text-[#DC1F26] { color: rgb(220, 31, 38); }.text-black { color: var(–color-black); }.text-emerald-600 { color: var(–color-emerald-600); }.text-green-600 { color: var(–color-green-600); }.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-900 { color: var(–color-neutral-900); }.text-red-500 { color: var(–color-red-500); }.text-red-600 { color: var(–color-red-600); }.text-rose-500 { color: var(–color-rose-500); }.text-rose-600 { color: var(–color-rose-600); }.text-white { color: var(–color-white); }.uppercase { text-transform: uppercase; }.italic { font-style: italic; }.placeholder-neutral-500::placeholder { color: var(–color-neutral-500); }.opacity-0 { opacity: 0; }.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-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-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); }.backdrop-blur-md { –tw-backdrop-blur: blur(var(–blur-md)); 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-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,); }.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)); }.duration-300 { –tw-duration: .3s; transition-duration: 0.3s; }.ease-out { –tw-ease: var(–ease-out); transition-timing-function: var(–ease-out); }.prose-neutral { –tw-prose-#widget-yv1l8h5: 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-yv1l8h5: 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; }@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; } .hover:border-black:hover { border-color: var(–color-black); } .hover:border-neutral-300:hover { border-color: var(–color-neutral-300); } .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-200:hover { background-color: var(–color-neutral-200); } .hover:bg-neutral-300:hover { background-color: var(–color-neutral-300); } .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:bg-rose-600:hover { background-color: var(–color-rose-600); } .hover:bg-rose-700:hover { background-color: var(–color-rose-700); } .hover:text-[#DC1F26]:hover { color: rgb(220, 31, 38); } .hover:text-blue-600:hover { color: var(–color-blue-600); } .hover:text-indigo-600:hover { color: var(–color-indigo-600); } .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:text-rose-600:hover { color: var(–color-rose-600); }}.focus:border-rose-500:focus { border-color: var(–color-rose-500); }.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]/20:focus { –tw-ring-color: oklab(57.3239% .195826 .0976754/.2); }.focus:ring-rose-500:focus { –tw-ring-color: var(–color-rose-500); }.focus:outline-none:focus { –tw-outline-style: none; outline-style: none; }.active:scale-95:active { –tw-scale-x: 95%; –tw-scale-y: 95%; –tw-scale-z: 95%; scale: var(–tw-scale-x) var(–tw-scale-y); }@media (min-width: 640px) { .sm:top-[88px] { top: 88px; } .sm:top-[92px] { top: 92px; } .sm:right-3 { right: calc(var(–spacing) * 3); } .sm:left-3 { left: calc(var(–spacing) * 3); } .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:h-6 { height: calc(var(–spacing) * 6); } .sm:w-6 { width: calc(var(–spacing) * 6); } .sm:w-64 { width: calc(var(–spacing) * 64); } .sm:flex-row { flex-direction: row; } .sm:items-center { align-items: center; } .sm:p-3 { padding: calc(var(–spacing) * 3); } .sm:p-8 { padding: calc(var(–spacing) * 8); } .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:h-screen { height: 100vh; } .md:w-80 { width: calc(var(–spacing) * 80); } .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-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-space-y-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-leading { syntax: “*”; inherits: false; }@property –tw-font-weight { syntax: “*”; inherits: false; }@property –tw-tracking { 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: “”; 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: “”; 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: “”; 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-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; }@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; }@keyframes spin { 100% { transform: rotate(360deg); }}@keyframes pulse { 50% { opacity: 0.5; }}

const API_BASE = “https://review-widget-builder-1098919444017.us-west1.run.app”; const CATEGORY = “Controller”; // Embedded complete category data const LOCAL_REVIEWS = JSON.parse(decodeURIComponent(“%5B%7B%22title%22%3A%22GameSir%20G7%20Pro%208K%20Aimlabs%20Edition%20review%22%2C%22score%22%3A84%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2Fgamesir-g7-pro-8k-aimlabs-edition-review%2F%22%2C%22category%22%3A%22Controllers%22%2C%22publishDate%22%3A%222026-05-01T11%3A37%3A15Z%22%2C%22strapline%22%3A%22Would%20you%20pay%20%2410%20more%20for%20higher%20polling%3F%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FuT6Y9ABVa5DY9xXcAJrEwf-2560-80.jpg%22%2C%22summary%22%3A%22Would%20you%20pay%20%2410%20more%20for%20higher%20polling%3F%22%7D%2C%7B%22title%22%3A%22Steam%20Controller%20(2026)%20review%22%2C%22score%22%3A83%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgame-pads%2Fsteam-controller-2026-review%2F%22%2C%22category%22%3A%22Game%20Pads%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FaUXA7Xr75b7Xuvt2S6eeKY-1920-80.jpg%22%2C%22strapline%22%3A%22Second%20time’s%20the%20charm.%22%2C%22publishDate%22%3A%222026-04-27T17%3A00%3A00Z%22%2C%22summary%22%3A%22Second%20time’s%20the%20charm.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2Feasysmx-d05-review%2F%22%2C%22title%22%3A%22EasySMX%20D05%20review%22%2C%22score%22%3A87%2C%22publishDate%22%3A%222026-03-31T15%3A00%3A43Z%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.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FPqjBcwBzNJUwKiWav7NBZF-2560-80.jpg%22%2C%22category%22%3A%22Controllers%22%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.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2Feasysmx-d10-review%2F%22%2C%22title%22%3A%22EasySMX%20D10%20review%22%2C%22score%22%3A80%2C%22publishDate%22%3A%222026-03-27T15%3A14%3A14Z%22%2C%22strapline%22%3A%22A%20feature-rich%20budget%20TMR%20controller%20that%20only%20sometimes%20feels%20like%20a%20compromise.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FUgLVpPDZm7T9ZV36sAHGz4-2560-80.jpg%22%2C%22category%22%3A%22Controllers%22%2C%22summary%22%3A%22A%20feature-rich%20budget%20TMR%20controller%20that%20only%20sometimes%20feels%20like%20a%20compromise.%22%7D%2C%7B%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2F3TEoYfnGkzXiCm8xisUHGZ-2560-80.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%22publishDate%22%3A%222026-03-24T11%3A59%3A23Z%22%2C%22category%22%3A%22Game%20Pads%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgame-pads%2Fhyperkin-competitor-review%2F%22%2C%22title%22%3A%22Hyperkin%20Competitor%20review%22%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%22title%22%3A%22Moza%20AB9%20FFB%20Base%20%2B%20MH16%20Flightstick%20%2B%20MTP%20Throttle%20review%22%2C%22score%22%3A86%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2Fmoza-ab9-ffb-base-mh16-flightstick-mtp-throttle-review%2F%22%2C%22category%22%3A%22Controllers%22%2C%22publishDate%22%3A%222026-02-18T14%3A48%3A01Z%22%2C%22strapline%22%3A%22One%20for%20the%20serious%20flight%20simmers%2C%20but%20a%20very%20impressive%20experience.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2F7sPx82rcLMVn5XmFgPZj97-2560-80.jpg%22%2C%22summary%22%3A%22One%20for%20the%20serious%20flight%20simmers%2C%20but%20a%20very%20impressive%20experience.%22%7D%2C%7B%22publishDate%22%3A%222026-02-02T17%3A57%3A12Z%22%2C%22strapline%22%3A%22Overlooked%20or%20rightfully%20neglected%3F%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FkXk5wqg7RoGSLDTWiXMuBZ-2560-80.jpg%22%2C%22category%22%3A%22Controllers%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2Fsteam-controller-re-review-a-fresh-look-at-valves-flawed-but-influential-10-year-old-controller%2F%22%2C%22title%22%3A%22Steam%20Controller%20re-review%3A%20A%20fresh%20look%20at%20Valve’s%20flawed%20but%20influential%2010-year-old%20controller%22%2C%22score%22%3Anull%2C%22summary%22%3A%22Overlooked%20or%20rightfully%20neglected%3F%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgame-pads%2Fvictrix-pro-bfg-reloaded-review%2F%22%2C%22score%22%3A70%2C%22title%22%3A%22Victrix%20Pro%20BFG%20Reloaded%20review%22%2C%22publishDate%22%3A%222025-11-05T10%3A33%3A51Z%22%2C%22strapline%22%3A%22A%20boon%20for%20fight%20pad%20lovers%2C%20but%20not%20a%20controller%20for%20the%20mainstream.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2Fw5YASeamdYp7YnYfoUvq-2560-80.jpg%22%2C%22category%22%3A%22Game%20Pads%22%2C%22summary%22%3A%22A%20boon%20for%20fight%20pad%20lovers%2C%20but%20not%20a%20controller%20for%20the%20mainstream.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2F8bitdo-pro-3-review%2F%22%2C%22title%22%3A%228BitDo%20Pro%203%20review%22%2C%22score%22%3A76%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2F2ViNbtNwhhNsspHfd3k2A5-1920-80.jpg%22%2C%22strapline%22%3A%22My%20new%20everyday%20controller%2C%20despite%20its%20flaws.%22%2C%22publishDate%22%3A%222025-10-24T16%3A21%3A45Z%22%2C%22category%22%3A%22Controllers%22%2C%22summary%22%3A%22My%20new%20everyday%20controller%2C%20despite%20its%20flaws.%22%7D%2C%7B%22title%22%3A%22Razer%20Raiju%20V3%20Pro%20review%22%2C%22score%22%3A83%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgame-pads%2Frazer-raiju-v3-pro-review%2F%22%2C%22category%22%3A%22Game%20Pads%22%2C%22publishDate%22%3A%222025-10-23T16%3A42%3A18Z%22%2C%22strapline%22%3A%22PlayStation%20stylings%20coming%20at%20a%20premium.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FGwrxAaZxjxZ2HCifPmyEXP-1920-80.png%22%2C%22summary%22%3A%22PlayStation%20stylings%20coming%20at%20a%20premium.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgame-pads%2Fscuf-valor-pro-review%2F%22%2C%22title%22%3A%22Scuf%20Valor%20Pro%20review%22%2C%22score%22%3A79%2C%22publishDate%22%3A%222025-10-22T10%3A01%3A38Z%22%2C%22strapline%22%3A%22When%20Scuf%20design%20meets%20Razer%20pricing.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FbaY5oTU8rfV2RJ4hbe8H88-1920-80.png%22%2C%22category%22%3A%22Game%20Pads%22%2C%22summary%22%3A%22When%20Scuf%20design%20meets%20Razer%20pricing.%22%7D%2C%7B%22title%22%3A%22Razer%20Wolverine%20V3%20Pro%208K%20PC%20review%22%2C%22score%22%3A93%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2Frazer-wolverine-v3-pro-8k-pc-review%2F%22%2C%22category%22%3A%22Controllers%22%2C%22publishDate%22%3A%222025-10-13T10%3A46%3A10Z%22%2C%22strapline%22%3A%22The%20best%20PC%20games%20controller%20(a%20lot%20of)%20money%20can%20buy.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FmXKyZfVJzTmPswW7SdMZX-1920-80.jpg%22%2C%22summary%22%3A%22The%20best%20PC%20games%20controller%20(a%20lot%20of)%20money%20can%20buy.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2Fgamesir-g7-pro-tri-mode-review%2F%22%2C%22title%22%3A%22GameSir%20G7%20Pro%20Tri-Mode%20review%22%2C%22score%22%3A92%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FLWez6hHANhWrcqYWn386Go-2560-80.jpg%22%2C%22strapline%22%3A%22Only%20slightly%20pricer%20than%20an%20Xbox%20controller%2C%20but%20packing%20almost%20every%20pro%20feature%20you%20could%20want.%22%2C%22publishDate%22%3A%222025-09-03T09%3A14%3A59Z%22%2C%22category%22%3A%22Controllers%22%2C%22summary%22%3A%22Only%20slightly%20pricer%20than%20an%20Xbox%20controller%2C%20but%20packing%20almost%20every%20pro%20feature%20you%20could%20want.%22%7D%2C%7B%22publishDate%22%3A%222025-07-10T13%3A59%3A26Z%22%2C%22strapline%22%3A%22Premium%20all%20around%2C%20this%20controller%20is%20still%20my%20go-to.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FzPDdsZsLWZFMiyntezou77-1890-80.jpg%22%2C%22category%22%3A%22Controllers%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2Fi-judged-this-controller-almost-perfect-in-my-review-and-with-a-first-ever-discount-in-the-prime-day-sales-id-say-its-even-better%2F%22%2C%22title%22%3A%22I%20judged%20this%20controller%20’almost%20perfect’%20in%20my%20review%20and%20with%20a%20first%20ever%20discount%20in%20the%20Prime%20Day%20sales%2C%20I’d%20say%20it’s%20even%20better%22%2C%22score%22%3Anull%2C%22summary%22%3A%22Premium%20all%20around%2C%20this%20controller%20is%20still%20my%20go-to.%22%7D%2C%7B%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FKw7A9zP5AMGRBhgnqjx8iZ-2560-80.jpg%22%2C%22strapline%22%3A%22Feature%20creep%3A%20The%20controller.%22%2C%22publishDate%22%3A%222025-06-27T12%3A20%3A21Z%22%2C%22category%22%3A%22Controllers%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2Fnacon-revolution-x-unlimited-review%2F%22%2C%22title%22%3A%22Nacon%20Revolution%20X%20Unlimited%20review%22%2C%22score%22%3A65%2C%22summary%22%3A%22Feature%20creep%3A%20The%20controller.%22%7D%2C%7B%22publishDate%22%3A%222025-06-11T09%3A45%3A58Z%22%2C%22strapline%22%3A%228BitDo’s%20ultimate%20Ulimate%20controller%20isn’t%20quite%20as%20ultimate%20as%20it%20could%20be%2C%20but%20it’s%20pretty%20close.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2Frc7J9tikypDNUsjheVZ9Df-2560-80.jpg%22%2C%22category%22%3A%22Controllers%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2F8bitdo-ultimate-2-wireless-review%2F%22%2C%22title%22%3A%228BitDo%20Ultimate%202%20Wireless%20review%22%2C%22score%22%3A82%2C%22summary%22%3A%228BitDo’s%20ultimate%20Ulimate%20controller%20isn’t%20quite%20as%20ultimate%20as%20it%20could%20be%2C%20but%20it’s%20pretty%20close.%22%7D%2C%7B%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2Fu43N85xrWY4MZp4ithGEHW-2560-80.jpg%22%2C%22strapline%22%3A%22A%20cheap-yet-cheerful%20starting%20point%20to%20an%20otherwise%20expensive%20hobby.%22%2C%22publishDate%22%3A%222025-04-29T15%3A59%3A53Z%22%2C%22category%22%3A%22Controllers%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2Fthrustmaster-t-flight-hotas-one-microsoft-flight-simulator-edition-review%2F%22%2C%22title%22%3A%22Thrustmaster%20T.Flight%20HOTAS%20One%20Microsoft%20Flight%20Simulator%20Edition%20review%22%2C%22score%22%3A75%2C%22summary%22%3A%22A%20cheap-yet-cheerful%20starting%20point%20to%20an%20otherwise%20expensive%20hobby.%22%7D%2C%7B%22category%22%3A%22Controllers%22%2C%22publishDate%22%3A%222025-02-20T15%3A00%3A00Z%22%2C%22strapline%22%3A%22Feature-rich%20and%20featuring%20top-notch%20quality%20and%20ergonomics%2C%20it’s%20almost%20the%20perfect%20controller%E2%80%94but%20not%20quite.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FrY3T4gPV9pdUimMFcze5ga-2560-80.jpg%22%2C%22title%22%3A%22Scuf%20Valor%20Pro%20review%22%2C%22score%22%3A86%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2Fscuf-valor-pro-review%2F%22%2C%22summary%22%3A%22Feature-rich%20and%20featuring%20top-notch%20quality%20and%20ergonomics%2C%20it’s%20almost%20the%20perfect%20controller%E2%80%94but%20not%20quite.%22%7D%2C%7B%22category%22%3A%22Controllers%22%2C%22publishDate%22%3A%222025-02-18T14%3A41%3A14Z%22%2C%22strapline%22%3A%22A%20controller%20with%20TMR%20sticks%2C%20Hall%20effect%20triggers%2C%20and%20far%20too%20many%20cut%20corners.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FXLtZgfohxDZ2evKRXg8qYf-2560-80.jpg%22%2C%22score%22%3A61%2C%22title%22%3A%22GameSir%20Cyclone%202%20review%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2Fgamesir-cyclone-2-review%2F%22%2C%22summary%22%3A%22A%20controller%20with%20TMR%20sticks%2C%20Hall%20effect%20triggers%2C%20and%20far%20too%20many%20cut%20corners.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgame-pads%2Fcrkd-neo-s-review%2F%22%2C%22score%22%3A88%2C%22title%22%3A%22CRKD%20Neo%20S%20review%22%2C%22publishDate%22%3A%222025-01-21T17%3A11%3A25Z%22%2C%22strapline%22%3A%22Looks%20a%20little%20square%20but%20is%20actually%20one%20of%20the%20coolest%20dudes%20you%20know.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FgSHcV2yi7ymQBBFnAerb5j-2560-80.jpg%22%2C%22category%22%3A%22Game%20Pads%22%2C%22summary%22%3A%22Looks%20a%20little%20square%20but%20is%20actually%20one%20of%20the%20coolest%20dudes%20you%20know.%22%7D%2C%7B%22title%22%3A%228BitDo%20Ultimate%202C%20wireless%20controller%20review%22%2C%22score%22%3A79%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2F8bitdo-ultimate-2c-wireless-controller-review%2F%22%2C%22category%22%3A%22Controllers%22%2C%22publishDate%22%3A%222025-01-15T14%3A45%3A36Z%22%2C%22strapline%22%3A%22The%20gorgeous%20and%20premium-feeling%208BitDo%20Ultimate%202C%20could%20rule%20the%20budget%20controller%20roost.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2Fi8vWCPDEhL8ofh3VAGRFVW-2560-80.jpg%22%2C%22summary%22%3A%22The%20gorgeous%20and%20premium-feeling%208BitDo%20Ultimate%202C%20could%20rule%20the%20budget%20controller%20roost.%22%7D%2C%7B%22category%22%3A%22Controllers%22%2C%22strapline%22%3A%22A%20great%20%5C%22pro%5C%22%20gamepad%20with%20hall%20effect%20sticks%20and%20a%20novel%20modular%20design.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2F63cePyYHTCPzbpcS4wPGT5-2560-80.jpg%22%2C%22publishDate%22%3A%222024-12-23T10%3A02%3A53Z%22%2C%22title%22%3A%22Turtle%20Beach%20Stealth%20Pivot%20review%22%2C%22score%22%3A78%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2Fturtle-beach-stealth-pivot-review%2F%22%2C%22summary%22%3A%22A%20great%20%5C%22pro%5C%22%20gamepad%20with%20hall%20effect%20sticks%20and%20a%20novel%20modular%20design.%22%7D%2C%7B%22publishDate%22%3A%222024-12-16T15%3A49%3A05Z%22%2C%22strapline%22%3A%22A%20budget%20pro%20controller%20for%20those%20who%20want%20to%20use%20all%20their%20fingers%20or%20maybe%20even%20none%20of%20them.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FFMQPViaBfXxZMyL77HGfQj-2560-80.jpg%22%2C%22category%22%3A%22Controllers%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2Fgulikit-kk3-max-review%2F%22%2C%22score%22%3A83%2C%22title%22%3A%22Gulikit%20KK3%20Max%20review%22%2C%22summary%22%3A%22A%20budget%20pro%20controller%20for%20those%20who%20want%20to%20use%20all%20their%20fingers%20or%20maybe%20even%20none%20of%20them.%22%7D%2C%7B%22title%22%3A%22PowerA%20OPS%20v1%20Wireless%20Controller%20review%22%2C%22score%22%3A89%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fgame-pads%2Fpowera-ops-v1-wireless-controller-review%2F%22%2C%22category%22%3A%22Game%20Pads%22%2C%22publishDate%22%3A%222024-11-12T14%3A26%3A18Z%22%2C%22strapline%22%3A%22PowerA%20somehow%20delivers%20a%20very%20good%20pro%20controller%20for%20the%20same%20price%20as%20a%20regular%20Xbox%20controller%20and%20I%E2%80%99m%20just%20flabbergasted.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FtvYz6bY9n89v6zTPKWkCnE-2560-80.jpg%22%2C%22summary%22%3A%22PowerA%20somehow%20delivers%20a%20very%20good%20pro%20controller%20for%20the%20same%20price%20as%20a%20regular%20Xbox%20controller%20and%20I%E2%80%99m%20just%20flabbergasted.%22%7D%2C%7B%22publishDate%22%3A%222024-10-22T10%3A19%3A40Z%22%2C%22strapline%22%3A%22Why%20spend%20double%20for%20a%20Razer%20or%20Xbox%20Elite%20when%20this%20bargain%20pro%20controller%20exists%3F%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FNsJPkP4XniX6LEACRRwsqe-1995-80.jpg%22%2C%22category%22%3A%22Controllers%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2Fpowera-ops-v3-pro-review%2F%22%2C%22score%22%3A82%2C%22title%22%3A%22PowerA%20OPS%20v3%20Pro%20review%22%2C%22summary%22%3A%22Why%20spend%20double%20for%20a%20Razer%20or%20Xbox%20Elite%20when%20this%20bargain%20pro%20controller%20exists%3F%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2Fthrustmaster-ava-f-a-18-super-hornet-flight-stick-review%2F%22%2C%22title%22%3A%22Thrustmaster%20AVA%20F%2FA-18%20Super%20Hornet%20flight%20stick%20review%22%2C%22score%22%3A80%2C%22strapline%22%3A%22A%20seriously%20weighty%20and%20fantastically%20premium%20flight%20machine%2C%20with%20a%20similarly%20hefty%20price.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FiYAawk38KUftPyAuCCpgcZ-2560-80.jpg%22%2C%22publishDate%22%3A%222024-10-03T16%3A36%3A17Z%22%2C%22category%22%3A%22Controllers%22%2C%22summary%22%3A%22A%20seriously%20weighty%20and%20fantastically%20premium%20flight%20machine%2C%20with%20a%20similarly%20hefty%20price.%22%7D%2C%7B%22category%22%3A%22Controllers%22%2C%22publishDate%22%3A%222024-10-02T15%3A40%3A01Z%22%2C%22strapline%22%3A%22The%20CRKD%20Atom%20is%20a%20perfect%20example%20of%20a%20good%20thing%20coming%20in%20a%20small%20package.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2F8fyYTSMihr8Zx7jYoXbCuD-1920-80.jpg%22%2C%22score%22%3A80%2C%22title%22%3A%22CRKD%20Atom%20controller%20review%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2Fcrkd-atom-controller-review%2F%22%2C%22summary%22%3A%22The%20CRKD%20Atom%20is%20a%20perfect%20example%20of%20a%20good%20thing%20coming%20in%20a%20small%20package.%22%7D%2C%7B%22category%22%3A%22Controllers%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FiMyoZJqjajnYDKdieXxSb3-1920-80.jpg%22%2C%22strapline%22%3A%22Feels%20a%20bit%20fancier%20than%20other%20wired%20controllers%20and%20a%20bit%20more%20high-tech.%22%2C%22publishDate%22%3A%222024-10-02T13%3A25%3A14Z%22%2C%22title%22%3A%22GameSir%20Kaleid%20Flux%20review%22%2C%22score%22%3A70%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2Fgamesir-kaleid-flux-review%2F%22%2C%22summary%22%3A%22Feels%20a%20bit%20fancier%20than%20other%20wired%20controllers%20and%20a%20bit%20more%20high-tech.%22%7D%2C%7B%22category%22%3A%22Controllers%22%2C%22publishDate%22%3A%222024-09-27T14%3A03%3A18Z%22%2C%22strapline%22%3A%22Razer%20V3%20Pro%20is%20the%20culmination%20of%20years%20of%20iteration%20and%20feedback%20leading%20to%20a%20controller%20that%20has%20literally%20improved%20everything.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FosaswXZwrrVXnwdeD7g6oY-1920-80.jpg%22%2C%22score%22%3A92%2C%22title%22%3A%22Razer%20Wolverine%20V3%20Pro%20review%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2Frazer-wolverine-v3-pro-review%2F%22%2C%22summary%22%3A%22Razer%20V3%20Pro%20is%20the%20culmination%20of%20years%20of%20iteration%20and%20feedback%20leading%20to%20a%20controller%20that%20has%20literally%20improved%20everything.%22%7D%2C%7B%22publishDate%22%3A%222024-09-05T16%3A36%3A03Z%22%2C%22strapline%22%3A%22Fabulously%20comprehensive%2C%20but%20be%20prepared%20to%20put%20a%20lot%20of%20work%20in.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FB8GED6G7YNFMA7WY3DtmHW-2560-80.jpg%22%2C%22category%22%3A%22Controllers%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2Fvkb-gladiator-nxt-evo-f-14-combat-edition-stecs-throttle-system-review%2F%22%2C%22score%22%3A84%2C%22title%22%3A%22VKB%20Gladiator%20NXT%20EVO%20F-14%20Combat%20Edition%20%2B%20STECS%20Throttle%20System%20review%22%2C%22summary%22%3A%22Fabulously%20comprehensive%2C%20but%20be%20prepared%20to%20put%20a%20lot%20of%20work%20in.%22%7D%2C%7B%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2F9rgiKZKav9QdMAYArVg4Zm-1920-80.jpg%22%2C%22strapline%22%3A%22Sturdy%20controller%20with%20customizable%20options%2C%20but%20lacks%20the%20punch%20to%20make%20it%20a%20genuine%20contender.%22%2C%22publishDate%22%3A%222024-09-03T15%3A45%3A08Z%22%2C%22category%22%3A%22Controllers%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2Flexip-kakashi-kamui-naruto-shippuden-controller-review%2F%22%2C%22title%22%3A%22Lexip%20Kakashi%20Kamui%20Naruto%20Shippuden%20controller%20review%22%2C%22score%22%3A75%2C%22summary%22%3A%22Sturdy%20controller%20with%20customizable%20options%2C%20but%20lacks%20the%20punch%20to%20make%20it%20a%20genuine%20contender.%22%7D%2C%7B%22publishDate%22%3A%222024-05-15T12%3A11%3A35Z%22%2C%22strapline%22%3A%22Somehow%20the%20Gamesir%20Nova%20Lite%20manages%20to%20punch%20well%20above%20its%20very%20light%20weight.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FheQAiqyLTpwF39uy2i3P2Q-2560-80.jpg%22%2C%22category%22%3A%22Controllers%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2Fgamesir-nova-lite-controller-review%2F%22%2C%22score%22%3A80%2C%22title%22%3A%22GameSir%20Nova%20Lite%20controller%20review%22%2C%22summary%22%3A%22Somehow%20the%20Gamesir%20Nova%20Lite%20manages%20to%20punch%20well%20above%20its%20very%20light%20weight.%22%7D%2C%7B%22title%22%3A%22Scuf%20Envision%20Pro%20review%22%2C%22score%22%3A74%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2Fscuf-envision-pro-review%2F%22%2C%22category%22%3A%22Controllers%22%2C%22publishDate%22%3A%222024-04-11T10%3A32%3A21Z%22%2C%22strapline%22%3A%22A%20high-end%20controller%20actually%20designed%20for%20PC%20gaming.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FFrubAyLacnu2R7mWpwzxUk-1920-80.jpg%22%2C%22summary%22%3A%22A%20high-end%20controller%20actually%20designed%20for%20PC%20gaming.%22%7D%2C%7B%22title%22%3A%22PDP%20Afterglow%20Wave%20review%22%2C%22score%22%3A60%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhardware%2Fcontrollers%2Fpdp-afterglow-wave-review%2F%22%2C%22category%22%3A%22Controllers%22%2C%22publishDate%22%3A%222024-04-03T13%3A25%3A50Z%22%2C%22strapline%22%3A%22This%20colourful%20controller%20is%2C%20unfortunately%2C%20just%20a%20pretty%20face.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FSjJfd3EW4hwFxFkTLGdwMF-2560-80.jpg%22%2C%22summary%22%3A%22This%20colourful%20controller%20is%2C%20unfortunately%2C%20just%20a%20pretty%20face.%22%7D%2C%7B%22strapline%22%3A%22Cheap%20plastics%20for%20high%20prices%20let%20down%20an%20otherwise%20decent%20flight%20sim%20experience.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2F8cQnQikcbYKkzD3vYf5JbR-2560-80.jpg%22%2C%22publishDate%22%3A%222024-02-27T12%3A15%3A44Z%22%2C%22category%22%3A%22Controllers%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhori-hotas-flight-control-system-review%2F%22%2C%22title%22%3A%22HORI%20HOTAS%20Flight%20Control%20System%20%26%20Mount%20Review%22%2C%22score%22%3A67%2C%22summary%22%3A%22Cheap%20plastics%20for%20high%20prices%20let%20down%20an%20otherwise%20decent%20flight%20sim%20experience.%22%7D%2C%7B%22category%22%3A%22Controllers%22%2C%22strapline%22%3A%22If%20SNES%20and%20Xbox%20controllers%20had%20a%20baby%2C%20only%20it’s%20hot-swappable.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2F5rWUHnoGGWgr7DodRZtaUR-1920-80.jpg%22%2C%22publishDate%22%3A%222024-02-14T12%3A15%3A48Z%22%2C%22title%22%3A%22Thrustmaster%20ESWAP%20X%202%20Pro%20review%22%2C%22score%22%3A68%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fthrustmaster-eswap-x-2-pro-review%2F%22%2C%22summary%22%3A%22If%20SNES%20and%20Xbox%20controllers%20had%20a%20baby%2C%20only%20it’s%20hot-swappable.%22%7D%2C%7B%22title%22%3A%22Turtle%20Beach%20Stealth%20Ultra%20review%22%2C%22score%22%3A90%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fturtle-beach-stealth-ultra-controller-review%2F%22%2C%22category%22%3A%22Controllers%22%2C%22strapline%22%3A%22A%20genuinely%20elite%20controller%20from%20Turtle%20Beach.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2F4VvjGFQZpxS9XtTZZ2n9Kn-1920-80.jpg%22%2C%22publishDate%22%3A%222024-02-06T10%3A24%3A10Z%22%2C%22summary%22%3A%22A%20genuinely%20elite%20controller%20from%20Turtle%20Beach.%22%7D%2C%7B%22publishDate%22%3A%222023-10-31T10%3A28%3A41Z%22%2C%22strapline%22%3A%22Not%20one%20for%20the%20PS5%20owners%2C%20that’s%20for%20sure.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2Ff54quQPwQM7L9qR4eFtuvQ-2560-80.jpg%22%2C%22category%22%3A%22Controllers%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fnacon-r5p-controller-review%2F%22%2C%22score%22%3A68%2C%22title%22%3A%22Nacon%20Revolution%205%20Pro%20review%22%2C%22summary%22%3A%22Not%20one%20for%20the%20PS5%20owners%2C%20that’s%20for%20sure.%22%7D%2C%7B%22title%22%3A%22Asus%20ROG%20Raikiri%20Pro%20review%22%2C%22score%22%3A50%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fasus-rog-raikiri-pro-wireless-controller-review%2F%22%2C%22category%22%3A%22Controllers%22%2C%22publishDate%22%3A%222023-08-30T15%3A52%3A45Z%22%2C%22strapline%22%3A%22A%20controller%20best%20experienced%20from%20afar.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FYvVv9iQNjtPeDnUZMenjgm-2560-80.jpg%22%2C%22summary%22%3A%22A%20controller%20best%20experienced%20from%20afar.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Frazer-cobra-pro-gaming-mouse-review%2F%22%2C%22title%22%3A%22Razer%20Cobra%20Pro%22%2C%22score%22%3A84%2C%22strapline%22%3A%22An%20excellent%20all-rounder%20that%20performs%20admirably.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2F7FxZ5hYGKQVKZnPsm5hNC-1920-80.jpg%22%2C%22publishDate%22%3A%222023-08-07T15%3A09%3A52Z%22%2C%22category%22%3A%22Game%20Pads%22%2C%22summary%22%3A%22An%20excellent%20all-rounder%20that%20performs%20admirably.%22%7D%2C%7B%22category%22%3A%22Controllers%22%2C%22strapline%22%3A%22The%20best%20way%20to%20upgrade%20or%20replace%20your%20Steam%20Deck’s%20thumbsticks.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FKhh5jqYZ5kCiCRjcPNUHj7-1920-80.jpg%22%2C%22publishDate%22%3A%222023-08-01T12%3A55%3A41Z%22%2C%22title%22%3A%22GuliKit%20Electromagnetic%20Joystick%20Module%22%2C%22score%22%3A88%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fgulikit-electromagnetic-joystick-module-for-steam-deck-review%2F%22%2C%22summary%22%3A%22The%20best%20way%20to%20upgrade%20or%20replace%20your%20Steam%20Deck’s%20thumbsticks.%22%7D%2C%7B%22strapline%22%3A%22A%20great%20versatile%20controller%20for%20mobile%20gaming%2C%20but%20maybe%20not%20for%20PC%20gamers.%20Yet.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FJcnW2ebg7HHHFenFEEZbZR-1920-80.jpg%22%2C%22publishDate%22%3A%222022-07-28T11%3A06%3A28Z%22%2C%22category%22%3A%22Gaming%20Mice%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fhyper-x-clutch-controller-review%2F%22%2C%22title%22%3A%22HyperX%20Clutch%22%2C%22score%22%3A78%2C%22summary%22%3A%22A%20great%20versatile%20controller%20for%20mobile%20gaming%2C%20but%20maybe%20not%20for%20PC%20gamers.%20Yet.%22%7D%2C%7B%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2F66Vx2JV3mmaC6DrrvhBejW-1920-80.jpg%22%2C%22strapline%22%3A%22The%20best%20alt-controller%20we’ve%20ever%20tested.%22%2C%22publishDate%22%3A%222021-09-08T10%3A02%3A50Z%22%2C%22category%22%3A%22Controllers%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fscuf-instinct-pro-pc-controller-review%2F%22%2C%22title%22%3A%22Scuf%20Instinct%20Pro%20PC%20controller%20review%22%2C%22score%22%3A87%2C%22summary%22%3A%22The%20best%20alt-controller%20we’ve%20ever%20tested.%22%7D%2C%7B%22title%22%3A%22Rig%20Nacon%20Pro%20Compact%20wired%20controller%20review%22%2C%22score%22%3A73%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Frig-nacon-pro-compact-wired-controller-review%2F%22%2C%22category%22%3A%22Game%20Pads%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FVncsvGAj9djDtkGYyiUzTN-2560-80.jpg%22%2C%22strapline%22%3A%22Rig%20Nacon’s%20affordable%20Pro%20controller%20finally%20debuts%20in%20the%20US.%22%2C%22publishDate%22%3A%222021-05-14T18%3A50%3A38Z%22%2C%22summary%22%3A%22Rig%20Nacon’s%20affordable%20Pro%20controller%20finally%20debuts%20in%20the%20US.%22%7D%2C%7B%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FF3yX6VWrqc6QskCesLoSBi-1920-80.jpg%22%2C%22strapline%22%3A%22A%20strange%20evolution%20of%20gaming%20keypad%2C%20the%20Azeron%20is%20something%20I%20didn’t%20know%20I%20needed%20in%20my%20life.%22%2C%22publishDate%22%3A%222021-03-12T17%3A36%3A38Z%22%2C%22category%22%3A%22Game%20Pads%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fazeron-gaming-keypad-review-performance%2F%22%2C%22title%22%3A%22Azeron%20Gaming%20Keypad%20review%22%2C%22score%22%3A90%2C%22summary%22%3A%22A%20strange%20evolution%20of%20gaming%20keypad%2C%20the%20Azeron%20is%20something%20I%20didn’t%20know%20I%20needed%20in%20my%20life.%22%7D%2C%7B%22title%22%3A%22Thrustmaster%20Eswap%20Pro%20Controller%20review%22%2C%22score%22%3A55%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fthrustmaster-eswap-pro-controller-review%2F%22%2C%22category%22%3A%22Controllers%22%2C%22publishDate%22%3A%222021-01-21T12%3A12%3A56Z%22%2C%22strapline%22%3A%22So%20near%20and%20yet%20so%20very%2C%20very%20far.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FCe9ovvH6QDo3B2j5sZTQ8e-1920-80.jpg%22%2C%22summary%22%3A%22So%20near%20and%20yet%20so%20very%2C%20very%20far.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Frazer-wolverine-v2-review%2F%22%2C%22title%22%3A%22Razer%20Wolverine%20V2%20review%22%2C%22score%22%3A88%2C%22publishDate%22%3A%222021-01-08T12%3A02%3A09Z%22%2C%22strapline%22%3A%22Razer’s%20new%20wired%20controller%20is%20one%20of%20its%20best.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FoJcZsLgADshXJawg3CTaUc-1920-80.jpg%22%2C%22category%22%3A%22Game%20Pads%22%2C%22summary%22%3A%22Razer’s%20new%20wired%20controller%20is%20one%20of%20its%20best.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fthrustmaster-tca-sidestick-aribus-edition-hands-on-preview%2F%22%2C%22title%22%3A%22Kit%20out%20your%20MS%20Flight%20Sim%20cockpit%20with%20Thrustmaster’s%20new%20range%20of%20Airbus%20controllers%22%2C%22score%22%3Anull%2C%22publishDate%22%3A%222020-06-18T09%3A27%3A43Z%22%2C%22strapline%22%3A%22The%20Thrustmaster%20Civil%20Aviation%20range%20kicks%20off%20with%20an%20Airbus%20A320-inspired%20throttle%20and%20stick%20setup.%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FJwrM5ZQNVe9U2vR2EEiFx9-1920-80.jpg%22%2C%22category%22%3A%22Controllers%22%2C%22summary%22%3A%22The%20Thrustmaster%20Civil%20Aviation%20range%20kicks%20off%20with%20an%20Airbus%20A320-inspired%20throttle%20and%20stick%20setup.%22%7D%2C%7B%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Fpowera-spectra-enhanced-wired-controller-review%2F%22%2C%22title%22%3A%22PowerA%20Spectra%20Enhanced%20Wired%20Controller%20review%22%2C%22score%22%3A70%2C%22publishDate%22%3A%222020-04-01T13%3A31%3A16Z%22%2C%22strapline%22%3A%22A%20budget%20PC%20controller%20that%20feels%20as%20good%20as%20an%20Xbox%20One%20controller%20for%20%2440%3F%20Sign%20me%20up!%22%2C%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2F5kXwCyvctKHs7QZZdMaaHM-1280-80.jpg%22%2C%22category%22%3A%22Game%20Pads%22%2C%22summary%22%3A%22A%20budget%20PC%20controller%20that%20feels%20as%20good%20as%20an%20Xbox%20One%20controller%20for%20%2440%3F%20Sign%20me%20up!%22%7D%2C%7B%22image%22%3A%22https%3A%2F%2Fcdn.mos.cms.futurecdn.net%2FZwEYWyp4MCeoMHYi6QQCJB-1500-80.jpg%22%2C%22strapline%22%3A%22The%20new%2C%20improved%20Basilisk%20might%20be%20Razer%E2%80%99s%20best%20wired%20mouse%20yet.%22%2C%22publishDate%22%3A%222020-03-11T17%3A33%3A56Z%22%2C%22category%22%3A%22Game%20Pads%22%2C%22url%22%3A%22https%3A%2F%2Fwww.pcgamer.com%2Frazer-basilisk-v2-review%2F%22%2C%22title%22%3A%22Razer%20Basilisk%20V2%20review%22%2C%22score%22%3A89%2C%22summary%22%3A%22The%20new%2C%20improved%20Basilisk%20might%20be%20Razer%E2%80%99s%20best%20wired%20mouse%20yet.%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(); } 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 = 1348; const CATEGORY_COUNT = 50; 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”; } const qLower = (q || ”).toLowerCase(); const catReq = CATEGORY.replace(/s$/i, ”).toLowerCase(); let localResults = LOCAL_REVIEWS; if (q) { localResults = LOCAL_REVIEWS.filter(r => { const titleLower = (r.title || ”).toLowerCase(); const urlLower = (r.url || ”).toLowerCase(); const qWords = qLower.split(‘ ‘).filter(w => w.trim().length > 0); return qWords.every(w => titleLower.includes(w) || urlLower.includes(w)); }); } let finalResults = localResults; if (!q && finalResults.length > 50) { finalResults = finalResults.slice(0, 50); } if (finalResults.length > 0) { renderResults(finalResults); } else { renderResults([]); } } function renderResults(results) { if(!results || results.length === 0) { resultsContainer.innerHTML = ‘

No results found.

‘; return; } let html = ‘

    ‘; results.forEach((res, i) => { let scoreHtml = res.score ? ‘

    ‘ + res.score + ‘

    ‘ : ”; // Format URL properly let targetUrl = res.url.startsWith(“http”) ? res.url : “https://www.pcgamer.com” + res.url; let borderBottom = i < results.length – 1 ? 'border-bottom:1px solid #f5f5f5;' : ''; html += '

  • ‘; }); html += ‘

‘; 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 = ‘Read full review‘; } readerContent.innerHTML = ‘

Loading article…

‘; fetch(API_BASE + “/api/read?url=” + encodeURIComponent(targetUrl) + “&t=” + Date.now()) .then(res => res.json()) .then(data => { if(!data || !data.content) { readerContent.innerHTML = ‘

Could not load article content.

‘; return; } let html = ‘

‘; html += ‘

‘; html += ‘

‘ + (data.title || ”) + ‘

‘; if (data.byline || data.date) { html += ‘

‘; if (data.byline) { html += ‘BY ‘ + data.byline + ‘‘; } if (data.byline && data.date) { html += ‘|‘; } if (data.date) { html += ‘PUBLISHED ‘ + data.date + ‘‘; } html += ‘

‘; } html += ‘

‘; html += ‘

‘; html += data.content; html += ‘

‘; html += ‘.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; }’; readerContent.innerHTML = html; }) .catch(err => { console.error(err); readerContent.innerHTML = ‘

An error occurred loading the article.

‘; }); } 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 fetch fetchResults(“”); } ” 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”> function sendMessageToParentWindow(typeOfMessage, message = null) { let postMessage = { bordeaux: message }; let url = “http://crow.futurecdn.net/output/pcg-widget-controller-00057/pcg-widget-controller-00057.html”; if (typeOfMessage === “analytics”) { postMessage = { analytics: { …message } }; } if (postMessage !== {}) { window.parent.postMessage( postMessage, url ); } } let message = { targeting: { [“pcg-widget-controller-00057.html”]: “PC Gamer Controller Widget” } } window.onload = sendMessageToParentWindow(“bordeaux”, message);

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.

Key specs: Wired / wireless (Bluetooth and 2.4 Ghz) | Asymmetric | 309 g

Price check: Amazon $19.74View Deal

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 extra bumper buttons.

Key specs: Hall effect sticks, triggers | 2.4G wireless | 19 h batteryView Deal

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.

Key specs: Wireless | Asymmetric sticks

Price watch: Best Buy $64.99

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.

Key specs: TMR sticks | Hall effect triggers | Swappable ABXY Buttons | Charging dock | 2.4 G wireless | 20h battery

Price check: Best Buy $69.99View Deal

Our current pick for the best PC controller right now, the GameSir G7 Pro 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.

Key specs: TMR joysticks | 2.4 GHz wireless, Bluetooth, Wired | Asymmetric | 272 gView Deal

Ergonomic and responsive, this wired controller offers many of the same features as its wireless sibling but often goes for half the price. Be warned though that the colourful interchangeable faceplates are sold separately and tend to go for between $25-$30.

Key specs: Asymmetric thumbsticks | Hall effect thumbsticks | 260 gView Deal

We gave the Razer Wolverine V3 Pro 92% in our review late last year, and stuck it straight in our best PC controller guide. It’s since been replaced by the 8K polling version with TMR sticks—but the original is now on discount, and it’s just as good as it ever was. With super-clicky mecha-tactile buttons, a gorgeous switchable trigger feel, and a smattering of reassuringly-high-end materials, it’s still one of the best PC controllers money can buy—polling rate be damned.

Key specs: Wireless | Asymmetric sticks | Hall effect | Rear paddles

Price watch: Newegg $199.99

This wireless modular controller is one of the most customizable I’ve used. The included carry case comes with a touch pad, D pad, and a small screwdriver, which can remove the top plates and swap them out. It’s also wireless and comes with Hall effect thumbsticks, so it won’t get drift.

Key specs: Wireless and wired | modular | SymmetricView Deal

It’s hard to stand out in the game controller market, but the Scuf Instinct Pro manages it—and we’re not just talking about the striking pink colourway Dave tested in his review. Customization is the name of the Instinct Pro’s game, from snazzy faceplates to button facades, thumb stick toppers, and even the option to entirely remove rumble functionality like the pros. Anyway, after all of that, here comes the punchline: it’s not rechargeable! All that sophistication, and this controller only takes AA batteries. Still, it’s a great unit regardless.

Key specs: Wireless | Asymmetric sticksView Deal

Prime Day gaming keyboard deals in the UK

Where are the best Prime Day gaming keyboard, mouse, and controller deals in the UK?

Keyboard:

Mouse:

Controller:

Retailers:

An 8 KHz polling rate, Hall effect switches, rapid trigger, and nice double-shot PBT keycaps. To think you can get all of this for little cash makes the geeky hardware kid in me very happy. The Gamakay x NaughShark NS68 is noticeably a cheaper keyboard in feel, but those internals truly are phenomenal.

Key specs: Bluetooth, 2.4 GHz and wired | 8 KHz | Hall effect View Deal

The Huntsman V2 gets all the Razer goodies into one desk-dominating package with Razer Chroma lighting, doubleshot PBT keycaps and Analog Optical mechanical switches. The magnetic wrist rest is removable, and it even features a handy dial in the top right corner that can be programmed in a multitude of ways. A big chunk of a fully-featured gaming keyboard, for a much-discounted price.

Key specs: Full Size | Analog Optical Mechanical switches | WiredView Deal

This one’s for all you low-profile lovers out there. The Falchion RX Low Profile is a smashing little keyboard—and I do say “little” because it uses a 60% layout, although thankfully it keeps the arrow keys. The switches you get are fantastic, though: pre-lubed and smooth as butter. The board even comes with volume controls along the top.

Key specs: Tenkeyless | Wireless | Low profile mechanical switches

Price check: Amazon sold outView Deal

This is the absolute best gaming keyboard overall, and even a light discount is pretty good. You’re getting excellent typing feel, stellar gaming performance, sound dampening that actually works, and a build quality that stands well above most of the competition. All for one of the best prices we’ve seen this keyboard going for.

Key specs: Numpad | Wireless | Hot-swappable mechanical switchesView Deal

Prime Day gaming mouse deals in the UK

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-handedView Deal

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-handedView Deal

This is a big discount on 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-handedView Deal

The SteelSeries Aerox 3 might be lightweight with its honeycombed design, but it’s certainly not light on features. With a 200-hour battery life, dual connectivity, and AquaBarrier protection to ensure water, dust and dirt resistance, this is a mouse designed to take some abuse and keep on trucking.

Key specs: Wireless | 18,000 DPI | Right-handedView Deal

Prime Day controller deals in the UK

This gaming controller remains our top budget pick for good reason. In our review, 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.

Key specs: Hall effect thumb sticks | 2.4G wireless | 10 h batteryView Deal

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.

Key specs: TMR sticks | Hall effect triggers | Swappable ABXY Buttons | Charging dock | 2.4 G wireless | 20h batteryView Deal

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, the triggers also benefit from a Hall effect, but not only that, there are extra bumper buttons. They’re billed as fully remappable ‘Fast Bumpers,’ though their inner corner placement may not sit well for those with tiny mitts.

Key specs: Hall effect sticks, triggers | 2.4G wireless | 19 h batteryView Deal

Buying advice: keyboards, mice and controllers

When is Amazon Prime Day 2026?

Amazon Prime Day 2026 starts on June 23, and runs though until June 26. The deals are rolling in before then, though, and will be spread out across various retailers following Amazon’s lead.