<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
     xmlns:content="http://purl.org/rss/1.0/modules/content/"
     xmlns:dc="http://purl.org/dc/elements/1.1/"
     xmlns:dcterms="http://purl.org/dc/terms/"
     xmlns:media="http://search.yahoo.com/mrss/"
     xmlns:atom="http://www.w3.org/2005/Atom"
     xmlns:cf="https://www.futureplc.com/rss/content-flags"
>
    <channel>
                    <atom:link rel="alternate" hreflang="en-GB"
                       href="https://www.tomsguide.com/uk/feeds/tag/nvidia"
                       type="application/rss+xml"/>
                            <title><![CDATA[ Latest from Tom's Guide UK in Nvidia ]]></title>
                <link>https://www.tomsguide.com/uk/tag/nvidia</link>
        <description><![CDATA[ All the latest nvidia content from the Tom's Guide  UK team ]]></description>
                                    <lastBuildDate>Sun, 20 Sep 2026 04:30:00 +0000</lastBuildDate>
                            <language>en</language>
                                <item>
                                                            <title><![CDATA[ Nvidia says 'local AI is here' — and it could change how you use AI at home ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Adel el Hallak has a <a href="https://www.tomsguide.com/ai/nvidia-wants-to-turn-your-home-into-a-mini-ai-data-center-and-its-already-being-tested">DGX Spark </a>sitting in his house. It runs AI jobs overnight, and if he forgets to give it something to do before bed, he feels bad about it.</p><p>"At home I feel guilty if I don't kick off my job for it to work on all night," el Hallak, Nvidia's VP of Product, tells Tom's Guide. "It doesn't make noise. And I feel guilty if I don't do that for something on a personal front — because it's plugged in anyway."</p><p>It's a small, endearing detail from a wide-ranging interview — but it also points at where AI is headed, particularly local AI. Because when the person in charge of Nvidia's AI product strategy is already living with a personal AI computer in his home, treating it more like an appliance than a server, it could mean a lot of us will be doing the same thing in just a few years. </p><h2 id="the-case-for-ditching-the-cloud">The case for ditching the cloud</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="kANGCbHE3KTdGdR5xZVvD4" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/kANGCbHE3KTdGdR5xZVvD4-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Right now, most people interact with AI through a browser or app. That means, when you prompt ChatGPT or Perplexity or any other AI assistant, your data travels to a data center, and a response comes back. It works, but there's a cost — both <a href="https://www.tomsguide.com/ai/im-more-terrified-of-my-chatgpt-history-leaking-than-my-bank-account-and-i-know-im-not-alone">financially and in terms of privacy</a>. Every question you ask, every document you upload and every personal detail you share lives on someone else's infrastructure.</p><p>El Hallak thinks local AI changes that equation. "I could run a good enough model on my system at home," he said. Essentially, if the model runs on hardware you own, your data never leaves your house, and there's no monthly subscription.</p><p>The math is worth thinking about. <a href="https://www.tomsguide.com/ai/nvidia-wants-to-turn-your-home-into-a-mini-ai-data-center-and-its-already-being-tested">Nvidia's DGX Spark </a>currently retails for $4,699 — not cheap by any measure. But a<a href="https://www.tomsguide.com/ai/claude-pro-vs-chatgpt-plus-i-tested-both-subscriptions-to-see-which-ones-actually-worth-usd20"> ChatGPT Plus subscription</a> runs $20 per month, or $240 per year. Over five years, that's $1,200 — and you still don't own anything. The Spark, meanwhile, runs unlimited queries with no per-token billing, no usage caps, and no internet required.</p><p>That's not an apples-to-apples comparison, of course. GPT-6 and Claude are significantly more capable than the open-source models you'd run locally on a Spark. But for a growing number of tasks — summarizing documents, drafting emails, searching your own files, running a coding assistant — a local model with 128GB of memory and access to <a href="https://www.tomsguide.com/ai/nvidia-is-set-to-dominate-ai-heres-why">Nvidia's full CUDA stack</a> is more than enough.</p><h2 id="it-39-s-not-just-for-developers">It's not just for developers</h2><p>The DGX Spark launched last October as what Nvidia called "the world's smallest AI supercomputer." At the time, it was squarely aimed at developers, researchers, and data scientists. It runs Linux. It weighs 2.6 pounds. It's the size of a <a href="https://www.tomsguide.com/computing/apple-desktops/mac-mini-m6-preorders-ship-soon-heres-where-you-can-save-right-now">Mac Mini.</a></p><p>But the ecosystem building around it is starting to look more consumer-friendly. As I wrote last month, Perplexity just launched <a href="https://www.tomsguide.com/ai/perplexitys-new-local-first-ai-runs-on-your-pc-and-asks-before-using-the-cloud">Portable Computer</a>, which packages a local AI model, agent tools, app connectors, and a sandboxed runtime into a single system that runs on DGX Spark hardware. Every task starts on your machine. If the local model hits something it can't handle, it asks your permission before sending that one step to the cloud. Your files stay put.</p><p>El Hallak sees this as a trend, not an outlier. He pointed to harness providers — the companies building the software layer between a model and a user — making setup dramatically easier. "You're not doing installs via a command line or a pip install," he said. "They're making it easier — like the old days of using Windows and setting up an application. They're bringing it back to a GUI."</p><p>If that sounds familiar, it should. It's the same arc that turned network-attached storage from a hobbyist pursuit into something Synology sells at Best Buy. The hardware existed for years before the software made it approachable.</p><h2 id="the-rtx-spark-laptops-change-the-picture">The RTX Spark laptops change the picture</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="WudXrWFBDRvTr4BfJPKW3T" name="RTX Spark" alt="RTX Spark" src="https://cdn.mos.cms.futurecdn.net/WudXrWFBDRvTr4BfJPKW3T-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The DGX Spark desktop is the proof of concept. But the real consumer play may be what's coming next: RTX Spark laptops, which pack the same <a href="https://www.tomsguide.com/computing/cpus/nvidia-n1x-cpu-delayed-once-again-and-microsofts-next-gen-os-seems-to-be-at-fault">GB10 silicon </a>into notebook form and are expected to ship this fall from Dell, HP, Lenovo, Asus, MSI, Acer, and others. <a href="https://www.tomsguide.com/computing/laptops/microsofts-surface-laptop-ultra-packs-an-nvidia-spark-chip-and-it-could-be-a-macbook-pro-killer">Microsoft is building a Surface Laptop Ultra around the chip</a>.</p><p>These aren't AI-only machines — they run <a href="https://www.tomsguide.com/computing/windows-operating-systems/15-top-windows-11-tips-everyone-needs-to-know">Windows 11</a>, play games, and handle conventional laptop workloads. But their 128GB of unified memory means they can also run large language models that would choke any current consumer GPU. The laptop version of what el Hallak has sitting on his desk at home, but without the Linux-only limitation.</p><p>"The fact that you will have the model running locally with a harness and a runtime that are made easier to install — I think it's going to really usher in local AI," el Hallak said.</p><h2 id="the-real-argument-isn-39-t-performance-it-39-s-ownership">The real argument isn't performance — it's ownership</h2><p>El Hallak told a story from the enterprise world that translates perfectly to consumers: "There was a point where people were proud of the leaderboards and how many tokens they're using. Then somebody in their IT department got their bills, and all of a sudden I became a cost optimizer."</p><p>Anyone who's watched their Claude usage creep up — <a href="https://www.tomsguide.com/ai/i-hit-claudes-new-usage-limits-and-it-changed-how-i-use-ai-forever">or hit the limits of a free tier</a> — knows the feeling. And as AI agents get more capable and start touching more personal data (your calendar, your email, your finances), the question of where that processing happens isn't theoretical anymore.</p><p>"Local AI is just going to bring more tokens, and tokens equate to intelligence," el Hallak said. "When you pair intelligence with a harness, you're able to do things, and then the runtime secures it."</p><p>Or, as he put it more casually: "Data centers in the house."</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><strong></strong><a href="https://www.tomsguide.com/ai/ai-is-turning-ordinary-photos-of-kids-into-sexual-abuse-imagery-heres-how-to-protect-your-family"><strong>AI is turning ordinary photos of kids into sexual abuse imagery — here's how to protect your family</strong></a><strong></strong></li><li><a href="https://www.tomsguide.com/ai/chatgpt/humans-may-be-reading-your-chatgpt-prompts-heres-how-to-stop-it"><strong>OpenAI paid contractors to read ChatGPT conversations — here's how to protect yourself</strong></a></li><li><strong></strong><a href="https://www.tomsguide.com/ai/chatgpt/i-stopped-reading-the-fine-print-myself-after-discovering-this-overlooked-chatgpt-trick"><strong>I stopped reading the fine print myself after discovering this overlooked ChatGPT trick</strong></a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/ai/nvidia-says-local-ai-is-here-and-it-could-change-how-you-use-ai-at-home</link>
                                                                            <description>
                            <![CDATA[ Nvidia says local AI is here. Here’s how local models and personal AI agents could change the way we use AI at home. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">jnvUMmtiU256qXa7v994v</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/Zfe8UdFvFggCuPBwkQ8ZZ4-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 20 Sep 2026 04:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[AI]]></category>
                                                                                                <author><![CDATA[ amanda.caswell@futurenet.com (Amanda Caswell) ]]></author>                    <dc:creator><![CDATA[ Amanda Caswell ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/zYjevim2q7FjQiefqpjZRB-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/Zfe8UdFvFggCuPBwkQ8ZZ4-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Nvidia RTX Spark]]></media:description>                                                            <media:text><![CDATA[Nvidia RTX Spark]]></media:text>
                                <media:title type="plain"><![CDATA[Nvidia RTX Spark]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/Zfe8UdFvFggCuPBwkQ8ZZ4-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Adel el Hallak has a <a href="https://www.tomsguide.com/ai/nvidia-wants-to-turn-your-home-into-a-mini-ai-data-center-and-its-already-being-tested">DGX Spark </a>sitting in his house. It runs AI jobs overnight, and if he forgets to give it something to do before bed, he feels bad about it.</p><p>"At home I feel guilty if I don't kick off my job for it to work on all night," el Hallak, Nvidia's VP of Product, tells Tom's Guide. "It doesn't make noise. And I feel guilty if I don't do that for something on a personal front — because it's plugged in anyway."</p><p>It's a small, endearing detail from a wide-ranging interview — but it also points at where AI is headed, particularly local AI. Because when the person in charge of Nvidia's AI product strategy is already living with a personal AI computer in his home, treating it more like an appliance than a server, it could mean a lot of us will be doing the same thing in just a few years. </p><h2 id="the-case-for-ditching-the-cloud">The case for ditching the cloud</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="kANGCbHE3KTdGdR5xZVvD4" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/kANGCbHE3KTdGdR5xZVvD4-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Right now, most people interact with AI through a browser or app. That means, when you prompt ChatGPT or Perplexity or any other AI assistant, your data travels to a data center, and a response comes back. It works, but there's a cost — both <a href="https://www.tomsguide.com/ai/im-more-terrified-of-my-chatgpt-history-leaking-than-my-bank-account-and-i-know-im-not-alone">financially and in terms of privacy</a>. Every question you ask, every document you upload and every personal detail you share lives on someone else's infrastructure.</p><p>El Hallak thinks local AI changes that equation. "I could run a good enough model on my system at home," he said. Essentially, if the model runs on hardware you own, your data never leaves your house, and there's no monthly subscription.</p><p>The math is worth thinking about. <a href="https://www.tomsguide.com/ai/nvidia-wants-to-turn-your-home-into-a-mini-ai-data-center-and-its-already-being-tested">Nvidia's DGX Spark </a>currently retails for $4,699 — not cheap by any measure. But a<a href="https://www.tomsguide.com/ai/claude-pro-vs-chatgpt-plus-i-tested-both-subscriptions-to-see-which-ones-actually-worth-usd20"> ChatGPT Plus subscription</a> runs $20 per month, or $240 per year. Over five years, that's $1,200 — and you still don't own anything. The Spark, meanwhile, runs unlimited queries with no per-token billing, no usage caps, and no internet required.</p><p>That's not an apples-to-apples comparison, of course. GPT-6 and Claude are significantly more capable than the open-source models you'd run locally on a Spark. But for a growing number of tasks — summarizing documents, drafting emails, searching your own files, running a coding assistant — a local model with 128GB of memory and access to <a href="https://www.tomsguide.com/ai/nvidia-is-set-to-dominate-ai-heres-why">Nvidia's full CUDA stack</a> is more than enough.</p><h2 id="it-39-s-not-just-for-developers">It's not just for developers</h2><p>The DGX Spark launched last October as what Nvidia called "the world's smallest AI supercomputer." At the time, it was squarely aimed at developers, researchers, and data scientists. It runs Linux. It weighs 2.6 pounds. It's the size of a <a href="https://www.tomsguide.com/computing/apple-desktops/mac-mini-m6-preorders-ship-soon-heres-where-you-can-save-right-now">Mac Mini.</a></p><p>But the ecosystem building around it is starting to look more consumer-friendly. As I wrote last month, Perplexity just launched <a href="https://www.tomsguide.com/ai/perplexitys-new-local-first-ai-runs-on-your-pc-and-asks-before-using-the-cloud">Portable Computer</a>, which packages a local AI model, agent tools, app connectors, and a sandboxed runtime into a single system that runs on DGX Spark hardware. Every task starts on your machine. If the local model hits something it can't handle, it asks your permission before sending that one step to the cloud. Your files stay put.</p><p>El Hallak sees this as a trend, not an outlier. He pointed to harness providers — the companies building the software layer between a model and a user — making setup dramatically easier. "You're not doing installs via a command line or a pip install," he said. "They're making it easier — like the old days of using Windows and setting up an application. They're bringing it back to a GUI."</p><p>If that sounds familiar, it should. It's the same arc that turned network-attached storage from a hobbyist pursuit into something Synology sells at Best Buy. The hardware existed for years before the software made it approachable.</p><h2 id="the-rtx-spark-laptops-change-the-picture">The RTX Spark laptops change the picture</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="WudXrWFBDRvTr4BfJPKW3T" name="RTX Spark" alt="RTX Spark" src="https://cdn.mos.cms.futurecdn.net/WudXrWFBDRvTr4BfJPKW3T-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The DGX Spark desktop is the proof of concept. But the real consumer play may be what's coming next: RTX Spark laptops, which pack the same <a href="https://www.tomsguide.com/computing/cpus/nvidia-n1x-cpu-delayed-once-again-and-microsofts-next-gen-os-seems-to-be-at-fault">GB10 silicon </a>into notebook form and are expected to ship this fall from Dell, HP, Lenovo, Asus, MSI, Acer, and others. <a href="https://www.tomsguide.com/computing/laptops/microsofts-surface-laptop-ultra-packs-an-nvidia-spark-chip-and-it-could-be-a-macbook-pro-killer">Microsoft is building a Surface Laptop Ultra around the chip</a>.</p><p>These aren't AI-only machines — they run <a href="https://www.tomsguide.com/computing/windows-operating-systems/15-top-windows-11-tips-everyone-needs-to-know">Windows 11</a>, play games, and handle conventional laptop workloads. But their 128GB of unified memory means they can also run large language models that would choke any current consumer GPU. The laptop version of what el Hallak has sitting on his desk at home, but without the Linux-only limitation.</p><p>"The fact that you will have the model running locally with a harness and a runtime that are made easier to install — I think it's going to really usher in local AI," el Hallak said.</p><h2 id="the-real-argument-isn-39-t-performance-it-39-s-ownership">The real argument isn't performance — it's ownership</h2><p>El Hallak told a story from the enterprise world that translates perfectly to consumers: "There was a point where people were proud of the leaderboards and how many tokens they're using. Then somebody in their IT department got their bills, and all of a sudden I became a cost optimizer."</p><p>Anyone who's watched their Claude usage creep up — <a href="https://www.tomsguide.com/ai/i-hit-claudes-new-usage-limits-and-it-changed-how-i-use-ai-forever">or hit the limits of a free tier</a> — knows the feeling. And as AI agents get more capable and start touching more personal data (your calendar, your email, your finances), the question of where that processing happens isn't theoretical anymore.</p><p>"Local AI is just going to bring more tokens, and tokens equate to intelligence," el Hallak said. "When you pair intelligence with a harness, you're able to do things, and then the runtime secures it."</p><p>Or, as he put it more casually: "Data centers in the house."</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><strong></strong><a href="https://www.tomsguide.com/ai/ai-is-turning-ordinary-photos-of-kids-into-sexual-abuse-imagery-heres-how-to-protect-your-family"><strong>AI is turning ordinary photos of kids into sexual abuse imagery — here's how to protect your family</strong></a><strong></strong></li><li><a href="https://www.tomsguide.com/ai/chatgpt/humans-may-be-reading-your-chatgpt-prompts-heres-how-to-stop-it"><strong>OpenAI paid contractors to read ChatGPT conversations — here's how to protect yourself</strong></a></li><li><strong></strong><a href="https://www.tomsguide.com/ai/chatgpt/i-stopped-reading-the-fine-print-myself-after-discovering-this-overlooked-chatgpt-trick"><strong>I stopped reading the fine print myself after discovering this overlooked ChatGPT trick</strong></a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I spoke to the Microsoft PM rebuilding Windows 11 for Nvidia RTX Spark: The radical reinvention building the first true MacBook Pro threat ]]></title>
                                                                                                <dc:content><![CDATA[ <p>For eight grueling months leading up to the end of last year, engineers from Microsoft and Nvidia worked side by side from the silicon bootstrap level upward. And the goal? Making Windows 11 play nice with an unprecedented architectural shift: an Arm-based CPU sharing massive unified memory with a desktop-class Nvidia RTX GPU.</p><p>And then, the first <a href="https://www.tomsguide.com/computing/laptops/nvidias-rtx-spark-n1x-drops-this-october-why-apple-silicon-should-be-terrified-and-our-price-predictions">RTX Spark</a> machine finally booted. The red LED lit up, and as Microsoft's Principal Product Manager, Peter Dawoud, recalls it: “half of Santa Clara was jumping.” This was a huge undertaking, but now the real work begins: fine-tuning everything.</p><p>RTX Spark isn’t just another laptop sticker; it pushed Microsoft to fundamentally overhaul five foundational subsystems inside Windows 11 to bridge the gap between low-power Arm efficiency, top-tier AAA gaming, and local agentic AI.</p><p>I spoke to Dawoud about the software underpinning Team Green’s hardware because, as he said, “Windows kind of had to get all these subsystems right all at the same time, so that you can enjoy an RTX Spark device and take the most advantage out of it.”</p><h2 id="a-prism-emulator-overhaul">A Prism Emulator overhaul</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="oWfTLRd5NPjKy6jDQeEsq4" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/oWfTLRd5NPjKy6jDQeEsq4-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Take it from someone who has watched the many attempts to run Windows on ARM chips (and covered the Snapdragon X Elite launch): emulation has always had an Achilles’ heel when it comes to gaming: micro-stuttering and frame pacing.</p><p>“When you're playing video games, it's not just about your average FPS. 1% lows, stuttering is really critical, and your CPU actually plays a very big role in stuttering control,” Dawoud explained.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="VPJcvprGffc9FfD2cHiytJ" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/VPJcvprGffc9FfD2cHiytJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>While average frame rates look acceptable, CPU timing can get erratic when you try to emulate a game and play it at the same time, which can make fast-paced gaming feel jerky. When somebody buys an Nvidia laptop in October, the chances are likely that they will want to play games on it — it’s an RTX GPU after all.</p><p>So work needed to be done, and Microsoft has overhauled the Prism emulation layer for RTX Spark’s pipelines. By shoring up how tasks are assigned to each of the CPU’s threads, frame rates are much more stable in my testing, and the improvement over past versions is night and day.</p><h2 id="ui-polish-amp-the-agentic-future">UI polish & the agentic future</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2570px;"><p class="vanilla-image-block" style="padding-top:66.65%;"><img id="4fF35LQYkV4jpZNrPUKxZg" name="win11improvedsearchg" alt="Windows 11 Improved Search in action" src="https://cdn.mos.cms.futurecdn.net/4fF35LQYkV4jpZNrPUKxZg-1920-80.jpg" mos="" align="middle" fullscreen="" width="2570" height="1713" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>If you’re going to make what I believe could be a MacBook Pro killer, you need to make sure the UI is ready for power users as well as casual users. And the mission in Dawoud’s mind to do this is clear: “make the OS kind of get out of the way, for you to do the work that you want to do.”</p><p>Microsoft is cleaning up Windows 11 for this kind of user: native taskbar customization, customizable notifications, killing unwanted widgets, and remembering displays you connect to—to preserve specific screen layout settings.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="kANGCbHE3KTdGdR5xZVvD4" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/kANGCbHE3KTdGdR5xZVvD4-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Then we turn our attention to the “reinvent the PC” part of the RTX Spark, which comes down to local agentic AI. I saw a demo of Hermes Agent connected to a user’s Google account that acted like his personal chief of staff: setting an agenda for the day, drafting email responses in Gmail, and updating a project tracker in Google Docs. And it all happened on-device without a single bit of cloud AI.</p><p>But without guardrails, this could get scary. “Having an agent that you can't control is probably the thing you don't want,” he stated. So the answer is Microsoft Extension Containers (MXC) — isolated sandboxes for your local models to act across your desktop securely without sensitive system control leaking.</p><h2 id="killing-oem-bloatware">Killing OEM bloatware</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="mcY3VEDiPviihsNtyMMVY4" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/mcY3VEDiPviihsNtyMMVY4-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>It’s always been a dream of mine to have a laptop that doesn’t come packed with OEM-specific power management software or an antivirus scanner. While this may not fix the latter, it goes a long way toward killing the need for the former.</p><p>Dawoud emphasized the need to eliminate the clunky tug-of-war between Windows and external software. Currently, there are several ways to tweak power management across different apps, but RTX Spark uses the open-source Modern Power and Thermal Framework—letting Windows natively control all thermal and power tuning.</p><p>“Users, when they want to set the best performance, they can do it in Windows, and they'll know that the OEM's tuning for best performance has now been set,” he said. “They don't need to go to another app and be like, 'Okay, is that app saying good performance and Windows is saying good performance at the same time?'”</p><p>This also helps these laptops maintain the same performance on and off the charger.</p><h2 id="the-uma-secret">The UMA secret</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="WudXrWFBDRvTr4BfJPKW3T" name="RTX Spark" alt="RTX Spark" src="https://cdn.mos.cms.futurecdn.net/WudXrWFBDRvTr4BfJPKW3T-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>On paper, a Unified Memory Architecture (UMA) sounds great — a big pool for both the CPU and monstrous GPU to dip into at leisure, and take however much (or little) they need. But in reality, CPUs and GPUs digest memory completely differently.</p><p>CPUs crave small memory chunks (4-kilobyte pages) to distribute tasks across their many cores. They take a pizza, pull all the ingredients off of it, and share them around. GPUs, however, take that entire pizza, fold it in half, and eat it taco-style. They need massive blocks (up to 2-megabyte pages) to plow through parallel 3D rendering or AI tasks.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="rVysSsvNTgqPQr98uY9uY4" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/rVysSsvNTgqPQr98uY9uY4-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>“RTX Spark has a very powerful GPU, so making sure that we give it as much memory as possible when it needs it, but also give it the right page sizes, is really critical,” Dawoud commented.</p><p>So Microsoft's fix is to add variable page sizing directly to the memory manager. This is a bit complex, but it means Windows can dynamically read the pages of data flowing through and send them to the right places—the 2MB to the GPU and 4KB to the CPU simultaneously.</p><p>“Optimizing that is the way you can weaponize the entire stack to get the most performance out of it,” He emphasized.</p><h2 id="taming-nvidia-s-custom-cpu-cores">Taming Nvidia’s custom CPU cores</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="NC4Vevw7coKXAFTkqRDdYP" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/NC4Vevw7coKXAFTkqRDdYP-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Unlike Qualcomm’s standardized Snapdragon X chips, Nvidia’s 18- and 20-core Grace CPUs use a proprietary cluster arrangement of performance and efficiency cores to maximize speed while delivering all-day battery life.</p><p>Dawoud explained that Nvidia's core configuration is entirely unique, and “previous Arm cores that have run on Windows are not like that.”</p><p>Now, historically, supporting an exotic CPU layout required rewriting the entire kernel underpinning Windows — a risky move for sure. But Windows 11 has a new profiling stack that can tune itself dynamically on the fly, meaning the scheduler that throws tasks everywhere can adapt to Nvidia’s unique chip here without breaking legacy compatibility.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-e4EgZW"></div>                            </div>                            <script src="https://kwizly.com/embed/e4EgZW.js" async></script><h2 id="the-pc-has-finally-grown-up">The PC has finally grown up</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="GVxdiZGjWNreCjxARYdq74" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/GVxdiZGjWNreCjxARYdq74-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The 14-year partnership between Microsoft and Nvidia finally feels like it is paying off. Dawoud pointed out that this wasn't a sudden alliance — the journey started over a decade ago with the Tegra-powered Surface RT.</p><p>But this specific launch represents a fundamental shift in how the two giants collaborate. By letting Microsoft engineers rebuild the OS from the silicon bootstrap level upward, RTX Spark gave Windows the foundation it needed to finally make Arm-based PC gaming a reality.</p><p>Microsoft and Nvidia haven’t just bolted a GPU onto an Arm processor; they’ve rewritten the rulebook beneath the surface. This is a huge moment for both companies, and if Windows on Arm succeeds where previous attempts faltered, it will all be traced back to that one moment Microsoft spent eight agonizing months building the foundation to make it feel effortless.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/laptops/macbook-pro-14-inch-vs-asus-proart-p14-nvidia-rtx-spark">I held the Asus ProArt P14 next to my MacBook Pro 14 — and Apple should be genuinely terrified of Nvidia’s RTX Spark</a></li><li><a href="https://www.tomsguide.com/gaming/handheld-gaming/i-tested-acers-wild-flip-and-swivel-handheld-why-project-dualplay-mini-is-the-ultimate-netbook-love-letter">I tested Acer's wild Project DualPlay Mini — and it's a gaming handheld and laptop in one gadget</a></li><li><a href="https://www.tomsguide.com/gaming/pc-gaming/i-tested-the-real-dlss-5-forget-the-leaked-mods-its-not-an-ai-filter-this-is-nvidias-photorealistic-game-changer">I wanted to hate Nvidia’s DLSS 5 ‘AI filter’ — but the real DLSS 5 is photorealistic black magic</a></li></ul><div class="vizualizer-embed"><div class="tg-df-widget-host" data-widget-config="?search=laptops&min_discount_ratio=0.95&widget_title=Top+Deals+Handpicked+by+Our+Editors&widget_subtitle=Discover+the+best+discounts+currently+available%2C+curated+daily+by+the+Tom%27s+Guide+Savings+Squad.&bg_color=transparent" data-vizualizer-embed="true"></div>    <script>    /**     * Tom's Guide Deals Finder - Vanilla JS Encapsulated Engine     */    (function() {      // --- Freyr Analytics Adapter ---      function initAnalytics() {        window.dataLayer = window.dataLayer || [];        window.googletag = window.googletag || {};        window.googletag.cmd = window.googletag.cmd || [];        window.hawk = window.hawk || { analytics: { freyr: [] } };        window.hawk.analytics = window.hawk.analytics || { freyr: [] };        window.hawk.analytics.freyr = window.hawk.analytics.freyr || [];        window.freyr = window.freyr || { cmd: [] };        const scriptSrc = 'https://freyr.futurecdn.net/freyr.js';        const hostname = typeof window !== 'undefined' ? window.location.hostname : '';        const isTestEnv = typeof window.navigator !== 'undefined' && (window.navigator.webdriver || window.navigator.userAgent.includes('Headless'));        const shouldSendRealAnalytics = !isTestEnv && hostname && hostname !== 'localhost' && hostname !== '127.0.0.1' && !hostname.includes('run.app');        if (shouldSendRealAnalytics && !document.querySelector(`script[src="${scriptSrc}"]`)) {          const script = document.createElement('script');          script.src = scriptSrc;          script.async = true;          document.head.appendChild(script);        }      }      function storeEventForDebug(name, data) {        if (!window.hawk || !window.hawk.analytics || !window.hawk.analytics.freyr) return;        window.hawk.analytics.freyr.push({ name, data });        try {          if (typeof window !== 'undefined' && window.localStorage) {            window.localStorage.setItem("hawk", JSON.stringify(window.hawk));          }        } catch (e) {          // Ignore storage issues        }        try {          window.dispatchEvent(new CustomEvent("hawk-analytics-update"));        } catch (e) {}      }      function sendToFreyr(eventName, data) {        if (typeof window === 'undefined') return;        window.freyr = window.freyr || { cmd: [] };        window.freyr.cmd.push(() => {          if (window.freyr && window.freyr.pushAndUpdate) {            window.freyr.pushAndUpdate(eventName, data);          }        });      }      function sendEvent(event, skip = false) {        try {          storeEventForDebug(event.name, event.data);          if (!skip) {            sendToFreyr(event.name, event.data);          }        } catch (e) {          // Ensure tracking errors don't surface to the user        }      }      function getCookie(name) {        try {          const match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));          return match ? match[2] : null;        } catch (e) {          return null;        }      }      function normalizeCurrency(symbol) {        const map = {          '£': 'GBP',          '$': 'USD',          'A$': 'AUD',          'CA$': 'CAD',          '€': 'EUR'        };        return map[symbol] || symbol;      }      function trackElementInteraction(props) {        sendEvent({          name: 'elementInteraction',          data: {            element: {              action: props.action || "click",              id: props.id || undefined,              class: props.class || undefined,              name: props.name || undefined,              text: props.text || undefined,              label: props.label || undefined,              container: props.container || undefined,              url: props.url || undefined,              articleId: props.articleId || undefined            }          }        });      }      function generateRevenueId(url, productName, merchantName, modelId) {        const str = `${window.location.href}|${productName}|${merchantName}|${modelId || ''}|${new Date().toDateString()}|tomsguide`;        let hash = 0;        for (let i = 0; i < str.length; i++) {          const char = str.charCodeAt(i);          hash = ((hash << 5) - hash) + char;          hash = hash & hash;        }        let numericStr = Math.abs(hash).toString();        while (numericStr.length < 19) {          numericStr += Math.floor(Math.random() * 10).toString();        }        return numericStr.substring(0, 19);      }      function rewriteAffiliateLink(url, territory, revenueId) {        if (!url) return url;        const t = (territory || 'gb').toLowerCase();        return url.replace(/hawk-custom-tracking/g, `tomsguide-${t}-${revenueId}`);      }      function trackHawkEvent(params) {        const { clickType, widgetId, productCategoryName, product, productsArray, zeroBasedProductIndexOrNull, totalDealsOrProducts, areaClicked, merchant, revenueId, isoCurrencyCode, queryName, widgetTypeName } = params;        const data = {          event: "hawkEvent",          category: "Affiliates",          affiliate: {            action: {              type: clickType,              id: widgetId,              event: clickType === "appeared" ? "viewed" : "Click from",              timestamp: Date.now()            },            component: {              flag: "Editor",              product: productCategoryName || "deals",              category: `Signal Deal Finder ${widgetTypeName || "Carousel"} widget`,              type: clickType === "appeared" ? "review" : "signal product",              label: queryName || (product ? (product.name || "") : ""),              index: zeroBasedProductIndexOrNull === null || zeroBasedProductIndexOrNull === undefined ? -1 : zeroBasedProductIndexOrNull,              linkCount: totalDealsOrProducts || 0,              blockLayout: "",              areaClicked: areaClicked || ""            }          },          products: productsArray || (product && merchant ? [            {              product: {                primary: {                  id: product.id || product.matchId || null,                  name: product.name,                  type: "deal",                  price: product.price,                  previousPrice: product.previousPrice || null,                  currency: isoCurrencyCode || "USD",                  preorder: false,                  labels: [],                  link: product.link,                  originalLink: product.originalLink || null,                  revenueId: revenueId || null,                  startTime: null,                  endTime: null,                  voucherCode: null,                  voucherAudience: null,                  voucherPercentageSaving: null,                  voucherMoneySaving: null,                  voucherType: null,                  offerExclusive: false,                  offerScope: null,                  globalId: product.globalId || null,                  inStock: product.inStock !== false,                  contractProvider: null,                  contractMinutes: null,                  contractTexts: null,                  contractData: null,                  contractLength: null,                  contractMonthlyPrice: null,                  contractCurrency: isoCurrencyCode || "USD"                }              },              merchant: {                id: merchant.id || null,                name: merchant.name,                url: merchant.url || null,                network: merchant.network || null              },              model: {                id: product.modelId || null,                brand: product.brand || null,                name: product.name,                parent: product.parent || null              }            }          ] : []),          reviews: [],          _clear: true,          "gtm.uniqueEventId": Date.now() % 10000        };        sendEvent({ name: 'hawkEvent', data });      }      function trackDealClick(params) {        trackHawkEvent({ ...params, clickType: "retailer", areaClicked: "Signal Product Card" });      }      function trackViewSimilarClick(params) {        trackHawkEvent({ ...params, clickType: "retailer", areaClicked: "Signal Product Card View Similar" });      }      function trackPriceComparisonClick(params) {        trackHawkEvent({ ...params, clickType: "retailer", areaClicked: "Signal Price Comparison" });      }      function trackReviewClick(params) {        trackHawkEvent({ ...params, clickType: "review", areaClicked: "Signal Product Card Review Link" });      }      function trackShare(params) {        trackHawkEvent({ ...params, clickType: "share", areaClicked: "Signal Product Card Share" });      }      function trackDealsAppeared(widgetId, deals, revenueId, currency, queryName, widgetTypeName) {         if (!deals || deals.length === 0) return;                  const productsArray = deals.slice(0, 50).map((deal) => {            let voucherPct = null;            let rawPrice = parseFloat(deal.rawPrice) || parseFloat(deal.price) || null;            let rawMsrp = parseFloat(deal.rawMsrp) || parseFloat(deal.msrp) || null;            if (rawMsrp > rawPrice && rawPrice > 0) {              voucherPct = Math.round((1 - (rawPrice / rawMsrp)) * 100);            }            let numId = null;            if (deal.externalProductId && !isNaN(parseInt(deal.externalProductId))) {              numId = parseInt(deal.externalProductId);            } else if (deal.id && !isNaN(parseInt(deal.id))) {              numId = parseInt(deal.id);            } else {              numId = deal.matchId || null;            }            return {              product: {                primary: {                  id: numId,                  name: deal.productName || deal.title || "",                  type: "deal",                  price: rawPrice,                  previousPrice: rawMsrp,                  currency: currency || 'USD',                  preorder: false,                  labels: deal.modelBrand || deal.brand ? [                     { type: "brand", value: deal.modelBrand || deal.brand }                  ] : [],                  link: deal.url,                  originalLink: deal.url,                  revenueId: revenueId || null,                  startTime: null,                  endTime: null,                  voucherCode: null,                  voucherAudience: null,                  voucherPercentageSaving: voucherPct,                  voucherMoneySaving: null,                  voucherType: null,                  offerExclusive: false,                  offerScope: null,                  globalId: deal.productKey || null,                  inStock: deal.inStock !== false,                  contractProvider: null,                  contractMinutes: null,                  contractTexts: null,                  contractData: null,                  contractLength: null,                  contractMonthlyPrice: null,                  contractCurrency: currency || 'USD'                }              },              merchant: {                id: deal.merchantId ? parseInt(deal.merchantId) : null,                name: deal.merchant || "Retailer",                url: deal.merchantUrl || null,                network: deal.merchantNetwork || null              },              model: {                id: deal.modelId ? parseInt(deal.modelId) : null,                brand: deal.modelBrand || deal.brand || null,                name: deal.productName || deal.title || "",                parent: deal.modelParent || null              }            };         });                  trackHawkEvent({             clickType: "appeared",             widgetId: widgetId,             productCategoryName: "deals",             zeroBasedProductIndexOrNull: null,             totalDealsOrProducts: deals.length,             productsArray: productsArray,             queryName: queryName,             widgetTypeName: widgetTypeName         });      }      // 1. Setup Shadow DOM Sandbox      const currentScript = document.currentScript;      let hostContainer = null;      let template = null;            if (currentScript) {        let prev = currentScript.previousElementSibling;        while (prev) {          if (prev.tagName === 'TEMPLATE' && prev.classList.contains('tg-df-widget-template')) {            template = prev;          } else if (prev.tagName === 'DIV' && prev.classList.contains('tg-df-widget-host') && !prev.hasAttribute('data-initialized')) {            hostContainer = prev;            break;          }          prev = prev.previousElementSibling;        }      }            // Fallbacks in case script is deferred      if (!hostContainer) {        const hosts = document.querySelectorAll('.tg-df-widget-host:not([data-initialized])');        if (hosts.length > 0) hostContainer = hosts[0];      }            // Safely embedded template for CMS environments      const rawTemplate = `  \x3Cstyle>    /* --- Shadow DOM Base Reset --- */    *, *::before, *::after {      box-sizing: border-box;    }    img, picture, svg, video {      max-width: 100%;      height: auto;      display: block;    }    /*       1. Scoped CSS for Tom's Guide Deals Widget       All classes are prefixed with \`tg-df-\` to prevent CMS style leakage.    */    .tg-df-container {      container-type: inline-size;      container-name: tg-df;      --tg-df-blue: #1F69FF;      --tg-df-blue-hover: #004d8c;      --tg-df-text: #222222;      --tg-df-text-muted: #555555;      --tg-df-bg: #ffffff;      --tg-df-bg-secondary: #f4f4f4;      --tg-df-border: #e2e8f0;      font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;      color: var(--tg-df-text);      background-color: transparent;       width: 100%;      max-width: 1200px;      margin: 0 auto;      padding-bottom: 24px;    }    .tg-df-container *, .tg-df-container *::before, .tg-df-container *::after {      margin: 0;      padding: 0;      box-sizing: border-box;    }    .tg-df-container img {      border: none;      margin: 0;      padding: 0;    }    .tg-df-container a {      text-decoration: none;      color: inherit;    }    /*       2. Search & Filter Bar    */    .tg-df-controls {      display: flex;      flex-direction: column;      align-items: center;      gap: 20px;      margin-bottom: 32px;      width: 100%;    }    .tg-df-top-bar {      display: flex;      width: 100%;      max-width: 760px;      gap: 12px;      align-items: center;    }    .tg-df-search-wrapper {      position: relative;      flex: 1;      width: 100%;      box-shadow: 0 8px 24px rgba(0,0,0,0.06);      border-radius: 40px;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      z-index: 100;    }    .tg-df-autocomplete-dropdown {      position: absolute;      top: calc(100% + 4px);      left: 0;      right: 0;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 12px;      box-shadow: 0 8px 32px rgba(0,0,0,0.12);      max-height: 300px;      overflow-y: auto;      z-index: 200;      display: none;    }    .tg-df-autocomplete-dropdown.active {      display: block;    }    .tg-df-autocomplete-item {      padding: 12px 24px;      cursor: pointer;      font-size: 14px;      color: var(--tg-df-text);      transition: background 0.1s ease;    }    .tg-df-autocomplete-item:hover {      background: var(--tg-df-bg-secondary);    }    .tg-df-search-input {      width: 100%;      padding: 16px 64px 16px 24px;      font-size: 16px;      border: 2px solid transparent;      border-radius: 40px;      outline: none;      transition: border-color 0.2s ease, box-shadow 0.2s ease;      color: var(--tg-df-text);      background: transparent;    }    .tg-df-search-input:focus {      border-color: transparent;      box-shadow: 0 0 0 3px rgba(0, 108, 196, 0.15);    }    .tg-df-search-input::placeholder {      color: #999999;    }        .tg-df-search-btn {      position: absolute;      right: 8px;      top: 50%;      transform: translateY(-50%);      width: 40px;      height: 40px;      border-radius: 50%;      background: #222;      border: none;      display: flex;      align-items: center;      justify-content: center;      cursor: pointer;      transition: background 0.2s ease;    }        .tg-df-search-btn:hover {      background: #000;    }    .tg-df-search-icon {      width: 16px;      height: 16px;      fill: #fff;    }    .tg-df-settings-wrapper {      position: relative;    }        .tg-df-settings-btn {      width: 48px;      height: 48px;      border-radius: 50%;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      box-shadow: 0 4px 12px rgba(0,0,0,0.04);      display: flex;      align-items: center;      justify-content: center;      cursor: pointer;      transition: all 0.2s ease;      color: var(--tg-df-text-muted);      flex-shrink: 0;    }    .tg-df-settings-btn:hover {      background: var(--tg-df-bg-secondary);      border-color: #0000ff;      color: var(--tg-df-text);    }    .tg-df-settings-btn svg {      width: 24px;      height: 24px;      fill: currentColor;    }    .tg-df-settings-dropdown {      position: absolute;      top: calc(100% + 8px);      right: 0;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 12px;      box-shadow: 0 8px 32px rgba(0,0,0,0.12);      width: 280px;      padding: 20px;      display: none;      z-index: 100;      flex-direction: column;      gap: 20px;    }    .tg-df-settings-dropdown.active {      display: flex;    }        .tg-df-settings-dropdown-backdrop {      display: none;      position: fixed;      inset: 0;      z-index: 99;    }        .tg-df-settings-dropdown-backdrop.active {      display: block;    }    .tg-df-setting-item {      display: flex;      flex-direction: column;      gap: 10px;    }    .tg-df-setting-label {      font-size: 11px;      font-weight: 700;      color: var(--tg-df-text-muted);      text-transform: uppercase;      letter-spacing: 0.5px;    }        .tg-df-region-select {        padding: 10px 12px;        border-radius: 8px;        border: 1px solid var(--tg-df-border);        font-size: 15px;        outline: none;        background: var(--tg-df-bg-secondary);        color: var(--tg-df-text);        cursor: pointer;        width: 100%;    }    .tg-df-toggle {        position: relative;        display: inline-block;        width: 44px;        height: 24px;        flex-shrink: 0;    }    .tg-df-toggle input {        opacity: 0;        width: 0;        height: 0;    }    .tg-df-slider {        position: absolute;        cursor: pointer;        top: 0; left: 0; right: 0; bottom: 0;        background-color: #ccc;        transition: .2s;        border-radius: 24px;    }    .tg-df-slider:before {        position: absolute;        content: "";        height: 18px;        width: 18px;        left: 3px;        bottom: 3px;        background-color: white;        transition: .2s;        border-radius: 50%;    }    .tg-df-toggle input:checked + .tg-df-slider {        background-color: #1F69FF;    }    .tg-df-toggle input:checked + .tg-df-slider:before {        transform: translateX(20px);    }    .tg-df-dl-row {        flex-direction: row;        align-items: center;        justify-content: space-between;    }    .tg-df-dl-row-text {        font-size: 14px;        font-weight: 600;        color: var(--tg-df-text);    }    .tg-df-dl-row-subtext {        font-size: 12px;        font-weight: 400;        line-height: 1.3;        color: var(--tg-df-text-muted);        margin-top: 4px;        display: block;    }    .tg-df-filters {      display: flex;      gap: 12px;      justify-content: center;      flex-wrap: wrap;    }    .tg-df-sort-wrapper {      position: relative;      display: flex;      align-items: center;    }        .tg-df-sort-icon {      position: absolute;      left: 14px;      width: 14px;      height: 14px;      fill: var(--tg-df-text-muted);      pointer-events: none;    }    .tg-df-sort-select, .tg-df-filter-select {      padding: 10px 36px 10px 38px;      font-size: 14px;      border: 1px solid var(--tg-df-border);      border-radius: 100px;      outline: none;      appearance: none;      background-color: var(--tg-df-bg-secondary);      background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 12 12'%3E%3Cpath fill='%23555555' d='M6 8L1 3h10z'/%3E%3C/svg%3E");      background-repeat: no-repeat;      background-position: right 14px center;      color: var(--tg-df-text);      cursor: pointer;      font-weight: 500;      transition: all 0.2s ease;    }        .tg-df-price-input::-webkit-outer-spin-button,    .tg-df-price-input::-webkit-inner-spin-button {      -webkit-appearance: none;      margin: 0;    }    .tg-df-price-input {      -moz-appearance: textfield;    }    .tg-df-sort-select:hover, .tg-df-filter-select:hover {      background-color: #e2e8f0;    }    .tg-df-multiselect-container {      position: relative;    }        .tg-df-multiselect-trigger {      display: block;      background: #fff;      user-select: none;      width: 100%;      overflow: hidden;      white-space: nowrap;      text-overflow: ellipsis;    }        .tg-df-multiselect-dropdown {      display: none;      position: absolute;      top: calc(100% + 4px);      left: 0;      width: 100%;      min-width: 220px;      max-height: 300px;      overflow-y: auto;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 8px;      box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);      z-index: 100;      padding: 8px 0;    }    .tg-df-multiselect-dropdown.active {      display: block;    }    .tg-df-ms-option {      padding: 8px 16px;      display: flex;      align-items: center;      gap: 8px;      cursor: pointer;      font-size: 14px;    }    .tg-df-ms-option:hover {      background-color: var(--tg-df-bg-secondary);    }        .tg-df-ms-option input {      cursor: pointer;      accent-color: #1f69ff;    }    .tg-df-sort-select:focus, .tg-df-filter-select:focus {      border-color: #0000ff;      box-shadow: 0 0 0 3px rgba(0, 0, 255, 0.2);      background-color: var(--tg-df-bg);    }    /*       3. Deal Grid Layout    */    .tg-df-grid.tg-df-grid-auto {      padding-top: 24px;    }    .tg-df-grid, .tg-df-grid.layout-grid {      display: grid;      grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));      gap: 10px;    }    .tg-df-grid.layout-row {      grid-template-columns: 1fr;      gap: 16px;    }        .tg-df-grid.layout-row .tg-df-card {      flex-direction: row;      align-items: stretch;      height: auto;      box-shadow: none;      border-bottom: 1px solid var(--tg-df-border);    }    .tg-df-grid.layout-row .tg-df-card:hover {      box-shadow: none;    }    .tg-df-grid.layout-row .tg-df-card-image-box {      width: 140px;      min-width: 140px;      aspect-ratio: 3/4;      border-right: none;      padding: 16px 16px 16px 32px;    }    .tg-df-grid.layout-row .tg-df-card-body {      padding: 16px;      justify-content: space-between;    }    .tg-df-grid.layout-row .tg-df-card-title {      font-size: 15px;      margin-bottom: 16px;    }    .tg-df-grid.layout-row .tg-df-card-stars { margin-bottom: 8px; }    .tg-df-grid.layout-row .tg-df-card-footer {      flex-direction: column;      align-items: flex-start;      gap: 0;    }    .tg-df-grid.layout-row .tg-df-card-merchant-pill {      margin-bottom: 4px;    }    .tg-df-grid.layout-row .tg-df-card-price-group {      margin-bottom: 8px;    }    .tg-df-grid.layout-row .tg-df-price-group {      width: auto;    }    .tg-df-grid.layout-row .tg-df-card-cta {      width: 100%;      max-width: 200px;      padding: 10px 24px;      font-size: 13px;      flex-shrink: 0;      text-align: center;      justify-content: center;    }    /*       4. Deal Card Design    */    .tg-df-card {      position: relative;      display: flex;      flex-direction: column;      background-color: #ffffff;      border-radius: 0;      overflow: hidden;      transition: transform 0.2s ease, box-shadow 0.2s ease;      text-decoration: none;      color: inherit;      height: 100%;      box-shadow: 0 0 16px rgba(0, 0, 0, 0.08);      border: 1px solid var(--tg-df-border);    }    .tg-df-card:hover {      box-shadow: 0 0 24px rgba(0, 0, 0, 0.12);    }    .tg-df-card-image-box {      width: 100%;      aspect-ratio: 3/4;      background-color: #f8f8f8;      display: flex;      align-items: center;      justify-content: center;      position: relative;      overflow: hidden;      padding: 32px;      flex: 0 0 auto;    }    .tg-df-card-image {      max-width: 100%;      max-height: 100%;      width: auto;      height: auto;      object-fit: contain;      mix-blend-mode: multiply; /* Helps white background images blend into secondary bg */      transition: transform 0.3s ease;    }    .tg-df-card:hover .tg-df-card-image {      transform: scale(1.05); /* Zoom in on hover */    }    .tg-df-card-discount-badge {      position: absolute;      top: 12px;      left: 12px;      background: #dc2626; /* Red */      color: #ffffff;      padding: 6px 8px;      font-size: 11px;      font-weight: 500;      text-transform: uppercase;      letter-spacing: 0.5px;      border-radius: 0;      z-index: 10;    }        .tg-df-card-merchant-pill {      display: block;      padding: 0;      font-size: 11px;      font-weight: 600;      text-transform: uppercase;      letter-spacing: 0.5px;      border-radius: 0;      color: var(--tg-df-text-muted);      margin-bottom: 8px;      white-space: nowrap;      overflow: hidden;      text-overflow: ellipsis;    }    .tg-df-card-body {      padding: 16px;      display: flex;      flex-direction: column;      flex-grow: 1;      min-width: 0;    }    .tg-df-card-badges {      display: flex;      flex-wrap: wrap;      gap: 6px;      margin-bottom: 8px;    }    .tg-df-tag {      display: inline-flex;      align-items: center;      padding: 4px 6px;      font-size: 11px;      font-weight: 700;      text-transform: uppercase;      border-radius: 4px;      gap: 4px;    }    .tg-df-tag-prime {      background-color: #00A8E1;      color: #fff;    }    .tg-df-tag-coupons {      background-color: #f1f5f9;      color: #334155;      border: 1px solid #cbd5e1;      cursor: pointer;      transition: background-color 0.2s;    }    .tg-df-tag-coupons:hover {      background-color: #e2e8f0;    }        .tg-df-tag-outline {      background-color: #f1f5f9;      color: #334155;      border: 1px solid #cbd5e1;      cursor: pointer;      transition: background-color 0.2s;    }    .tg-df-tag-outline:hover {      background-color: #e2e8f0;    }        @keyframes tg-df-spin {      0% { transform: rotate(0deg); }      100% { transform: rotate(360deg); }    }    .tg-df-coupon-spinner {      border: 2px solid #e2e8f0;      border-top: 2px solid #3b82f6;      border-radius: 50%;      width: 14px;      height: 14px;      animation: tg-df-spin 1s linear infinite;      margin: 4px 8px;      display: inline-block;    }        /* Vouchers Modal */    .tg-df-modal-backdrop {      position: fixed;      top: 0; left: 0; right: 0; bottom: 0;      background: rgba(0,0,0,0.5);      z-index: 10000;      display: flex;      align-items: center;      justify-content: center;      opacity: 0;      pointer-events: none;      transition: opacity 0.3s;    }    .tg-df-modal-backdrop.active {      opacity: 1;      pointer-events: auto;    }    .tg-df-modal {      background: #fff;      border-radius: 12px;      width: 90%;      max-width: 400px;      max-height: 80vh;      display: flex;      flex-direction: column;      box-shadow: 0 10px 40px rgba(0,0,0,0.2);      transform: translateY(20px);      transition: transform 0.3s;    }    .tg-df-modal-backdrop.active .tg-df-modal {      transform: translateY(0);    }    .tg-df-modal-header {      padding: 16px;      border-bottom: 1px solid #e2e8f0;      display: flex;      align-items: center;      justify-content: space-between;    }    .tg-df-modal-title {      font-size: 16px;      font-weight: 600;      margin: 0;    }    .tg-df-modal-close {      background: none;      border: none;      cursor: pointer;      padding: 4px;      color: #64748b;    }    .tg-df-modal-body {      padding: 16px;      overflow-y: auto;    }    .tg-df-voucher-item {      padding: 12px;      border: 1px dashed #cbd5e1;      border-radius: 8px;      margin-bottom: 10px;      background: #f8fafc;      display: flex;      align-items: center;      gap: 12px;      text-decoration: none;      color: inherit;      transition: background-color 0.2s, border-color 0.2s;    }    .tg-df-voucher-item:hover {      background: #f1f5f9;      border-color: #94a3b8;    }    .tg-df-voucher-item:last-child {      margin-bottom: 0;    }    .tg-df-voucher-logo {      width: 48px;      height: 48px;      object-fit: contain;      border-radius: 4px;      background: #fff;      border: 1px solid #e2e8f0;      flex-shrink: 0;    }    .tg-df-voucher-content {      flex: 1;      min-width: 0;    }    .tg-df-voucher-title {      font-size: 14px;      font-weight: 600;      margin: 0 0 4px 0;      line-height: 1.3;      color: #0f172a;    }    .tg-df-voucher-expiry {      font-size: 12px;      color: #64748b;      display: flex;      align-items: center;      gap: 4px;      margin-top: 6px;    }    .tg-df-voucher-code {      display: inline-flex;      align-items: center;      background: #f1f5f9;      border: 1px dashed #cbd5e1;      padding: 6px 10px;      font-family: monospace;      font-weight: 700;      font-size: 14px;      color: #0f172a;      border-radius: 4px;      margin-top: 8px;      cursor: pointer;      transition: all 0.2s ease;    }    .tg-df-voucher-code:hover {      background: #e2e8f0;      border-color: #94a3b8;    }    .tg-df-voucher-code.copied {      background: #ecfdf5;      border-color: #10b981;      color: #10b981;    }    .tg-df-voucher-cta {      display: inline-block;      margin-top: 8px;      font-size: 13px;      font-weight: 600;      color: #2563eb;      text-decoration: none;    }    .tg-df-card-title {      font-size: 15px;      font-weight: 400;      line-height: 1.4;      margin: 0 0 12px 0;      color: var(--tg-df-text);      display: -webkit-box;      -webkit-line-clamp: 2;      -webkit-box-orient: vertical;      overflow: hidden;    }    .tg-df-card-footer {      margin-top: auto;      display: flex;      flex-direction: column;      width: 100%;    }    .tg-df-card-price-group {      display: flex;      flex-direction: row;      align-items: center;      gap: 8px;      margin-bottom: 12px;    }    .tg-df-card-price {      font-size: 16px;      font-weight: 700;      color: #dc2626; /* Red price */      line-height: 1;    }        .tg-df-card-msrp {      font-size: 13px;      color: var(--tg-df-text-muted);      text-decoration: line-through;    }    .tg-df-container .tg-df-card-cta {      display: flex;      align-items: center;      justify-content: center;      width: 100%;      box-sizing: border-box;      background-color: #1f69ff;      color: #ffffff;      font-size: 12px;      font-weight: 700;      text-transform: uppercase;      letter-spacing: 0.5px;      padding: 12px 16px;      border-radius: 0;      border: none;      cursor: pointer;      transition: background-color 0.2s ease;    }    .tg-df-card:hover .tg-df-card-cta,    .tg-df-card-cta:hover {      background-color: #1555cc;    }    .tg-df-container .tg-df-card-cta.tg-df-cta-savings-squad {      background-color: #3c8d0d;    }    .tg-df-card:hover .tg-df-card-cta.tg-df-cta-savings-squad,    .tg-df-card-cta.tg-df-cta-savings-squad:hover {      background-color: #2b6509;    }    /*       5. State & Skeleton Styles    */    .tg-df-message {      grid-column: 1 / -1;      text-align: center;      padding: 48px 24px;      color: var(--tg-df-text-muted);      font-size: 16px;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 8px;    }    @keyframes tg-df-shimmer {      0% { background-position: -200% 0; }      100% { background-position: 200% 0; }    }    .tg-df-skeleton {      background: linear-gradient(90deg, var(--tg-df-bg-secondary) 25%, #e2e8f0 50%, var(--tg-df-bg-secondary) 75%);      background-size: 200% 100%;      animation: tg-df-shimmer 1.5s infinite;      border-radius: 4px;    }    .tg-df-skeleton-img {      width: 100%;      height: 100%;      position: absolute;      top: 0; left: 0;    }        .tg-df-skeleton-text {      height: 16px;      margin-bottom: 8px;      width: 100%;    }    .tg-df-skeleton-text.short { width: 40%; }    .tg-df-skeleton-text.title { height: 20px; margin-bottom: 16px; }    /* Editor Floating Bar & Elements */    .tg-df-editor-bar {      position: sticky;      top: 0;      z-index: 1000;      background: #111827;      color: #fff;      padding: 12px 16px;      border-radius: 8px;      margin-bottom: 16px;      display: flex;      align-items: center;      justify-content: space-between;      box-shadow: 0 4px 12px rgba(0,0,0,0.15);    }    .tg-df-editor-bar-text {      font-weight: 600;      font-size: 14px;    }    .tg-df-editor-copy-btn {      background: #10b981;      color: #fff;      padding: 6px 16px;      border: none;      border-radius: 4px;      font-weight: 600;      cursor: pointer;      display: flex;      align-items: center;      font-size: 13px;    }    .tg-df-editor-copy-btn:hover { background: #059669; }        .tg-df-deal-checkbox {      position: absolute;      top: 12px;      right: 12px;      z-index: 10;      width: 20px;      height: 20px;      cursor: pointer;      pointer-events: auto;    }    /*       6. Mobile List View (Stacks into a cleaner horizontal row/list)    */    @container tg-df (max-width: 599px) {      .tg-df-controls {        padding: 0 16px;      }            .tg-df-top-bar {        width: 100%;      }            .tg-df-settings-dropdown {        position: fixed;        top: auto;        bottom: 0;        left: 0;        right: 0;        width: 100%;        border-radius: 20px 20px 0 0;        padding: 24px;        box-shadow: 0 -8px 32px rgba(0,0,0,0.15);        z-index: 1000;        border: none;        border-top: 1px solid var(--tg-df-border);      }            .tg-df-settings-dropdown-backdrop.active {        background: rgba(0,0,0,0.4);      }            .tg-df-search-wrapper {        box-shadow: 0 0 16px rgba(0,0,0,0.08);      }            .tg-df-filters {        width: calc(100% + 32px);        margin: 0 -16px;        padding: 0 16px 4px 16px;        display: flex;        justify-content: flex-start;        gap: 8px;        flex-wrap: nowrap;        overflow-x: auto;        -webkit-overflow-scrolling: touch;        scrollbar-width: none;      }      .tg-df-filters::after {        content: "";        display: block;        flex: 0 0 8px;      }      .tg-df-filters::-webkit-scrollbar {        display: none;      }            .tg-df-sort-wrapper {        flex: 0 0 max(42%, 130px);        min-width: 0;      }      .tg-df-sort-wrapper.tg-df-price-range-wrapper {        flex: 0 0 auto;        min-width: max-content;      }            .tg-df-sort-select, .tg-df-filter-select {        width: 100%;        text-align: left;        padding: 10px 24px 10px 32px;        background-position: right 8px center;        text-overflow: ellipsis;        white-space: nowrap;        overflow: hidden;      }      .tg-df-sort-icon {        left: 10px;      }      .tg-df-grid:not(.layout-grid):not(.layout-row),      .tg-df-grid.layout-row {        grid-template-columns: 1fr;        gap: 16px;      }            .tg-df-grid.tg-df-grid-auto {        padding-top: 24px;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card,      .tg-df-grid.layout-row .tg-df-card {        flex-direction: row;        align-items: stretch;        height: auto;        box-shadow: none; /* simple line on mobile if preferred, or keep */        border-bottom: 1px solid var(--tg-df-border);      }      .tg-df-grid.tg-df-grid-auto .tg-df-card:hover,      .tg-df-grid.layout-row .tg-df-card:hover {        box-shadow: none;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card-image-box,      .tg-df-grid.layout-row .tg-df-card-image-box {        width: 120px;        min-width: 120px;        aspect-ratio: 3/4;        border-right: none;        padding: 12px;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card-body,      .tg-df-grid.layout-row .tg-df-card-body {        padding: 12px;        justify-content: space-between;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card-title,      .tg-df-grid.layout-row .tg-df-card-title {        font-size: 14px;        margin-bottom: 12px;        -webkit-line-clamp: 3;      }      /* Single column mobile grid override */      .tg-df-grid.layout-grid {        grid-template-columns: 1fr;        gap: 16px;      }      .tg-df-grid.layout-grid .tg-df-card-image-box {        padding: 12px;      }      .tg-df-grid.layout-grid .tg-df-card-body {        padding: 10px;      }      .tg-df-grid.layout-grid .tg-df-card-title {        font-size: 13px;        -webkit-line-clamp: 3;        margin-bottom: 8px;      }      .tg-df-grid.layout-grid .tg-df-card-price {        font-size: 14px;      }            .tg-df-card-footer {        flex-direction: column;        align-items: stretch;        gap: 0;        width: 100%;        min-width: 0;      }      .tg-df-card-merchant-pill {        margin-bottom: 4px;      }      .tg-df-card-price-group {        flex: 1 1 auto;        margin-bottom: 8px;      }      .tg-df-card-price {        font-size: 16px;      }      .tg-df-card-msrp {        display: block;       }      .tg-df-grid.layout-row .tg-df-card-cta,      .tg-df-container .tg-df-card-cta {        width: 100%;        max-width: none;        min-width: 0;        box-sizing: border-box;        padding: 8px 16px;        font-size: 12px;        flex: 0 0 auto;        text-align: center;        white-space: normal;        line-height: 1.2;      }    }    .tg-df-container.is-carousel {      min-height: 760px;      background-color: #E7F0FF;      padding: 0 0 24px 0;      border-radius: 24px;    }    .tg-df-container.is-carousel.hide-header-details {      min-height: 480px;    }    /*       7. Carousel View Mode    */    .tg-df-container .tg-df-carousel-host {      /* Layout is now handled by container wrapper */    }    .tg-df-container .tg-df-carousel-eyebrow {      color: #1F69FF;      font-weight: 700;      font-size: 14px;      text-transform: uppercase;      letter-spacing: 1px;      padding: 24px 16px 0 16px;      display: none;    }    .tg-df-container .tg-df-carousel-query-title {      color: #011535;      font-size: 28px;      font-weight: 600;      padding: 0 16px 24px 16px;      line-height: 1.2;      display: none;    }    .tg-df-container .tg-df-carousel-blue-box {      background-color: transparent;      border-radius: 0;      padding: 24px 24px 0 24px;      margin: 0;      color: #1F69FF;          position: relative;      overflow: hidden;    }    .tg-df-container .tg-df-carousel-bg-circle-1 {      display: none;    }    .tg-df-container .tg-df-carousel-bg-circle-2 {      display: none;    }    .tg-df-container .tg-df-carousel-bg-circle-3 {      display: none;    }    .tg-df-container .tg-df-carousel-box-content {      position: relative;      z-index: 10;    }    .tg-df-container .tg-df-carousel-box-eyebrow {      background-color: transparent;      color: #1F69FF;      font-weight: 700;      font-size: 14px;      text-transform: uppercase;      letter-spacing: 1px;      display: inline-block;      padding: 0;      border-radius: 0;    }    .tg-df-container .tg-df-carousel-box-title {      font-size: 28px;      font-weight: 600;      line-height: 1.2;      margin-top: 8px;      color: #1e293b;    }    .tg-df-container .tg-df-countdown-wrapper {      position: absolute;      top: 0;      right: 0;      display: flex;      flex-direction: column;      align-items: flex-end;      gap: 12px;      transform: scale(0.67);      transform-origin: top right;    }    .tg-df-container .tg-df-countdown-title {      font-size: 16px;      text-align: center;      width: 100%;      font-weight: 600;      color: #011535;      margin: 0;    }    .tg-df-container .tg-df-countdown-blocks {      display: flex;      gap: 16px;    }    .tg-df-container .tg-df-countdown-item {      display: flex;      flex-direction: column;      align-items: center;      gap: 4px;    }    .tg-df-container .tg-df-countdown-box {      width: 59px;      height: 59px;      background: #03FE9E;      border-radius: 15px;      display: flex;      align-items: center;      justify-content: center;    }    .tg-df-container .tg-df-countdown-num {      font-family: 'Inter', sans-serif;      font-weight: 700;      font-size: 20px;      line-height: normal;      color: #011535;    }    .tg-df-container .tg-df-countdown-label {      font-family: 'Inter', sans-serif;      font-weight: 500;      font-size: 16px;      line-height: normal;      color: #1e293b;      text-transform: uppercase;    }    .tg-df-container .tg-df-carousel-box-subtitle {      font-size: 16px;      margin-top: 8px;      font-weight: 300;      color: #1e293b;      line-height: 24px;    }    .tg-df-container .tg-df-carousel-roundels-wrapper {      position: relative;      margin-top: 24px;      margin-left: -24px;      margin-right: -24px;    }    .tg-df-container .tg-df-carousel-roundels {      display: flex;      gap: 16px;      overflow-x: auto;            scrollbar-width: none;      padding-top: 12px;      padding-bottom: 24px;      padding-left: 24px;      padding-right: 24px;      margin-left: 0;      margin-right: 0;    }        .tg-df-container .tg-df-carousel-scroll-left,    .tg-df-container .tg-df-carousel-scroll-right {      position: absolute;      top: 50%;      transform: translateY(-50%);      height: 36px;      width: 36px;      display: flex;      align-items: center;      justify-content: center;      border-radius: 50%;      background-color: #ffffff;      border: 1px solid #e2e8f0;      box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);      color: #1F69FF;      cursor: pointer;      transition: all 0.2s;      margin-top: -4px;      z-index: 20;    }    .tg-df-container .tg-df-carousel-scroll-left { left: 8px; }    .tg-df-container .tg-df-carousel-scroll-right { right: 8px; }    .tg-df-carousel-filters-outer .tg-df-carousel-scroll-left { left: 0px; }    .tg-df-carousel-filters-outer .tg-df-carousel-scroll-right { right: 0px; }    .tg-df-carousel-filters-outer { margin-left: -24px; margin-right: -24px; padding-left: 24px; padding-right: 24px; }    @container tg-df (max-width: 599px) { .tg-df-carousel-filters-outer { margin-left: -16px; margin-right: -16px; padding-left: 16px; padding-right: 16px; } }        .tg-df-container .tg-df-carousel-scroll-left:hover,    .tg-df-container .tg-df-carousel-scroll-right:hover {      background-color: #f8fafc;      border-color: #cbd5e1;    }        .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-left,    .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-right,    .tg-df-carousel-filters-outer .tg-df-carousel-scroll-left,    .tg-df-carousel-filters-outer .tg-df-carousel-scroll-right {      background-color: rgba(255, 255, 255, 0.4);      border: none;      box-shadow: none;      backdrop-filter: blur(4px);      -webkit-backdrop-filter: blur(4px);    }    .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-left { left: 0; }    .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-right { right: 0; }    .tg-df-grid-wrapper .tg-df-carousel-scroll-left { left: 0; }    .tg-df-grid-wrapper .tg-df-carousel-scroll-right { right: 0; }        .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-left:hover,    .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-right:hover {      background-color: rgba(255, 255, 255, 0.6);      border: none;    }    .tg-df-container .tg-df-carousel-roundels::-webkit-scrollbar {      display: none;    }    .tg-df-container .tg-df-carousel-roundels::after {      content: "";      flex: 0 0 32px;    }    .tg-df-container .tg-df-roundel {      display: flex;      flex-direction: column;      align-items: center;      gap: 8px;      cursor: pointer;      min-width: 120px;      flex-shrink: 0;    }    .tg-df-container .tg-df-roundel-img-box {      width: 120px;      height: 120px;      border-radius: 50%;      background: white;      display: flex;      align-items: center;      justify-content: center;      overflow: hidden;      box-shadow: 0px 3px 14px 0px rgba(30, 41, 59, 0.08);      transition: box-shadow 0.2s;    }    .tg-df-container .tg-df-roundel:hover .tg-df-roundel-img-box {      box-shadow: 0 0 0 2px #E7F0FF, 0 0 0 4px #1F69FF;    }    .tg-df-container .tg-df-roundel.active .tg-df-roundel-img-box {      box-shadow: 0 0 0 2px #E7F0FF, 0 0 0 4px #1F69FF;    }    .tg-df-container .tg-df-roundel:hover .tg-df-roundel-img-box img {      transform: scale(1.08);    }    .tg-df-container .tg-df-roundel-img-box img {      width: 100%;      height: 100%;      object-fit: contain;      padding: 10px;      box-sizing: border-box;      transition: transform 0.3s ease;    }    .tg-df-container .tg-df-roundel-label {      font-size: 13px;      font-weight: 400;      color: #1e293b;      text-align: center;      transition: font-weight 0.2s;    }    .tg-df-container .tg-df-roundel.active .tg-df-roundel-label {      font-weight: 700;    }    .tg-df-container .tg-df-carousel-filters-label {      font-size: 16px;      font-weight: 400;      color: #1e293b;      white-space: nowrap;      margin-right: 4px;    }    .tg-df-container .tg-df-carousel-filters-wrap {      display: flex;      align-items: center;      flex-wrap: nowrap;      gap: 8px;      margin-top: 8px;      overflow-x: auto;      scrollbar-width: none;      -webkit-overflow-scrolling: touch;      padding-bottom: 8px;      margin-left: -24px;      margin-right: -24px;      padding-left: 24px;      padding-right: 24px;    }    .tg-df-container .tg-df-carousel-filters-wrap::-webkit-scrollbar {      display: none;    }        .tg-df-container .tg-df-carousel-filter-btn img,    .tg-df-container .tg-df-carousel-filter-btn picture {      height: 20px;      width: 20px;      object-fit: contain;      object-position: center;      display: inline-flex;      align-items: center;      justify-content: center;      margin-right: 6px;    }    .tg-df-container .tg-df-carousel-filter-btn picture img {      margin-right: 0;      height: 100%;      width: 100%;    }    .tg-df-container .tg-df-carousel-filter-btn img.active-img,    .tg-df-container .tg-df-carousel-filter-btn picture:has(.active-img) {      display: none;    }    .tg-df-container .tg-df-carousel-filter-btn:hover img.inactive-img,    .tg-df-container .tg-df-carousel-filter-btn.active img.inactive-img,    .tg-df-container .tg-df-carousel-filter-btn:hover picture:has(.inactive-img),    .tg-df-container .tg-df-carousel-filter-btn.active picture:has(.inactive-img) {      display: none;    }    .tg-df-container .tg-df-carousel-filter-btn:hover img.active-img,    .tg-df-container .tg-df-carousel-filter-btn.active img.active-img,    .tg-df-container .tg-df-carousel-filter-btn:hover picture:has(.active-img),    .tg-df-container .tg-df-carousel-filter-btn.active picture:has(.active-img) {      display: inline-flex;    }    .tg-df-container .tg-df-carousel-filter-btn {      background: #ffffff;      border: 2px solid #1e293b;      color: #1e293b;      border-radius: 24px;      padding: 6px 16px;      font-size: 14px;      font-weight: 600;      cursor: pointer;      transition: all 0.2s;      flex-shrink: 0;      white-space: nowrap;      display: inline-flex;      align-items: center;      justify-content: center;      min-height: 36px;      box-sizing: border-box;    }    .tg-df-container .tg-df-carousel-filter-btn svg {      margin-right: 6px;    }    .tg-df-container .tg-df-carousel-filter-btn:hover {      background: #1e293b;      color: white;      border-color: #1e293b;    }    .tg-df-container .tg-df-carousel-filter-btn.active {      background: #1e293b;      color: white;      border-color: #1e293b;    }        .tg-df-grid.carousel-compact {      display: flex;      flex-wrap: nowrap;      overflow-x: auto;      gap: 16px;      padding: 16px 24px;      align-items: stretch;      scrollbar-width: none;    }    .tg-df-grid.carousel-compact::after {      content: "";      flex: 0 0 32px;    }    .tg-df-grid-wrapper {      position: relative;    }    .tg-df-grid.carousel-compact::-webkit-scrollbar {      display: none;    }    .tg-df-grid.carousel-compact .tg-df-load-more-card {      flex: 0 0 auto;      width: 100px;      border-radius: 15px;      box-shadow: 0 0 16px rgba(0,0,0,0.08);      border: 2px solid #1e293b;      background: white;      color: #1e293b;      display: flex;      flex-direction: column;      justify-content: center;      align-items: center;      font-weight: 600;      font-size: 14px;      cursor: pointer;      padding: 16px;      text-align: center;      transition: all 0.2s;    }    .tg-df-grid.carousel-compact .tg-df-load-more-card:hover {      background: #1e293b;      color: white;    }    .tg-df-grid.carousel-compact .tg-df-card {      flex: 0 0 auto;      width: 200px;      min-height: auto;      height: auto;      display: flex;      flex-direction: column;      border-radius: 15px;      border: none;      box-shadow: 0 0 16px rgba(0,0,0,0.08);      overflow: visible;    }    .tg-df-grid.carousel-compact .tg-df-card-image-box {      padding: 12px;      background-color: transparent;      border-radius: 15px 15px 0 0;      height: 130px;    }    .tg-df-grid.carousel-compact .tg-df-card-image {      mix-blend-mode: normal;    }    .tg-df-grid.carousel-compact .tg-df-card-discount-badge {      border-radius: 0;      top: 0px;      left: 0px;      padding: 4px 8px;      font-size: 11px;    }    .tg-df-grid.carousel-compact .tg-df-card-body {      padding: 8px 12px 12px 12px;    }    .tg-df-grid.carousel-compact .tg-df-card-title {      font-size: 14px;      font-weight: 400;      -webkit-line-clamp: 2;      margin-bottom: 8px;      color: #011535;    }    .tg-df-grid.carousel-compact .tg-df-card-body:not(:has(.tg-df-card-stars)):not(:has(.tg-df-tag-prime)):not(:has(.tg-df-coupon-wrapper:not([style*="none"]))) > .tg-df-card-title,    .tg-df-grid.carousel-compact .tg-df-card-body:not(:has(.tg-df-card-stars)):has(> .tg-df-card-title:first-child) > .tg-df-card-title {      -webkit-line-clamp: 3;    }    .tg-df-grid.carousel-compact .tg-df-card-cta {      border-radius: 5px;      padding: 8px 10px;      margin-top: 4px;      background-color: #1F69FF;    }    .tg-df-grid.carousel-compact .tg-df-card-price-group {      margin-bottom: 2px;    }    .tg-df-grid.carousel-compact .tg-df-card-merchant-pill {      margin-bottom: 2px;    }    @container tg-df (max-width: 599px) {      .tg-df-container .tg-df-carousel-blue-box-title {        font-size: 24px;      }      .tg-df-container .tg-df-countdown-title {        display: none;      }      .tg-df-container .tg-df-countdown-wrapper {        position: absolute;        top: 0;        right: 0;        align-items: flex-end;        transform: scale(0.45);        transform-origin: top right;      }      .tg-df-container .tg-df-roundel {        min-width: 88px;      }      .tg-df-container .tg-df-roundel-img-box {        width: 88px;        height: 88px;      }    }    /* REPLICA BLOCK STYLES */    .tg-df-grid.layout-replica-2 { grid-template-columns: repeat(2, 1fr) !important; gap: 20px; }    .tg-df-grid.layout-replica-1 { grid-template-columns: 1fr !important; gap: 20px; }        .tg-df-container .hawk-deal-widget-container { border-bottom: 1px solid #e5e7eb; display: flex; flex-direction: column; margin: 0; padding: 20px 0; box-sizing: border-box; font-family: inherit; }    .tg-df-container .hawk-deal-widget-wrap { display: flex; flex-direction: row; align-items: flex-start; width: 100%; gap: 24px; }    .tg-df-container .hawk-deal-widget-image-container { display: flex; flex-shrink: 0; justify-content: center; width: 160px; height: 160px; align-items: center; background: white; margin-bottom: 0px; }    .tg-df-container .hawk-deal-widget-title-product-title { color: #111827; font-size: 18px; font-weight: 700; line-height: 1.4; display: inline; }    .tg-df-container .hawk-deal-widget-title-price { font-size: 18px; font-weight: 700; line-height: 1.4; white-space: nowrap; color: #2563eb; }    .tg-df-container .hawk-deal-widget-title-price-now { font-weight: 700; }    .tg-df-container .hawk-deal-widget-title-retailer-price:hover { text-decoration: underline; }    .tg-df-container .hawk-deal-widget-title-retailer { font-size: 18px; font-weight: 700; line-height: 1.4; color: #2563eb; }    .tg-df-container .hawk-deal-widget-title-was-price { color: #dc2626; font-size: 16px; font-weight: 500; line-height: 1.4; text-decoration: line-through; white-space: nowrap; margin-left: 8px; margin-right: 8px; }    .tg-df-container .hawk-deal-widget-text-body-container { position: relative; width: 100%; box-sizing: border-box; }    .tg-df-container .hawk-deal-widget-text-body-main { font-size: 16px; width: 100%; margin-bottom: 12px; }    .tg-df-container .hawk-deal-widget-text-body-description { display: block; font-size: 15px; margin-top: 12px; color: #4b5563; line-height: 1.6; }    .tg-df-container .hawk-deal-widget-text-body-description p { margin: 0; line-height: 1.6; }    .tg-df-container .hawk-deal-widget-text-cta-container { display: flex; flex-direction: column; gap: 12px; width: 100%; flex: 1; min-width: 0; box-sizing: border-box; }    .tg-df-container .hawk-deal-widget-footer { display: flex; justify-content: flex-end; width: 100%; margin-top: auto; }    .tg-df-container .hawk-deal-widget-button-wrapper { display: flex; flex-direction: column; align-items: flex-end; justify-content: flex-end; width: 100%; }    .tg-df-container .hawk-deal-widget-preferred-partner-wrapper { display: flex; flex-direction: row; }        @container tg-df (min-width: 600px) {      .tg-df-mobile-only { display: none !important; }    }    @container tg-df (max-width: 599px) {      .tg-df-desktop-only { display: none !important; }      .tg-df-grid.layout-replica-2 { grid-template-columns: 1fr !important; }      .tg-df-grid.savings-squad-cards { grid-template-columns: 1fr !important; display: flex; flex-direction: column; }    }    .tg-df-grid.savings-squad-cards .tg-df-card-title {      -webkit-line-clamp: unset !important;      display: block !important;      overflow: visible !important;    }    @container tg-df (max-width: 500px) {      .tg-df-container .hawk-deal-widget-wrap { display: block; }      .tg-df-container .hawk-deal-widget-image-container { display: block; float: left; margin: 0 16px 8px 0; width: 120px; max-width: 120px; height: auto; align-items: normal; justify-content: normal; }      .tg-df-container .hawk-deal-widget-text-cta-container { display: block; text-align: left; }      .tg-df-container .hawk-deal-widget-footer { display: block; margin-top: 16px; clear: both; width: 100%; }      .tg-df-container .hawk-deal-widget-button-wrapper { display: block; width: 100%; }      .tg-df-container .hawk-deal-widget-button-wrapper .hawk-deal-widget-preferred-partner-wrapper { display: block; width: 100%; }      .tg-df-container .hawk-affiliate-link-deal-button { box-sizing: border-box !important; display: flex !important; max-width: none !important; width: 100% !important; margin: 0 !important; }    }        .tg-df-container .hawk-affiliate-link-deal-button {       align-items: center; background-color: #5aaf0b; box-sizing: border-box; color: #ffffff !important; display: flex; font-size: 14px; font-weight: 700; justify-content: center; letter-spacing: 0.5px; line-height: 1; min-width: 160px; padding: 14px 24px; text-align: center; text-decoration: none; text-transform: uppercase; width: 100%; word-break: normal; border-radius: 4px; border: 0; transition: background-color 0.2s;     }    .tg-df-container .hawk-affiliate-link-deal-button:hover { background-color: #4a9109; text-decoration: none; }    .tg-df-container .hawk-lazy-image-deal-widget { display: block; height: auto; margin: auto; max-height: 160px; max-width: 100%; mix-blend-mode: multiply; object-fit: contain; }    .tg-df-container .hawk-deal-widget-text-cta-container a { color: #2563eb; text-decoration: none; display: inline; }    .tg-df-container .hawk-deal-widget-text-cta-container a:hover { text-decoration: underline; }    .tg-df-container .hawk-deal-widget-text-cta-container a:has(.hawk-deal-widget-title-product-title) { color: #111827; }    .tg-df-container .hawk-deal-widget-text-cta-container a:hover .hawk-deal-widget-title-product-title,    .tg-df-container .hawk-deal-widget-text-cta-container a:hover .hawk-deal-widget-title-retailer-price { text-decoration: underline; }  \x3C/style>  \x3C!-- Widget Container --\x3E  \x3Cdiv class="tg-df-container" id="signal-deals-finder-root">    \x3C!-- Editor Floating Bar --\x3E    \x3Cdiv class="tg-df-editor-bar" id="tg-df-editor-bar" style="display:none;">      \x3Cdiv class="tg-df-editor-bar-text" style="display: flex; align-items: center;">        \x3Cspan id="tg-df-selected-count">0\x3C/span>\x26nbsp;Deals Selected        \x3Cbutton class="tg-df-editor-clear-btn" id="tg-df-editor-clear" type="button" style="margin-left: 12px; font-size: 13px; color: #9ca3af; background: none; border: none; cursor: pointer; text-decoration: underline;">Clear All\x3C/button>      \x3C/div>      \x3Cbutton class="tg-df-editor-copy-btn" id="tg-df-editor-copy" type="button">        \x3Csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-right: 6px;">\x3Crect x="9" y="9" width="13" height="13" rx="2" ry="2">\x3C/rect>\x3Cpath d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1">\x3C/path>\x3C/svg>        Copy to CMS      \x3C/button>    \x3C/div>    \x3Cdiv class="tg-df-carousel-host" id="tg-df-carousel-host" style="display: none;">      \x3Cdiv class="tg-df-carousel-eyebrow">DEAL FINDER\x3C/div>      \x3Cdiv class="tg-df-carousel-query-title" id="tg-df-carousel-title-label">Best Deals\x3C/div>            \x3Cdiv class="tg-df-carousel-blue-box">        \x3Cdiv class="tg-df-carousel-bg-circle-1" aria-hidden="true">\x26nbsp;\x3C/div>        \x3Cdiv class="tg-df-carousel-bg-circle-2" aria-hidden="true">\x26nbsp;\x3C/div>        \x3Cdiv class="tg-df-carousel-bg-circle-3" aria-hidden="true">\x26nbsp;\x3C/div>        \x3Cdiv class="tg-df-carousel-box-content">          \x3Cdiv class="tg-df-countdown-wrapper" id="tg-df-countdown-wrapper" style="display:none;">            \x3Cdiv class="tg-df-countdown-title" id="tg-df-countdown-title">Prime Day starts in\x3C/div>            \x3Cdiv class="tg-df-countdown-blocks">              \x3Cdiv class="tg-df-countdown-item">\x3Cdiv class="tg-df-countdown-box">\x3Cdiv class="tg-df-countdown-num" id="tg-df-cd-days">0\x3C/div>\x3C/div>\x3Cdiv class="tg-df-countdown-label">DAYS\x3C/div>\x3C/div>              \x3Cdiv class="tg-df-countdown-item">\x3Cdiv class="tg-df-countdown-box">\x3Cdiv class="tg-df-countdown-num" id="tg-df-cd-hrs">0\x3C/div>\x3C/div>\x3Cdiv class="tg-df-countdown-label">HRS\x3C/div>\x3C/div>              \x3Cdiv class="tg-df-countdown-item">\x3Cdiv class="tg-df-countdown-box">\x3Cdiv class="tg-df-countdown-num" id="tg-df-cd-min">0\x3C/div>\x3C/div>\x3Cdiv class="tg-df-countdown-label">MIN\x3C/div>\x3C/div>              \x3Cdiv class="tg-df-countdown-item">\x3Cdiv class="tg-df-countdown-box">\x3Cdiv class="tg-df-countdown-num" id="tg-df-cd-sec">0\x3C/div>\x3C/div>\x3Cdiv class="tg-df-countdown-label">SEC\x3C/div>\x3C/div>            \x3C/div>          \x3C/div>          \x3Cdiv class="tg-df-carousel-box-eyebrow">DEAL FINDER\x3C/div>          \x3Cdiv class="tg-df-carousel-box-title">Find Deals Fast\x3C/div>          \x3Cdiv class="tg-df-carousel-box-subtitle">The latest deals from the biggest retailers, all in one place\x3C/div>                    \x3Cdiv class="tg-df-carousel-roundels-wrapper">          \x3Cbutton class="tg-df-carousel-scroll-left" type="button" aria-label="Scroll left" style="display:none;" onclick="this.parentElement.querySelector('.tg-df-carousel-roundels').scrollBy({left: -200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m15 18-6-6 6-6">\x3C/path>\x3C/svg>\x3C/button>          \x3Cdiv class="tg-df-carousel-roundels">            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>          \x3C/div>          \x3Cbutton class="tg-df-carousel-scroll-right" type="button" aria-label="Scroll right" onclick="this.parentElement.querySelector('.tg-df-carousel-roundels').scrollBy({left: 200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m9 18 6-6-6-6">\x3C/path>\x3C/svg>\x3C/button>        \x3C/div>        \x3Cdiv class="tg-df-carousel-filters-outer" style="position: relative;">          \x3Cbutton class="tg-df-carousel-scroll-left" type="button" aria-label="Scroll left" style="display:none;" onclick="this.parentElement.querySelector('.tg-df-carousel-filters-wrap').scrollBy({left: -200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m15 18-6-6 6-6">\x3C/path>\x3C/svg>\x3C/button>          \x3Cdiv class="tg-df-carousel-filters-wrap">                      \x3Cbutton class="tg-df-carousel-filter-btn" data-d="0">All\x3C/button>                      \x3Cbutton class="tg-df-carousel-filter-btn" data-ot="amazon_lightning">              \x3Cimg src="https://cdn.mos.cms.futurecdn.net/HqAui7w97ft2NPqBtQ5r38-600-100.png" class="inactive-img" alt="" />\x3Cimg src="https://cdn.mos.cms.futurecdn.net/yWPQ5yyQRhUwVKzGwYbh38-600-100.png" class="active-img" alt="" /> Lightning deals\x3C/button>            \x3Cbutton class="tg-df-carousel-filter-btn" data-ot="amazon_prime">              \x3Cimg src="https://cdn.mos.cms.futurecdn.net/fwoVXvL79turN3Ph535m38-600-100.png" class="inactive-img" alt="" />\x3Cimg src="https://cdn.mos.cms.futurecdn.net/u75QjVpt3w2EsMimJiRo38-600-100.png" class="active-img" alt="" /> Prime deals\x3C/button>            \x3Cbutton class="tg-df-carousel-filter-btn" data-d="10">              \x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tag">\x3Cpath d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z">\x3C/path>\x3Ccircle cx="7.5" cy="7.5" r=".5" fill="currentColor">\x3C/circle>\x3C/svg>            Min 10% off\x3C/button>                      \x3Cbutton class="tg-df-carousel-filter-btn" data-d="15">              \x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tag">\x3Cpath d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z">\x3C/path>\x3Ccircle cx="7.5" cy="7.5" r=".5" fill="currentColor">\x3C/circle>\x3C/svg>            Min 15% off\x3C/button>                      \x3Cbutton class="tg-df-carousel-filter-btn" data-d="25">              \x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tag">\x3Cpath d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z">\x3C/path>\x3Ccircle cx="7.5" cy="7.5" r=".5" fill="currentColor">\x3C/circle>\x3C/svg>            Min 25% off\x3C/button>                      \x3Cbutton class="tg-df-carousel-filter-btn" data-pr="under50">              \x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-dollar-sign">\x3Cpath d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z">\x3C/path>\x3Cpath d="M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8">\x3C/path>\x3Cpath d="M12 18V6">\x3C/path>\x3C/svg>            Under $50\x3C/button>        \x3C/div>        \x3Cbutton class="tg-df-carousel-scroll-right" type="button" aria-label="Scroll right" style="display:none;" onclick="this.parentElement.querySelector('.tg-df-carousel-filters-wrap').scrollBy({left: 200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m9 18 6-6-6-6">\x3C/path>\x3C/svg>\x3C/button>      \x3C/div>    \x3C/div>    \x3C/div>      \x3C!-- Search & Filter Controls --\x3E    \x3Cdiv class="tg-df-controls" id="tg-df-controls" style="display:flex;">      \x3Cdiv class="tg-df-top-bar">        \x3Cdiv class="tg-df-search-wrapper">          \x3Cinput type="text" class="tg-df-search-input" placeholder="Search for deals, products, or brands...">          \x3Cbutton type="button" class="tg-df-search-btn" aria-label="Search">              \x3Csvg class="tg-df-search-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">                \x3Cpath d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"/>              \x3C/svg>          \x3C/button>          \x3Cdiv class="tg-df-autocomplete-dropdown" id="tg-df-autocomplete">\x3C/div>        \x3C/div>                \x3Cdiv class="tg-df-settings-wrapper">          \x3Cbutton type="button" class="tg-df-settings-btn" aria-label="Settings" id="tg-df-settings-toggle">            \x3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="20" height="20">                \x3Cpath d="M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.06-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.73 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.06.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .43-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.49-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z"/>            \x3C/svg>          \x3C/button>          \x3Cdiv class="tg-df-settings-dropdown-backdrop" id="tg-df-settings-backdrop">\x3C/div>          \x3Cdiv class="tg-df-settings-dropdown" id="tg-df-settings-panel">            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">Search Region\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-region-select">                \x3Coption value="auto">🌍 Auto-detect\x3C/option>                \x3Coption value="US">🇺🇸 United States (US)\x3C/option>                \x3Coption value="GB">🇬🇧 United Kingdom (UK)\x3C/option>                \x3Coption value="CA">🇨🇦 Canada (CA)\x3C/option>                \x3Coption value="AU">🇦🇺 Australia (AU)\x3C/option>                \x3Coption value="DE">🇩🇪 Germany (DE)\x3C/option>                \x3Coption value="FR">🇫🇷 France (FR)\x3C/option>                \x3Coption value="IT">🇮🇹 Italy (IT)\x3C/option>              \x3C/select>            \x3C/div>            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">Retailer\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-retailer-select">                \x3Coption value="">All Retailers\x3C/option>                \x3Coption value="Amazon">Amazon\x3C/option>                \x3Coption value="Walmart">Walmart\x3C/option>                \x3Coption value="Best Buy">Best Buy\x3C/option>                \x3Coption value="Target">Target\x3C/option>                \x3Coption value="John Lewis">John Lewis\x3C/option>                \x3Coption value="Currys">Currys\x3C/option>                \x3Coption value="Argos">Argos\x3C/option>              \x3C/select>            \x3C/div>            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">Offer Type\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-offer-type-select">                \x3Coption value="">All Offers\x3C/option>                \x3Coption value="amazon_prime">Amazon Prime\x3C/option>                \x3Coption value="recommended_promo">Recommended Promo\x3C/option>                \x3Coption value="amazon_lightning">Amazon Lightning Deal\x3C/option>              \x3C/select>            \x3C/div>            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">Result Count\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-rows-select">                \x3Coption value="3">3 Items\x3C/option>                \x3Coption value="4">4 Items\x3C/option>                \x3Coption value="6">6 Items\x3C/option>                \x3Coption value="12" selected>12 Items\x3C/option>                \x3Coption value="24">24 Items\x3C/option>                \x3Coption value="48">48 Items\x3C/option>              \x3C/select>            \x3C/div>            \x3Cdiv class="tg-df-setting-item tg-df-dl-row">              \x3Cdiv>                \x3Cspan class="tg-df-dl-row-text">Deal Mode\x3C/span>                \x3Cspan class="tg-df-dl-row-subtext">Only show products with active offers or previous prices (was_price)\x3C/span>              \x3C/div>              \x3Clabel class="tg-df-toggle">                \x3Cinput type="checkbox" id="tg-df-deal-mode">                \x3Cspan class="tg-df-slider">\x3C/span>              \x3C/label>            \x3C/div>            \x3Cdiv class="tg-df-setting-item tg-df-dl-row">              \x3Cdiv>                \x3Cspan class="tg-df-dl-row-text">Editor Mode\x3C/span>                \x3Cspan class="tg-df-dl-row-subtext">Enable multi-select to copy deals to CMS\x3C/span>              \x3C/div>              \x3Clabel class="tg-df-toggle">                \x3Cinput type="checkbox" id="tg-df-editor-mode">                \x3Cspan class="tg-df-slider">\x3C/span>              \x3C/label>            \x3C/div>            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">View Mode\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-view-mode-select">                \x3Coption value="auto">Auto Collection\x3C/option>                \x3Coption value="carousel">Carousel\x3C/option>                \x3Coption value="savings_squad">Savings Squad\x3C/option>                \x3Coption value="grid">Grid (Columns)\x3C/option>                \x3Coption value="row">Row (List)\x3C/option>              \x3C/select>            \x3C/div>          \x3C/div>        \x3C/div>      \x3C/div>      \x3Cdiv class="tg-df-filters">        \x3Cdiv class="tg-df-sort-wrapper" id="tg-df-category-filter-wrapper" style="display: none;">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">            \x3Cpath d="M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z"/>          \x3C/svg>          \x3Cselect class="tg-df-filter-select" id="tg-df-category-filter" aria-label="Category">            \x3Coption value="all">All Categories\x3C/option>          \x3C/select>        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper tg-df-multiselect-container" id="tg-df-brand-filter-wrapper" style="display:none;">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">            \x3Cpath d="M4.25 5.61C6.27 8.2 10 13 10 13v6c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-6s3.72-4.8 5.74-7.39A.998.998 0 0 0 18.95 4H5.04c-.83 0-1.3.95-.79 1.61z"/>          \x3C/svg>          \x3Cdiv class="tg-df-filter-select tg-df-multiselect-trigger" id="tg-df-brand-trigger" tabindex="0">            Any Brand          \x3C/div>          \x3Cdiv class="tg-df-multiselect-dropdown" id="tg-df-brand-dropdown">            \x3C!-- Populated via script --\x3E          \x3C/div>        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">            \x3Cpath d="M9 3L5 6.99h3V14h2V6.99h3L9 3zm7 14.01V10h-2v7.01h-3L15 21l4-3.99h-3z"/>          \x3C/svg>          \x3Cselect class="tg-df-sort-select" aria-label="Sort Deals">            \x3Coption value="date_desc">Newest First\x3C/option>            \x3Coption value="best_match">Sort by: Match\x3C/option>            \x3Coption value="price_asc">Price Low to High\x3C/option>            \x3Coption value="price_desc">Price High to Low\x3C/option>            \x3Coption value="discount_desc">Biggest Discount\x3C/option>          \x3C/select>        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper tg-df-price-range-wrapper" id="tg-df-custom-price-wrapper" style="display: flex; align-items:center; justify-content:center; padding: 10px 20px; gap: 8px; border: 1px solid var(--tg-df-border); border-radius: 100px; background-color: var(--tg-df-bg);">          \x3Cspan style="font-size:14px; font-weight:500; color:var(--tg-df-text-primary);">Price\x3C/span>          \x3Cinput type="number" class="tg-df-price-input" id="tg-df-custom-price-min" placeholder="Min" style="width: 48px; background: transparent; border: none; color: var(--tg-df-text-primary); outline: none; font-size: 14px; text-align: center; padding: 0;">          \x3Cspan style="color:var(--tg-df-text-muted)">-\x3C/span>          \x3Cinput type="number" class="tg-df-price-input" id="tg-df-custom-price-max" placeholder="Max" style="width: 48px; background: transparent; border: none; color: var(--tg-df-text-primary); outline: none; font-size: 14px; text-align: center; padding: 0;">        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper" id="tg-df-legacy-price-wrapper">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">            \x3Cpath d="M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58.55 0 1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41 0-.55-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7z"/>          \x3C/svg>          \x3Cselect class="tg-df-filter-select" id="tg-df-price-filter" aria-label="Filter Prices">            \x3Coption value="all">All Prices\x3C/option>            \x3Coption value="under50">Under $50\x3C/option>            \x3Coption value="50_100">$50 - $100\x3C/option>            \x3Coption value="100_200">$100 - $200\x3C/option>            \x3Coption value="200_500">$200 - $500\x3C/option>            \x3Coption value="over500">Over $500\x3C/option>          \x3C/select>        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper" id="tg-df-discount-filter-wrapper">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">            \x3Cpath d="M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58.55 0 1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41 0-.55-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7z"/>          \x3C/svg>          \x3Cselect class="tg-df-filter-select" id="tg-df-discount-filter" aria-label="Discount Amount">            \x3Coption value="all">Any discount\x3C/option>            \x3Coption value="5">Min 5%\x3C/option>            \x3Coption value="10">Min 10%\x3C/option>            \x3Coption value="15">Min 15%\x3C/option>            \x3Coption value="20">Min 20%\x3C/option>            \x3Coption value="25">Min 25%\x3C/option>            \x3Coption value="30">Min 30%\x3C/option>            \x3Coption value="40">Min 40%\x3C/option>            \x3Coption value="50">Min 50%\x3C/option>            \x3Coption value="60">Min 60%\x3C/option>            \x3Coption value="70">Min 70%\x3C/option>          \x3C/select>        \x3C/div>      \x3C/div>    \x3C/div>    \x3C!-- Deals Grid Wrapper --\x3E    \x3Cdiv class="tg-df-grid-wrapper tg-df-carousel-cards-wrapper" id="tg-df-grid-wrapper">      \x3Cbutton class="tg-df-carousel-scroll-left" type="button" aria-label="Scroll left" style="display:none;" onclick="this.parentElement.querySelector('#tg-df-grid').scrollBy({left: -200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m15 18-6-6 6-6">\x3C/path>\x3C/svg>\x3C/button>      \x3Cdiv class="tg-df-grid" id="tg-df-grid">        \x3C!-- Content populated by JavaScript --\x3E      \x3C/div>      \x3Cbutton class="tg-df-carousel-scroll-right" type="button" aria-label="Scroll right" style="display:none;" onclick="this.parentElement.querySelector('#tg-df-grid').scrollBy({left: 200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m9 18 6-6-6-6">\x3C/path>\x3C/svg>\x3C/button>    \x3C/div>        \x3C!-- Vouchers Modal --\x3E    \x3Cdiv class="tg-df-modal-backdrop" id="tg-df-vouchers-modal">      \x3Cdiv class="tg-df-modal">        \x3Cdiv class="tg-df-modal-header">          \x3Ch3 class="tg-df-modal-title" id="tg-df-vouchers-title">Available Coupons & Deals\x3C/h3>          \x3Cbutton class="tg-df-modal-close" id="tg-df-vouchers-close">            \x3Csvg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">              \x3Cline x1="18" y1="6" x2="6" y2="18">\x3C/line>              \x3Cline x1="6" y1="6" x2="18" y2="18">\x3C/line>            \x3C/svg>          \x3C/button>        \x3C/div>        \x3Cdiv class="tg-df-modal-body" id="tg-df-vouchers-content">          \x3C!-- Vouchers injected here --\x3E        \x3C/div>      \x3C/div>    \x3C/div>  \x3C/div>`;      if (!template) {        template = document.createElement('template');        template.innerHTML = rawTemplate;      }      let shadowRoot = null;      if (hostContainer && template) {        hostContainer.setAttribute('data-initialized', 'true');        shadowRoot = hostContainer.attachShadow({ mode: 'open' });        shadowRoot.appendChild(template.content.cloneNode(true));      }      class DealsFinderWidget {        constructor(config) {          this.rootNode = config.rootNode || document;          this.hostContainer = config.hostContainer || null;          this.rootId = config.rootId || 'signal-deals-finder-root';          this.root = this.rootNode.querySelector('#' + this.rootId);          if (!this.root) return;          this.widgetId = (window.crypto && window.crypto.randomUUID) ? window.crypto.randomUUID() : 'widget-' + Date.now() + '-' + Math.random().toString(36).slice(2);          this.grid = this.root.querySelector('#tg-df-grid');          this.tagsContainer = this.root.querySelector('#tg-df-tags-container');          this.categoryFilter = this.root.querySelector('#tg-df-category-filter');          this.categoryFilterWrapper = this.root.querySelector('#tg-df-category-filter-wrapper');          this.searchInput = this.root.querySelector('.tg-df-search-input');          this.autocompleteDropdown = this.root.querySelector('#tg-df-autocomplete');          this.sortSelect = this.root.querySelector('.tg-df-sort-select');          this.searchBtn = this.root.querySelector('.tg-df-search-btn');                    this.settingsToggle = this.root.querySelector('#tg-df-settings-toggle');          this.settingsPanel = this.root.querySelector('#tg-df-settings-panel');          this.settingsBackdrop = this.root.querySelector('#tg-df-settings-backdrop');          this.regionSelect = this.root.querySelector('#tg-df-region-select');          this.retailerSelect = this.root.querySelector('#tg-df-retailer-select');          this.offerTypeSelect = this.root.querySelector('#tg-df-offer-type-select');          this.viewModeSelect = this.root.querySelector('#tg-df-view-mode-select');          this.rowsSelect = this.root.querySelector('#tg-df-rows-select');          this.dealModeToggle = this.root.querySelector('#tg-df-deal-mode');          this.editorModeToggle = this.root.querySelector('#tg-df-editor-mode');          this.priceFilter = this.root.querySelector('#tg-df-price-filter');          this.discountFilter = this.root.querySelector('#tg-df-discount-filter');                    this.editorBar = this.root.querySelector('#tg-df-editor-bar');          this.editorSelectedCount = this.root.querySelector('#tg-df-selected-count');          this.editorCopyBtn = this.root.querySelector('#tg-df-editor-copy');          this.editorClearBtn = this.root.querySelector('#tg-df-editor-clear');                    this.apiUrl = 'https://search-api.fie.future.net.uk/widget.php';          this.deals = [];          this.displayLimit = 12;          this.airedaleArticles = null;          this.airedaleTags = [];          this.airedaleTagCounts = {};          this.activeDealTag = null;          this.selectedBrands = [];          this.currentQuery = '';          this.editorMode = this.hostContainer ? this.hostContainer.hasAttribute('data-editor-mode') : false;          this.viewModeOverride = this.hostContainer ? this.hostContainer.getAttribute('data-view-mode') : null;          this.selectedDeals = new Map();                    this.brandFilterWrapper = this.root.querySelector('#tg-df-brand-filter-wrapper');          this.brandTrigger = this.root.querySelector('#tg-df-brand-trigger');          this.brandDropdown = this.root.querySelector('#tg-df-brand-dropdown');                    this.customPriceWrapper = this.root.querySelector('#tg-df-custom-price-wrapper');          this.customPriceMin = this.root.querySelector('#tg-df-custom-price-min');          this.customPriceMax = this.root.querySelector('#tg-df-custom-price-max');          this.legacyPriceWrapper = this.root.querySelector('#tg-df-legacy-price-wrapper');          this.discountFilterWrapper = this.root.querySelector('#tg-df-discount-filter-wrapper');          this.initResizeObserver();          this.init();            if (['carousel', 'carousel-compact', 'auto', 'grid', 'row'].includes(this.getViewMode())) { this.loadCarouselSpreadsheet(); }        }        getViewMode() {          if (this.viewModeOverride && (!this.editorMode || !this.viewModeSelect)) {            return this.viewModeOverride;          }          return (this.viewModeSelect && this.viewModeSelect.value) ? this.viewModeSelect.value : (this.viewModeOverride || 'auto');        }        applyLayoutMode() {          if (!this.grid) return;          const mode = this.getViewMode();          this.grid.classList.remove('layout-row', 'layout-grid', 'tg-df-grid-auto', 'carousel-compact', 'layout-replica-1', 'layout-replica-2');                    const carouselHost = this.root.querySelector('#tg-df-carousel-host');          const controlsDiv = this.root.querySelector('#tg-df-controls');          if (mode === 'carousel' || mode === 'auto' || mode === 'grid' || mode === 'row') {             if (mode === 'carousel') this.grid.classList.add('carousel-compact');             if (carouselHost) carouselHost.style.display = 'block';             if (controlsDiv) controlsDiv.style.display = 'none';             if (this.root.classList.contains('tg-df-container') && mode === 'carousel') {               this.root.classList.add('is-carousel');             } else if (this.root.classList.contains('tg-df-container')) {               this.root.classList.remove('is-carousel');             }          } else {             if (carouselHost) carouselHost.style.display = 'none';             if (controlsDiv) controlsDiv.style.display = 'flex';             if (this.root.classList.contains('tg-df-container')) {               this.root.classList.remove('is-carousel');             }          }          if (mode === 'grid') {            this.grid.classList.add('layout-grid');          } else if (mode === 'row') {            this.grid.classList.add('layout-row');          } else if (mode === 'savings_squad') {            this.grid.classList.add('tg-df-grid-auto', 'savings-squad-cards');          } else if (mode !== 'carousel') {            this.grid.classList.add('tg-df-grid-auto');          }                    const settingsWrapper = this.root.querySelector('.tg-df-settings-wrapper');          if (settingsWrapper) {            settingsWrapper.style.display = mode === 'auto' ? 'none' : 'block';          }          if (this.customPriceWrapper) {             this.customPriceWrapper.style.display = mode === 'auto' ? 'flex' : 'none';          }          if (this.legacyPriceWrapper) {             this.legacyPriceWrapper.style.display = mode === 'auto' ? 'none' : 'flex';          }          if (this.discountFilterWrapper) {             this.discountFilterWrapper.style.display = mode === 'auto' ? 'none' : 'flex';          }        }        initResizeObserver() {          try {            if (window.parent === window) return;          } catch (e) {            // cross origin frame check threw          }          const emitHeight = () => {            try {              const height = document.documentElement.scrollHeight || document.body.scrollHeight;              const msg = { type: 'embed-size', height: height };              if (window.parent && window.parent !== window) {                window.parent.postMessage(msg, '*');                window.parent.postMessage(JSON.stringify({ ...msg, sentinel: 'amp' }), '*');              }            } catch (e) {}          };                    if (window.ResizeObserver) {            try {              const ro = new ResizeObserver(() => emitHeight());              ro.observe(document.body);              if (this.root) ro.observe(this.root);            } catch(e){ console.warn(e); }          }          window.addEventListener('resize', emitHeight);          setTimeout(emitHeight, 300);        }        initCountdown() {          this.cdWrapper = this.root.querySelector('#tg-df-countdown-wrapper');                    let searchSource = window.location.search;          if (this.hostContainer && this.hostContainer.hasAttribute('data-widget-config')) {            searchSource = this.hostContainer.getAttribute('data-widget-config');          } else if (typeof window !== 'undefined' && window.__WIDGET_CONFIG__) {            searchSource = window.__WIDGET_CONFIG__;          }          const params = new URLSearchParams(searchSource);          this.showCountdown = params.get('show_countdown') === 'true';          const showHeaderDetails = params.get('show_header_details') !== 'false';          const eyebrow = this.root.querySelector('.tg-df-carousel-box-eyebrow');          const title = this.root.querySelector('.tg-df-carousel-box-title');          const subtitle = this.root.querySelector('.tg-df-carousel-box-subtitle');          if (!showHeaderDetails) {            let containerElement = this.root.classList.contains('tg-df-container') ? this.root : this.root.querySelector('.tg-df-container');            if (containerElement) containerElement.classList.add('hide-header-details');            if (eyebrow) eyebrow.style.display = 'none';            if (title) title.style.display = 'none';            if (subtitle) subtitle.style.display = 'none';          }          if (!this.cdWrapper) return;          this.cdTitle = this.root.querySelector('#tg-df-countdown-title');          this.cdDays = this.root.querySelector('#tg-df-cd-days');          this.cdHrs = this.root.querySelector('#tg-df-cd-hrs');          this.cdMin = this.root.querySelector('#tg-df-cd-min');          this.cdSec = this.root.querySelector('#tg-df-cd-sec');          this.updateCountdown();          this.cdInterval = setInterval(() => this.updateCountdown(), 1000);        }        updateCountdown() {          if (!this.cdWrapper) return;          if (!this.showCountdown) {            this.cdWrapper.style.display = 'none';            return;          }          const area = this.getAreaCode();          let offset = '-04:00';          if (['DE', 'FR', 'IT', 'ES', 'NL'].includes(area)) {             offset = '+02:00';          } else if (['GB', 'IE', 'UK'].includes(area)) {             offset = '+01:00';          }          const startTime = new Date('2026-06-23T00:00:00' + offset).getTime();          const endTime = new Date('2026-06-26T00:00:00' + offset).getTime();          const now = Date.now();          let targetTime = 0;          if (now < startTime) {             targetTime = startTime;             if (this.cdTitle) this.cdTitle.textContent = 'Prime Day starts in';             this.cdWrapper.style.display = 'flex';          } else if (now < endTime) {             targetTime = endTime;             if (this.cdTitle) this.cdTitle.textContent = 'Prime Day ends in';             this.cdWrapper.style.display = 'flex';          } else {             this.cdWrapper.style.display = 'none';             if (this.cdInterval) clearInterval(this.cdInterval);             return;          }          const diff = Math.max(0, targetTime - now);          const d = Math.floor(diff / (1000 * 60 * 60 * 24));          const h = Math.floor((diff / (1000 * 60 * 60)) % 24);          const m = Math.floor((diff / 1000 / 60) % 60);          const s = Math.floor((diff / 1000) % 60);          if (this.cdDays) this.cdDays.textContent = d;          if (this.cdHrs) this.cdHrs.textContent = h;          if (this.cdMin) this.cdMin.textContent = m;          if (this.cdSec) this.cdSec.textContent = s;        }        init() {          this.initCountdown();          try {            initAnalytics();          } catch (e) {            console.warn('Deals Widget Analytics Error:', e);          }                    this.bindEvents();                    let initialQuery = '';                    let searchSource = window.location.search;          if (this.hostContainer && this.hostContainer.hasAttribute('data-widget-config')) {            searchSource = this.hostContainer.getAttribute('data-widget-config');          } else if (typeof window !== 'undefined' && window.__WIDGET_CONFIG__) {            searchSource = window.__WIDGET_CONFIG__;          }          const params = new URLSearchParams(searchSource);          let initialViewMode = params.get('view_mode');          if (!params.has('search') && !params.has('q') && !params.has('query') && initialViewMode !== 'savings_squad') {             initialQuery = 'Everything';             if (this.discountFilter && !params.has('min_discount_ratio')) {               this.discountFilter.value = '5';             }          }          const website = params.get('website') || 'tomsguide';          this.website = website;          if (website === 'techradar') {            const squadHeader = this.root.querySelector('.tg-df-savings-squad-header');            if (squadHeader) {               const pic = squadHeader.querySelector('picture');               if (pic) pic.style.display = 'none';            }            const style = document.createElement('style');            style.innerHTML = `              .tg-df-container .hawk-affiliate-link-deal-button, .tg-df-container .tg-df-card-cta { background-color: #5DAF08 !important; }              .tg-df-container .hawk-affiliate-link-deal-button:hover, .tg-df-container .tg-df-card-cta:hover { background-color: #4a8c06 !important; }            `;            this.root.appendChild(style);          }                    if (this.regionSelect) {            this.regionSelect.value = params.get('region') || 'auto';            this.updatePriceDropdownCurrency();          }                    if (this.retailerSelect && params.has('retailer')) {            this.retailerSelect.value = params.get('retailer');          }                    if (params.has('brands')) {            const b = params.get('brands');            if (b) {              this.selectedBrands = b.split(',');            }          }                    if (this.offerTypeSelect && params.has('offer_type')) {            this.offerTypeSelect.value = params.get('offer_type');          }          if (params.has('bg_color')) {            const bg = params.get('bg_color');            if (bg === 'white') {              this.root.style.setProperty('background-color', '#ffffff', 'important');            } else if (bg === 'transparent') {              this.root.style.setProperty('background-color', 'transparent', 'important');            } else if (bg === 'light_blue') {              this.root.style.setProperty('background-color', '#E7F0FF', 'important');            }          } else {             this.root.style.removeProperty('background-color');          }                    if (params.has('view_mode')) {            if (this.viewModeSelect) {              this.viewModeSelect.value = params.get('view_mode');            } else {              this.viewModeOverride = params.get('view_mode');            }          }          if (this.rowsSelect && params.has('rows')) {            this.rowsSelect.value = params.get('rows');          }          if (params.has('price')) {            const priceVal = params.get('price');            if (this.priceFilter) {               // Try assigning it directly to select. If it's not present implicitly ignores               this.priceFilter.value = priceVal;            }            if (priceVal.includes('_')) {               const parts = priceVal.split('_');               if (this.customPriceMin && parts[0]) this.customPriceMin.value = parts[0];               if (this.customPriceMax && parts[1]) this.customPriceMax.value = parts[1];            }          }          if (this.discountFilter && params.has('min_discount_ratio')) {            // Need to convert back from ratio (e.g. 0.8) to select value (e.g. "20")            const ratioStr = params.get('min_discount_ratio');            const ratioFloat = parseFloat(ratioStr);            if (!isNaN(ratioFloat)) {               const percentage = Math.round((1 - ratioFloat) * 100);               this.discountFilter.value = percentage.toString();            }          }          if (this.sortSelect) {            this.sortSelect.value = params.get('sort') || 'discount_desc';          }          if (this.dealModeToggle && params.has('deal_mode')) {            this.dealModeToggle.checked = params.get('deal_mode') === 'true' || params.get('deal_mode') === '1';          }                    // Re-apply layout after params have updated control values          this.applyLayoutMode();                    if (params.get('search')) {            initialQuery = params.get('search');          } else if (params.get('q')) {            initialQuery = params.get('q');          } else if (params.get('query')) {            initialQuery = params.get('query');          }                    this.currentQuery = initialQuery;          if (this.searchInput) {            this.searchInput.value = this.currentQuery;          }                    if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {            this.fetchDeals(this.currentQuery);          } else {            this.render();          }        }        updatePriceDropdownCurrency() {          if (!this.priceFilter || !this.regionSelect) return;          const currencySymbols = {            'US': '$',            'GB': '£',            'CA': '$CA',            'AU': '$AU',            'DE': '€',            'FR': '€',            'IT': '€',          };          const area = this.getAreaCode();          const cur = currencySymbols[area || 'US'] || '$';                    const options = this.priceFilter.options;          for (let i = 0; i < options.length; i++) {            const opt = options[i];            if (opt.value === 'all') {              opt.innerText = 'All Prices';            } else if (opt.value === 'under50') {              opt.innerText = `Under ${cur}50`;            } else if (opt.value === '50_100') {              opt.innerText = `${cur}50 - ${cur}100`;            } else if (opt.value === '100_200') {              opt.innerText = `${cur}100 - ${cur}200`;            } else if (opt.value === '200_500') {              opt.innerText = `${cur}200 - ${cur}500`;            } else if (opt.value === 'over500') {              opt.innerText = `Over ${cur}500`;            }          }        }        populateBrandDropdown(values) {          if (!this.brandDropdown || !this.brandFilterWrapper) return;          this.brandFilterWrapper.style.display = 'flex'; // show the wrapper                    let html = '';          const allChecked = this.selectedBrands.length === 0 ? 'checked' : '';          const _div = '<' + '/div>';          const _span = '<' + '/span>';          html += `\x3Cdiv class="tg-df-ms-option">\x3Cinput type="checkbox" value="" ${allChecked} class="tg-df-brand-chk"> Any Brand${_div}`;                    values.forEach(v => {             if (!v.formatted_value || v.formatted_value === 'Any Brand') return;             const isChecked = this.selectedBrands.includes(v.formatted_value) ? 'checked' : '';             html += `\x3Cdiv class="tg-df-ms-option">\x3Cinput type="checkbox" value="${this.escapeHTML(v.formatted_value)}" ${isChecked} class="tg-df-brand-chk"> ${this.escapeHTML(v.formatted_value)} \x3Cspan style="color:var(--tg-df-text-muted);font-size:12px">(${v.count || 0})${_span}${_div}`;          });                    this.brandDropdown.innerHTML = html;                    // Re-bind listeners          const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');          chks.forEach(chk => {            chk.addEventListener('change', (e) => {              const val = e.target.value;              if (val === '') {                this.selectedBrands = [];              } else {                if (e.target.checked) {                   if (!this.selectedBrands.includes(val)) this.selectedBrands.push(val);                } else {                   this.selectedBrands = this.selectedBrands.filter(b => b !== val);                }              }                            if (this.selectedBrands.length === 0) {                 this.brandTrigger.innerText = 'Any Brand';              } else if (this.selectedBrands.length === 1) {                 this.brandTrigger.innerText = this.selectedBrands[0];              } else {                 this.brandTrigger.innerText = `${this.selectedBrands.length} Brands selected`;              }                            // Only call API if changed from UI interactions              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                 this.updateURLParams();                 this.fetchDeals(this.currentQuery);              }            });          });                    // Update button text on load          if (this.selectedBrands.length === 0) {             this.brandTrigger.innerText = 'Any Brand';          } else if (this.selectedBrands.length === 1) {             this.brandTrigger.innerText = this.selectedBrands[0];          } else {             this.brandTrigger.innerText = `${this.selectedBrands.length} Brands selected`;          }        }        updateURLParams() {          const url = new URL(window.location);          if (this.currentQuery && this.currentQuery !== 'Gaming laptops') {            url.searchParams.set('q', this.currentQuery);          } else {            url.searchParams.delete('q');            url.searchParams.delete('search');            url.searchParams.delete('query');          }                    if (this.regionSelect && this.regionSelect.value !== 'auto') {            url.searchParams.set('region', this.regionSelect.value);          } else {            url.searchParams.delete('region');          }                    if (this.retailerSelect && this.retailerSelect.value) {            url.searchParams.set('retailer', this.retailerSelect.value);          } else {            url.searchParams.delete('retailer');          }                    if (this.selectedBrands && this.selectedBrands.length > 0) {            url.searchParams.set('brands', this.selectedBrands.join(','));          } else {            url.searchParams.delete('brands');          }                    if (this.offerTypeSelect && this.offerTypeSelect.value) {            url.searchParams.set('offer_type', this.offerTypeSelect.value);          } else {            url.searchParams.delete('offer_type');          }                    if (this.viewModeSelect && this.viewModeSelect.value !== 'auto') {            url.searchParams.set('view_mode', this.viewModeSelect.value);          } else {            url.searchParams.delete('view_mode');          }                    if (this.rowsSelect && this.rowsSelect.value !== '12') {            url.searchParams.set('rows', this.rowsSelect.value);          } else {            url.searchParams.delete('rows');          }                    const min = this.customPriceMin ? this.customPriceMin.value : '';          const max = this.customPriceMax ? this.customPriceMax.value : '';          if (min || max) {             url.searchParams.set('price', `${min}_${max}`);          } else if (this.priceFilter && this.priceFilter.value !== 'all') {            url.searchParams.set('price', this.priceFilter.value);          } else {            url.searchParams.delete('price');          }                    if (this.discountFilter && this.discountFilter.value !== 'all' && this.discountFilter.value !== '0') {            const v = parseInt(this.discountFilter.value);            if (!isNaN(v) && v > 0) {               const ratio = (100 - v) / 100;               url.searchParams.set('min_discount_ratio', ratio.toString());            }          } else {            url.searchParams.delete('min_discount_ratio');          }                    if (this.sortSelect && this.sortSelect.value !== 'discount_desc') {            url.searchParams.set('sort', this.sortSelect.value);          } else {            url.searchParams.delete('sort');          }                    if (this.dealModeToggle && this.dealModeToggle.checked) {            url.searchParams.set('deal_mode', 'true');          } else {            url.searchParams.delete('deal_mode');          }                    window.history.replaceState({}, '', url);        }        bindEvents() {          const roundels = this.root.querySelectorAll('.tg-df-carousel-cat.original-hardcoded');          roundels.forEach(r => {             r.addEventListener('click', () => {                const q = r.getAttribute('data-query');                const pr = r.getAttribute('data-pr');                if (typeof trackHawkEvent !== 'undefined') {                     trackHawkEvent({                         clickType: "CC",                         widgetId: this.widgetId,                         productCategoryName: "deals",                         zeroBasedProductIndexOrNull: null,                         totalDealsOrProducts: null,                         areaClicked: "Category Roundel",                         revenueId: this.revenueId,                         isoCurrencyCode: typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD',                         queryName: q,                         widgetTypeName: this.widgetTypeName                     });                 }                this.currentQuery = q;                const label = this.root.querySelector('#tg-df-carousel-title-label');                if (label) label.textContent = 'Best ' + q;                if (this.priceFilter) this.priceFilter.value = pr || 'all';                if (this.discountFilter) this.discountFilter.value = '5';                if (this.searchInput) this.searchInput.value = q;                                roundels.forEach(ro => ro.classList.remove('active'));                r.classList.add('active');                this.fetchDeals(this.currentQuery);             });          });          const discBtns = this.root.querySelectorAll('.tg-df-carousel-filter-btn');          discBtns.forEach(b => {             b.addEventListener('click', () => {                const d = b.getAttribute('data-d');                const pr = b.getAttribute('data-pr');                const ot = b.getAttribute('data-ot');                let label = b.innerText ? b.innerText.trim() : '';                let filterType = 'unknown';                let filterVal = 'unknown';                if (d !== null) { filterType = 'discount'; filterVal = d; }                else if (pr !== null) { filterType = 'price'; filterVal = pr; }                else if (ot !== null) { filterType = 'offertype'; filterVal = ot; }                if (typeof trackElementInteraction === 'function') trackElementInteraction({ id: `filter-${filterType}-${filterVal}`, name: 'Filter Button', label: label });                                if (d !== null) {                   if (this.discountFilter) this.discountFilter.value = this.discountFilter.value === d ? '0' : d;                } else if (pr !== null) {                   if (this.priceFilter) this.priceFilter.value = this.priceFilter.value === pr ? 'all' : pr;                } else if (ot !== null) {                   if (this.offerTypeSelect) this.offerTypeSelect.value = this.offerTypeSelect.value === ot ? 'all' : ot;                } else {                   if (this.discountFilter) this.discountFilter.value = '0';                   if (this.priceFilter) this.priceFilter.value = 'all';                   if (this.offerTypeSelect) this.offerTypeSelect.value = 'all';                }                if (d === null && pr === null && ot === null && b.getAttribute("data-type") !== "custom") {                   discBtns.forEach(ro => ro.classList.remove('active'));                   b.classList.add('active');                } else if (b.getAttribute("data-type") !== "custom") {                   // Only operate on hardcoded buttons (those without data-type)                   discBtns.forEach(ro => {                      if (!ro.getAttribute('data-d') && !ro.getAttribute('data-pr') && !ro.getAttribute('data-ot') && ro.getAttribute('data-type') !== 'custom') ro.classList.remove('active');                   });                                      let makeActive = true;                   if (d !== null) {                       if (b.classList.contains('active')) makeActive = false;                       discBtns.forEach(ro => { if (ro.getAttribute('data-d') !== null && ro.getAttribute('data-type') !== 'custom') ro.classList.remove('active') });                   } else if (pr !== null) {                       if (b.classList.contains('active')) makeActive = false;                       discBtns.forEach(ro => { if (ro.getAttribute('data-pr') !== null && ro.getAttribute('data-type') !== 'custom') ro.classList.remove('active') });                   } else if (ot !== null) {                       if (b.classList.contains('active')) makeActive = false;                       discBtns.forEach(ro => { if (ro.getAttribute('data-ot') !== null && ro.getAttribute('data-type') !== 'custom') ro.classList.remove('active') });                   }                                      if (makeActive) b.classList.add('active');                                      // Check if anything is active, if not activate "All"                   let anyActive = false;                   discBtns.forEach(ro => { if (ro.classList.contains('active') && ro.getAttribute('data-type') !== 'custom') anyActive = true; });                   if (!anyActive) {                       discBtns.forEach(ro => { if (!ro.getAttribute('data-d') && !ro.getAttribute('data-pr') && !ro.getAttribute('data-ot') && ro.getAttribute('data-type') !== 'custom') ro.classList.add('active'); });                   }                }                                this.fetchDeals(this.currentQuery);             });          });          if (this.brandTrigger && this.brandDropdown) {            this.brandTrigger.addEventListener('click', () => {              this.brandDropdown.classList.toggle('active');            });            document.addEventListener('click', (e) => {              if (this.brandFilterWrapper && !e.composedPath().includes(this.brandFilterWrapper)) {                this.brandDropdown.classList.remove('active');              }            });          }          let debounceTimer;          if(this.searchInput) {            this.searchInput.addEventListener('input', (e) => {              clearTimeout(debounceTimer);              const query = e.target.value.trim();              this.currentQuery = query;              if (this.getViewMode() === 'savings_squad' && this.autocompleteDropdown && this.airedaleTags && query.length > 0) {                 const matches = this.airedaleTags.filter(t => t.toLowerCase().includes(query.toLowerCase()) && t.toLowerCase() !== query.toLowerCase()).slice(0, 5);                 if (matches.length > 0) {                    this.autocompleteDropdown.innerHTML = matches.map(m => `\x3Cdiv class="tg-df-autocomplete-item" data-tag="${this.escapeHTML(m)}">${this.escapeHTML(m)}<` + `/div>`).join('');                    this.autocompleteDropdown.classList.add('active');                 } else {                    this.autocompleteDropdown.classList.remove('active');                 }              } else if (this.autocompleteDropdown) {                 this.autocompleteDropdown.classList.remove('active');              }              debounceTimer = setTimeout(() => {                this.updateURLParams();                if (query.length > 2) {                  this.fetchDeals(query);                } else if (query.length === 0) {                  this.deals = [];                  this.render();                }              }, 400);            });            this.searchInput.addEventListener('keypress', (e) => {              if (e.key === 'Enter') {                if (this.autocompleteDropdown) this.autocompleteDropdown.classList.remove('active');                clearTimeout(debounceTimer);                const query = e.target.value.trim();                this.currentQuery = query;                this.activeDealTag = null;                trackElementInteraction({ id: 'search-submit', name: 'Ask', label: 'Ask (main search)', text: query });                this.updateURLParams();                if (query.length > 2 || (this.getViewMode() === 'savings_squad')) {                   this.fetchDeals(query);                }              }            });          }          if (this.autocompleteDropdown) {             this.autocompleteDropdown.addEventListener('click', (e) => {                const item = e.target.closest('.tg-df-autocomplete-item');                if (item) {                   const tag = item.getAttribute('data-tag');                   this.currentQuery = tag;                   if (this.searchInput) this.searchInput.value = tag;                   this.activeDealTag = tag;                   this.autocompleteDropdown.classList.remove('active');                   this.updateURLParams();                   this.fetchDeals(tag);                }             });             document.addEventListener('click', (e) => {               if (this.autocompleteDropdown && this.searchInput && !e.composedPath().includes(this.searchInput) && !e.composedPath().includes(this.autocompleteDropdown)) {                 this.autocompleteDropdown.classList.remove('active');               }             });          }          if (this.searchBtn) {            this.searchBtn.addEventListener('click', () => {              if (this.autocompleteDropdown) this.autocompleteDropdown.classList.remove('active');              clearTimeout(debounceTimer);              const query = this.searchInput.value.trim();              trackElementInteraction({ id: 'search-submit', name: 'Ask', label: 'Ask (main search)', text: query });              this.activeDealTag = null;              this.currentQuery = query;              this.updateURLParams();              if (query.length > 2 || (this.getViewMode() === 'savings_squad')) {                 this.fetchDeals(query);              }            });          }          if(this.sortSelect) this.sortSelect.addEventListener('change', () => {            trackElementInteraction({ id: `sort-option-${this.sortSelect.value}`, name: 'Sort', label: `Sort: ${this.sortSelect.options[this.sortSelect.selectedIndex].text}` });            this.updateURLParams();            if (this.deals.length > 0) {              this.sortData();              this.render();            }          });                    const priceFilter = this.root.querySelector('#tg-df-price-filter');          if (priceFilter) {            this.priceFilter = priceFilter;            this.priceFilter.addEventListener('change', () => {              trackElementInteraction({ id: `filter-price-${this.priceFilter.value}`, name: 'Price', label: this.priceFilter.options[this.priceFilter.selectedIndex].text });              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              } else {                this.render();              }            });          }          const updateCustomPrice = () => {             this.updateURLParams();             if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);             } else {                this.render();             }          };          if (this.customPriceMin) {             this.customPriceMin.addEventListener('change', updateCustomPrice);             this.customPriceMin.addEventListener('keypress', (e) => {                if (e.key === 'Enter') updateCustomPrice();             });          }          if (this.customPriceMax) {             this.customPriceMax.addEventListener('change', updateCustomPrice);             this.customPriceMax.addEventListener('keypress', (e) => {                if (e.key === 'Enter') updateCustomPrice();             });          }          const discountFilter = this.root.querySelector('#tg-df-discount-filter');          if (discountFilter) {            this.discountFilter = discountFilter;            this.discountFilter.addEventListener('change', () => {              trackElementInteraction({ id: `filter-discount-${this.discountFilter.value}`, name: 'Discount', label: this.discountFilter.options[this.discountFilter.selectedIndex].text });              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              } else {                this.render();              }            });          }          if (this.categoryFilter) {            this.categoryFilter.addEventListener('change', (e) => {               const val = e.target.value === 'all' ? null : e.target.value;               this.activeDealTag = val;               this.fetchSavingsSquad();            });          }                    if (this.settingsToggle) {            this.settingsToggle.addEventListener('click', () => {              const o = this.settingsPanel.classList.toggle('active');              this.settingsBackdrop.classList.toggle('active');              if (o) trackElementInteraction({ id: 'filter-open', name: 'Filters', label: 'Open filters' });            });          }                    if (this.settingsBackdrop) {            this.settingsBackdrop.addEventListener('click', () => {              this.settingsPanel.classList.remove('active');              this.settingsBackdrop.classList.remove('active');            });          }                    if (this.regionSelect) {            this.regionSelect.addEventListener('change', () => {              trackElementInteraction({ id: `filter-region-${this.regionSelect.value}`, name: 'Region', label: this.regionSelect.options[this.regionSelect.selectedIndex].text });              this.updateURLParams();              this.updatePriceDropdownCurrency();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              }            });          }                    if (this.retailerSelect) {            this.retailerSelect.addEventListener('change', () => {              trackElementInteraction({ id: `filter-merchant-${this.retailerSelect.value}`, name: 'Retailer', label: this.retailerSelect.options[this.retailerSelect.selectedIndex].text });              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              }            });          }                    if (this.offerTypeSelect) {            this.offerTypeSelect.addEventListener('change', () => {              trackElementInteraction({ id: `filter-offertype-${this.offerTypeSelect.value}`, name: 'Offer Type', label: this.offerTypeSelect.options[this.offerTypeSelect.selectedIndex].text });              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              }            });          }                    if (this.viewModeSelect) {            this._prevViewMode = this.viewModeSelect.value;            this.viewModeSelect.addEventListener('change', () => {              trackElementInteraction({ id: `filter-viewmode-${this.viewModeSelect.value}`, name: 'View Mode', label: this.viewModeSelect.options[this.viewModeSelect.selectedIndex].text });                            // Reset all active toggles and filters to prevent config carry-over              this.selectedBrands = [];              if (this.brandTrigger) this.brandTrigger.innerText = 'Select Brands';              if (this.brandDropdown) {                const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');                chks.forEach(chk => { chk.checked = false; });              }              if (this.priceFilter) this.priceFilter.value = 'all';              if (this.customPriceMin) this.customPriceMin.value = '';              if (this.customPriceMax) this.customPriceMax.value = '';              if (this.sortSelect) this.sortSelect.value = this.viewModeSelect.value === 'savings_squad' ? 'date_desc' : 'discount_desc';              if (this.discountFilter) this.discountFilter.value = '0';              if (this.retailerSelect) this.retailerSelect.value = '';              if (this.offerTypeSelect) this.offerTypeSelect.value = '';              if (this.rowsSelect) this.rowsSelect.value = '12';              if (this.categoryFilter) this.categoryFilter.value = 'all';              this.activeDealTag = null;              this.updateURLParams();              this.applyLayoutMode();                            if (this.getViewMode() === 'savings_squad' || this._prevViewMode === 'savings_squad') {                this.fetchDeals(this.currentQuery);              } else {                this.render();              }              this._prevViewMode = this.viewModeSelect.value;            });          }                    if (this.rowsSelect) {            this.rowsSelect.addEventListener('change', () => {              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              }            });          }                    if (this.dealModeToggle) {            this.dealModeToggle.addEventListener('change', () => {              this.updateURLParams();              this.render();            });          }          if (this.editorModeToggle) {             this.editorModeToggle.addEventListener('change', (e) => {                this.editorMode = e.target.checked;                this.render();                this.updateFloatingCopyBar();             });          }          if (this.editorCopyBtn) {             this.editorCopyBtn.addEventListener('click', () => {                this.copySelectedDealsToCMS();             });          }          if (this.editorClearBtn) {             this.editorClearBtn.addEventListener('click', () => {                this.selectedDeals.clear();                this.render();                this.updateFloatingCopyBar();             });          }          if (this.grid) {            this.grid.addEventListener('change', (e) => {               if (e.target.classList.contains('tg-df-deal-checkbox')) {                  const dealId = e.target.getAttribute('data-id');                  if (e.target.checked) {                     const dealObj = this.deals.find(d => d.id === dealId);                     if (dealObj) this.selectedDeals.set(dealId, dealObj);                  } else {                     this.selectedDeals.delete(dealId);                  }                  this.updateFloatingCopyBar();               }            });            this.grid.addEventListener('click', (e) => {              const dealCard = e.target.closest('[data-action="deal-click"]');              const similarCard = e.target.closest('[data-action="view-similar-click"]');              const cardLink = dealCard || similarCard;              if (cardLink) {                const productName = cardLink.getAttribute('data-product-name');                const merchantName = cardLink.getAttribute('data-merchant-name');                const productId = cardLink.getAttribute('data-analytics-id');                const price = parseFloat(cardLink.getAttribute('data-price')) || null;                const prevPriceStr = cardLink.getAttribute('data-previous-price');                const previousPrice = prevPriceStr ? parseFloat(prevPriceStr) : null;                const originalLink = cardLink.getAttribute('data-original-link');                const rewrittenLink = cardLink.getAttribute('href');                const revenueId = cardLink.getAttribute('data-revenue-id');                const index = parseInt(cardLink.getAttribute('data-index'), 10) || 0;                const inStock = cardLink.getAttribute('data-in-stock') === 'true';                const totalText = cardLink.getAttribute('data-total');                const totalDeals = parseInt(totalText, 10) || 0;                const productCategoryName = 'deals';                const trackingParams = {                  widgetId: this.widgetId,                  productCategoryName: productCategoryName,                  product: {                    modelId: cardLink.getAttribute('data-model-id') || null,                    matchId: cardLink.getAttribute('data-match-id') || null,                    brand: cardLink.getAttribute('data-model-brand') || null,                    parent: cardLink.getAttribute('data-model-parent') || null,                    name: productName,                    price: price,                    previousPrice: previousPrice,                    link: rewrittenLink,                    originalLink: originalLink,                    inStock: inStock                  },                  zeroBasedProductIndexOrNull: index,                  totalDealsOrProducts: totalDeals,                   merchant: {                    id: cardLink.getAttribute('data-merchant-id') || null,                    network: cardLink.getAttribute('data-merchant-network') || null,                    url: cardLink.getAttribute('data-merchant-url') || null,                    name: merchantName                  },                  revenueId: revenueId,                  widgetTypeName: this.widgetTypeName,                  isoCurrencyCode: normalizeCurrency(this.escapeHTML(cardLink.getAttribute('data-currency') || '$'))                };                if (dealCard) {                  trackDealClick(trackingParams);                } else {                  trackViewSimilarClick(trackingParams);                }              }              const couponsBtn = e.target.closest('[data-action="coupons-click"]');              if (couponsBtn) {                trackElementInteraction({                  id: 'product-card-show-coupons',                  name: 'Coupons',                  label: `Product card coupons: ${couponsBtn.getAttribute('data-merchant')}`                });              }            });          }          this.setupScrollListeners();        }        setupScrollListeners() {          const containers = [             this.root.querySelector('.tg-df-carousel-roundels'),             this.root.querySelector('.tg-df-carousel-filters-wrap'),             this.root.querySelector('#tg-df-grid')          ];                    containers.forEach(container => {             if (!container) return;                          const checkScroll = () => {                if (!container.parentElement) return;                const leftBtn = container.parentElement.querySelector('.tg-df-carousel-scroll-left');                const rightBtn = container.parentElement.querySelector('.tg-df-carousel-scroll-right');                                if (leftBtn) {                   if (container.scrollLeft <= 5) leftBtn.style.display = 'none';                   else leftBtn.style.display = 'flex';                }                                if (rightBtn) {                   if (container.scrollWidth <= container.clientWidth) {                       rightBtn.style.display = 'none';                   } else if (container.scrollLeft >= container.scrollWidth - container.clientWidth - 5) {                       rightBtn.style.display = 'none';                   } else {                       rightBtn.style.display = 'flex';                   }                }             };                          container.addEventListener('scroll', checkScroll);             checkScroll();                          window.addEventListener('resize', checkScroll);                          const observer = new MutationObserver(checkScroll);             observer.observe(container, { childList: true, subtree: true, characterData: false });          });        }        get widgetTypeName() {          const mode = this.viewModeSelect ? this.viewModeSelect.value : (this.viewModeOverride || 'auto');          switch(mode) {              case 'carousel': return 'Carousel';              case 'savings_squad': return 'Savings Squad';              case 'grid': return 'Grid';              case 'row': return 'Row';              default: return 'Auto Collection';          }        }        getRowsLimit() {          if (this.rowsSelect && this.rowsSelect.value) return parseInt(this.rowsSelect.value, 10);          let configSource = window.location.search;          if (this.hostContainer && this.hostContainer.hasAttribute('data-widget-config')) {             configSource = this.hostContainer.getAttribute('data-widget-config');          } else if (typeof window !== 'undefined' && window.__WIDGET_CONFIG__) {             configSource = window.__WIDGET_CONFIG__;          }          const params = new URLSearchParams(configSource);          if (params.has('rows')) return parseInt(params.get('rows'), 10) || 12;          return 12;        }        getAreaCode() {          if (this.regionSelect && this.regionSelect.value) {            if (this.regionSelect.value === 'auto') return null;            return this.regionSelect.value;          }          let area = null;          try {            const locale = window.navigator.language || window.navigator.userLanguage;            if (locale && locale.includes('-')) {              area = locale.split('-')[1].toUpperCase();            } else if (locale && locale.length === 2) {              if (locale.toUpperCase() === 'EN') { area = 'US'; }              else { area = locale.toUpperCase(); }            }          } catch (e) { /* Ignore */ }                    // Map to known valid options or fallback to US          const valid = ['US', 'GB', 'CA', 'AU', 'DE', 'FR', 'IT'];          if (area === 'UK') area = 'GB';          if (valid.includes(area)) {             return area;          }          return 'US';        }                async loadCarouselSpreadsheet() {          try {              const parseCSVRow = (str) => {                  let result = [], cur = '', inQuotes = false;                  for (let i = 0; i < str.length; i++) {                      let char = str[i];                      if (inQuotes) {                          if (char === '"') {                              if (str[i + 1] === '"') { cur += '"'; i++; }                              else { inQuotes = false; }                          } else { cur += char; }                      } else {                          if (char === '"') { inQuotes = true; }                          else if (char === ',') { result.push(cur); cur = ''; }                          else { cur += char; }                      }                  }                  result.push(cur); return result;              };              const parseCSV = (str) => {                  const rows = []; let curRow = '', inQuotes = false;                  for (let i = 0; i < str.length; i++) {                      let char = str[i];                      if (char === '"') inQuotes = !inQuotes;                      if ((char === '\n' || char === '\r') && !inQuotes) {                          if (char === '\r' && str[i+1] === '\n') i++;                          if (curRow) rows.push(parseCSVRow(curRow));                          curRow = '';                      } else { curRow += char; }                  }                  if (curRow) rows.push(parseCSVRow(curRow));                  return rows;              };              const preloadedCSV = decodeURIComponent(escape(atob("LCwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNQ0KUm91bmRlbCB0ZXh0LEFsbCxUVnMsRm9vdHdlYXIsQXBwYXJlbCxNYXR0cmVzZXMsQXBwbGlhbmNlcyxXZWFyYWJsZSB0ZWNoLEhlYWRwaG9uZXMsU21hcnQgSG9tZSxTcGVha2VycyxMYXB0b3BzLFRhYmxldHMsQ29tcHV0aW5nLFBob25lcyxHYW1pbmcsTGVnbw0KUm91bmRlbCBpbWFnZSxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Nob3AtYXNzZXRzL2Nhcm91c2VsL2FpLnBuZyxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Nob3AtYXNzZXRzL2Nhcm91c2VsL3R2cy5wbmcsaHR0cHM6Ly9pbWFnZXMuZmllLmZ1dHVyZWNkbi5uZXQvcHJvZHVjdHMvN2IzYTIyNGIwNzk2M2M2MjdiNmI5MDliZDc4MzM4MzZlMDJmZjgxOS5qcGcud2VicCxodHRwczovL2ltYWdlcy5maWUuZnV0dXJlY2RuLm5ldC9wcm9kdWN0cy84NGRhYzVkNDhlZDJkNDQ4NTU5ZWJhNjdhY2U4MzE0Y2M2N2NjZDk0LmpwZy53ZWJwLGh0dHBzOi8vd3d3LnRvbXNndWlkZS5jb20vc2hvcC1hc3NldHMvY2Fyb3VzZWwvbWF0dHJlc3Nlcy5wbmcsaHR0cHM6Ly9pbWFnZXMuZmllLmZ1dHVyZWNkbi5uZXQvcHJvZHVjdHMvNzY4ZTk3Y2ViMDcxODAxZmFlMjA5MTBkMDgyMGIxNmY3NDdhZjkzOS5qcGcud2VicCxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Nob3AtYXNzZXRzL2Nhcm91c2VsL3dlbGxuZXNzLnBuZyxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Nob3AtYXNzZXRzL2Nhcm91c2VsL2hlYWRwaG9uZXMuanBnLGh0dHBzOi8vaW1hZ2VzLmZpZS5mdXR1cmVjZG4ubmV0L3Byb2R1Y3RzLzg5NTM1YmVlYmUyMGRiYmQ0YTM0NmQ2ZDZiZGZlOTFkOGE4ODRhMjEuanBnLndlYnAsaHR0cHM6Ly93d3cudG9tc2d1aWRlLmNvbS9zaG9wLWFzc2V0cy9jYXJvdXNlbC9hdWRpby5qcGcsaHR0cHM6Ly93d3cudG9tc2d1aWRlLmNvbS9zaG9wLWFzc2V0cy9jYXJvdXNlbC9sYXB0b3BzLmpwZyxodHRwczovL2ltYWdlcy5maWUuZnV0dXJlY2RuLm5ldC9wcm9kdWN0cy8yMzk3NTY0ZWQ3YTVmZjk0N2U5YjZiMzBlNTRmNDc0OTRiODQxZjg5LmpwZy53ZWJwLGh0dHBzOi8vd3d3LnRvbXNndWlkZS5jb20vc2hvcC1hc3NldHMvY2Fyb3VzZWwvY29tcHV0aW5nLmpwZyxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Nob3AtYXNzZXRzL2Nhcm91c2VsL3Bob25lcy5wbmcsaHR0cHM6Ly93d3cudG9tc2d1aWRlLmNvbS9zaG9wLWFzc2V0cy9jYXJvdXNlbC9nYW1pbmcucG5nLGh0dHBzOi8vaW1hZ2VzLmZpZS5mdXR1cmVjZG4ubmV0L3Byb2R1Y3RzLzRmNmM2MjFjYWMwYmMxYTg1ZDU5M2UzNTk0YmE1YjM0OWVmZmQyOTIuanBnLndlYnANClNlYXJjaCBRdWVyeSxFdmVyeXRoaW5nLFRlbGV2aXNpb25zLCJTbmVha2VycywgcnVubmluZyBzaG9lcywgc2FuZGFscyIsQ2xvdGhpbmcsTWF0dHJlc3NlcyxIb21lIEFwcGxpYW5jZXMsV2VhcmFibGVzICYgRml0bmVzcyBUZWNoLEhlYWRwaG9uZXMsSG9tZSBUZWNoLFNwZWFrZXJzLExhcHRvcHMsVGFibGV0cyxDb21wdXRpbmcsUGhvbmVzLEdhbWluZyxDb25zdHJ1Y3Rpb24gVG95cw0KRGlzY291bnQgQW1vdW50LG1pbiA1JSxtaW4gMTAlLG1pbiA1JSxtaW4gNSUsbWluIDUlLG1pbiA1JSxtaW4gNSUsbWluIDUlLG1pbiA1JSxtaW4gNSUsbWluIDUlLG1pbiA1JSxtaW4gNSUsbWluIDUlLG1pbiA1JSxtaW4gNSUNClByaWNlIFJhbmdlLCwsLCxtaW4gJDQwMCwsLCxtaW4gJDI1LCxtaW4gJDMwMCwsLG1pbiAkMTAwLCwNCkJyYW5kIFNlbGVjdGlvbiwsLCwsLCwsLCwsLCwsLCwNCkZpbHRlciBidXR0b25zLCwsLCwsLCwsLCwsLCwsLA0KMSxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMNCjIsQW1hem9uIGRlYWxzLFVuZGVyICQxMDAwLDUwJSBvZmYsQWRpZGFzLEFtYXpvbiBkZWFscyxBbWF6b24gZGVhbHMsNTAlIG9mZixBbWF6b24gZGVhbHMsQW1hem9uIGRlYWxzLEFtYXpvbiBkZWFscyxBbWF6b24gZGVhbHMsQW1hem9uIGRlYWxzLEFtYXpvbiBkZWFscyxBbWF6b24gZGVhbHMsQW1hem9uIGRlYWxzLEFtYXpvbiBkZWFscw0KMyxPdmVyICQ0MDAsVW5kZXIgJDUwMCxIb2thLE5pa2UsU2FhdHZhLE5pbmphLDQwJSBvZmYsSkxhYiwsSkJMLERlbGwsLEFzdXMsQXBwbGUsQ29uc29sZXMsU3RhciBXYXJzDQo0LFVuZGVyICQxMDAwLDUwJSBvZmYsU2tlY2hlcnMsVW5kZXIgQXJtb3VyLEhlbGl4LFNoYXJrLEdhcm1pbixBbmtlciBTb3VuZGNvcmUsUmluZyxTb25vcyxBcHBsZSxBcHBsZSxUUC1saW5rLFNhbXN1bmcsQWNjZXNzb3JpZXMsVW5kZXIgJDI1DQo1LFVuZGVyICQ1MDAsTEcsQXNpY3MsQ29sdW1iaWEsRHJlYW1DbG91ZCxLZXVyaWcsQXBwbGUsU29ueSxHb3ZlZSxUcmliaXQsTGVub3ZvLFNhbXN1bmcsRWVybyxHb29nbGUsR2FtZXMsVW5kZXIgJDUwDQo2LDUwJSBvZmYsU2Ftc3VuZyxOaWtlLFBhdGFnb25pYSxOZWN0YXIsRGUnTG9uZ2hpLEFtYXpmaXQsQXBwbGUsS2FzYSBzbWFydCxTb255LEFsaWVud2FyZSxUQ0wsTmV0Z2VhcixNb3Rvcm9sYSxOaW50ZW5kbyxCb3RhbmljYWxzDQo3LEFtYXpvbixIaXNlbnNlLE5ldyBCYWxhbmNlLEFyYyd0ZXJ5eCxUZW1wdXItcGVkaWMsRHlzb24sRml0Yml0LEJlYXRzLFBoaWxpcHMgSHVlLEFua2VyLEFjZXIsT25lUGx1cyxEZWxsLE9uZVBsdXMsU29ueSxEaXNuZXkNCjgsQXBwbGUsVENMLEFkaWRhcyxDYXJoYXJ0dCxCZWFyLEJpc3NlbGwsU2Ftc3VuZyxFYXJmdW4sQmxpbmssQmVhdHMsTVNJLE1pY3Jvc29mdCxBY2VyLE5vdGhpbmcsWGJveCxNYXJ2ZWwNCjksLFNvbnksU2F1Y29ueSxUaGUgTm9ydGggRmFjZSxTaWVuYSxOdXRyaWJ1bGxldCxPdXJhLFNhbXN1bmcsR29vZ2xlIE5lc3QgLE1hcnNoYWxsLFNhbXN1bmcsTGVub3ZvLExlbm92bywsLFBva2Vtb24NCjEwLCxSb2t1LEJpcmtlbnN0b2NrLENSWiBZb2dhLFdpbmtCZWRzLEJsYWNrIGFuZCBEZWNrZXIsUmluZ2Nvbm4sQ01GLEV1ZnksU2Ftc3VuZyxNaWNyb3NvZnQsUmVNYXJrYWJsZSxBbGllbndhcmUsLCwNCjExLCwsQnJvb2tzLFRoZSBHeW0gUGVvcGxlLEJyb29rbHluIGJlZGRpbmcsTmVzcHJlc3NvLCwxTW9yZSxBcmxvLCxSYXplciwsQ29yc2FpciwsLA0KMTIsLCxDcm9jcywsRWlnaHQgU2xlZXAsQ3Vpc2luYXJ0LCxKQkwsLCwsLEhQLCwsDQpOb3RlcywsLCwsLCwsLCwsLCwsLCwNCiwsIlByaW9yaXRpc2UgYmlnZ2VzdCAlLyQgZGlzY291bnQsIFR2cyB3aXRoIH41MCUgb2ZmIGhhdmUgYmVlbiB0aGUgbW9zdCBwb3B1bGFyIGV2ZW4gaWYgdGhleSBhcmUgc3RpbGwgZXhwZW5zaXZlIiwiTm8gcGF0dGVybiB0byBwcmljaW5nL2Rpc2NvdW50LCByZWFkZXJzIG1haW5seSBzaG9wIGJ5IGJyYW5kL3JlY29nbmlzYWJsZSBzaG9lcyIsIk5vIHBhdHRlcm4gdG8gcHJpY2luZy9kaXNjb3VudCwgcmVhZGVycyBtYWlubHkgc2hvcCBieSBicmFuZCIsIkEgbGFiZWwgd2lsbCBkZWZpbml0ZWx5IGhlbHAgaGVyZSBlLmcuIGJlc3QgZm9yIHNpZGUgc2xlZXBlciwgYmVzdCBtZW1vcnkgZm9hbSIsIkFwcGxpYW5jZXMgaXMgYSBiaWcgY2F0ZWdvcnksIGlzIGl0IHBvc3NpYmxlIHRvIHNwbGl0IGludG8ga2l0Y2hlbiBhcHBsaWFuY2VzLCBmbG9vcmNhcmUsIGFpciBoZWFsdGgvY29vbGluZz8gT3Igc2ltaWxhciIsIkZvY3VzIG9uIHZhbHVlIGZvciBtb25leSwgR2FybWlucyB3aXRoIH41MCUgb2ZmIGhhdmUgYmVlbiBwb3B1bGFyIGV2ZW4gdGhvdWdoIHRoZXkgYXJlIHN0aWxsICQ1MDAiLCwsLCxJbmNsdWRlIEtpbmRsZXMsSSB3b3VsZCBpbmNsdWRlIHdpZmkgcm91dGVycyBoZXJlIGluc3RlYWQgb2Ygc21hcnQgaG9tZSxDYW4gd2Ugc3VyZmFjZSBwaG9uZSBwcm92aWRlciBkZWFscz8gVC1tb2JpbGUgYW5kIHZlcml6b24gd291bGQgbWFrZSBhIGxvdCBtb3JlIG1vbmV5IHRoYW4gQW1hem9uLCwNCiwsaGF2aW5nIGEgJ2Jlc3QgZm9yJyBsYWJlbCB3b3VsZCBiZSBoZWxwZnVsIGUuZy4gYmVzdCBmb3IgYnJpZ2h0IHJvb20sQ2FuIHdlIHN0b3Aga2lkcyBzaG9lcyBmcm9tIHB1bGxpbmcgdGhyb3VnaD8sIldpbGwgdGhpcyBpbmNsdWRlIGFjY2Vzc29yaWVzIGUuZy4gY2FwcywgYmFncywgaWYgc28gbWFrZSBzdXJlIHRoZXNlIGFyZSBtaXhlZCB0aHJvdWdob3V0IGNsb3RoaW5nIGRlYWxzIixXaWxsIHRoaXMgaW5jbHVkZSB0b3BwZXJzIGFuZCBwaWxsb3dzPyBTZWVpbmcgbW9yZSBtb21lbnR1bSB3aXRoIHRoaXMgY2F0ZWdvcnkgcmVjZW50bHkgc28gYSBiZWRkaW5nIHRhYiBtaWdodCB3b3JrLCwiTmVlZCB0byBtYWtlIHN1cmUgYmFuZHMsIHNjcmVlbiBwcm90ZWN0b3JzIGV0Yy4gZG9uJ3QgcHVsbCBpbnRvIGhlcmUiLCwsLCwsLCwsDQosLCJQcmlvcml0aXNlIDY1JycgYW5kIDU1JyBpbmNoIFRWcywgdGhlbiBiaWdnZXIgc2NyZWVucyBiZWZvcmUgdGhlIHNtYWxsZXIgc2l6ZXMiLCwsUXVlZW4gaXMgdGhlIG1vc3QgcG9wdWxhciBzaXplIGluIHRoZSBVUyAtIHByaW9yaXRpc2UgZGVhbHMgZm9yIHRoaXMgc2l6ZSwsLCwsLCwsLCwsDQosLCwsLCwsLCwsLCwsLCwsDQpDYXRlZ29yaWVzIHRvIGNvbnNpZGVyLCxQcm9kdWN0cyBpbmNsdWRlZCwsLCwsLCwsLCwsLCwsDQpVbmRlciAkNTA/LCxBaXIgdGFncywsLCwsLCwsLCwsLCwsDQosLFBvcnRhYmxlIGNoYXJnZXJzL3dpcmVsZXNzIGNoYXJnZXJzLCwsLCwsLCwsLCwsLCwNCiwsIldhdGVyIGJvdHRsZXMgKHN0YW5sZXlzLCBPd2FsYSwgSHlkcm8gZmxhc2ssIFlldGkpIiwsLCwsLCwsLCwsLCwsDQosLEhhbmQgaGVsZCBmYW5zLCwsLCwsLCwsLCwsLCwNCiwsLCwsLCwsLCwsLCwsLCwNCmhvbWUgb2ZmaWNlLCxvZmZpY2UgY2hhaXJzLCwsLCwsLCwsLCwsLCwNCiwsc3RhbmRpbmcgZGVza3MsLCwsLCwsLCwsLCwsLA0KLCxtb25pdG9ycywsLCwsLCwsLCwsLCwsDQosLEtleWJvYXJkcywsLCwsLCwsLCwsLCwsDQosLGRvY2tpbmcgc3RhdGlvbiwsLCwsLCwsLCwsLCwsDQosLCwsLCwsLCwsLCwsLCwsDQpHYW1pbmcsLENvbnNvbGVzLCwsLCwsLCwsLCwsLCwNCiwsQWNjZXNzb3JpZXMsLCwsLCwsLCwsLCwsLA0KLCxHYW1lcywsLCwsLCwsLCwsLCwsDQosLENvdWxkIGluY2x1ZGUgTGVnbz8sLCwsLCwsLCwsLCwsLA==")));              const text = preloadedCSV;              const parsed = parseCSV(text);                            const rowsByName = {};              let filterStart = -1;              parsed.forEach((rc, i) => {                 if (rc && rc.length > 0 && rc[0]) rowsByName[rc[0]] = rc;                 if (rc && rc.length > 0 && rc[0] === 'Filter buttons') filterStart = i;              });                            const cols = [];              if(rowsByName['Roundel text']) {                const headerRow = rowsByName['Roundel text'];                for(let col = 1; col < headerRow.length; col++) {                   let label = headerRow[col];                   if (!label) continue;                                      let q = rowsByName['Search Query'] && rowsByName['Search Query'][col] ? rowsByName['Search Query'][col] : '';                   let img = rowsByName['Roundel image'] && rowsByName['Roundel image'][col] ? rowsByName['Roundel image'][col] : '';                   let ds = rowsByName['Discount Amount'] && rowsByName['Discount Amount'][col] ? rowsByName['Discount Amount'][col] : '';                   let pr = rowsByName['Price Range'] && rowsByName['Price Range'][col] ? rowsByName['Price Range'][col] : '';                   let rt = rowsByName['Retailer'] && rowsByName['Retailer'][col] ? rowsByName['Retailer'][col] : '';                   let ot = rowsByName['Offer Type'] && rowsByName['Offer Type'][col] ? rowsByName['Offer Type'][col] : '';                                      let filters = [];                   if(filterStart > 0) {                     for(let r = filterStart + 1; r < parsed.length; r++) {                         if(!parsed[r] || parsed[r][0] === 'Notes' || parsed[r][0] === 'Categories to consider') break;                         let f = parsed[r][col];                         if(f) filters.push(f);                     }                   }                   cols.push({ label, img, q, ds, pr, rt, ot, filters });                }              }              this.carouselData = cols;              if (this.carouselData && this.carouselData.length > 0) {                 const isMatched = this.carouselData.some(c => c.q === this.currentQuery || c.label === this.currentQuery);                 if (!isMatched) {                    const first = this.carouselData[0];                    this.currentQuery = first.q || first.label;                    if (this.priceFilter) this.priceFilter.value = 'all';                    if (this.customPriceMin) this.customPriceMin.value = '';                    if (this.customPriceMax) this.customPriceMax.value = '';                    let dPr = first.pr || 'all';                    if (typeof dPr === 'string' && dPr !== 'all') {                       let prLower = dPr.toLowerCase();                       if (prLower.includes('min') || prLower.includes('over')) {                          let m = dPr.match(/(\d+)/);                          if (m && this.customPriceMin) this.customPriceMin.value = m[1];                       } else if (prLower.includes('max') || prLower.includes('under')) {                          let m = dPr.match(/(\d+)/);                          if (m && this.customPriceMax) this.customPriceMax.value = m[1];                       }                    }                    let dAm = '0';                    if(first.ds && typeof first.ds === 'string') {                       let m = first.ds.match(/(\d+)/);                       if(m) dAm = m[1];                    }                    if (this.discountFilter) this.discountFilter.value = dAm;                    if (this.offerTypeSelect) this.offerTypeSelect.value = first.ot || '';                    if (this.retailerSelect) this.retailerSelect.value = first.rt || '';                    this.selectedBrands = [];                    if (this.brandDropdown) {                        const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');                        chks.forEach(chk => chk.checked = false);                    }                    if (this.searchInput) this.searchInput.value = this.currentQuery;                 }              }              this.renderCarouselUI();          } catch(e){ console.warn(e); }        }                renderCarouselUI() {           const roundelWrapper = this.root.querySelector('.tg-df-carousel-roundels');           if(!roundelWrapper || !this.carouselData) return;                      let html = '';           this.carouselData.forEach(r => {              const q = r.q || r.label;              const isActive = (this.currentQuery === q || this.currentQuery === r.label) ? 'active' : '';              const imgHtml = r.img ? `\x3Cimg src="${r.img}" alt="${r.label}" />` : `\x3Csvg width="32" height="32" fill="#1F69FF" viewBox="0 0 24 24">\x3Cpath d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"/>\x3C/svg>`;              html += `                \x3Cdiv class="tg-df-roundel tg-df-carousel-cat ${isActive}" data-label="${this.escapeHTML(r.label)}">                  \x3Cdiv class="tg-df-roundel-img-box">${imgHtml}\x3C/div>                  \x3Cspan class="tg-df-roundel-label">${this.escapeHTML(r.label)}\x3C/span>                \x3C/div>              `;           });           roundelWrapper.innerHTML = html;                      // Rebind clicks           const roundels = this.root.querySelectorAll('.tg-df-carousel-cat');           roundels.forEach(rNode => {             rNode.addEventListener('click', () => {                const r = this.carouselData.find(c => c.label === rNode.getAttribute('data-label'));                 if(!r) return;                                  if (typeof trackHawkEvent !== 'undefined') {                     trackHawkEvent({                         clickType: "CC",                         widgetId: this.widgetId,                         productCategoryName: "deals",                         zeroBasedProductIndexOrNull: null,                         totalDealsOrProducts: null,                         areaClicked: "Category Roundel",                         revenueId: this.revenueId,                         isoCurrencyCode: typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD',                         queryName: r.label,                         widgetTypeName: this.widgetTypeName                     });                 }                this.currentQuery = r.q || r.label;                const labelTitle = this.root.querySelector('#tg-df-carousel-title-label');                if (labelTitle) labelTitle.textContent = 'Best ' + this.currentQuery;                if (this.priceFilter) this.priceFilter.value = 'all';                if (this.customPriceMin) this.customPriceMin.value = '';                if (this.customPriceMax) this.customPriceMax.value = '';                let dPr = r.pr || 'all';                if (typeof dPr === 'string' && dPr !== 'all') {                   let prLower = dPr.toLowerCase();                   if (prLower.includes('min') || prLower.includes('over')) {                      let m = dPr.match(/(\d+)/);                      if (m && this.customPriceMin) this.customPriceMin.value = m[1];                   } else if (prLower.includes('max') || prLower.includes('under')) {                      let m = dPr.match(/(\d+)/);                      if (m && this.customPriceMax) this.customPriceMax.value = m[1];                   }                }                                let discountAmount = '0';                if(r.ds && typeof r.ds === 'string') {                   let m = r.ds.match(/(\d+)/);                   if(m) discountAmount = m[1];                }                if (this.discountFilter) this.discountFilter.value = discountAmount;                if (this.offerTypeSelect) this.offerTypeSelect.value = r.ot || '';                if (this.retailerSelect) this.retailerSelect.value = r.rt || '';                                // Clear brands                    this.selectedBrands = [];                    if (this.brandDropdown) {                    const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');                    chks.forEach(chk => chk.checked = false);                }                                if (this.searchInput) this.searchInput.value = this.currentQuery;                                roundels.forEach(ro => ro.classList.remove('active'));                if (rNode) rNode.classList.add('active');                                this.renderCarouselFilters(r);                this.fetchDeals(this.currentQuery);             });           });                      // Auto-highlight active           const activeR = this.carouselData.find(c => c.q === this.currentQuery || c.label === this.currentQuery);           if(activeR) this.renderCarouselFilters(activeR);        }                renderCarouselFilters(r) {           const filtersWrap = this.root.querySelector('.tg-df-carousel-filters-wrap');           if(!filtersWrap) return;                      let html = `\x3Cbutton class="tg-df-carousel-filter-btn" data-type="all">All\x3C/button>`;                      r.filters.forEach(f => {              let fL = f.toLowerCase();              let icon = '';              let logic = `data-type="custom" data-v="${this.escapeHTML(f)}"`;              if (fL === 'amazon deals' || fL === 'prime deals') {                 html += `\x3Cbutton class="tg-df-carousel-filter-btn" ${logic}>\x3Cimg src="https://cdn.mos.cms.futurecdn.net/fwoVXvL79turN3Ph535m38-600-100.png" class="inactive-img" alt="" />\x3Cimg src="https://cdn.mos.cms.futurecdn.net/u75QjVpt3w2EsMimJiRo38-600-100.png" class="active-img" alt="" /> Prime deals\x3C/button>`;              } else if (fL === 'lightning deals') {                 html += `\x3Cbutton class="tg-df-carousel-filter-btn" ${logic}>\x3Cimg src="https://cdn.mos.cms.futurecdn.net/HqAui7w97ft2NPqBtQ5r38-600-100.png" class="inactive-img" alt="" />\x3Cimg src="https://cdn.mos.cms.futurecdn.net/yWPQ5yyQRhUwVKzGwYbh38-600-100.png" class="active-img" alt="" /> Lightning deals\x3C/button>`;              } else {                 if (fL.includes('lightning')) {                    icon = `\x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-zap">\x3Cpolygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2">\x3C/polygon>\x3C/svg>`;                 } else if (fL.includes('% off')) {                    icon = `\x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tag">\x3Cpath d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z">\x3C/path>\x3Ccircle cx="7.5" cy="7.5" r=".5" fill="currentColor">\x3C/circle>\x3C/svg>`;                 } else if (fL.includes('under') || fL.includes('min ')) {                    icon = `\x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-dollar-sign">\x3Cpath d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z">\x3C/path>\x3Cpath d="M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8">\x3C/path>\x3Cpath d="M12 18V6">\x3C/path>\x3C/svg>`;                 }                 html += `\x3Cbutton class="tg-df-carousel-filter-btn" ${logic}>${icon} ${this.escapeHTML(f)}\x3C/button>`;              }           });                      filtersWrap.innerHTML = html;                      const btns = filtersWrap.querySelectorAll('button');           btns.forEach(b => {             b.addEventListener('click', () => {                const type = b.getAttribute('data-type');                if (type === 'custom') {                   const v = b.getAttribute('data-v');                   if (typeof trackElementInteraction === 'function') trackElementInteraction({ id: `filter-custom-${(v||'').toLowerCase().replace(/[^a-z0-9]+/g, '-')}`, name: 'Custom Filter', label: v });                }                if (type === 'all') {                   if (typeof trackElementInteraction === 'function') trackElementInteraction({ id: 'filter-clear-all', name: 'Clear all', label: 'Clear all filters' });                   // reset everything                   btns.forEach(btn => btn.classList.remove('active'));                   b.classList.add('active');                                      // Reset prices                   if (this.priceFilter) this.priceFilter.value = 'all';                   if (this.customPriceMin) this.customPriceMin.value = '';                   if (this.customPriceMax) this.customPriceMax.value = '';                   let dPr = r.pr || 'all';                   if (typeof dPr === 'string' && dPr !== 'all') {                      let prLower = dPr.toLowerCase();                      if (prLower.includes('min') || prLower.includes('over')) {                         let m = dPr.match(/(\d+)/);                         if (m && this.customPriceMin) this.customPriceMin.value = m[1];                      } else if (prLower.includes('max') || prLower.includes('under')) {                         let m = dPr.match(/(\d+)/);                         if (m && this.customPriceMax) this.customPriceMax.value = m[1];                      }                   }                                      let discountAmount = '0';                   if(r.ds && typeof r.ds === 'string') {                      let m = r.ds.match(/(\d+)/);                      if(m) discountAmount = m[1];                   }                   if (this.discountFilter) this.discountFilter.value = discountAmount;                   if (this.offerTypeSelect) this.offerTypeSelect.value = r.ot || '';                   if (this.retailerSelect) this.retailerSelect.value = r.rt || '';                   this.selectedBrands = [];                   if (this.brandDropdown) {                     const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');                     chks.forEach(chk => chk.checked = false);                   }                } else {                   const v = b.getAttribute('data-v');                   const fL = v.toLowerCase();                                      let mapRet = ['amazon', 'walmart', 'best buy', 'target', 'john lewis', 'currys', 'argos'];                   const getCategory = (s) => {                      if (s === 'lightning deals' || s === 'amazon deals' || s === 'prime deals') return 'offer';                      if (s.includes('% off')) return 'discount';                      if (s.includes('under') || s.includes('over') || s.includes('min') || s.includes('max')) return 'price';                      if (mapRet.includes(s)) return 'retailer';                      return 'brand';                   };                   const cat = getCategory(fL);                   const wasActive = b.classList.contains('active');                   if (cat !== 'brand') {                      btns.forEach(btn => {                          if (btn === b) return;                          if (btn.getAttribute('data-type') === 'all') return;                          const bV = btn.getAttribute('data-v');                          if (!bV) return;                          if (getCategory(bV.toLowerCase()) === cat) btn.classList.remove('active');                      });                   }                   if (wasActive) b.classList.remove('active');                   else b.classList.add('active');                   let anyActive = Array.from(btns).some(btn => btn !== btns[0] && btn.classList.contains('active'));                   if (!anyActive) {                       btns[0].click();                       return;                   } else {                       btns[0].classList.remove('active');                   }                                      if (this.priceFilter) this.priceFilter.value = 'all';                   if (this.customPriceMin) this.customPriceMin.value = '';                   if (this.customPriceMax) this.customPriceMax.value = '';                   let dPr = r.pr || 'all';                   if (typeof dPr === 'string' && dPr !== 'all') {                      let prLower = dPr.toLowerCase();                      if (prLower.includes('min') || prLower.includes('over')) {                         let m = dPr.match(/(\d+)/);                         if (m && this.customPriceMin) this.customPriceMin.value = m[1];                      } else if (prLower.includes('max') || prLower.includes('under')) {                         let m = dPr.match(/(\d+)/);                         if (m && this.customPriceMax) this.customPriceMax.value = m[1];                      }                   }                                      let discountAmount = '0';                   if(r.ds && typeof r.ds === 'string') {                      let m = r.ds.match(/(\d+)/);                      if(m) discountAmount = m[1];                   }                   if (this.discountFilter) this.discountFilter.value = discountAmount;                   if (this.offerTypeSelect) this.offerTypeSelect.value = r.ot || '';                   if (this.retailerSelect) this.retailerSelect.value = r.rt || '';                   this.selectedBrands = [];                   btns.forEach(btn => {                       if (!btn.classList.contains('active') || btn.getAttribute('data-type') === 'all') return;                       const vv = btn.getAttribute('data-v');                       const vl = vv.toLowerCase();                                              if (vl === 'lightning deals') {                          if (this.offerTypeSelect) this.offerTypeSelect.value = 'amazon_lightning';                       } else if (vl === 'amazon deals' || vl === 'prime deals') {                          if (this.offerTypeSelect) this.offerTypeSelect.value = 'amazon_prime';                       } else if (vl.includes('% off')) {                          let m = vl.match(/(\d+)%/);                          if (m && this.discountFilter) this.discountFilter.value = m[1];                       } else if (vl.includes('under') || vl.includes('max')) {                          let m = vl.match(/(\d+)/);                          if (m && this.customPriceMax) this.customPriceMax.value = m[1];                       } else if (vl.includes('min') || vl.includes('over')) {                          let m = vl.match(/(\d+)/);                          if (m && this.customPriceMin) this.customPriceMin.value = m[1];                       } else {                          let foundR = mapRet.find(x => x === vl);                          if (foundR) {                             let realR = ['Amazon', 'Walmart', 'Best Buy', 'Target', 'John Lewis', 'Currys', 'Argos'].find(x => x.toLowerCase() === vl);                             if (this.retailerSelect) this.retailerSelect.value = realR;                          } else {                             this.selectedBrands.push(vv);                          }                       }                   });                                      if (this.brandDropdown) {                       const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');                       chks.forEach(c => c.checked = this.selectedBrands.includes(c.value));                   }                                      if (r.pr && typeof r.pr === 'string') {                       let prL = r.pr.toLowerCase();                       if (prL.includes('under $')) {                           let m = prL.match(/under \$(\d+)/i);                           if (m && this.customPriceMax && !this.customPriceMax.value) this.customPriceMax.value = m[1];                       }                   }                }                                this.fetchDeals(this.currentQuery);             });           });                      // default to highlighting first           btns[0].classList.add('active');        }async fetchDeals(query, append = false) {          if (!append) {             this.showLoading();             this.deals = [];             this.displayLimit = this.getRowsLimit();          } else {             this.displayLimit += this.getRowsLimit();          }                    try {            if (this.getViewMode() === 'savings_squad') {               await this.fetchSavingsSquad(append);            } else {               if (this.isBroadQuery(query)) {                 await this.fetchAdviserDeals(query, append);               } else {                 await this.fetchHawkDeals(query, append);                 if (this.deals.length === 0) {                   await this.fetchAdviserDeals(query, append);                 }               }            }          } catch (error) {            console.warn("[Tom's Guide Widget] Fetch error:", error);            this.showError();          }        }        async fetchSavingsSquad() {          let topArticles = this.airedaleArticles;          if (!topArticles) {            const airedaleUrl = `https://airedale.futurecdn.net/feeds/feed_1776420579726.json?site=tomsguide&articleType=deals&limit=50`;            let res;            try {               res = await fetch(airedaleUrl);            } catch(e) {               try { res = await fetch(`https://airedale.futurecdn.net/feeds/feed_1776420579726.json?site=tomsguide&articleType=deals&limit=50`); } catch (err) { console.warn("Fallback fetch failed", err); return; }            }            if (!res.ok) throw new Error('Airedale API Error');            const articles = await res.json();            topArticles = Array.isArray(articles) ? articles.slice(0, 50) : ((articles.data && Array.isArray(articles.data)) ? articles.data.slice(0, 50) : []);            this.airedaleArticles = topArticles;                        let tagCounts = {};            topArticles.forEach((a) => {              let articleTags = new Set();              if (a.articlecategory && Array.isArray(a.articlecategory)) {                 a.articlecategory.forEach((t) => articleTags.add(t));              }              articleTags.forEach(t => {                 tagCounts[t] = (tagCounts[t] || 0) + 1;              });            });                        this.airedaleTags = Object.keys(tagCounts).sort((a, b) => tagCounts[b] - tagCounts[a]);            this.airedaleTagCounts = tagCounts;          }                    let targetArticles = topArticles;          if (this.activeDealTag) {             const cleanTag = this.activeDealTag.toLowerCase().replace(/&/g, '').replace(/[^a-z0-9]+/g, '-').replace(/-+/g, '-').replace(/^-|-$/g, '');             const encodedTag = encodeURIComponent(cleanTag);             const url = `https://airedale.futurecdn.net/feeds/feed_1776420579726.json?site=tomsguide&articleType=deals&limit=50&articleCategoryHandle=${encodedTag}`;             try {                const res = await fetch(url);                if (res.ok) {                   const articles = await res.json();                   targetArticles = Array.isArray(articles) ? articles.slice(0, 50) : ((articles.data && Array.isArray(articles.data)) ? articles.data.slice(0, 50) : []);                }             } catch(e) {                console.warn("Failed to fetch by activeDealTag", e);             }          }          let extractedDeals = [];          let dynamicBrandsCounts = {};                    targetArticles.forEach((article) => {             if (!article.articlepage) return;                          let pageData = [];             try {                pageData = JSON.parse(article.articlepage[0]);             } catch(e){ console.warn(e); }                          const savingsSquad = pageData.filter((p) => p.type === 'deal' || p.type === 'featured-product');                          savingsSquad.forEach((block, idx) => {                const data = block.data || {};                const isFeatured = block.type === 'featured-product';                                const link = data.link || {};                const priceObj = data.price || {};                const image = data.image || {};                                if (data.brand) {                   data.brand = data.brand.replace(/^\d+\.\s*/, '').trim();                   dynamicBrandsCounts[data.brand] = (dynamicBrandsCounts[data.brand] || 0) + 1;                }                const externalUrl = isFeatured ? data.url : (link.href || null);                let summaryTitle = isFeatured ? (data.name || data.brand) : (data.productName || link.label || article.articlename);                let description = isFeatured ? (data.strapline || '') : (data.text || '');                                if (!isFeatured && !data.productName && data.text) {                   const brSplit = data.text.split(new RegExp('\x3Cbr\\s*\\/?\\x3E', 'i'));                   if (brSplit.length > 1) {                     summaryTitle = brSplit[0].replace(/<[^>]+>/g, '').trim();                     description = brSplit.slice(1).join(' ').replace(/<br\s*\/?>/gi, ' ').replace(/<\/?(p|div)[^>]*>/gi, ' ').replace(/<[^>]+>/g, '').replace(/\s+/g, ' ').trim();                   } else {                     const match = data.text.match(/\x3Cstrong>(.*?)<\/strong>/);                     if (match) {                       summaryTitle = match[1].replace(/<[^>]+>/g, '').trim();                       if (summaryTitle.endsWith(':')) summaryTitle = summaryTitle.slice(0, -1);                     }                   }                }                                let imageUrl = isFeatured ? image.mos : (image.src || null);                if (imageUrl && imageUrl.startsWith('//')) imageUrl = 'https:' + imageUrl;                                description = description.replace(/<br\s*\/?>/gi, ' ').replace(/<\/?(p|div)[^>]*>/gi, ' ').replace(/<[^>]+>/g, '').replace(/\s+/g, ' ').replace(/View Deal$/i, '').trim();                                let merchantName = data.retailer || '';                if (!merchantName && externalUrl) {                   try {                     merchantName = new URL(externalUrl).hostname.replace('www.', '').split('.')[0];                     merchantName = merchantName.charAt(0).toUpperCase() + merchantName.slice(1);                   }catch(e){ console.warn(e); }                }                if (!merchantName) merchantName = 'Retailer';                const q = (this.currentQuery || '').toLowerCase();                const activeTagLogic = (this.activeDealTag || '').toLowerCase();                if (q.length > 2 && q !== activeTagLogic) {                   const searchTarget = `${summaryTitle || ''} ${description || ''}`.toLowerCase();                   if (!searchTarget.includes(q)) return;                }                let rawPrice = 0;                let rawMsrp = 0;                let currencyStr = '$';                if (isFeatured) {                   rawPrice = typeof data.salePrice === 'number' && data.salePrice > 0 ? data.salePrice : (typeof data.price === 'number' ? data.price : 0);                   rawMsrp = typeof data.salePrice === 'number' && typeof data.price === 'number' && data.price > data.salePrice ? data.price : 0;                   currencyStr = data.currency === 'GBP' ? '£' : '$';                } else {                   rawPrice = priceObj.amount ? parseFloat(priceObj.amount) : 0;                   rawMsrp = priceObj.amountWas ? parseFloat(priceObj.amountWas) : 0;                   currencyStr = priceObj.currency === 'GBP' ? '£' : '$';                }                                let savingAmt = 0;                let savingLabel = '';                if (rawPrice > 0 && rawMsrp > rawPrice) {                   savingAmt = parseFloat((rawMsrp - rawPrice).toFixed(2));                   savingLabel = `Save ${currencyStr}${savingAmt}`;                }                                // Apply Brand filter                if (this.selectedBrands && this.selectedBrands.length > 0) {                   const itemBrand = (data.brand || '').toLowerCase();                   const hasMatch = this.selectedBrands.some(sb => sb.toLowerCase() === itemBrand);                   if (!hasMatch) return;                }                // Apply Price filter                let priceFilterVal = null;                const min = this.customPriceMin ? this.customPriceMin.value : '';                const max = this.customPriceMax ? this.customPriceMax.value : '';                if (min || max) {                   priceFilterVal = `${min}_${max}`;                } else if (this.priceFilter && this.priceFilter.value !== 'all') {                   priceFilterVal = this.priceFilter.value;                }                if (priceFilterVal && rawPrice > 0) {                   if (priceFilterVal === 'under50' && rawPrice >= 50) return;                   if (priceFilterVal === 'over50' && rawPrice <= 50) return;                   if (priceFilterVal === 'over30' && rawPrice <= 30) return;                   if (priceFilterVal === 'over500' && rawPrice <= 500) return;                   if (priceFilterVal.includes('_')) {                      const parts = priceFilterVal.split('_');                      const min = parseFloat(parts[0]);                      const max = parseFloat(parts[1]);                      if (!isNaN(min) && rawPrice < min) return;                      if (!isNaN(max) && rawPrice > max) return;                   }                }                // Apply Discount filter                if (this.discountFilter && this.discountFilter.value !== 'all' && this.discountFilter.value !== '0') {                   const requiredDiscount = parseInt(this.discountFilter.value);                   if (!isNaN(requiredDiscount) && requiredDiscount > 0) {                      if (!rawMsrp || rawMsrp <= rawPrice) return;                      const ratio = Math.round((1 - (rawPrice / rawMsrp)) * 100);                      if (ratio < requiredDiscount) return;                   }                }                                extractedDeals.push({                   id: `airedale-${article.id || Math.random()}-${idx}`,                   url: externalUrl,                   image: imageUrl,                   fallbackImage: imageUrl,                   title: summaryTitle,                   brand: data.brand || '',                   productName: data.productName || '',                   merchant: merchantName,                   rawPrice: rawPrice,                   rawMsrp: rawMsrp,                   price: rawPrice > 0 ? rawPrice.toString() : '',                   msrp: rawMsrp > 0 ? rawMsrp.toString() : '',                   currency: currencyStr,                   isCheckPrice: !rawPrice,                   savingLabel: savingLabel,                   savingType: rawMsrp > rawPrice ? 'amount' : 'none',                   isPrime: false,                   starRating: null,                   description: description,                   text: data.text || ''                });             });          });                    const airedaleBrandsList = Object.keys(dynamicBrandsCounts).map(b => ({              formatted_value: b,              count: dynamicBrandsCounts[b]          })).sort((a,b) => b.count - a.count);                    if (this.getViewMode() === 'savings_squad') {             this.populateBrandDropdown(airedaleBrandsList.slice(0, 15));             if (this.brandFilterWrapper) {                if (airedaleBrandsList.length === 0) {                    this.brandFilterWrapper.style.display = 'none';                } else {                    this.brandFilterWrapper.style.display = 'flex';                }             }          }                    this.deals = extractedDeals;          this.sortData();          this.render();          if (typeof trackDealsAppeared !== 'undefined') {             trackDealsAppeared(this.widgetId, this.deals, this.revenueId, typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD', this.currentQuery, this.widgetTypeName);          }        }        isBroadQuery(query) {          const q = query.toLowerCase();          const intentModifiers = ['deals', 'best', 'sale', 'under', 'cheap', 'offers', 'discount'];          return intentModifiers.some(term => q.includes(term));        }        async fetchHawkDeals(query, append = false) {          const url = new URL(this.apiUrl);          url.searchParams.append('model_name', query);          const areaCode = this.getAreaCode();          if (areaCode) {            url.searchParams.append('area', areaCode);          }                    if (append && this.deals.length > 0) {            url.searchParams.append('offset', this.deals.length.toString());          }                    if (this.retailerSelect && this.retailerSelect.value) {            url.searchParams.append('filter_merchant_name', this.retailerSelect.value);          }                    if (this.selectedBrands && this.selectedBrands.length > 0) {            url.searchParams.append('filter_label[text_brand]', this.selectedBrands.join(','));          }                    let priceVal = null;          const min = this.customPriceMin ? this.customPriceMin.value : '';          const max = this.customPriceMax ? this.customPriceMax.value : '';          if (min || max) {             priceVal = `${min}_${max}`;          } else if (this.priceFilter && this.priceFilter.value !== 'all') {             priceVal = this.priceFilter.value;          }          if (priceVal) {            if (priceVal === 'under50') {              url.searchParams.append('filter_max_price', '50');            } else if (priceVal === 'over50') {              url.searchParams.append('filter_min_price', '50');            } else if (priceVal === 'over30') {              url.searchParams.append('filter_min_price', '30');            } else if (priceVal === 'over500') {              url.searchParams.append('filter_min_price', '500');            } else if (priceVal.includes('_')) {              const parts = priceVal.split('_');              if (parts[0]) url.searchParams.append('filter_min_price', parts[0]);              if (parts[1]) url.searchParams.append('filter_max_price', parts[1]);            }          }                    if (this.discountFilter && this.discountFilter.value !== 'all' && this.discountFilter.value !== '0') {            const v = parseInt(this.discountFilter.value);            if (!isNaN(v) && v > 0) {              const ratio = (100 - v) / 100;              url.searchParams.append('min_discount_ratio', ratio.toString());            }          }                    if (this.offerTypeSelect && this.offerTypeSelect.value) {            url.searchParams.append('offer', this.offerTypeSelect.value);          }                    url.searchParams.append('filter_product_types', 'deals');                    url.searchParams.append('rows', this.getRowsLimit().toString());          let response;          try {             response = await fetch(url.toString());          } catch(e) {             if (window.location.protocol === 'file:') {                console.warn("[Tom's Guide Widget] fetch from file:// blocked by local CORS policy, falling back to Adviser mock.");                await this.fetchAdviserDeals(query);                return;             }             console.warn("Hawk fetch failed", e);             this.deals = [];             this.render();             return;          }          if (!response.ok) {            throw new Error('Hawk API Response Error');          }          const rawData = await response.json();          // Safely locate data array from potentially wrapped response          let offers = [];          let modelInfoArray = [];                    let brandFilterData = null;          if (rawData && rawData.widget && rawData.widget.data && Array.isArray(rawData.widget.data.filters)) {             brandFilterData = rawData.widget.data.filters.find(f => f.type === 'label_text_brand');          } else if (rawData && rawData.data && Array.isArray(rawData.data.filters)) {             brandFilterData = rawData.data.filters.find(f => f.type === 'label_text_brand');          }          if (brandFilterData && Array.isArray(brandFilterData.values) && brandFilterData.values.length > 0) {             this.populateBrandDropdown(brandFilterData.values);          } else {             if (this.brandFilterWrapper && this.selectedBrands.length === 0) {                this.brandFilterWrapper.style.display = 'none';             }          }                    if (rawData && rawData.widget && rawData.widget.data) {            if (Array.isArray(rawData.widget.data.offers)) offers = rawData.widget.data.offers;            if (rawData.widget.data.model_info && typeof rawData.widget.data.model_info === 'object') {              modelInfoArray = Array.isArray(rawData.widget.data.model_info) ? rawData.widget.data.model_info : Object.values(rawData.widget.data.model_info);            }          } else if (rawData && rawData.data) {            if (Array.isArray(rawData.data.offers)) offers = rawData.data.offers;            if (rawData.data.model_info && typeof rawData.data.model_info === 'object') {              modelInfoArray = Array.isArray(rawData.data.model_info) ? rawData.data.model_info : Object.values(rawData.data.model_info);            }          } else {            if (Array.isArray(rawData)) offers = rawData;            else if (rawData && Array.isArray(rawData.offers)) offers = rawData.offers;            else if (rawData && rawData.offers && Array.isArray(rawData.offers.offer)) offers = rawData.offers.offer;            else if (rawData && rawData.offers) offers = [].concat(rawData.offers);                        if (rawData && rawData.model_info && typeof rawData.model_info === 'object') {              modelInfoArray = Array.isArray(rawData.model_info) ? rawData.model_info : Object.values(rawData.model_info);            }          }          let modelDetails = {};          modelInfoArray.forEach(m => {            const mId = m.model_id || m.id;            if (mId) {              modelDetails[mId] = {                score: m.score != null ? parseFloat(m.score) : null,                brand: m.brand || null,                parent: (m.parents && Array.isArray(m.parents) && m.parents.length > 0) ? m.parents[0].name : null              };            }          });          offers.forEach(item => {            let data = { ...item };            const mId = data.model_id;            if (mId && modelDetails[mId]) {              data.review_score = modelDetails[mId].score;              data.model_brand = modelDetails[mId].brand;              data.model_parent = modelDetails[mId].parent;            } else {              data.review_score = null;            }                        let itemOffers = [];            if (Array.isArray(item.offers)) itemOffers = item.offers;            else if (Array.isArray(item.offer)) itemOffers = item.offer;            else if (item.offers && typeof item.offers === 'object') itemOffers = [item.offers];            else if (item.offer && typeof item.offer === 'object') itemOffers = [item.offer];            if (itemOffers.length > 0) {              itemOffers.forEach(subItem => {                let subData = { ...item, ...subItem };                const subId = subData.model_id;                if (subId && modelDetails[subId]) {                  subData.review_score = modelDetails[subId].score;                  subData.model_brand = modelDetails[subId].brand;                  subData.model_parent = modelDetails[subId].parent;                } else if (data.review_score != null) {                  subData.review_score = data.review_score;                }                if (subData.merchant && typeof subData.merchant === 'object') {                  subData.merchant_name = subData.merchant.name;                }                this.deals.push(this.extractDealData(subData));              });              return;            }                        if (item.merchant && typeof item.merchant === 'object') {              data.merchant_name = item.merchant.name;            }                        this.deals.push(this.extractDealData(data));          });                    this.sortData();          this.render();          if (typeof trackDealsAppeared !== 'undefined') {             trackDealsAppeared(this.widgetId, this.deals, this.revenueId, typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD', this.currentQuery, this.widgetTypeName);          }        }        async fetchAdviserDeals(query) {          // ======================================================================          // TODO: ADVISER API REPLACEMENT          // The code below simulates the Adviser API response using mock data.          // Once the real endpoint is ready, remove getAdviserMockData() and           // perform an actual fetch() request similar to fetchHawkDeals().          // Example:          // const area = this.getAreaCode();          // let apiUrl = `https://your-adviser-api.com/search?q=${query}&area=${area}`;          // if (this.priceFilter && this.priceFilter.value !== 'all') {          //   const val = this.priceFilter.value;          //   if (val === 'under50') apiUrl += '&filter_max_price=50';          //   else if (val === '50_100') apiUrl += '&filter_max_price=100';          //   else if (val === '100_200') apiUrl += '&filter_max_price=200';          //   else if (val === '200_500') apiUrl += '&filter_max_price=500';          // }          // const res = await fetch(apiUrl);          // const rawData = await res.json();          // ======================================================================          // Simulating network latency          await new Promise(resolve => setTimeout(resolve, 400));                    const rawData = this.getAdviserMockData();          let offers = [];                    if (rawData && rawData.data && rawData.data.Get && Array.isArray(rawData.data.Get.Deal)) {            offers = rawData.data.Get.Deal;          }                    // Basic client-side filtering for the mock if we want it to react to the query          const q = query.toLowerCase();          const selectedRetailer = (this.retailerSelect && this.retailerSelect.value) ? this.retailerSelect.value.toLowerCase() : null;                    offers.forEach(item => {            const dataObj = item;                        // Apply retailer filter            const itemRetailer = (dataObj.dataRetailer || '').toLowerCase();            if (selectedRetailer && itemRetailer !== selectedRetailer && !itemRetailer.includes(selectedRetailer)) {              return;            }                        // Apply mock price filter            let price = dataObj.dataDiscountedPrice || 0;            if (typeof price === 'string') {              price = parseFloat(price.replace(/[^0-9.]/g, ''));            }            let priceVal = null;            const min = this.customPriceMin ? this.customPriceMin.value : '';            const max = this.customPriceMax ? this.customPriceMax.value : '';            if (min || max) {               priceVal = `${min}_${max}`;            } else if (this.priceFilter && this.priceFilter.value !== 'all') {               priceVal = this.priceFilter.value;            }            if (priceVal) {              if (priceVal === 'under50' && price >= 50) return;              if (priceVal === 'over50' && price <= 50) return;              if (priceVal === 'over30' && price <= 30) return;              if (priceVal === 'over500' && price <= 500) return;              if (priceVal.includes('_')) {                 const parts = priceVal.split('_');                 if (parts[0] && price < parseFloat(parts[0])) return;                 if (parts[1] && price > parseFloat(parts[1])) return;              }            }                        // Map Adviser schema to our widget's expected schema            const mappedData = {              url: dataObj.linkHREF || dataObj.dataLink || '#',              image: dataObj.imageURL || (dataObj.image && dataObj.image.src) || '',              title: dataObj.dataProduct || (dataObj.product && dataObj.product.name) || 'Product Deal',              merchant: dataObj.dataRetailer || 'Retailer',              price: dataObj.dataDiscountedPrice || 0,              currency: dataObj.dataCurrency === 'USD' ? '$' : (dataObj.dataCurrency || '$'),              msrp: dataObj.dataOriginalPrice || null            };                        const titleLow = mappedData.title.toLowerCase();            const merchLow = mappedData.merchant.toLowerCase();                        // Smarter mock filtering            let isMatch = false;            if (q === '' || this.isBroadQuery(q)) {              isMatch = true;            } else if (titleLow.includes(q) || merchLow.includes(q)) {              isMatch = true;            } else if ((q.includes('laptop') || q.includes('mac') || q.includes('pc')) && (titleLow.includes('macbook') || titleLow.includes('laptop'))) {              isMatch = true;            } else if ((q.includes('tv') || q.includes('television')) && (titleLow.includes('tv') || titleLow.includes('oled') || titleLow.includes('qled'))) {              isMatch = true;            } else if ((q.includes('phone') || q.includes('smartphone')) && (titleLow.includes('galaxy') || titleLow.includes('phone'))) {              isMatch = true;            } else if ((q.match(/watch|fitness|run|shoe/)) && (titleLow.includes('forerunner') || titleLow.includes('saucony') || titleLow.includes('watch'))) {              isMatch = true;            }                        if (isMatch) {               this.deals.push(this.extractDealData(mappedData));            }          });                    let rowLimit = this.getRowsLimit();          // Intentionally omitting the slice here to allow "Load More" to work if the API returns more                    this.sortData();          this.render();          if (typeof trackDealsAppeared !== 'undefined') {             trackDealsAppeared(this.widgetId, this.deals, this.revenueId, typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD', this.currentQuery, this.widgetTypeName);          }        }        getAdviserMockData() {          return {            "data": {              "Get": {                "Deal": [                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 300,                    "dataOriginalPrice": 399,                    "dataProduct": "Samsung Galaxy A36",                    "dataRetailer": "Samsung",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/MqDYsukV3JBG54te6dEs7j.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 14,                    "dataOriginalPrice": 24,                    "dataProduct": "Blink Mini",                    "dataRetailer": "Amazon",                    "imageURL": "http://cdn.mos.cms.futurecdn.net/3JurmAjHsDa5tPdaHAwEV8.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 59,                    "dataOriginalPrice": 99,                    "dataProduct": "Ring Video Doorbell",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/rAh4uR7AsAsALCCLTXnLNJ.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 10,                    "dataOriginalPrice": 599,                    "dataProduct": "MacBook Neo",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/Lg4Dvg68j9SbB5CPNrTEpH.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 749,                    "dataOriginalPrice": 849,                    "dataProduct": "65\\\" Fire TV Omni 4K QLED TV",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/SG34ZWodUkLTxJvMTbjPYR.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 71,                    "dataOriginalPrice": 160,                    "dataProduct": "Saucony Hurricane 24",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/vxf7UD5T2Am7guVzFoFcZ4.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 649,                    "dataOriginalPrice": 749,                    "dataProduct": "Garmin Forerunner 970",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/3GKnEu7CdhtxPMfnPCMCiA.png"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 1049,                    "dataOriginalPrice": 1499,                    "dataProduct": "LG 48\\\" C4 4K OLED TV",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/imvwZV9zoMD6fn9Afuge35.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 1499,                    "dataOriginalPrice": 2199,                    "dataProduct": "Samsung 49\\\" Odyssey Neo G9 4K Gaming Monitor",                    "dataRetailer": "Amazon",                    "imageURL": "http://cdn.mos.cms.futurecdn.net/XWDEJ5dUAE2nhK8k3Jk7k7.png"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 299,                    "dataOriginalPrice": 699,                    "dataProduct": "EGOHOME Black Memory Foam Mattress (queen)",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/hMUemtAejNETLVYxNrktzm.jpg"                  }                ]              }            }          };        }        decodeHTML(html) {          if (!html) return '';          const txt = document.createElement("textarea");          txt.innerHTML = String(html);          return txt.value;        }        extractDealData(item) {          const priceRawStr = String(item.price || item.current_price || '0');          const msrpRawStr = String(item.was_price || item.msrp || item.original_price || '0');          const rawPrice = parseFloat(priceRawStr.replace(/[^\d.]/g, '')) || 0;          const rawMsrp = parseFloat(msrpRawStr.replace(/[^\d.]/g, '')) || 0;          const isCheckPrice = rawPrice === 0 || priceRawStr === '0.00' || priceRawStr === '0';                    let originalImageUrl = item.image || item.image_url || item.product_image || '';          let imageUrl = originalImageUrl;          if ((!imageUrl || isCheckPrice) && item.model_image_url) {             imageUrl = item.model_image_url;             originalImageUrl = imageUrl;          } else if ((!imageUrl || isCheckPrice) && item.model_image) {             imageUrl = item.model_image;             originalImageUrl = imageUrl;          }                    if (imageUrl) {            imageUrl = imageUrl.replace(/-(\d+)-(\d+)(\.[a-z.]+)$/i, '$3');          }                    let fallbackImage = '';          if (originalImageUrl && originalImageUrl !== imageUrl) {             fallbackImage = originalImageUrl;          } else if (item.model_image && item.model_image !== imageUrl) {             fallbackImage = item.model_image;          } else if (item.model_image_url && item.model_image_url !== imageUrl) {             fallbackImage = item.model_image_url;          }                    const rawCurrency = item.currency || item.currency_symbol || '$';                    let savingLabel = item.percentage_saving_label || '';          if (!savingLabel && rawMsrp > rawPrice && rawPrice > 0) {            const pct = Math.round(((rawMsrp - rawPrice) / rawMsrp) * 100);            if (pct > 0) {              savingLabel = `${pct}% OFF`;            }          }                    const isPrime = item.shipping && item.shipping.prime === true;                    let scoreRaw = (item.review_score !== undefined && item.review_score !== null && item.review_score > 0) ? parseFloat(item.review_score) : null;          let starRating = 0;          if (scoreRaw !== null) {            starRating = Math.round((scoreRaw > 10 ? scoreRaw / 20 : scoreRaw / 2) * 2) / 2;          }                    return {            id: item.offer_id || item.link || item.url || item.offer_link || Math.random().toString(),            url: item.link || item.url || item.offer_link || '#',            image: imageUrl,            fallbackImage: fallbackImage,            title: item.name || item.title || item.model_name || item.product_name || 'Unknown Product',            brand: item.brand || '',            productName: item.model_name || item.product_name || item.name || '',            merchant: item.merchant_name || item.merchant || item.retailer || 'Retailer',            price: item.price !== undefined ? String(item.price) : '0.00',            currency: this.decodeHTML(rawCurrency),            msrp: item.was_price || item.msrp || item.original_price || null,            rawPrice: rawPrice,            rawMsrp: rawMsrp,            hasWasPrice: (item.was_price !== undefined && item.was_price !== null),            isCheckPrice: isCheckPrice,            savingLabel: savingLabel,            isPrime: isPrime,            starRating: starRating > 0 ? starRating : null,            modelId: item.model_id || '',            productKey: item.product_key || '',            merchantId: (item.merchant && typeof item.merchant === 'object') ? item.merchant.id || '' : '',            matchId: item.match_id || '',            merchantNetwork: (item.merchant && typeof item.merchant === 'object') ? item.merchant.an || '' : '',            merchantUrl: (item.merchant && typeof item.merchant === 'object') ? item.merchant.url || '' : '',            modelBrand: item.model_brand || item.brand || '',            modelParent: item.model_parent || ''          };        }        sortData() {          const sortVal = this.sortSelect ? this.sortSelect.value : (this.getViewMode() === 'savings_squad' ? 'date_desc' : 'discount_desc');          if (sortVal === 'price_asc') {            this.deals.sort((a, b) => a.rawPrice - b.rawPrice);          } else if (sortVal === 'price_desc') {            this.deals.sort((a, b) => b.rawPrice - a.rawPrice);          } else if (sortVal === 'discount_desc') {            this.deals.sort((a, b) => {              const aDiscount = a.rawMsrp > a.rawPrice ? (a.rawMsrp - a.rawPrice) : 0;              const bDiscount = b.rawMsrp > b.rawPrice ? (b.rawMsrp - b.rawPrice) : 0;              return bDiscount - aDiscount;            });          } else if (sortVal === 'date_desc') {             this.deals.sort((a, b) => {                let dateA = 0;                let dateB = 0;                if (a && a.modifiedDate) {                   const valA = Array.isArray(a.modifiedDate) ? a.modifiedDate[0] : a.modifiedDate;                   dateA = new Date(valA).getTime();                   if (isNaN(dateA)) dateA = 0;                }                if (b && b.modifiedDate) {                   const valB = Array.isArray(b.modifiedDate) ? b.modifiedDate[0] : b.modifiedDate;                   dateB = new Date(valB).getTime();                   if (isNaN(dateB)) dateB = 0;                }                return dateB - dateA;             });          }        }        getFilteredDeals() {          let filteredDeals = [...this.deals];                    if (this.dealModeToggle && this.dealModeToggle.checked) {            filteredDeals = filteredDeals.filter(d => d.hasWasPrice || (d.msrp && d.rawMsrp > d.rawPrice));          }                    return filteredDeals;        }        showLoading() {          const _div = '<' + '/div>';          const skeletonCardHtml = `            \x3Cdiv class="tg-df-card">              \x3Cdiv class="tg-df-card-image-box">                \x3Cdiv class="tg-df-skeleton tg-df-skeleton-img">${_div}              ${_div}              \x3Cdiv class="tg-df-card-body">                \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short">${_div}                \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text title">${_div}                \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text title">${_div}                \x3Cdiv class="tg-df-card-footer mt-auto">                  \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="height:24px;">${_div}                  \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text" style="height:44px; margin-top:8px;">${_div}                ${_div}              ${_div}            ${_div}`;          this.grid.innerHTML = Array(4).fill(skeletonCardHtml).join('');        }        showError() {          const _div = '<' + '/div>';          this.grid.innerHTML = `\x3Cdiv class="tg-df-message">            An error occurred while finding deals. Please check your connection and try again.          ${_div}`;        }        escapeHTML(str) {          if (!str) return '';          return String(str).replace(/[&<>'"]/g, tag => ({              '&': '&', '<': '<', '>': '>', "'": ''', '"': '"'          }[tag] || tag));        }                bindCouponButtons() {          const btns = this.root.querySelectorAll('.tg-df-tag-coupons');          btns.forEach(btn => {            btn.addEventListener('click', (e) => {              e.preventDefault();              e.stopPropagation();              const merchant = btn.getAttribute('data-merchant');              this.openVouchersModal(merchant);            });          });                    const closeBtn = this.root.querySelector('#tg-df-vouchers-close');          const backdrop = this.root.querySelector('#tg-df-vouchers-modal');          if (closeBtn) {            closeBtn.onclick = () => this.closeVouchersModal();          }          if (backdrop) {            backdrop.onclick = (e) => {              if (e.target === backdrop) this.closeVouchersModal();            };          }        }                closeVouchersModal() {          const backdrop = this.root.querySelector('#tg-df-vouchers-modal');          if (backdrop) backdrop.classList.remove('active');        }                async checkMerchantsCouponsBulk(merchants) {          if (!merchants || merchants.length === 0) return {};          const controller = new AbortController();          const timeoutId = setTimeout(() => controller.abort(), 4000);          try {            const area = this.getAreaCode();            const url = new URL('https://search-api.fie.future.net.uk/widget.php');            url.searchParams.append('model_name', 'Everything');            url.searchParams.append('language', 'en-GB');            if (area) url.searchParams.append('area', area);            url.searchParams.append('combine_product_types', '1');            url.searchParams.append('filter_merchant_name', merchants.join(','));            url.searchParams.append('all_filters', 'false');            url.searchParams.append('exclude_unlabelled', 'false');            url.searchParams.append('include_specs', 'false');            url.searchParams.append('sort', 'voucher');            url.searchParams.append('distinct_merchants', 'natural');            url.searchParams.append('filter_product_types', 'vouchers,offer_deals,newsletter');            url.searchParams.append('rows', '120');            url.searchParams.append('origin', 'widgets-clientside');                        let res; try { res = await fetch(url.toString(), { signal: controller.signal }); } catch (e) { return {}; }            clearTimeout(timeoutId);            if (!res.ok) return {};            const data = await res.json();                        let offers = [];            if (data && data.widget && data.widget.data && Array.isArray(data.widget.data.offers)) {              offers = data.widget.data.offers;            } else if (data && data.data && Array.isArray(data.data.offers)) {              offers = data.data.offers;            } else if (Array.isArray(data)) {              offers = data;            } else if (data && Array.isArray(data.offers)) {              offers = data.offers;            } else if (data && data.offers && Array.isArray(data.offers.offer)) {              offers = data.offers.offer;            } else if (data && Array.isArray(data.data)) {              offers = data.data;            }                        const foundMerchants = new Set();            offers.forEach(o => {              let mName = o.merchant_name || o.merchant || o.retailer;              if (mName && typeof mName === 'object') mName = mName.name;              if (mName) foundMerchants.add(String(mName).toLowerCase());            });            const resultMap = {};            merchants.forEach(m => {              if (m) resultMap[m] = foundMerchants.has(String(m).toLowerCase());            });            return resultMap;          } catch (e) {            return {};          }        }                async openVouchersModal(merchantName) {          const backdrop = this.root.querySelector('#tg-df-vouchers-modal');          const title = this.root.querySelector('#tg-df-vouchers-title');          const content = this.root.querySelector('#tg-df-vouchers-content');                    if (!backdrop || !content) return;                    // HACK: Hide closing tags          const _div = '<' + '/div>';          const _span = '<' + '/span>';          const _a = '<' + '/a>';          const _h4 = '<' + '/h4>';          const _svg = '<' + '/svg>';          const _circle = '<' + '/circle>';          const _polyline = '<' + '/polyline>';          const _rect = '<' + '/rect>';          const _path = '<' + '/path>';                    title.innerText = `${merchantName} Coupons & Deals`;          content.innerHTML = `\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text">${_div}                               \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text">${_div}`;          backdrop.classList.add('active');                    try {            const area = this.getAreaCode();            const url = new URL('https://search-api.fie.future.net.uk/widget.php');            url.searchParams.append('model_name', 'Everything');            url.searchParams.append('language', 'en-GB');            if (area) url.searchParams.append('area', area);            url.searchParams.append('combine_product_types', '1');            url.searchParams.append('filter_merchant_name', merchantName);            url.searchParams.append('all_filters', 'false');            url.searchParams.append('exclude_unlabelled', 'false');            url.searchParams.append('include_specs', 'false');            url.searchParams.append('sort', 'voucher');            url.searchParams.append('distinct_merchants', 'natural');            url.searchParams.append('filter_product_types', 'vouchers,offer_deals,newsletter');            url.searchParams.append('rows', '50');            url.searchParams.append('origin', 'widgets-clientside');                        const res = await fetch(url.toString());            if (!res.ok) throw new Error('API Error');            const data = await res.json();                        let offers = [];            if (data && data.widget && data.widget.data && Array.isArray(data.widget.data.offers)) {              offers = data.widget.data.offers;            } else if (data && data.data && Array.isArray(data.data.offers)) {              offers = data.data.offers;            } else if (Array.isArray(data)) {              offers = data;            } else if (data && Array.isArray(data.offers)) {              offers = data.offers;            } else if (data && data.offers && Array.isArray(data.offers.offer)) {              offers = data.offers.offer;            } else if (data && Array.isArray(data.data)) {              offers = data.data;            }                        if (offers.length === 0) {              content.innerHTML = `\x3Cdiv class="tg-df-message">No vouchers currently available for ${this.escapeHTML(merchantName)}.${_div}`;              return;            }                        content.innerHTML = offers.map((v, idx) => {              let offerObj = v;              if (v.offers && v.offers.offer) {                offerObj = Array.isArray(v.offers.offer) ? v.offers.offer[0] : v.offers.offer;              } else if (v.offer) {                offerObj = Array.isArray(v.offer) ? v.offer[0] : v.offer;              }              let logoUrl = v.logo_url || offerObj.logo_url || '';              if (!logoUrl && v.merchant) {                if (Array.isArray(v.merchant) && v.merchant.length > 0) logoUrl = v.merchant[0].logo_url || '';                else logoUrl = v.merchant.logo_url || '';              }                            const offerName = offerObj.name || offerObj.title || v.name || v.title || 'Special Offer';              const endTime = offerObj.end_time || v.end_time || '';              const linkUrl = offerObj.link || offerObj.url || v.link || v.url || '#';                            let foundVoucherCode = '';              const findVoucherCode = (obj) => {                if (!obj || typeof obj !== 'object') return;                if (obj.type === 'voucher_code' && obj.display_value) {                  foundVoucherCode = obj.display_value;                  return;                }                if (Array.isArray(obj)) {                  for (const item of obj) {                    findVoucherCode(item);                    if (foundVoucherCode) return;                  }                } else {                  for (const k in obj) {                    if (Object.prototype.hasOwnProperty.call(obj, k)) {                      findVoucherCode(obj[k]);                      if (foundVoucherCode) return;                    }                  }                }              };              findVoucherCode(offerObj);              if (!foundVoucherCode) findVoucherCode(v);                            const voucherCode = foundVoucherCode || offerObj.voucher_code || v.voucher_code || '';              const codeHtml = voucherCode ? `\x3Cspan class="tg-df-voucher-code" data-action="copy-code" data-code="${this.escapeHTML(voucherCode)}" title="Copy to clipboard">                \x3Cspan class="tg-df-voucher-code-text">${this.escapeHTML(voucherCode)}${_span}                \x3Csvg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-left:6px;flex-shrink:0;" class="tg-df-voucher-copy-icon">                  \x3Crect x="9" y="9" width="13" height="13" rx="2" ry="2">${_rect}                  \x3Cpath d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1">${_path}                ${_svg}              ${_span}` : '';                            const logoHtml = logoUrl                 ? `\x3Cimg src="${this.escapeHTML(logoUrl)}" alt="${this.escapeHTML(offerName)}" class="tg-df-voucher-logo" />`                 : `\x3Cdiv class="tg-df-voucher-logo" style="background:#e2e8f0;">${_div}`;                            let expiryHtml = '';              if (endTime) {                let dStr = endTime;                if (!isNaN(dStr) && String(dStr).length === 10) dStr = Number(dStr) * 1000;                const d = new Date(dStr);                if (!isNaN(d.getTime())) {                  const options = { year: 'numeric', month: 'short', day: 'numeric' };                  expiryHtml = `                    \x3Cdiv class="tg-df-voucher-expiry">                      \x3Csvg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">                        \x3Ccircle cx="12" cy="12" r="10">${_circle}                        \x3Cpolyline points="12 6 12 12 16 14">${_polyline}                      ${_svg}                      Expires ${d.toLocaleDateString(undefined, options)}                    ${_div}`;                }              }              const revenueIdVal = generateRevenueId(linkUrl, offerName, merchantName, null);              const rewrittenLinkUrl = rewriteAffiliateLink(linkUrl, area, revenueIdVal);              return `                \x3Ca href="${this.escapeHTML(rewrittenLinkUrl)}" target="_blank" rel="noopener nofollow" class="tg-df-voucher-item"                  data-action="voucher-click"                  data-product-name="${this.escapeHTML(offerName)}"                  data-merchant-name="${this.escapeHTML(merchantName)}"                  data-analytics-id="${this.escapeHTML(offerObj.offer_id || offerObj.id || v.id || '')}"                  data-price=""                  data-previous-price=""                  data-original-link="${this.escapeHTML(linkUrl)}"                  data-revenue-id="${revenueIdVal}"                  data-index="${idx}"                  data-total="${offers.length}"                  data-in-stock="true"                  data-currency="USD"                  data-model-id="${this.escapeHTML(offerObj.model_id || v.model_id || offerObj.id || v.id || '')}"                  data-merchant-id="${this.escapeHTML(offerObj.merchant_id || offerObj.merchant?.id || '')}"                >                  ${logoHtml}                  \x3Cdiv class="tg-df-voucher-content">                    \x3Ch4 class="tg-df-voucher-title">${this.escapeHTML(offerName)}${_h4}                    ${codeHtml}                    ${expiryHtml}                  ${_div}                ${_a}              `;            }).join('');                        // Attach copy functionality            const copyBtns = content.querySelectorAll('[data-action="copy-code"]');            copyBtns.forEach(btn => {              btn.addEventListener('click', async (e) => {                e.preventDefault();                e.stopPropagation();                                const code = btn.getAttribute('data-code');                if (!code) return;                                try {                  const copyToClipboard = async (text) => {                     if (window.navigator.clipboard && window.isSecureContext) {                        try { await window.navigator.clipboard.writeText(text); return; } catch (e) {}                     }                     const textArea = document.createElement("textarea");                     textArea.value = text;                     textArea.style.position = "fixed";                     document.body.appendChild(textArea);                     textArea.focus();                     textArea.select();                     document.execCommand('copy');                     textArea.remove();                  };                  await copyToClipboard(code);                                    // Visual feedback                  btn.classList.add('copied');                  const textSpan = btn.querySelector('.tg-df-voucher-code-text');                  const iconSvg = btn.querySelector('.tg-df-voucher-copy-icon');                                    const origText = textSpan.innerText;                  const origIcon = iconSvg.innerHTML;                                    textSpan.innerText = 'Copied!';                  iconSvg.innerHTML = `\x3Cpolyline points="20 6 9 17 4 12">${_polyline}`;                                    setTimeout(() => {                    if (btn) {                      btn.classList.remove('copied');                      if (textSpan) textSpan.innerText = origText;                      if (iconSvg) iconSvg.innerHTML = origIcon;                    }                  }, 2000);                                    trackElementInteraction({                    id: 'voucher-code-copy',                    name: 'Copy Voucher Code',                    label: `Copied ${code} for ${merchantName}`                  });                } catch (err) {                  console.warn('Failed to copy text: ', err);                }              });            });            // Attach voucher click tracking            const voucherBtns = content.querySelectorAll('[data-action="voucher-click"]');            voucherBtns.forEach(btn => {              btn.addEventListener('click', (e) => {                if (e.target.closest('[data-action="copy-code"]')) return;                                const productName = btn.getAttribute('data-product-name');                const merchantNameAttr = btn.getAttribute('data-merchant-name');                const productId = btn.getAttribute('data-analytics-id');                const price = parseFloat(btn.getAttribute('data-price')) || null;                const prevPriceStr = btn.getAttribute('data-previous-price');                const previousPrice = prevPriceStr ? parseFloat(prevPriceStr) : null;                const originalLink = btn.getAttribute('data-original-link');                const rewrittenLink = btn.getAttribute('href');                const revenueId = btn.getAttribute('data-revenue-id');                const index = parseInt(btn.getAttribute('data-index'), 10) || 0;                const inStock = btn.getAttribute('data-in-stock') === 'true';                const totalText = btn.getAttribute('data-total');                const totalDeals = parseInt(totalText, 10) || 0;                const productCategoryName = 'deals';                const trackingParams = {                  widgetId: this.widgetId,                  productCategoryName: productCategoryName,                  product: {                    modelId: btn.getAttribute('data-model-id') || null,                    matchId: btn.getAttribute('data-match-id') || null,                    brand: btn.getAttribute('data-model-brand') || null,                    parent: btn.getAttribute('data-model-parent') || null,                    name: productName,                    price: price,                    previousPrice: previousPrice,                    link: rewrittenLink,                    originalLink: originalLink,                    inStock: inStock                  },                  zeroBasedProductIndexOrNull: index,                  totalDealsOrProducts: totalDeals,                   merchant: {                    id: btn.getAttribute('data-merchant-id') || null,                    network: btn.getAttribute('data-merchant-network') || null,                    url: btn.getAttribute('data-merchant-url') || null,                    name: merchantNameAttr                  },                  revenueId: revenueId,                  widgetTypeName: this.widgetTypeName,                  isoCurrencyCode: btn.getAttribute('data-currency') || 'USD'                };                if (typeof trackDealClick === 'function') {                  trackDealClick(trackingParams);                }              });            });                                  } catch (e) {            console.warn(e);            content.innerHTML = `\x3Cdiv class="tg-df-message">Failed to load vouchers.${_div}`;          }        }        render() {          try {            if (this.getViewMode() === 'savings_squad' && this.airedaleTags.length > 0) {              if (this.categoryFilterWrapper) {                 this.categoryFilterWrapper.style.display = 'flex';              }              if (this.categoryFilter) {                 const _option = '<' + '/option>';                 let optionsHtml = `\x3Coption value="all">All Categories${_option}`;                 this.airedaleTags.forEach(tag => {                    const isSelected = this.activeDealTag === tag ? 'selected' : '';                    optionsHtml += `\x3Coption value="${this.escapeHTML(tag)}" ${isSelected}>${this.escapeHTML(tag)} (${this.airedaleTagCounts[tag] || 0})${_option}`;                 });                 this.categoryFilter.innerHTML = optionsHtml;                 this.categoryFilter.value = this.activeDealTag || 'all';              }            } else {               if (this.categoryFilterWrapper) {                  this.categoryFilterWrapper.style.display = 'none';               }            }            const displayDeals = this.getFilteredDeals();          // HACK: Hide closing tags from the CMS HTML sanitizer so it doesn't strip them during in-page injection          const _div = '<' + '/div>';          const _span = '<' + '/span>';          const _a = '<' + '/a>';          const _h3 = '<' + '/h3>';          const _p = '<' + '/p>';          const _strong = '<' + '/strong>';          const _sup = '<' + '/sup>';          const _button = '<' + '/button>';          if (displayDeals.length === 0) {            if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {              if (this.deals.length > 0) {                 this.grid.innerHTML = `\x3Cdiv class="tg-df-message">                  No deals match your selected filters.                ${_div}`;              } else if (this.getViewMode() === 'savings_squad' && this.currentQuery.length <= 2) {                 // Do not show "no exact matches" if query is empty for savings_squad                 this.grid.innerHTML = '';              } else {                 this.grid.innerHTML = `\x3Cdiv class="tg-df-message">                  No exact matches found for "\x3Cstrong>${this.escapeHTML(this.currentQuery)}${_strong}". Try adjusting your search term.                ${_div}`;              }            } else {              this.grid.innerHTML = `\x3Cdiv class="tg-df-message">                Search product or category names to discover the best deals from across the web.              ${_div}`;            }            return;          }          let dealsHtml = displayDeals.slice(0, this.displayLimit).map((deal, index) => {            try {               const currencySym = this.escapeHTML(deal.currency);               const isoCurrencyCode = normalizeCurrency(currencySym);               const escapedPrice = this.escapeHTML(deal.price);               const escapedMsrp = this.escapeHTML(deal.msrp);               const areaCode = this.getAreaCode();                              const revenueId = generateRevenueId(deal.url, deal.title, deal.merchant, null);               const originalLink = deal.url;               const rewrittenLink = rewriteAffiliateLink(deal.url, areaCode, revenueId);                        const productCategoryName = 'deals';            const dataAttr = `              data-action="${deal.isCheckPrice ? 'view-similar-click' : 'deal-click'}"              data-analytics-id="${this.escapeHTML(deal.externalProductId || deal.id || '')}"              data-product-name="${this.escapeHTML(deal.title)}"              data-merchant-name="${this.escapeHTML(deal.merchant)}"              data-price="${deal.rawPrice || ''}"              data-previous-price="${deal.rawMsrp || ''}"              data-original-link="${this.escapeHTML(originalLink)}"              data-revenue-id="${revenueId}"              data-index="${index}"              data-total="${displayDeals.length}"              data-in-stock="${deal.inStock !== false}"              data-currency="${this.escapeHTML(isoCurrencyCode)}"              data-model-id="${this.escapeHTML(deal.modelId || '')}"              data-product-key="${this.escapeHTML(deal.productKey || '')}"              data-merchant-id="${this.escapeHTML(deal.merchantId || '')}"            `;                        let priceGroupHtml = '';            let isSavingsSquadMode = this.getViewMode() === 'savings_squad';            let ctaText = 'View Deal';            let formattedPrice = '';            let msrpHtml = '';                        if (deal.isCheckPrice) {              ctaText = isSavingsSquadMode ? 'View Deal' : 'Check Price';              if (isSavingsSquadMode) {                priceGroupHtml = `                  \x3Cdiv class="tg-df-card-merchant-wrapper">                    \x3Cspan class="tg-df-card-merchant-pill" title="${this.escapeHTML(deal.merchant)}">${this.escapeHTML(deal.merchant)}${_span}                  ${_div}                  \x3Cdiv class="tg-df-card-price-group">                  ${_div}                `;              } else {                priceGroupHtml = `                  \x3Cdiv class="tg-df-card-merchant-wrapper">                    \x3Cspan class="tg-df-card-merchant-pill" title="${this.escapeHTML(deal.merchant)}">${this.escapeHTML(deal.merchant)}${_span}                  ${_div}                  \x3Cdiv class="tg-df-card-price-group">                    \x3Cspan class="tg-df-card-price" style="font-size: 15px; font-weight: 500; font-style: italic;">See price at retailer${_span}                  ${_div}                `;              }            } else {              // Format Price              formattedPrice = escapedPrice.includes(currencySym)                 ? escapedPrice                 : `${currencySym}${escapedPrice}`;                              // Format MSRP              msrpHtml = deal.msrp && deal.rawMsrp > deal.rawPrice                ? `\x3Cspan class="tg-df-card-msrp">${escapedMsrp.includes(currencySym) ? escapedMsrp : currencySym + escapedMsrp}${_span}`                : '';                              priceGroupHtml = `                \x3Cdiv class="tg-df-card-merchant-wrapper">                  \x3Cspan class="tg-df-card-merchant-pill" title="${this.escapeHTML(deal.merchant)}">${this.escapeHTML(deal.merchant)}${_span}                ${_div}                \x3Cdiv class="tg-df-card-price-group">                  ${isSavingsSquadMode ? '' : `                  \x3Cspan class="tg-df-card-price">${formattedPrice}${_span}                  ${msrpHtml}                  `}                ${_div}              `;            }                        const discountBadgeHtml = deal.savingLabel && !deal.isCheckPrice              ? `\x3Cspan class="tg-df-card-discount-badge">${this.escapeHTML(deal.savingLabel)}${_span}`              : '';                          // HACK for CMS            const _button = '<' + '/button>';            const _svg = '<' + '/svg>';            const _path = '<' + '/path>';            const _rect = '<' + '/rect>';            const _circle = '<' + '/circle>';            const _polyline = '<' + '/polyline>';            const _line = '<' + '/line>';                        let badgesHtml = '';            const primeBadge = deal.isPrime ? `              \x3Cspan class="tg-df-tag tg-df-tag-prime">                \x3Csvg width="12" height="12" viewBox="0 0 24 24" fill="currentColor">                  \x3Cpath d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z">${_path}                ${_svg} Prime              ${_span}            ` : '';                        const couponsBadge = deal.merchant && deal.merchant.toLowerCase().includes('amazon') ? '' : `              \x3Cdiv class="tg-df-coupon-wrapper" data-merchant="${this.escapeHTML(deal.merchant)}" style="display:inline-flex; align-items:center;">                \x3Cdiv class="tg-df-coupon-spinner">${_div}                \x3Cbutton type="button" class="tg-df-tag tg-df-tag-coupons" data-action="coupons-click" data-merchant="${this.escapeHTML(deal.merchant)}" style="display:none;">                  \x3Csvg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">                    \x3Cpath d="M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z">${_path}                    \x3Cline x1="7" y1="7" x2="7.01" y2="7">${_line}                  ${_svg} Coupons                ${_button}              ${_div}            `;                        // Note: We always add coupons badge if there's a chance, but to allow 3-line titles we check wrapper display state            badgesHtml = `              \x3Cdiv class="tg-df-card-badges">                ${primeBadge}                ${couponsBadge}              ${_div}            `;            const _linearGradient = '<' + '/linearGradient>';            const _polygon = '<' + '/polygon>';            const _stop = '<' + '/stop>';            const _defs = '<' + '/defs>';                        let starHtml = '';            if (deal.starRating) {              let rating = deal.starRating;                            if (rating > 0) {                const fullStars = Math.floor(rating);                const halfStar = (rating - fullStars) >= 0.5 ? 1 : 0;                const emptyStars = Math.max(0, 5 - fullStars - halfStar);                const blue = '#1f69ff'; // Tom's guide brand color from VIEW DEAL button                const gray = '#cbd5e1';                                const starSvgFull = `\x3Csvg width="14" height="14" viewBox="0 0 24 24" fill="${blue}" stroke="${blue}" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpolygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26">${_polygon}${_svg}`;                                const gradId = 'half_grad_' + Math.floor(Math.random()*1000000);                const starSvgHalf = `\x3Csvg width="14" height="14" viewBox="0 0 24 24" stroke="${blue}" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">\x3Cdefs>\x3ClinearGradient id="${gradId}" x1="0" x2="1" y1="0" y2="0">\x3Cstop offset="50%" stop-color="${blue}">${_stop}\x3Cstop offset="50%" stop-color="transparent">${_stop}${_linearGradient}${_defs}                  \x3Cpolygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26" fill="url(#${gradId})">${_polygon}${_svg}`;                                  const starSvgEmpty = `\x3Csvg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="${gray}" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpolygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26">${_polygon}${_svg}`;                                let stars = [];                for (let i=0; i<fullStars; i++) stars.push(starSvgFull);                if (halfStar) stars.push(starSvgHalf);                for (let i=0; i<emptyStars; i++) stars.push(starSvgEmpty);                                starHtml = `\x3Cdiv class="tg-df-card-stars" style="display:flex;align-items:center;margin-bottom:8px;font-size:13px;font-weight:600;color:var(--tg-df-text-muted);">                  \x3Cspan style="margin-right:6px;">Tom's Guide:${_span}                  \x3Cdiv style="display:flex;gap:2px;">                    ${stars.join('')}                  ${_div}                ${_div}`;              }            }            let htmlOutput = '';            if (isSavingsSquadMode) {              htmlOutput += `              \x3Cdiv class="hawk-deal-widget-container tg-df-mobile-only" data-collapsible="true">                ${this.editorMode ? `\x3Cinput type="checkbox" class="tg-df-deal-checkbox" data-id="${this.escapeHTML(deal.id)}" ${this.selectedDeals.has(deal.id) ? 'checked' : ''} style="margin-bottom: 10px;">` : ''}                \x3Cdiv class="hawk-deal-widget-wrap">                  \x3Cdiv class="hawk-deal-widget-image-container">                    \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" rel="sponsored noopener" target="_blank" class="hawk-affiliate-link-deal-widget" ${dataAttr}>                      \x3Cimg ${deal.image ? `src="${this.escapeHTML(deal.image)}"` : ''} alt="${this.escapeHTML(deal.title)}" class="hawk-lazy-image-deal-widget" loading="lazy" width="140" height="160" onerror="${deal.fallbackImage ? `if(!this.dataset.fb) { this.dataset.fb='1'; this.src='${this.escapeHTML(deal.fallbackImage)}'; } else { this.style.opacity='0'; }` : `this.style.opacity='0';`}">                    ${_a}                  ${_div}                  \x3Cdiv class="hawk-deal-widget-text-cta-container">                    \x3Cdiv class="hawk-deal-widget-text-body-container">                      \x3Cdiv class="hawk-deal-widget-text-body-main">                        \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" class="hawk-affiliate-link-container" rel="sponsored noopener" target="_blank" ${dataAttr}>                          ${deal.isCheckPrice ? `                            \x3Cspan class="hawk-deal-widget-title-product-title">${this.escapeHTML(deal.title)}${_span}                          ` : `                            \x3Cspan class="hawk-deal-widget-title-product-title">${deal.brand ? this.escapeHTML(deal.brand) + ' ' : ''}${this.escapeHTML(deal.productName || deal.title || '')}:${_span}                          `}                        ${_a}                        ${!deal.isCheckPrice && deal.rawMsrp && deal.rawMsrp > deal.rawPrice ? `                          \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" class="hawk-affiliate-link-container" rel="sponsored noopener" target="_blank" ${dataAttr}>                            \x3Cspan class="hawk-deal-widget-title-was-price">was ${currencySym}${escapedMsrp}${_span}                          ${_a}                        ` : ''}                        \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" class="hawk-affiliate-link-container" rel="sponsored noopener" target="_blank" ${dataAttr}>                          \x3Cspan class="hawk-deal-widget-title-retailer-price">                            ${!deal.isCheckPrice ? `                              \x3Cspan class="hawk-deal-widget-title-price">now ${formattedPrice}${_span}                              \x3Cspan class="hawk-deal-widget-title-retailer"> at ${this.escapeHTML(deal.merchant)}${_span}                            ` : `                              \x3Cspan class="hawk-deal-widget-title-price">See price at ${this.escapeHTML(deal.merchant)}${_span}                            `}                          ${_span}                        ${_a}                        ${deal.description ? `\x3Cdiv class="hawk-deal-widget-text-body-description">\x3Cp>${this.escapeHTML(deal.description)}${_p}${_div}` : ''}                      ${_div}                    ${_div}                    \x3Cdiv class="hawk-deal-widget-footer">                      \x3Cdiv class="hawk-deal-widget-button-wrapper">                        \x3Cdiv class="hawk-deal-widget-preferred-partner-wrapper">                          \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" class="hawk-affiliate-link-deal-button" rel="sponsored noopener" target="_blank" ${dataAttr}>                            \x3Cspan>${deal.isCheckPrice ? 'Check Price' : 'View Deal'}${_span}                          ${_a}                        ${_div}                      ${_div}                    ${_div}                  ${_div}                ${_div}              ${_div}              `;            }            htmlOutput += `              \x3Cdiv class="tg-df-card ${isSavingsSquadMode ? 'tg-df-desktop-only' : ''}">                ${this.editorMode ? `\x3Cinput type="checkbox" class="tg-df-deal-checkbox" data-id="${this.escapeHTML(deal.id)}" ${this.selectedDeals.has(deal.id) ? 'checked' : ''}>` : ''}                \x3Cdiv class="tg-df-card-image-box">                  ${discountBadgeHtml}                  \x3Ca href="${this.escapeHTML(rewrittenLink)}" ${dataAttr} target="_blank" rel="noopener nofollow" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;">                    \x3Cimg ${deal.image ? `src="${this.escapeHTML(deal.image)}"` : ''} alt="${this.escapeHTML(deal.title)}" class="tg-df-card-image" loading="lazy" onerror="${deal.fallbackImage ? `if(!this.dataset.fb) { this.dataset.fb='1'; this.src='${this.escapeHTML(deal.fallbackImage)}'; } else { this.style.opacity='0'; }` : `this.style.opacity='0';`}">                  ${_a}                ${_div}                \x3Cdiv class="tg-df-card-body">                  ${starHtml}                  ${badgesHtml}                  \x3Ch3 class="tg-df-card-title tg-df-custom-savings-squad-title" title="${this.escapeHTML(deal.title)}">                    \x3Ca href="${this.escapeHTML(rewrittenLink)}" disable-tracking="true" target="_blank" rel="noopener nofollow" style="text-decoration: none; color: inherit;">                      ${isSavingsSquadMode                         ? (deal.isCheckPrice                             ? (deal.title && deal.title.includes(':')                                 ? `\x3Cstrong>${this.escapeHTML(deal.title.substring(0, deal.title.indexOf(':') + 1))}${_strong}\x3Cspan style="color: #1f69ff; font-weight: normal;">${this.escapeHTML(deal.title.substring(deal.title.indexOf(':') + 1))}${_span}`                                : this.escapeHTML(deal.title)                              )                             : `\x3Cstrong>${deal.brand ? this.escapeHTML(deal.brand) + ' ' : ''}${this.escapeHTML(deal.productName || deal.title || '')}:${_strong} ${deal.rawMsrp && deal.rawMsrp > deal.rawPrice ? `\x3Cspan style="color: #d0021b; text-decoration: line-through; font-weight: normal; margin-right: 4px;">was ${currencySym}${escapedMsrp}${_span} ` : ''}\x3Cspan style="color: #1f69ff; font-weight: normal;">now ${formattedPrice} at ${this.escapeHTML(deal.merchant)}${_span}`                          )                        : this.escapeHTML(deal.title)                      }                    ${_a}                  ${_h3}                  ${deal.description ? `\x3Cp style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 12px; line-height: 1.4;">${this.escapeHTML(deal.description)}${_p}` : ''}                  \x3Cdiv class="tg-df-card-footer">                    ${priceGroupHtml}                    \x3Ca href="${this.escapeHTML(rewrittenLink)}" ${dataAttr} target="_blank" rel="noopener nofollow" class="tg-df-card-cta ${isSavingsSquadMode ? 'tg-df-cta-savings-squad' : ''}" style="text-decoration: none;">${ctaText}${_a}                  ${_div}                ${_div}              ${_div}            `;                        return htmlOutput;            } catch (e) {               console.log("Error rendering deal in map for index", index, typeof deal === 'object' ? JSON.stringify(deal) : deal, "MSG:", e.message);               return '';            }          }).join('');                    if (displayDeals.length > this.displayLimit || ((this.getViewMode() === 'carousel' || this.getViewMode() === 'auto') && displayDeals.length > 0 && displayDeals.length % ((this.rowsSelect && this.rowsSelect.value) ? parseInt(this.rowsSelect.value, 10) : 12) === 0)) {            if (this.getViewMode() === 'carousel') {               dealsHtml += `                 \x3Cbutton type="button" class="tg-df-load-more-card tg-df-load-more">                   \x3Csvg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-bottom: 8px;">\x3Cpath d="M5 12h14">\x3C/path>\x3Cpath d="m12 5 7 7-7 7">\x3C/path>\x3C/svg>                   Load More                 ${_button}               `;            } else {               dealsHtml += `                 \x3Cdiv style="width: 100%; display: flex; justify-content: center; margin-top: 16px; grid-column: 1 / -1;">                   \x3Cbutton type="button" class="tg-df-tag-outline tg-df-load-more" style="padding: 8px 24px; border-radius: 100px; font-weight: 600; font-size: 14px; cursor: pointer; display: flex; align-items: center;">Load More${_button}                 ${_div}               `;            }          }                    this.grid.innerHTML = dealsHtml;          // Inject JSON-LD          try {            let targetNode = this.hostContainer || document.head;            let jsonLdScript = targetNode.querySelector('#tg-df-json-ld-' + this.widgetId);            if (!jsonLdScript) {                jsonLdScript = document.createElement('script');                jsonLdScript.type = 'application/ld+json';                jsonLdScript.id = 'tg-df-json-ld-' + this.widgetId;                targetNode.appendChild(jsonLdScript);            }            const jsonLdData = {              "@context": "https://schema.org",              "@type": "ItemList",              "itemListElement": displayDeals.slice(0, this.displayLimit).map((deal, index) => {                 let isoCurrency = "USD";                 if (deal.currency === '£') isoCurrency = "GBP";                 else if (deal.currency === '€') isoCurrency = "EUR";                 else if (deal.currency === 'A$') isoCurrency = "AUD";                 else if (deal.currency === 'CA$') isoCurrency = "CAD";                 const areaCode = typeof this.getAreaCode === 'function' ? this.getAreaCode() : 'US';                 const revenueId = typeof generateRevenueId === 'function' ? generateRevenueId(deal.url, deal.title, deal.merchant, null) : '';                 const rewrittenLink = typeof rewriteAffiliateLink === 'function' ? rewriteAffiliateLink(deal.url, areaCode, revenueId) : deal.url;                 return {                   "@type": "ListItem",                   "position": index + 1,                   "item": {                     "@type": "Product",                     "name": deal.title,                     "image": deal.image || "",                     "description": deal.description || "",                     "brand": {                       "@type": "Brand",                       "name": deal.brand || ""                     },                     "offers": {                       "@type": "Offer",                       "priceCurrency": isoCurrency,                       "price": deal.rawPrice || 0,                       "url": rewrittenLink,                       "seller": {                         "@type": "Organization",                         "name": deal.merchant || ""                       }                     }                   }                 };              }).filter(item => item.item.name)            };            jsonLdScript.textContent = JSON.stringify(jsonLdData);          } catch(e) { console.warn("JSON-LD generation failed", e); }                    let gridWrapper = this.grid.parentElement;          if (gridWrapper && gridWrapper.classList.contains('tg-df-grid-wrapper')) {             let rightChevron = gridWrapper.querySelector('.tg-df-carousel-scroll-right');             let leftChevron = gridWrapper.querySelector('.tg-df-carousel-scroll-left');             if (this.getViewMode() === 'carousel') {                 // The observer set up in setupScrollListeners handles visibility.                 if (rightChevron) rightChevron.style.display = 'flex';                 if (leftChevron) leftChevron.style.display = 'none'; // reset correctly             } else {                 if (rightChevron) rightChevron.style.display = 'none';                 if (leftChevron) leftChevron.style.display = 'none';             }          }                    const loadMoreBtn = this.grid.querySelector('.tg-df-load-more');          if (loadMoreBtn) {            loadMoreBtn.addEventListener('click', async () => {              if (typeof trackElementInteraction === 'function') {                trackElementInteraction({ id: 'load-more', name: 'Load more', label: 'Load More Results' });              }              if (displayDeals.length <= this.displayLimit) {                 loadMoreBtn.innerHTML = `                  <svg class="tg-df-spinner" style="width: 16px; height: 16px; display: inline-block; vertical-align: middle; margin-right: 8px;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M12 2v4m0 12v4M4.93 4.93l2.83 2.83m8.48 8.48l2.83 2.83M2 12h4m12 0h4M4.93 19.07l2.83-2.83m8.48-8.48l2.83-2.83"/></svg>                  Loading...                 `;                 loadMoreBtn.disabled = true;                 await this.fetchDeals(this.currentQuery, true);              } else {                 this.displayLimit += this.getRowsLimit();                 this.render();              }            });          }                      this.bindCouponButtons();            this.checkAndUpdateCoupons();                        // Allow hawklinks.js to discover and rewrite our widget links             // by appending the .article-body class and manually triggering processArticle.            let container = this.root.classList.contains('tg-df-container') ? this.root : this.root.querySelector('.tg-df-container');            if (container && !container.classList.contains('article-body')) {               container.classList.add('article-body');            }            setTimeout(() => {               if (this.grid && !this.grid.classList.contains('article-body')) this.grid.classList.add('article-body');               document.dispatchEvent(new CustomEvent('processArticle', { detail: { element: this.root } }));            }, 50);          } catch(e) {            console.warn("Widget render error", e);          }        }                async checkAndUpdateCoupons() {          const wrappers = Array.from(this.root.querySelectorAll('.tg-df-coupon-wrapper'));          if (wrappers.length === 0) return;                    const merchants = [...new Set(wrappers.map(w => w.getAttribute('data-merchant')).filter(Boolean))];          if (merchants.length === 0) return;          const couponResultsMap = await this.checkMerchantsCouponsBulk(merchants);                    for (const merchant of merchants) {            const hasCoupons = !!couponResultsMap[merchant];            const merchantWrappers = wrappers.filter(w => w.getAttribute('data-merchant') === merchant);            merchantWrappers.forEach(wrapper => {              const spinner = wrapper.querySelector('.tg-df-coupon-spinner');              const btn = wrapper.querySelector('.tg-df-tag-coupons');                            if (spinner) spinner.style.display = 'none';                            if (hasCoupons && btn) {                btn.style.display = 'inline-flex';              } else if (!hasCoupons) {                wrapper.style.display = 'none';              }            });          }        }        updateFloatingCopyBar() {          if (!this.editorBar || !this.editorSelectedCount) return;          if (this.editorMode && this.selectedDeals.size > 0) {            this.editorBar.style.display = 'flex';            this.editorSelectedCount.innerText = this.selectedDeals.size;          } else {            this.editorBar.style.display = 'none';          }        }        async copySelectedDealsToCMS() {           function htmlToSlate(htmlString) {              if (!htmlString) return [{ type: 'paragraph', children: [{ text: '' }] }];              let doc;              if (typeof window !== 'undefined' && window.DOMParser) {                 doc = new DOMParser().parseFromString(htmlString, 'text/html');              } else {                 doc = document.implementation.createHTMLDocument('');                 doc.body.innerHTML = htmlString;              }                            function parseNode(node, marks = {}) {                  if (node.nodeType === 3) {                      const text = node.textContent;                      if (!text) return null;                      return { text: text, ...marks };                  }                  if (node.nodeType === 1) {                      const tagName = node.tagName.toLowerCase();                      if (tagName === 'br') {                          return { type: 'line-break', children: [{ text: '' }] };                      }                      if (tagName === 'p') {                          let children = Array.from(node.childNodes).map(child => parseNode(child, marks)).flat().filter(Boolean);                          if (children.length === 0) children.push({ text: "" });                          return { type: 'paragraph', children };                      }                      if (tagName === 'strong' || tagName === 'b') {                          const newMarks = { ...marks, bold: true };                          return Array.from(node.childNodes).map(child => parseNode(child, newMarks)).flat().filter(Boolean);                      }                      if (tagName === 'em' || tagName === 'i') {                          const newMarks = { ...marks, italic: true };                          return Array.from(node.childNodes).map(child => parseNode(child, newMarks)).flat().filter(Boolean);                      }                      if (tagName === 'a') {                          const href = node.getAttribute('href') || '';                          let children = Array.from(node.childNodes).map(child => parseNode(child, marks)).flat().filter(Boolean);                          if (children.length === 0) children.push({ text: "" });                          return {                              type: 'link',                              url: href,                              isNoFollow: (node.getAttribute('rel') || '').includes('nofollow'),                              isSponsored: (node.getAttribute('rel') || '').includes('sponsored'),                              isOpenNewTab: node.getAttribute('target') === '_blank',                              isPreventDataRewrite: false,                              children: children                          };                      }                      return Array.from(node.childNodes).map(child => parseNode(child, marks)).flat().filter(Boolean);                  }                  return null;              }                            let blocksArray = [];              let currentParagraphChildren = [];              function flushParagraph() {                  if (currentParagraphChildren.length > 0) {                      blocksArray.push({ type: 'paragraph', children: currentParagraphChildren });                      currentParagraphChildren = [];                  }              }              Array.from(doc.body.childNodes).forEach(node => {                  const parsed = parseNode(node, {});                  const parsedItems = Array.isArray(parsed) ? parsed : (parsed ? [parsed] : []);                  parsedItems.forEach(item => {                      if (item.type === 'paragraph') {                          flushParagraph();                          blocksArray.push(item);                      } else {                          currentParagraphChildren.push(item);                      }                  });              });              flushParagraph();              if (blocksArray.length === 0) {                  blocksArray = [{ type: 'paragraph', children: [{ text: '' }] }];              }              return blocksArray;           }           const blocks = [];                      this.editorCopyBtn.innerHTML = '\x3Cspan class="tg-df-coupon-spinner" style="display:inline-block; margin-right:8px; border-top-color:#fff;">' + '<' + '/span> Copying...';           for (const deal of Array.from(this.selectedDeals.values())) {              const url = deal.url;              const merchant = deal.merchant;              const title = deal.title;              const image = deal.image;              const currentPrice = deal.currency + deal.rawPrice;              const wasPrice = deal.hasWasPrice && deal.rawMsrp > deal.rawPrice ? deal.currency + deal.rawMsrp : '';                            let couponsChildren = [];              try {                  const area = this.getAreaCode();                  const apiUrl = new URL('https://search-api.fie.future.net.uk/widget.php');                  apiUrl.searchParams.append('model_name', 'Everything');                  apiUrl.searchParams.append('language', 'en-GB');                  apiUrl.searchParams.append('area', area);                  apiUrl.searchParams.append('combine_product_types', '1');                  apiUrl.searchParams.append('filter_merchant_name', merchant);                  apiUrl.searchParams.append('all_filters', 'false');                  apiUrl.searchParams.append('exclude_unlabelled', 'false');                  apiUrl.searchParams.append('include_specs', 'false');                  apiUrl.searchParams.append('sort', 'voucher');                  apiUrl.searchParams.append('distinct_merchants', 'natural');                  apiUrl.searchParams.append('filter_product_types', 'vouchers,offer_deals,newsletter');                  apiUrl.searchParams.append('rows', '3');                  apiUrl.searchParams.append('origin', 'widgets-clientside');                                    let res; try { res = await fetch(apiUrl.toString()); } catch (e) { return; }                  if (res.ok) {                      const data = await res.json();                      let offers = [];                      if (data && data.widget && data.widget.data && Array.isArray(data.widget.data.offers)) {                        offers = data.widget.data.offers;                      } else if (data && data.data && Array.isArray(data.data.offers)) {                        offers = data.data.offers;                      }                                            if (offers.length > 0) {                          couponsChildren.push({ text: "Also check out these coupons: ", bold: true });                          offers.slice(0, 3).forEach((offer, idx) => {                              const actualOffer = offer.offer || offer;                              const offerName = actualOffer.name || actualOffer.title || offer.model_name || offer.title || offer.name || 'Coupon';                              const linkUrl = actualOffer.link || actualOffer.url || actualOffer.offer_link || '#';                              couponsChildren.push({ type: "line-break", children: [{ text: "" }] });                              couponsChildren.push({ text: "🎟️ " });                              couponsChildren.push({                                  type: "link",                                  url: linkUrl,                                  isNoFollow: true,                                  isSponsored: false,                                  isOpenNewTab: true,                                  isPreventDataRewrite: false,                                  children: [{ text: offerName, bold: true }]                              });                          });                      }                  }              } catch (err) {                  console.warn('Failed to fetch coupons for', merchant, err);              }              let descriptionValue = [];              if (deal.text) {                 descriptionValue = htmlToSlate(deal.text);              } else {                 const dealDescriptions = [                   `Don't miss out on this fantastic deal for the ${title}. It is currently available at ${merchant} for a highly competitive price.`,                   `We've spotted an excellent price drop on the ${title}. Grab it now at ${merchant} before it's gone.`,                   `The ${title} is currently seeing a generous discount over at ${merchant}. This is a perfect time to buy if you've been holding out.`,                   `If you're in the market for the ${title}, ${merchant} has just the deal for you.`,                   `Score the ${title} for less at ${merchant} right now. This is a rare chance to save big.`,                   `Upgrade your setup with the ${title}, now available at a stellar price via ${merchant}.`                 ];                 const randomDescription = dealDescriptions[Math.floor(Math.random() * dealDescriptions.length)];                 descriptionValue = [                    { type: "paragraph", children: [{ text: randomDescription }] }                 ];              }                            if (couponsChildren.length > 0) {                 let lastBlock = descriptionValue[descriptionValue.length - 1];                 if (lastBlock && lastBlock.type === 'paragraph') {                     lastBlock.children.push({ type: "line-break", children: [{ text: "" }] });                     lastBlock.children.push({ type: "line-break", children: [{ text: "" }] });                     lastBlock.children.push({ text: "Also check out these coupons: ", bold: true });                     lastBlock.children.push({ type: "line-break", children: [{ text: "" }] });                     lastBlock.children = lastBlock.children.concat(couponsChildren);                 } else {                     descriptionValue.push({                         type: "paragraph",                         children: [                             { type: "line-break", children: [{ text: "" }] },                             { type: "line-break", children: [{ text: "" }] },                             { text: "Also check out these coupons: ", bold: true },                             { type: "line-break", children: [{ text: "" }] },                             ...couponsChildren                         ]                     });                 }              }              function normalizeCurrencyToISO(symbol) {                const map = { '£': 'GBP', '$': 'USD', 'A$': 'AUD', 'CA$': 'CAD', '€': 'EUR' };                return map[symbol] || symbol;              }              const isoCurrency = normalizeCurrencyToISO(deal.currency);              blocks.push({                 id: (window.crypto && window.crypto.randomUUID) ? window.crypto.randomUUID() : 'cms-' + Date.now() + Math.random(),                 blockTypeName: "deal",                 excludeFrom: [],                 collapsible: false,                 props: {                    description: {                       value: descriptionValue,                       touched: false,                       validationMessage: ""                    },                    image: {                       value: {                          credit: [{ type: "paragraph", children: [{ text: merchant }] }],                          dateCreated: Date.now(),                          dateModified: Date.now(),                          distribution: [],                          fileSize: 0,                          height: 1000,                          id: deal.id,                          imageRights: "",                          src: image,                          name: title + ".jpg",                          tags: [],                          width: 1000                       },                       touched: false,                       validationMessage: ""                    },                    showDealButton: { value: true, touched: false, validationMessage: "" },                    isPreferredPartner: { value: false, touched: false, validationMessage: "" },                    linkHref: { value: url, touched: false, validationMessage: "" },                    linkLabel: { value: "", touched: false, validationMessage: "" },                    linkIsNoFollow: { value: true, touched: false, validationMessage: "" },                    linkIsSponsored: { value: false, touched: false, validationMessage: "" },                    linkIsOpenNewWindow: { value: true, touched: false, validationMessage: "" },                    customPromoFlags: { value: [], touched: false, validationMessage: "" },                    showStarDeal: { value: false, touched: false, validationMessage: "" },                    savingType: { value: "none", touched: false, validationMessage: "" },                    starDealPromoFlag: { value: "", touched: false, validationMessage: "" },                    showEditorsChoice: { value: false, touched: false, validationMessage: "" },                    editorsChoiceTitle: { value: "", touched: false, validationMessage: "" },                    hawkPriceCurrency: { value: { value: isoCurrency, label: isoCurrency }, touched: false, validationMessage: "" },                    hawkPrice: { value: deal.hasWasPrice ? String(deal.rawMsrp) : String(deal.rawPrice), touched: false, validationMessage: "" },                    hawkSalePrice: { value: String(deal.rawPrice), touched: false, validationMessage: "" },                    lastCheckedPriceDate: { value: "", touched: false, validationMessage: "" },                    hawkModel: { touched: false, validationMessage: "" },                    productId: { value: "", touched: false, validationMessage: "" },                    voucherId: { value: "", touched: false, validationMessage: "" },                    brand: { value: deal.brand || merchant, touched: false, validationMessage: "" },                    productName: { value: title, touched: false, validationMessage: "" },                    label: { value: "", touched: false, validationMessage: "" },                    retailer: { value: merchant, touched: false, validationMessage: "" },                    priceCheckError: false                 },                 failedFetchError: ""              });           }           const payload = {              type: "articleBuilderPages",              data: blocks           };           const jsonStr = JSON.stringify(payload);                      if (navigator.clipboard && navigator.clipboard.writeText) {              navigator.clipboard.writeText(jsonStr).then(() => {                 this.editorCopyBtn.innerHTML = 'Copied!';                 setTimeout(() => {                    this.editorCopyBtn.innerHTML = '\x3Csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-right: 6px;">\x3Crect x="9" y="9" width="13" height="13" rx="2" ry="2"><' + '/rect>\x3Cpath d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"><' + '/path><' + '/svg> Copy to CMS';                 }, 2000);              }).catch(err => {                 console.warn('Failed to copy text: ', err);                 alert('Failed to copy deals to clipboard. See console.');              });           } else {              // Fallback              const textArea = document.createElement("textarea");              textArea.value = jsonStr;              document.body.appendChild(textArea);              textArea.focus();              textArea.select();              try {                 document.execCommand('copy');                 this.editorCopyBtn.innerHTML = 'Copied!';                 setTimeout(() => {                    this.editorCopyBtn.innerHTML = '\x3Csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-right: 6px;">\x3Crect x="9" y="9" width="13" height="13" rx="2" ry="2"><' + '/rect>\x3Cpath d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"><' + '/path><' + '/svg> Copy to CMS';                 }, 2000);              } catch (err) {                 console.warn('Fallback: Oops, unable to copy', err);                 alert('Fallback: Failed to copy deals to clipboard.');              }              document.body.removeChild(textArea);           }        }      }      // Initialize the Widget      if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', () => new DealsFinderWidget({ rootId: 'signal-deals-finder-root', rootNode: shadowRoot, hostContainer: hostContainer }));      } else {        new DealsFinderWidget({ rootId: 'signal-deals-finder-root', rootNode: shadowRoot, hostContainer: hostContainer });      }    })();  </script></div> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/windows-operating-systems/i-spoke-to-the-microsoft-pm-rebuilding-windows-11-for-nvidia-rtx-spark-the-radical-reinvention-building-the-first-true-macbook-pro-threat</link>
                                                                            <description>
                            <![CDATA[ “Half of Santa Clara was jumping.” An exclusive interview with Microsoft on rebuilding Windows 11 from the ground up for Nvidia’s RTX Spark silicon. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">hT9VZpkvYjuDisFYQM8J85</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/Zfe8UdFvFggCuPBwkQ8ZZ4-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 07 Sep 2026 08:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Windows Operating Systems]]></category>
                                                    <category><![CDATA[Laptops]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Software]]></category>
                                                    <category><![CDATA[Operating Systems]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jason England ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/v4fSq5U4uZUEtGY2BwNuJ6-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jason brings a decade of tech and gaming journalism experience to his role as a Managing Editor of Computing at Tom&#039;s Guide. He has previously written for Laptop Mag, Tom&#039;s Hardware, Kotaku, Stuff and BBC Science Focus. In his spare time, you&#039;ll find Jason looking for good dogs to pet or thinking about eating pizza if he isn&#039;t already.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/Zfe8UdFvFggCuPBwkQ8ZZ4-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Nvidia RTX Spark]]></media:description>                                                            <media:text><![CDATA[Nvidia RTX Spark]]></media:text>
                                <media:title type="plain"><![CDATA[Nvidia RTX Spark]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/Zfe8UdFvFggCuPBwkQ8ZZ4-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>For eight grueling months leading up to the end of last year, engineers from Microsoft and Nvidia worked side by side from the silicon bootstrap level upward. And the goal? Making Windows 11 play nice with an unprecedented architectural shift: an Arm-based CPU sharing massive unified memory with a desktop-class Nvidia RTX GPU.</p><p>And then, the first <a href="https://www.tomsguide.com/computing/laptops/nvidias-rtx-spark-n1x-drops-this-october-why-apple-silicon-should-be-terrified-and-our-price-predictions">RTX Spark</a> machine finally booted. The red LED lit up, and as Microsoft's Principal Product Manager, Peter Dawoud, recalls it: “half of Santa Clara was jumping.” This was a huge undertaking, but now the real work begins: fine-tuning everything.</p><p>RTX Spark isn’t just another laptop sticker; it pushed Microsoft to fundamentally overhaul five foundational subsystems inside Windows 11 to bridge the gap between low-power Arm efficiency, top-tier AAA gaming, and local agentic AI.</p><p>I spoke to Dawoud about the software underpinning Team Green’s hardware because, as he said, “Windows kind of had to get all these subsystems right all at the same time, so that you can enjoy an RTX Spark device and take the most advantage out of it.”</p><h2 id="a-prism-emulator-overhaul">A Prism Emulator overhaul</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="oWfTLRd5NPjKy6jDQeEsq4" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/oWfTLRd5NPjKy6jDQeEsq4-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Take it from someone who has watched the many attempts to run Windows on ARM chips (and covered the Snapdragon X Elite launch): emulation has always had an Achilles’ heel when it comes to gaming: micro-stuttering and frame pacing.</p><p>“When you're playing video games, it's not just about your average FPS. 1% lows, stuttering is really critical, and your CPU actually plays a very big role in stuttering control,” Dawoud explained.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="VPJcvprGffc9FfD2cHiytJ" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/VPJcvprGffc9FfD2cHiytJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>While average frame rates look acceptable, CPU timing can get erratic when you try to emulate a game and play it at the same time, which can make fast-paced gaming feel jerky. When somebody buys an Nvidia laptop in October, the chances are likely that they will want to play games on it — it’s an RTX GPU after all.</p><p>So work needed to be done, and Microsoft has overhauled the Prism emulation layer for RTX Spark’s pipelines. By shoring up how tasks are assigned to each of the CPU’s threads, frame rates are much more stable in my testing, and the improvement over past versions is night and day.</p><h2 id="ui-polish-amp-the-agentic-future">UI polish & the agentic future</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2570px;"><p class="vanilla-image-block" style="padding-top:66.65%;"><img id="4fF35LQYkV4jpZNrPUKxZg" name="win11improvedsearchg" alt="Windows 11 Improved Search in action" src="https://cdn.mos.cms.futurecdn.net/4fF35LQYkV4jpZNrPUKxZg-1920-80.jpg" mos="" align="middle" fullscreen="" width="2570" height="1713" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>If you’re going to make what I believe could be a MacBook Pro killer, you need to make sure the UI is ready for power users as well as casual users. And the mission in Dawoud’s mind to do this is clear: “make the OS kind of get out of the way, for you to do the work that you want to do.”</p><p>Microsoft is cleaning up Windows 11 for this kind of user: native taskbar customization, customizable notifications, killing unwanted widgets, and remembering displays you connect to—to preserve specific screen layout settings.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="kANGCbHE3KTdGdR5xZVvD4" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/kANGCbHE3KTdGdR5xZVvD4-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Then we turn our attention to the “reinvent the PC” part of the RTX Spark, which comes down to local agentic AI. I saw a demo of Hermes Agent connected to a user’s Google account that acted like his personal chief of staff: setting an agenda for the day, drafting email responses in Gmail, and updating a project tracker in Google Docs. And it all happened on-device without a single bit of cloud AI.</p><p>But without guardrails, this could get scary. “Having an agent that you can't control is probably the thing you don't want,” he stated. So the answer is Microsoft Extension Containers (MXC) — isolated sandboxes for your local models to act across your desktop securely without sensitive system control leaking.</p><h2 id="killing-oem-bloatware">Killing OEM bloatware</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="mcY3VEDiPviihsNtyMMVY4" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/mcY3VEDiPviihsNtyMMVY4-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>It’s always been a dream of mine to have a laptop that doesn’t come packed with OEM-specific power management software or an antivirus scanner. While this may not fix the latter, it goes a long way toward killing the need for the former.</p><p>Dawoud emphasized the need to eliminate the clunky tug-of-war between Windows and external software. Currently, there are several ways to tweak power management across different apps, but RTX Spark uses the open-source Modern Power and Thermal Framework—letting Windows natively control all thermal and power tuning.</p><p>“Users, when they want to set the best performance, they can do it in Windows, and they'll know that the OEM's tuning for best performance has now been set,” he said. “They don't need to go to another app and be like, 'Okay, is that app saying good performance and Windows is saying good performance at the same time?'”</p><p>This also helps these laptops maintain the same performance on and off the charger.</p><h2 id="the-uma-secret">The UMA secret</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="WudXrWFBDRvTr4BfJPKW3T" name="RTX Spark" alt="RTX Spark" src="https://cdn.mos.cms.futurecdn.net/WudXrWFBDRvTr4BfJPKW3T-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>On paper, a Unified Memory Architecture (UMA) sounds great — a big pool for both the CPU and monstrous GPU to dip into at leisure, and take however much (or little) they need. But in reality, CPUs and GPUs digest memory completely differently.</p><p>CPUs crave small memory chunks (4-kilobyte pages) to distribute tasks across their many cores. They take a pizza, pull all the ingredients off of it, and share them around. GPUs, however, take that entire pizza, fold it in half, and eat it taco-style. They need massive blocks (up to 2-megabyte pages) to plow through parallel 3D rendering or AI tasks.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="rVysSsvNTgqPQr98uY9uY4" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/rVysSsvNTgqPQr98uY9uY4-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>“RTX Spark has a very powerful GPU, so making sure that we give it as much memory as possible when it needs it, but also give it the right page sizes, is really critical,” Dawoud commented.</p><p>So Microsoft's fix is to add variable page sizing directly to the memory manager. This is a bit complex, but it means Windows can dynamically read the pages of data flowing through and send them to the right places—the 2MB to the GPU and 4KB to the CPU simultaneously.</p><p>“Optimizing that is the way you can weaponize the entire stack to get the most performance out of it,” He emphasized.</p><h2 id="taming-nvidia-s-custom-cpu-cores">Taming Nvidia’s custom CPU cores</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="NC4Vevw7coKXAFTkqRDdYP" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/NC4Vevw7coKXAFTkqRDdYP-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Unlike Qualcomm’s standardized Snapdragon X chips, Nvidia’s 18- and 20-core Grace CPUs use a proprietary cluster arrangement of performance and efficiency cores to maximize speed while delivering all-day battery life.</p><p>Dawoud explained that Nvidia's core configuration is entirely unique, and “previous Arm cores that have run on Windows are not like that.”</p><p>Now, historically, supporting an exotic CPU layout required rewriting the entire kernel underpinning Windows — a risky move for sure. But Windows 11 has a new profiling stack that can tune itself dynamically on the fly, meaning the scheduler that throws tasks everywhere can adapt to Nvidia’s unique chip here without breaking legacy compatibility.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-e4EgZW"></div>                            </div>                            <script src="https://kwizly.com/embed/e4EgZW.js" async></script><h2 id="the-pc-has-finally-grown-up">The PC has finally grown up</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="GVxdiZGjWNreCjxARYdq74" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/GVxdiZGjWNreCjxARYdq74-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The 14-year partnership between Microsoft and Nvidia finally feels like it is paying off. Dawoud pointed out that this wasn't a sudden alliance — the journey started over a decade ago with the Tegra-powered Surface RT.</p><p>But this specific launch represents a fundamental shift in how the two giants collaborate. By letting Microsoft engineers rebuild the OS from the silicon bootstrap level upward, RTX Spark gave Windows the foundation it needed to finally make Arm-based PC gaming a reality.</p><p>Microsoft and Nvidia haven’t just bolted a GPU onto an Arm processor; they’ve rewritten the rulebook beneath the surface. This is a huge moment for both companies, and if Windows on Arm succeeds where previous attempts faltered, it will all be traced back to that one moment Microsoft spent eight agonizing months building the foundation to make it feel effortless.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/laptops/macbook-pro-14-inch-vs-asus-proart-p14-nvidia-rtx-spark">I held the Asus ProArt P14 next to my MacBook Pro 14 — and Apple should be genuinely terrified of Nvidia’s RTX Spark</a></li><li><a href="https://www.tomsguide.com/gaming/handheld-gaming/i-tested-acers-wild-flip-and-swivel-handheld-why-project-dualplay-mini-is-the-ultimate-netbook-love-letter">I tested Acer's wild Project DualPlay Mini — and it's a gaming handheld and laptop in one gadget</a></li><li><a href="https://www.tomsguide.com/gaming/pc-gaming/i-tested-the-real-dlss-5-forget-the-leaked-mods-its-not-an-ai-filter-this-is-nvidias-photorealistic-game-changer">I wanted to hate Nvidia’s DLSS 5 ‘AI filter’ — but the real DLSS 5 is photorealistic black magic</a></li></ul><div class="vizualizer-embed"><div class="tg-df-widget-host" data-widget-config="?search=laptops&min_discount_ratio=0.95&widget_title=Top+Deals+Handpicked+by+Our+Editors&widget_subtitle=Discover+the+best+discounts+currently+available%2C+curated+daily+by+the+Tom%27s+Guide+Savings+Squad.&bg_color=transparent" data-vizualizer-embed="true"></div>    <script>    /**     * Tom's Guide Deals Finder - Vanilla JS Encapsulated Engine     */    (function() {      // --- Freyr Analytics Adapter ---      function initAnalytics() {        window.dataLayer = window.dataLayer || [];        window.googletag = window.googletag || {};        window.googletag.cmd = window.googletag.cmd || [];        window.hawk = window.hawk || { analytics: { freyr: [] } };        window.hawk.analytics = window.hawk.analytics || { freyr: [] };        window.hawk.analytics.freyr = window.hawk.analytics.freyr || [];        window.freyr = window.freyr || { cmd: [] };        const scriptSrc = 'https://freyr.futurecdn.net/freyr.js';        const hostname = typeof window !== 'undefined' ? window.location.hostname : '';        const isTestEnv = typeof window.navigator !== 'undefined' && (window.navigator.webdriver || window.navigator.userAgent.includes('Headless'));        const shouldSendRealAnalytics = !isTestEnv && hostname && hostname !== 'localhost' && hostname !== '127.0.0.1' && !hostname.includes('run.app');        if (shouldSendRealAnalytics && !document.querySelector(`script[src="${scriptSrc}"]`)) {          const script = document.createElement('script');          script.src = scriptSrc;          script.async = true;          document.head.appendChild(script);        }      }      function storeEventForDebug(name, data) {        if (!window.hawk || !window.hawk.analytics || !window.hawk.analytics.freyr) return;        window.hawk.analytics.freyr.push({ name, data });        try {          if (typeof window !== 'undefined' && window.localStorage) {            window.localStorage.setItem("hawk", JSON.stringify(window.hawk));          }        } catch (e) {          // Ignore storage issues        }        try {          window.dispatchEvent(new CustomEvent("hawk-analytics-update"));        } catch (e) {}      }      function sendToFreyr(eventName, data) {        if (typeof window === 'undefined') return;        window.freyr = window.freyr || { cmd: [] };        window.freyr.cmd.push(() => {          if (window.freyr && window.freyr.pushAndUpdate) {            window.freyr.pushAndUpdate(eventName, data);          }        });      }      function sendEvent(event, skip = false) {        try {          storeEventForDebug(event.name, event.data);          if (!skip) {            sendToFreyr(event.name, event.data);          }        } catch (e) {          // Ensure tracking errors don't surface to the user        }      }      function getCookie(name) {        try {          const match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));          return match ? match[2] : null;        } catch (e) {          return null;        }      }      function normalizeCurrency(symbol) {        const map = {          '£': 'GBP',          '$': 'USD',          'A$': 'AUD',          'CA$': 'CAD',          '€': 'EUR'        };        return map[symbol] || symbol;      }      function trackElementInteraction(props) {        sendEvent({          name: 'elementInteraction',          data: {            element: {              action: props.action || "click",              id: props.id || undefined,              class: props.class || undefined,              name: props.name || undefined,              text: props.text || undefined,              label: props.label || undefined,              container: props.container || undefined,              url: props.url || undefined,              articleId: props.articleId || undefined            }          }        });      }      function generateRevenueId(url, productName, merchantName, modelId) {        const str = `${window.location.href}|${productName}|${merchantName}|${modelId || ''}|${new Date().toDateString()}|tomsguide`;        let hash = 0;        for (let i = 0; i < str.length; i++) {          const char = str.charCodeAt(i);          hash = ((hash << 5) - hash) + char;          hash = hash & hash;        }        let numericStr = Math.abs(hash).toString();        while (numericStr.length < 19) {          numericStr += Math.floor(Math.random() * 10).toString();        }        return numericStr.substring(0, 19);      }      function rewriteAffiliateLink(url, territory, revenueId) {        if (!url) return url;        const t = (territory || 'gb').toLowerCase();        return url.replace(/hawk-custom-tracking/g, `tomsguide-${t}-${revenueId}`);      }      function trackHawkEvent(params) {        const { clickType, widgetId, productCategoryName, product, productsArray, zeroBasedProductIndexOrNull, totalDealsOrProducts, areaClicked, merchant, revenueId, isoCurrencyCode, queryName, widgetTypeName } = params;        const data = {          event: "hawkEvent",          category: "Affiliates",          affiliate: {            action: {              type: clickType,              id: widgetId,              event: clickType === "appeared" ? "viewed" : "Click from",              timestamp: Date.now()            },            component: {              flag: "Editor",              product: productCategoryName || "deals",              category: `Signal Deal Finder ${widgetTypeName || "Carousel"} widget`,              type: clickType === "appeared" ? "review" : "signal product",              label: queryName || (product ? (product.name || "") : ""),              index: zeroBasedProductIndexOrNull === null || zeroBasedProductIndexOrNull === undefined ? -1 : zeroBasedProductIndexOrNull,              linkCount: totalDealsOrProducts || 0,              blockLayout: "",              areaClicked: areaClicked || ""            }          },          products: productsArray || (product && merchant ? [            {              product: {                primary: {                  id: product.id || product.matchId || null,                  name: product.name,                  type: "deal",                  price: product.price,                  previousPrice: product.previousPrice || null,                  currency: isoCurrencyCode || "USD",                  preorder: false,                  labels: [],                  link: product.link,                  originalLink: product.originalLink || null,                  revenueId: revenueId || null,                  startTime: null,                  endTime: null,                  voucherCode: null,                  voucherAudience: null,                  voucherPercentageSaving: null,                  voucherMoneySaving: null,                  voucherType: null,                  offerExclusive: false,                  offerScope: null,                  globalId: product.globalId || null,                  inStock: product.inStock !== false,                  contractProvider: null,                  contractMinutes: null,                  contractTexts: null,                  contractData: null,                  contractLength: null,                  contractMonthlyPrice: null,                  contractCurrency: isoCurrencyCode || "USD"                }              },              merchant: {                id: merchant.id || null,                name: merchant.name,                url: merchant.url || null,                network: merchant.network || null              },              model: {                id: product.modelId || null,                brand: product.brand || null,                name: product.name,                parent: product.parent || null              }            }          ] : []),          reviews: [],          _clear: true,          "gtm.uniqueEventId": Date.now() % 10000        };        sendEvent({ name: 'hawkEvent', data });      }      function trackDealClick(params) {        trackHawkEvent({ ...params, clickType: "retailer", areaClicked: "Signal Product Card" });      }      function trackViewSimilarClick(params) {        trackHawkEvent({ ...params, clickType: "retailer", areaClicked: "Signal Product Card View Similar" });      }      function trackPriceComparisonClick(params) {        trackHawkEvent({ ...params, clickType: "retailer", areaClicked: "Signal Price Comparison" });      }      function trackReviewClick(params) {        trackHawkEvent({ ...params, clickType: "review", areaClicked: "Signal Product Card Review Link" });      }      function trackShare(params) {        trackHawkEvent({ ...params, clickType: "share", areaClicked: "Signal Product Card Share" });      }      function trackDealsAppeared(widgetId, deals, revenueId, currency, queryName, widgetTypeName) {         if (!deals || deals.length === 0) return;                  const productsArray = deals.slice(0, 50).map((deal) => {            let voucherPct = null;            let rawPrice = parseFloat(deal.rawPrice) || parseFloat(deal.price) || null;            let rawMsrp = parseFloat(deal.rawMsrp) || parseFloat(deal.msrp) || null;            if (rawMsrp > rawPrice && rawPrice > 0) {              voucherPct = Math.round((1 - (rawPrice / rawMsrp)) * 100);            }            let numId = null;            if (deal.externalProductId && !isNaN(parseInt(deal.externalProductId))) {              numId = parseInt(deal.externalProductId);            } else if (deal.id && !isNaN(parseInt(deal.id))) {              numId = parseInt(deal.id);            } else {              numId = deal.matchId || null;            }            return {              product: {                primary: {                  id: numId,                  name: deal.productName || deal.title || "",                  type: "deal",                  price: rawPrice,                  previousPrice: rawMsrp,                  currency: currency || 'USD',                  preorder: false,                  labels: deal.modelBrand || deal.brand ? [                     { type: "brand", value: deal.modelBrand || deal.brand }                  ] : [],                  link: deal.url,                  originalLink: deal.url,                  revenueId: revenueId || null,                  startTime: null,                  endTime: null,                  voucherCode: null,                  voucherAudience: null,                  voucherPercentageSaving: voucherPct,                  voucherMoneySaving: null,                  voucherType: null,                  offerExclusive: false,                  offerScope: null,                  globalId: deal.productKey || null,                  inStock: deal.inStock !== false,                  contractProvider: null,                  contractMinutes: null,                  contractTexts: null,                  contractData: null,                  contractLength: null,                  contractMonthlyPrice: null,                  contractCurrency: currency || 'USD'                }              },              merchant: {                id: deal.merchantId ? parseInt(deal.merchantId) : null,                name: deal.merchant || "Retailer",                url: deal.merchantUrl || null,                network: deal.merchantNetwork || null              },              model: {                id: deal.modelId ? parseInt(deal.modelId) : null,                brand: deal.modelBrand || deal.brand || null,                name: deal.productName || deal.title || "",                parent: deal.modelParent || null              }            };         });                  trackHawkEvent({             clickType: "appeared",             widgetId: widgetId,             productCategoryName: "deals",             zeroBasedProductIndexOrNull: null,             totalDealsOrProducts: deals.length,             productsArray: productsArray,             queryName: queryName,             widgetTypeName: widgetTypeName         });      }      // 1. Setup Shadow DOM Sandbox      const currentScript = document.currentScript;      let hostContainer = null;      let template = null;            if (currentScript) {        let prev = currentScript.previousElementSibling;        while (prev) {          if (prev.tagName === 'TEMPLATE' && prev.classList.contains('tg-df-widget-template')) {            template = prev;          } else if (prev.tagName === 'DIV' && prev.classList.contains('tg-df-widget-host') && !prev.hasAttribute('data-initialized')) {            hostContainer = prev;            break;          }          prev = prev.previousElementSibling;        }      }            // Fallbacks in case script is deferred      if (!hostContainer) {        const hosts = document.querySelectorAll('.tg-df-widget-host:not([data-initialized])');        if (hosts.length > 0) hostContainer = hosts[0];      }            // Safely embedded template for CMS environments      const rawTemplate = `  \x3Cstyle>    /* --- Shadow DOM Base Reset --- */    *, *::before, *::after {      box-sizing: border-box;    }    img, picture, svg, video {      max-width: 100%;      height: auto;      display: block;    }    /*       1. Scoped CSS for Tom's Guide Deals Widget       All classes are prefixed with \`tg-df-\` to prevent CMS style leakage.    */    .tg-df-container {      container-type: inline-size;      container-name: tg-df;      --tg-df-blue: #1F69FF;      --tg-df-blue-hover: #004d8c;      --tg-df-text: #222222;      --tg-df-text-muted: #555555;      --tg-df-bg: #ffffff;      --tg-df-bg-secondary: #f4f4f4;      --tg-df-border: #e2e8f0;      font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;      color: var(--tg-df-text);      background-color: transparent;       width: 100%;      max-width: 1200px;      margin: 0 auto;      padding-bottom: 24px;    }    .tg-df-container *, .tg-df-container *::before, .tg-df-container *::after {      margin: 0;      padding: 0;      box-sizing: border-box;    }    .tg-df-container img {      border: none;      margin: 0;      padding: 0;    }    .tg-df-container a {      text-decoration: none;      color: inherit;    }    /*       2. Search & Filter Bar    */    .tg-df-controls {      display: flex;      flex-direction: column;      align-items: center;      gap: 20px;      margin-bottom: 32px;      width: 100%;    }    .tg-df-top-bar {      display: flex;      width: 100%;      max-width: 760px;      gap: 12px;      align-items: center;    }    .tg-df-search-wrapper {      position: relative;      flex: 1;      width: 100%;      box-shadow: 0 8px 24px rgba(0,0,0,0.06);      border-radius: 40px;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      z-index: 100;    }    .tg-df-autocomplete-dropdown {      position: absolute;      top: calc(100% + 4px);      left: 0;      right: 0;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 12px;      box-shadow: 0 8px 32px rgba(0,0,0,0.12);      max-height: 300px;      overflow-y: auto;      z-index: 200;      display: none;    }    .tg-df-autocomplete-dropdown.active {      display: block;    }    .tg-df-autocomplete-item {      padding: 12px 24px;      cursor: pointer;      font-size: 14px;      color: var(--tg-df-text);      transition: background 0.1s ease;    }    .tg-df-autocomplete-item:hover {      background: var(--tg-df-bg-secondary);    }    .tg-df-search-input {      width: 100%;      padding: 16px 64px 16px 24px;      font-size: 16px;      border: 2px solid transparent;      border-radius: 40px;      outline: none;      transition: border-color 0.2s ease, box-shadow 0.2s ease;      color: var(--tg-df-text);      background: transparent;    }    .tg-df-search-input:focus {      border-color: transparent;      box-shadow: 0 0 0 3px rgba(0, 108, 196, 0.15);    }    .tg-df-search-input::placeholder {      color: #999999;    }        .tg-df-search-btn {      position: absolute;      right: 8px;      top: 50%;      transform: translateY(-50%);      width: 40px;      height: 40px;      border-radius: 50%;      background: #222;      border: none;      display: flex;      align-items: center;      justify-content: center;      cursor: pointer;      transition: background 0.2s ease;    }        .tg-df-search-btn:hover {      background: #000;    }    .tg-df-search-icon {      width: 16px;      height: 16px;      fill: #fff;    }    .tg-df-settings-wrapper {      position: relative;    }        .tg-df-settings-btn {      width: 48px;      height: 48px;      border-radius: 50%;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      box-shadow: 0 4px 12px rgba(0,0,0,0.04);      display: flex;      align-items: center;      justify-content: center;      cursor: pointer;      transition: all 0.2s ease;      color: var(--tg-df-text-muted);      flex-shrink: 0;    }    .tg-df-settings-btn:hover {      background: var(--tg-df-bg-secondary);      border-color: #0000ff;      color: var(--tg-df-text);    }    .tg-df-settings-btn svg {      width: 24px;      height: 24px;      fill: currentColor;    }    .tg-df-settings-dropdown {      position: absolute;      top: calc(100% + 8px);      right: 0;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 12px;      box-shadow: 0 8px 32px rgba(0,0,0,0.12);      width: 280px;      padding: 20px;      display: none;      z-index: 100;      flex-direction: column;      gap: 20px;    }    .tg-df-settings-dropdown.active {      display: flex;    }        .tg-df-settings-dropdown-backdrop {      display: none;      position: fixed;      inset: 0;      z-index: 99;    }        .tg-df-settings-dropdown-backdrop.active {      display: block;    }    .tg-df-setting-item {      display: flex;      flex-direction: column;      gap: 10px;    }    .tg-df-setting-label {      font-size: 11px;      font-weight: 700;      color: var(--tg-df-text-muted);      text-transform: uppercase;      letter-spacing: 0.5px;    }        .tg-df-region-select {        padding: 10px 12px;        border-radius: 8px;        border: 1px solid var(--tg-df-border);        font-size: 15px;        outline: none;        background: var(--tg-df-bg-secondary);        color: var(--tg-df-text);        cursor: pointer;        width: 100%;    }    .tg-df-toggle {        position: relative;        display: inline-block;        width: 44px;        height: 24px;        flex-shrink: 0;    }    .tg-df-toggle input {        opacity: 0;        width: 0;        height: 0;    }    .tg-df-slider {        position: absolute;        cursor: pointer;        top: 0; left: 0; right: 0; bottom: 0;        background-color: #ccc;        transition: .2s;        border-radius: 24px;    }    .tg-df-slider:before {        position: absolute;        content: "";        height: 18px;        width: 18px;        left: 3px;        bottom: 3px;        background-color: white;        transition: .2s;        border-radius: 50%;    }    .tg-df-toggle input:checked + .tg-df-slider {        background-color: #1F69FF;    }    .tg-df-toggle input:checked + .tg-df-slider:before {        transform: translateX(20px);    }    .tg-df-dl-row {        flex-direction: row;        align-items: center;        justify-content: space-between;    }    .tg-df-dl-row-text {        font-size: 14px;        font-weight: 600;        color: var(--tg-df-text);    }    .tg-df-dl-row-subtext {        font-size: 12px;        font-weight: 400;        line-height: 1.3;        color: var(--tg-df-text-muted);        margin-top: 4px;        display: block;    }    .tg-df-filters {      display: flex;      gap: 12px;      justify-content: center;      flex-wrap: wrap;    }    .tg-df-sort-wrapper {      position: relative;      display: flex;      align-items: center;    }        .tg-df-sort-icon {      position: absolute;      left: 14px;      width: 14px;      height: 14px;      fill: var(--tg-df-text-muted);      pointer-events: none;    }    .tg-df-sort-select, .tg-df-filter-select {      padding: 10px 36px 10px 38px;      font-size: 14px;      border: 1px solid var(--tg-df-border);      border-radius: 100px;      outline: none;      appearance: none;      background-color: var(--tg-df-bg-secondary);      background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 12 12'%3E%3Cpath fill='%23555555' d='M6 8L1 3h10z'/%3E%3C/svg%3E");      background-repeat: no-repeat;      background-position: right 14px center;      color: var(--tg-df-text);      cursor: pointer;      font-weight: 500;      transition: all 0.2s ease;    }        .tg-df-price-input::-webkit-outer-spin-button,    .tg-df-price-input::-webkit-inner-spin-button {      -webkit-appearance: none;      margin: 0;    }    .tg-df-price-input {      -moz-appearance: textfield;    }    .tg-df-sort-select:hover, .tg-df-filter-select:hover {      background-color: #e2e8f0;    }    .tg-df-multiselect-container {      position: relative;    }        .tg-df-multiselect-trigger {      display: block;      background: #fff;      user-select: none;      width: 100%;      overflow: hidden;      white-space: nowrap;      text-overflow: ellipsis;    }        .tg-df-multiselect-dropdown {      display: none;      position: absolute;      top: calc(100% + 4px);      left: 0;      width: 100%;      min-width: 220px;      max-height: 300px;      overflow-y: auto;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 8px;      box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);      z-index: 100;      padding: 8px 0;    }    .tg-df-multiselect-dropdown.active {      display: block;    }    .tg-df-ms-option {      padding: 8px 16px;      display: flex;      align-items: center;      gap: 8px;      cursor: pointer;      font-size: 14px;    }    .tg-df-ms-option:hover {      background-color: var(--tg-df-bg-secondary);    }        .tg-df-ms-option input {      cursor: pointer;      accent-color: #1f69ff;    }    .tg-df-sort-select:focus, .tg-df-filter-select:focus {      border-color: #0000ff;      box-shadow: 0 0 0 3px rgba(0, 0, 255, 0.2);      background-color: var(--tg-df-bg);    }    /*       3. Deal Grid Layout    */    .tg-df-grid.tg-df-grid-auto {      padding-top: 24px;    }    .tg-df-grid, .tg-df-grid.layout-grid {      display: grid;      grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));      gap: 10px;    }    .tg-df-grid.layout-row {      grid-template-columns: 1fr;      gap: 16px;    }        .tg-df-grid.layout-row .tg-df-card {      flex-direction: row;      align-items: stretch;      height: auto;      box-shadow: none;      border-bottom: 1px solid var(--tg-df-border);    }    .tg-df-grid.layout-row .tg-df-card:hover {      box-shadow: none;    }    .tg-df-grid.layout-row .tg-df-card-image-box {      width: 140px;      min-width: 140px;      aspect-ratio: 3/4;      border-right: none;      padding: 16px 16px 16px 32px;    }    .tg-df-grid.layout-row .tg-df-card-body {      padding: 16px;      justify-content: space-between;    }    .tg-df-grid.layout-row .tg-df-card-title {      font-size: 15px;      margin-bottom: 16px;    }    .tg-df-grid.layout-row .tg-df-card-stars { margin-bottom: 8px; }    .tg-df-grid.layout-row .tg-df-card-footer {      flex-direction: column;      align-items: flex-start;      gap: 0;    }    .tg-df-grid.layout-row .tg-df-card-merchant-pill {      margin-bottom: 4px;    }    .tg-df-grid.layout-row .tg-df-card-price-group {      margin-bottom: 8px;    }    .tg-df-grid.layout-row .tg-df-price-group {      width: auto;    }    .tg-df-grid.layout-row .tg-df-card-cta {      width: 100%;      max-width: 200px;      padding: 10px 24px;      font-size: 13px;      flex-shrink: 0;      text-align: center;      justify-content: center;    }    /*       4. Deal Card Design    */    .tg-df-card {      position: relative;      display: flex;      flex-direction: column;      background-color: #ffffff;      border-radius: 0;      overflow: hidden;      transition: transform 0.2s ease, box-shadow 0.2s ease;      text-decoration: none;      color: inherit;      height: 100%;      box-shadow: 0 0 16px rgba(0, 0, 0, 0.08);      border: 1px solid var(--tg-df-border);    }    .tg-df-card:hover {      box-shadow: 0 0 24px rgba(0, 0, 0, 0.12);    }    .tg-df-card-image-box {      width: 100%;      aspect-ratio: 3/4;      background-color: #f8f8f8;      display: flex;      align-items: center;      justify-content: center;      position: relative;      overflow: hidden;      padding: 32px;      flex: 0 0 auto;    }    .tg-df-card-image {      max-width: 100%;      max-height: 100%;      width: auto;      height: auto;      object-fit: contain;      mix-blend-mode: multiply; /* Helps white background images blend into secondary bg */      transition: transform 0.3s ease;    }    .tg-df-card:hover .tg-df-card-image {      transform: scale(1.05); /* Zoom in on hover */    }    .tg-df-card-discount-badge {      position: absolute;      top: 12px;      left: 12px;      background: #dc2626; /* Red */      color: #ffffff;      padding: 6px 8px;      font-size: 11px;      font-weight: 500;      text-transform: uppercase;      letter-spacing: 0.5px;      border-radius: 0;      z-index: 10;    }        .tg-df-card-merchant-pill {      display: block;      padding: 0;      font-size: 11px;      font-weight: 600;      text-transform: uppercase;      letter-spacing: 0.5px;      border-radius: 0;      color: var(--tg-df-text-muted);      margin-bottom: 8px;      white-space: nowrap;      overflow: hidden;      text-overflow: ellipsis;    }    .tg-df-card-body {      padding: 16px;      display: flex;      flex-direction: column;      flex-grow: 1;      min-width: 0;    }    .tg-df-card-badges {      display: flex;      flex-wrap: wrap;      gap: 6px;      margin-bottom: 8px;    }    .tg-df-tag {      display: inline-flex;      align-items: center;      padding: 4px 6px;      font-size: 11px;      font-weight: 700;      text-transform: uppercase;      border-radius: 4px;      gap: 4px;    }    .tg-df-tag-prime {      background-color: #00A8E1;      color: #fff;    }    .tg-df-tag-coupons {      background-color: #f1f5f9;      color: #334155;      border: 1px solid #cbd5e1;      cursor: pointer;      transition: background-color 0.2s;    }    .tg-df-tag-coupons:hover {      background-color: #e2e8f0;    }        .tg-df-tag-outline {      background-color: #f1f5f9;      color: #334155;      border: 1px solid #cbd5e1;      cursor: pointer;      transition: background-color 0.2s;    }    .tg-df-tag-outline:hover {      background-color: #e2e8f0;    }        @keyframes tg-df-spin {      0% { transform: rotate(0deg); }      100% { transform: rotate(360deg); }    }    .tg-df-coupon-spinner {      border: 2px solid #e2e8f0;      border-top: 2px solid #3b82f6;      border-radius: 50%;      width: 14px;      height: 14px;      animation: tg-df-spin 1s linear infinite;      margin: 4px 8px;      display: inline-block;    }        /* Vouchers Modal */    .tg-df-modal-backdrop {      position: fixed;      top: 0; left: 0; right: 0; bottom: 0;      background: rgba(0,0,0,0.5);      z-index: 10000;      display: flex;      align-items: center;      justify-content: center;      opacity: 0;      pointer-events: none;      transition: opacity 0.3s;    }    .tg-df-modal-backdrop.active {      opacity: 1;      pointer-events: auto;    }    .tg-df-modal {      background: #fff;      border-radius: 12px;      width: 90%;      max-width: 400px;      max-height: 80vh;      display: flex;      flex-direction: column;      box-shadow: 0 10px 40px rgba(0,0,0,0.2);      transform: translateY(20px);      transition: transform 0.3s;    }    .tg-df-modal-backdrop.active .tg-df-modal {      transform: translateY(0);    }    .tg-df-modal-header {      padding: 16px;      border-bottom: 1px solid #e2e8f0;      display: flex;      align-items: center;      justify-content: space-between;    }    .tg-df-modal-title {      font-size: 16px;      font-weight: 600;      margin: 0;    }    .tg-df-modal-close {      background: none;      border: none;      cursor: pointer;      padding: 4px;      color: #64748b;    }    .tg-df-modal-body {      padding: 16px;      overflow-y: auto;    }    .tg-df-voucher-item {      padding: 12px;      border: 1px dashed #cbd5e1;      border-radius: 8px;      margin-bottom: 10px;      background: #f8fafc;      display: flex;      align-items: center;      gap: 12px;      text-decoration: none;      color: inherit;      transition: background-color 0.2s, border-color 0.2s;    }    .tg-df-voucher-item:hover {      background: #f1f5f9;      border-color: #94a3b8;    }    .tg-df-voucher-item:last-child {      margin-bottom: 0;    }    .tg-df-voucher-logo {      width: 48px;      height: 48px;      object-fit: contain;      border-radius: 4px;      background: #fff;      border: 1px solid #e2e8f0;      flex-shrink: 0;    }    .tg-df-voucher-content {      flex: 1;      min-width: 0;    }    .tg-df-voucher-title {      font-size: 14px;      font-weight: 600;      margin: 0 0 4px 0;      line-height: 1.3;      color: #0f172a;    }    .tg-df-voucher-expiry {      font-size: 12px;      color: #64748b;      display: flex;      align-items: center;      gap: 4px;      margin-top: 6px;    }    .tg-df-voucher-code {      display: inline-flex;      align-items: center;      background: #f1f5f9;      border: 1px dashed #cbd5e1;      padding: 6px 10px;      font-family: monospace;      font-weight: 700;      font-size: 14px;      color: #0f172a;      border-radius: 4px;      margin-top: 8px;      cursor: pointer;      transition: all 0.2s ease;    }    .tg-df-voucher-code:hover {      background: #e2e8f0;      border-color: #94a3b8;    }    .tg-df-voucher-code.copied {      background: #ecfdf5;      border-color: #10b981;      color: #10b981;    }    .tg-df-voucher-cta {      display: inline-block;      margin-top: 8px;      font-size: 13px;      font-weight: 600;      color: #2563eb;      text-decoration: none;    }    .tg-df-card-title {      font-size: 15px;      font-weight: 400;      line-height: 1.4;      margin: 0 0 12px 0;      color: var(--tg-df-text);      display: -webkit-box;      -webkit-line-clamp: 2;      -webkit-box-orient: vertical;      overflow: hidden;    }    .tg-df-card-footer {      margin-top: auto;      display: flex;      flex-direction: column;      width: 100%;    }    .tg-df-card-price-group {      display: flex;      flex-direction: row;      align-items: center;      gap: 8px;      margin-bottom: 12px;    }    .tg-df-card-price {      font-size: 16px;      font-weight: 700;      color: #dc2626; /* Red price */      line-height: 1;    }        .tg-df-card-msrp {      font-size: 13px;      color: var(--tg-df-text-muted);      text-decoration: line-through;    }    .tg-df-container .tg-df-card-cta {      display: flex;      align-items: center;      justify-content: center;      width: 100%;      box-sizing: border-box;      background-color: #1f69ff;      color: #ffffff;      font-size: 12px;      font-weight: 700;      text-transform: uppercase;      letter-spacing: 0.5px;      padding: 12px 16px;      border-radius: 0;      border: none;      cursor: pointer;      transition: background-color 0.2s ease;    }    .tg-df-card:hover .tg-df-card-cta,    .tg-df-card-cta:hover {      background-color: #1555cc;    }    .tg-df-container .tg-df-card-cta.tg-df-cta-savings-squad {      background-color: #3c8d0d;    }    .tg-df-card:hover .tg-df-card-cta.tg-df-cta-savings-squad,    .tg-df-card-cta.tg-df-cta-savings-squad:hover {      background-color: #2b6509;    }    /*       5. State & Skeleton Styles    */    .tg-df-message {      grid-column: 1 / -1;      text-align: center;      padding: 48px 24px;      color: var(--tg-df-text-muted);      font-size: 16px;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 8px;    }    @keyframes tg-df-shimmer {      0% { background-position: -200% 0; }      100% { background-position: 200% 0; }    }    .tg-df-skeleton {      background: linear-gradient(90deg, var(--tg-df-bg-secondary) 25%, #e2e8f0 50%, var(--tg-df-bg-secondary) 75%);      background-size: 200% 100%;      animation: tg-df-shimmer 1.5s infinite;      border-radius: 4px;    }    .tg-df-skeleton-img {      width: 100%;      height: 100%;      position: absolute;      top: 0; left: 0;    }        .tg-df-skeleton-text {      height: 16px;      margin-bottom: 8px;      width: 100%;    }    .tg-df-skeleton-text.short { width: 40%; }    .tg-df-skeleton-text.title { height: 20px; margin-bottom: 16px; }    /* Editor Floating Bar & Elements */    .tg-df-editor-bar {      position: sticky;      top: 0;      z-index: 1000;      background: #111827;      color: #fff;      padding: 12px 16px;      border-radius: 8px;      margin-bottom: 16px;      display: flex;      align-items: center;      justify-content: space-between;      box-shadow: 0 4px 12px rgba(0,0,0,0.15);    }    .tg-df-editor-bar-text {      font-weight: 600;      font-size: 14px;    }    .tg-df-editor-copy-btn {      background: #10b981;      color: #fff;      padding: 6px 16px;      border: none;      border-radius: 4px;      font-weight: 600;      cursor: pointer;      display: flex;      align-items: center;      font-size: 13px;    }    .tg-df-editor-copy-btn:hover { background: #059669; }        .tg-df-deal-checkbox {      position: absolute;      top: 12px;      right: 12px;      z-index: 10;      width: 20px;      height: 20px;      cursor: pointer;      pointer-events: auto;    }    /*       6. Mobile List View (Stacks into a cleaner horizontal row/list)    */    @container tg-df (max-width: 599px) {      .tg-df-controls {        padding: 0 16px;      }            .tg-df-top-bar {        width: 100%;      }            .tg-df-settings-dropdown {        position: fixed;        top: auto;        bottom: 0;        left: 0;        right: 0;        width: 100%;        border-radius: 20px 20px 0 0;        padding: 24px;        box-shadow: 0 -8px 32px rgba(0,0,0,0.15);        z-index: 1000;        border: none;        border-top: 1px solid var(--tg-df-border);      }            .tg-df-settings-dropdown-backdrop.active {        background: rgba(0,0,0,0.4);      }            .tg-df-search-wrapper {        box-shadow: 0 0 16px rgba(0,0,0,0.08);      }            .tg-df-filters {        width: calc(100% + 32px);        margin: 0 -16px;        padding: 0 16px 4px 16px;        display: flex;        justify-content: flex-start;        gap: 8px;        flex-wrap: nowrap;        overflow-x: auto;        -webkit-overflow-scrolling: touch;        scrollbar-width: none;      }      .tg-df-filters::after {        content: "";        display: block;        flex: 0 0 8px;      }      .tg-df-filters::-webkit-scrollbar {        display: none;      }            .tg-df-sort-wrapper {        flex: 0 0 max(42%, 130px);        min-width: 0;      }      .tg-df-sort-wrapper.tg-df-price-range-wrapper {        flex: 0 0 auto;        min-width: max-content;      }            .tg-df-sort-select, .tg-df-filter-select {        width: 100%;        text-align: left;        padding: 10px 24px 10px 32px;        background-position: right 8px center;        text-overflow: ellipsis;        white-space: nowrap;        overflow: hidden;      }      .tg-df-sort-icon {        left: 10px;      }      .tg-df-grid:not(.layout-grid):not(.layout-row),      .tg-df-grid.layout-row {        grid-template-columns: 1fr;        gap: 16px;      }            .tg-df-grid.tg-df-grid-auto {        padding-top: 24px;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card,      .tg-df-grid.layout-row .tg-df-card {        flex-direction: row;        align-items: stretch;        height: auto;        box-shadow: none; /* simple line on mobile if preferred, or keep */        border-bottom: 1px solid var(--tg-df-border);      }      .tg-df-grid.tg-df-grid-auto .tg-df-card:hover,      .tg-df-grid.layout-row .tg-df-card:hover {        box-shadow: none;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card-image-box,      .tg-df-grid.layout-row .tg-df-card-image-box {        width: 120px;        min-width: 120px;        aspect-ratio: 3/4;        border-right: none;        padding: 12px;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card-body,      .tg-df-grid.layout-row .tg-df-card-body {        padding: 12px;        justify-content: space-between;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card-title,      .tg-df-grid.layout-row .tg-df-card-title {        font-size: 14px;        margin-bottom: 12px;        -webkit-line-clamp: 3;      }      /* Single column mobile grid override */      .tg-df-grid.layout-grid {        grid-template-columns: 1fr;        gap: 16px;      }      .tg-df-grid.layout-grid .tg-df-card-image-box {        padding: 12px;      }      .tg-df-grid.layout-grid .tg-df-card-body {        padding: 10px;      }      .tg-df-grid.layout-grid .tg-df-card-title {        font-size: 13px;        -webkit-line-clamp: 3;        margin-bottom: 8px;      }      .tg-df-grid.layout-grid .tg-df-card-price {        font-size: 14px;      }            .tg-df-card-footer {        flex-direction: column;        align-items: stretch;        gap: 0;        width: 100%;        min-width: 0;      }      .tg-df-card-merchant-pill {        margin-bottom: 4px;      }      .tg-df-card-price-group {        flex: 1 1 auto;        margin-bottom: 8px;      }      .tg-df-card-price {        font-size: 16px;      }      .tg-df-card-msrp {        display: block;       }      .tg-df-grid.layout-row .tg-df-card-cta,      .tg-df-container .tg-df-card-cta {        width: 100%;        max-width: none;        min-width: 0;        box-sizing: border-box;        padding: 8px 16px;        font-size: 12px;        flex: 0 0 auto;        text-align: center;        white-space: normal;        line-height: 1.2;      }    }    .tg-df-container.is-carousel {      min-height: 760px;      background-color: #E7F0FF;      padding: 0 0 24px 0;      border-radius: 24px;    }    .tg-df-container.is-carousel.hide-header-details {      min-height: 480px;    }    /*       7. Carousel View Mode    */    .tg-df-container .tg-df-carousel-host {      /* Layout is now handled by container wrapper */    }    .tg-df-container .tg-df-carousel-eyebrow {      color: #1F69FF;      font-weight: 700;      font-size: 14px;      text-transform: uppercase;      letter-spacing: 1px;      padding: 24px 16px 0 16px;      display: none;    }    .tg-df-container .tg-df-carousel-query-title {      color: #011535;      font-size: 28px;      font-weight: 600;      padding: 0 16px 24px 16px;      line-height: 1.2;      display: none;    }    .tg-df-container .tg-df-carousel-blue-box {      background-color: transparent;      border-radius: 0;      padding: 24px 24px 0 24px;      margin: 0;      color: #1F69FF;          position: relative;      overflow: hidden;    }    .tg-df-container .tg-df-carousel-bg-circle-1 {      display: none;    }    .tg-df-container .tg-df-carousel-bg-circle-2 {      display: none;    }    .tg-df-container .tg-df-carousel-bg-circle-3 {      display: none;    }    .tg-df-container .tg-df-carousel-box-content {      position: relative;      z-index: 10;    }    .tg-df-container .tg-df-carousel-box-eyebrow {      background-color: transparent;      color: #1F69FF;      font-weight: 700;      font-size: 14px;      text-transform: uppercase;      letter-spacing: 1px;      display: inline-block;      padding: 0;      border-radius: 0;    }    .tg-df-container .tg-df-carousel-box-title {      font-size: 28px;      font-weight: 600;      line-height: 1.2;      margin-top: 8px;      color: #1e293b;    }    .tg-df-container .tg-df-countdown-wrapper {      position: absolute;      top: 0;      right: 0;      display: flex;      flex-direction: column;      align-items: flex-end;      gap: 12px;      transform: scale(0.67);      transform-origin: top right;    }    .tg-df-container .tg-df-countdown-title {      font-size: 16px;      text-align: center;      width: 100%;      font-weight: 600;      color: #011535;      margin: 0;    }    .tg-df-container .tg-df-countdown-blocks {      display: flex;      gap: 16px;    }    .tg-df-container .tg-df-countdown-item {      display: flex;      flex-direction: column;      align-items: center;      gap: 4px;    }    .tg-df-container .tg-df-countdown-box {      width: 59px;      height: 59px;      background: #03FE9E;      border-radius: 15px;      display: flex;      align-items: center;      justify-content: center;    }    .tg-df-container .tg-df-countdown-num {      font-family: 'Inter', sans-serif;      font-weight: 700;      font-size: 20px;      line-height: normal;      color: #011535;    }    .tg-df-container .tg-df-countdown-label {      font-family: 'Inter', sans-serif;      font-weight: 500;      font-size: 16px;      line-height: normal;      color: #1e293b;      text-transform: uppercase;    }    .tg-df-container .tg-df-carousel-box-subtitle {      font-size: 16px;      margin-top: 8px;      font-weight: 300;      color: #1e293b;      line-height: 24px;    }    .tg-df-container .tg-df-carousel-roundels-wrapper {      position: relative;      margin-top: 24px;      margin-left: -24px;      margin-right: -24px;    }    .tg-df-container .tg-df-carousel-roundels {      display: flex;      gap: 16px;      overflow-x: auto;            scrollbar-width: none;      padding-top: 12px;      padding-bottom: 24px;      padding-left: 24px;      padding-right: 24px;      margin-left: 0;      margin-right: 0;    }        .tg-df-container .tg-df-carousel-scroll-left,    .tg-df-container .tg-df-carousel-scroll-right {      position: absolute;      top: 50%;      transform: translateY(-50%);      height: 36px;      width: 36px;      display: flex;      align-items: center;      justify-content: center;      border-radius: 50%;      background-color: #ffffff;      border: 1px solid #e2e8f0;      box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);      color: #1F69FF;      cursor: pointer;      transition: all 0.2s;      margin-top: -4px;      z-index: 20;    }    .tg-df-container .tg-df-carousel-scroll-left { left: 8px; }    .tg-df-container .tg-df-carousel-scroll-right { right: 8px; }    .tg-df-carousel-filters-outer .tg-df-carousel-scroll-left { left: 0px; }    .tg-df-carousel-filters-outer .tg-df-carousel-scroll-right { right: 0px; }    .tg-df-carousel-filters-outer { margin-left: -24px; margin-right: -24px; padding-left: 24px; padding-right: 24px; }    @container tg-df (max-width: 599px) { .tg-df-carousel-filters-outer { margin-left: -16px; margin-right: -16px; padding-left: 16px; padding-right: 16px; } }        .tg-df-container .tg-df-carousel-scroll-left:hover,    .tg-df-container .tg-df-carousel-scroll-right:hover {      background-color: #f8fafc;      border-color: #cbd5e1;    }        .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-left,    .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-right,    .tg-df-carousel-filters-outer .tg-df-carousel-scroll-left,    .tg-df-carousel-filters-outer .tg-df-carousel-scroll-right {      background-color: rgba(255, 255, 255, 0.4);      border: none;      box-shadow: none;      backdrop-filter: blur(4px);      -webkit-backdrop-filter: blur(4px);    }    .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-left { left: 0; }    .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-right { right: 0; }    .tg-df-grid-wrapper .tg-df-carousel-scroll-left { left: 0; }    .tg-df-grid-wrapper .tg-df-carousel-scroll-right { right: 0; }        .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-left:hover,    .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-right:hover {      background-color: rgba(255, 255, 255, 0.6);      border: none;    }    .tg-df-container .tg-df-carousel-roundels::-webkit-scrollbar {      display: none;    }    .tg-df-container .tg-df-carousel-roundels::after {      content: "";      flex: 0 0 32px;    }    .tg-df-container .tg-df-roundel {      display: flex;      flex-direction: column;      align-items: center;      gap: 8px;      cursor: pointer;      min-width: 120px;      flex-shrink: 0;    }    .tg-df-container .tg-df-roundel-img-box {      width: 120px;      height: 120px;      border-radius: 50%;      background: white;      display: flex;      align-items: center;      justify-content: center;      overflow: hidden;      box-shadow: 0px 3px 14px 0px rgba(30, 41, 59, 0.08);      transition: box-shadow 0.2s;    }    .tg-df-container .tg-df-roundel:hover .tg-df-roundel-img-box {      box-shadow: 0 0 0 2px #E7F0FF, 0 0 0 4px #1F69FF;    }    .tg-df-container .tg-df-roundel.active .tg-df-roundel-img-box {      box-shadow: 0 0 0 2px #E7F0FF, 0 0 0 4px #1F69FF;    }    .tg-df-container .tg-df-roundel:hover .tg-df-roundel-img-box img {      transform: scale(1.08);    }    .tg-df-container .tg-df-roundel-img-box img {      width: 100%;      height: 100%;      object-fit: contain;      padding: 10px;      box-sizing: border-box;      transition: transform 0.3s ease;    }    .tg-df-container .tg-df-roundel-label {      font-size: 13px;      font-weight: 400;      color: #1e293b;      text-align: center;      transition: font-weight 0.2s;    }    .tg-df-container .tg-df-roundel.active .tg-df-roundel-label {      font-weight: 700;    }    .tg-df-container .tg-df-carousel-filters-label {      font-size: 16px;      font-weight: 400;      color: #1e293b;      white-space: nowrap;      margin-right: 4px;    }    .tg-df-container .tg-df-carousel-filters-wrap {      display: flex;      align-items: center;      flex-wrap: nowrap;      gap: 8px;      margin-top: 8px;      overflow-x: auto;      scrollbar-width: none;      -webkit-overflow-scrolling: touch;      padding-bottom: 8px;      margin-left: -24px;      margin-right: -24px;      padding-left: 24px;      padding-right: 24px;    }    .tg-df-container .tg-df-carousel-filters-wrap::-webkit-scrollbar {      display: none;    }        .tg-df-container .tg-df-carousel-filter-btn img,    .tg-df-container .tg-df-carousel-filter-btn picture {      height: 20px;      width: 20px;      object-fit: contain;      object-position: center;      display: inline-flex;      align-items: center;      justify-content: center;      margin-right: 6px;    }    .tg-df-container .tg-df-carousel-filter-btn picture img {      margin-right: 0;      height: 100%;      width: 100%;    }    .tg-df-container .tg-df-carousel-filter-btn img.active-img,    .tg-df-container .tg-df-carousel-filter-btn picture:has(.active-img) {      display: none;    }    .tg-df-container .tg-df-carousel-filter-btn:hover img.inactive-img,    .tg-df-container .tg-df-carousel-filter-btn.active img.inactive-img,    .tg-df-container .tg-df-carousel-filter-btn:hover picture:has(.inactive-img),    .tg-df-container .tg-df-carousel-filter-btn.active picture:has(.inactive-img) {      display: none;    }    .tg-df-container .tg-df-carousel-filter-btn:hover img.active-img,    .tg-df-container .tg-df-carousel-filter-btn.active img.active-img,    .tg-df-container .tg-df-carousel-filter-btn:hover picture:has(.active-img),    .tg-df-container .tg-df-carousel-filter-btn.active picture:has(.active-img) {      display: inline-flex;    }    .tg-df-container .tg-df-carousel-filter-btn {      background: #ffffff;      border: 2px solid #1e293b;      color: #1e293b;      border-radius: 24px;      padding: 6px 16px;      font-size: 14px;      font-weight: 600;      cursor: pointer;      transition: all 0.2s;      flex-shrink: 0;      white-space: nowrap;      display: inline-flex;      align-items: center;      justify-content: center;      min-height: 36px;      box-sizing: border-box;    }    .tg-df-container .tg-df-carousel-filter-btn svg {      margin-right: 6px;    }    .tg-df-container .tg-df-carousel-filter-btn:hover {      background: #1e293b;      color: white;      border-color: #1e293b;    }    .tg-df-container .tg-df-carousel-filter-btn.active {      background: #1e293b;      color: white;      border-color: #1e293b;    }        .tg-df-grid.carousel-compact {      display: flex;      flex-wrap: nowrap;      overflow-x: auto;      gap: 16px;      padding: 16px 24px;      align-items: stretch;      scrollbar-width: none;    }    .tg-df-grid.carousel-compact::after {      content: "";      flex: 0 0 32px;    }    .tg-df-grid-wrapper {      position: relative;    }    .tg-df-grid.carousel-compact::-webkit-scrollbar {      display: none;    }    .tg-df-grid.carousel-compact .tg-df-load-more-card {      flex: 0 0 auto;      width: 100px;      border-radius: 15px;      box-shadow: 0 0 16px rgba(0,0,0,0.08);      border: 2px solid #1e293b;      background: white;      color: #1e293b;      display: flex;      flex-direction: column;      justify-content: center;      align-items: center;      font-weight: 600;      font-size: 14px;      cursor: pointer;      padding: 16px;      text-align: center;      transition: all 0.2s;    }    .tg-df-grid.carousel-compact .tg-df-load-more-card:hover {      background: #1e293b;      color: white;    }    .tg-df-grid.carousel-compact .tg-df-card {      flex: 0 0 auto;      width: 200px;      min-height: auto;      height: auto;      display: flex;      flex-direction: column;      border-radius: 15px;      border: none;      box-shadow: 0 0 16px rgba(0,0,0,0.08);      overflow: visible;    }    .tg-df-grid.carousel-compact .tg-df-card-image-box {      padding: 12px;      background-color: transparent;      border-radius: 15px 15px 0 0;      height: 130px;    }    .tg-df-grid.carousel-compact .tg-df-card-image {      mix-blend-mode: normal;    }    .tg-df-grid.carousel-compact .tg-df-card-discount-badge {      border-radius: 0;      top: 0px;      left: 0px;      padding: 4px 8px;      font-size: 11px;    }    .tg-df-grid.carousel-compact .tg-df-card-body {      padding: 8px 12px 12px 12px;    }    .tg-df-grid.carousel-compact .tg-df-card-title {      font-size: 14px;      font-weight: 400;      -webkit-line-clamp: 2;      margin-bottom: 8px;      color: #011535;    }    .tg-df-grid.carousel-compact .tg-df-card-body:not(:has(.tg-df-card-stars)):not(:has(.tg-df-tag-prime)):not(:has(.tg-df-coupon-wrapper:not([style*="none"]))) > .tg-df-card-title,    .tg-df-grid.carousel-compact .tg-df-card-body:not(:has(.tg-df-card-stars)):has(> .tg-df-card-title:first-child) > .tg-df-card-title {      -webkit-line-clamp: 3;    }    .tg-df-grid.carousel-compact .tg-df-card-cta {      border-radius: 5px;      padding: 8px 10px;      margin-top: 4px;      background-color: #1F69FF;    }    .tg-df-grid.carousel-compact .tg-df-card-price-group {      margin-bottom: 2px;    }    .tg-df-grid.carousel-compact .tg-df-card-merchant-pill {      margin-bottom: 2px;    }    @container tg-df (max-width: 599px) {      .tg-df-container .tg-df-carousel-blue-box-title {        font-size: 24px;      }      .tg-df-container .tg-df-countdown-title {        display: none;      }      .tg-df-container .tg-df-countdown-wrapper {        position: absolute;        top: 0;        right: 0;        align-items: flex-end;        transform: scale(0.45);        transform-origin: top right;      }      .tg-df-container .tg-df-roundel {        min-width: 88px;      }      .tg-df-container .tg-df-roundel-img-box {        width: 88px;        height: 88px;      }    }    /* REPLICA BLOCK STYLES */    .tg-df-grid.layout-replica-2 { grid-template-columns: repeat(2, 1fr) !important; gap: 20px; }    .tg-df-grid.layout-replica-1 { grid-template-columns: 1fr !important; gap: 20px; }        .tg-df-container .hawk-deal-widget-container { border-bottom: 1px solid #e5e7eb; display: flex; flex-direction: column; margin: 0; padding: 20px 0; box-sizing: border-box; font-family: inherit; }    .tg-df-container .hawk-deal-widget-wrap { display: flex; flex-direction: row; align-items: flex-start; width: 100%; gap: 24px; }    .tg-df-container .hawk-deal-widget-image-container { display: flex; flex-shrink: 0; justify-content: center; width: 160px; height: 160px; align-items: center; background: white; margin-bottom: 0px; }    .tg-df-container .hawk-deal-widget-title-product-title { color: #111827; font-size: 18px; font-weight: 700; line-height: 1.4; display: inline; }    .tg-df-container .hawk-deal-widget-title-price { font-size: 18px; font-weight: 700; line-height: 1.4; white-space: nowrap; color: #2563eb; }    .tg-df-container .hawk-deal-widget-title-price-now { font-weight: 700; }    .tg-df-container .hawk-deal-widget-title-retailer-price:hover { text-decoration: underline; }    .tg-df-container .hawk-deal-widget-title-retailer { font-size: 18px; font-weight: 700; line-height: 1.4; color: #2563eb; }    .tg-df-container .hawk-deal-widget-title-was-price { color: #dc2626; font-size: 16px; font-weight: 500; line-height: 1.4; text-decoration: line-through; white-space: nowrap; margin-left: 8px; margin-right: 8px; }    .tg-df-container .hawk-deal-widget-text-body-container { position: relative; width: 100%; box-sizing: border-box; }    .tg-df-container .hawk-deal-widget-text-body-main { font-size: 16px; width: 100%; margin-bottom: 12px; }    .tg-df-container .hawk-deal-widget-text-body-description { display: block; font-size: 15px; margin-top: 12px; color: #4b5563; line-height: 1.6; }    .tg-df-container .hawk-deal-widget-text-body-description p { margin: 0; line-height: 1.6; }    .tg-df-container .hawk-deal-widget-text-cta-container { display: flex; flex-direction: column; gap: 12px; width: 100%; flex: 1; min-width: 0; box-sizing: border-box; }    .tg-df-container .hawk-deal-widget-footer { display: flex; justify-content: flex-end; width: 100%; margin-top: auto; }    .tg-df-container .hawk-deal-widget-button-wrapper { display: flex; flex-direction: column; align-items: flex-end; justify-content: flex-end; width: 100%; }    .tg-df-container .hawk-deal-widget-preferred-partner-wrapper { display: flex; flex-direction: row; }        @container tg-df (min-width: 600px) {      .tg-df-mobile-only { display: none !important; }    }    @container tg-df (max-width: 599px) {      .tg-df-desktop-only { display: none !important; }      .tg-df-grid.layout-replica-2 { grid-template-columns: 1fr !important; }      .tg-df-grid.savings-squad-cards { grid-template-columns: 1fr !important; display: flex; flex-direction: column; }    }    .tg-df-grid.savings-squad-cards .tg-df-card-title {      -webkit-line-clamp: unset !important;      display: block !important;      overflow: visible !important;    }    @container tg-df (max-width: 500px) {      .tg-df-container .hawk-deal-widget-wrap { display: block; }      .tg-df-container .hawk-deal-widget-image-container { display: block; float: left; margin: 0 16px 8px 0; width: 120px; max-width: 120px; height: auto; align-items: normal; justify-content: normal; }      .tg-df-container .hawk-deal-widget-text-cta-container { display: block; text-align: left; }      .tg-df-container .hawk-deal-widget-footer { display: block; margin-top: 16px; clear: both; width: 100%; }      .tg-df-container .hawk-deal-widget-button-wrapper { display: block; width: 100%; }      .tg-df-container .hawk-deal-widget-button-wrapper .hawk-deal-widget-preferred-partner-wrapper { display: block; width: 100%; }      .tg-df-container .hawk-affiliate-link-deal-button { box-sizing: border-box !important; display: flex !important; max-width: none !important; width: 100% !important; margin: 0 !important; }    }        .tg-df-container .hawk-affiliate-link-deal-button {       align-items: center; background-color: #5aaf0b; box-sizing: border-box; color: #ffffff !important; display: flex; font-size: 14px; font-weight: 700; justify-content: center; letter-spacing: 0.5px; line-height: 1; min-width: 160px; padding: 14px 24px; text-align: center; text-decoration: none; text-transform: uppercase; width: 100%; word-break: normal; border-radius: 4px; border: 0; transition: background-color 0.2s;     }    .tg-df-container .hawk-affiliate-link-deal-button:hover { background-color: #4a9109; text-decoration: none; }    .tg-df-container .hawk-lazy-image-deal-widget { display: block; height: auto; margin: auto; max-height: 160px; max-width: 100%; mix-blend-mode: multiply; object-fit: contain; }    .tg-df-container .hawk-deal-widget-text-cta-container a { color: #2563eb; text-decoration: none; display: inline; }    .tg-df-container .hawk-deal-widget-text-cta-container a:hover { text-decoration: underline; }    .tg-df-container .hawk-deal-widget-text-cta-container a:has(.hawk-deal-widget-title-product-title) { color: #111827; }    .tg-df-container .hawk-deal-widget-text-cta-container a:hover .hawk-deal-widget-title-product-title,    .tg-df-container .hawk-deal-widget-text-cta-container a:hover .hawk-deal-widget-title-retailer-price { text-decoration: underline; }  \x3C/style>  \x3C!-- Widget Container --\x3E  \x3Cdiv class="tg-df-container" id="signal-deals-finder-root">    \x3C!-- Editor Floating Bar --\x3E    \x3Cdiv class="tg-df-editor-bar" id="tg-df-editor-bar" style="display:none;">      \x3Cdiv class="tg-df-editor-bar-text" style="display: flex; align-items: center;">        \x3Cspan id="tg-df-selected-count">0\x3C/span>\x26nbsp;Deals Selected        \x3Cbutton class="tg-df-editor-clear-btn" id="tg-df-editor-clear" type="button" style="margin-left: 12px; font-size: 13px; color: #9ca3af; background: none; border: none; cursor: pointer; text-decoration: underline;">Clear All\x3C/button>      \x3C/div>      \x3Cbutton class="tg-df-editor-copy-btn" id="tg-df-editor-copy" type="button">        \x3Csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-right: 6px;">\x3Crect x="9" y="9" width="13" height="13" rx="2" ry="2">\x3C/rect>\x3Cpath d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1">\x3C/path>\x3C/svg>        Copy to CMS      \x3C/button>    \x3C/div>    \x3Cdiv class="tg-df-carousel-host" id="tg-df-carousel-host" style="display: none;">      \x3Cdiv class="tg-df-carousel-eyebrow">DEAL FINDER\x3C/div>      \x3Cdiv class="tg-df-carousel-query-title" id="tg-df-carousel-title-label">Best Deals\x3C/div>            \x3Cdiv class="tg-df-carousel-blue-box">        \x3Cdiv class="tg-df-carousel-bg-circle-1" aria-hidden="true">\x26nbsp;\x3C/div>        \x3Cdiv class="tg-df-carousel-bg-circle-2" aria-hidden="true">\x26nbsp;\x3C/div>        \x3Cdiv class="tg-df-carousel-bg-circle-3" aria-hidden="true">\x26nbsp;\x3C/div>        \x3Cdiv class="tg-df-carousel-box-content">          \x3Cdiv class="tg-df-countdown-wrapper" id="tg-df-countdown-wrapper" style="display:none;">            \x3Cdiv class="tg-df-countdown-title" id="tg-df-countdown-title">Prime Day starts in\x3C/div>            \x3Cdiv class="tg-df-countdown-blocks">              \x3Cdiv class="tg-df-countdown-item">\x3Cdiv class="tg-df-countdown-box">\x3Cdiv class="tg-df-countdown-num" id="tg-df-cd-days">0\x3C/div>\x3C/div>\x3Cdiv class="tg-df-countdown-label">DAYS\x3C/div>\x3C/div>              \x3Cdiv class="tg-df-countdown-item">\x3Cdiv class="tg-df-countdown-box">\x3Cdiv class="tg-df-countdown-num" id="tg-df-cd-hrs">0\x3C/div>\x3C/div>\x3Cdiv class="tg-df-countdown-label">HRS\x3C/div>\x3C/div>              \x3Cdiv class="tg-df-countdown-item">\x3Cdiv class="tg-df-countdown-box">\x3Cdiv class="tg-df-countdown-num" id="tg-df-cd-min">0\x3C/div>\x3C/div>\x3Cdiv class="tg-df-countdown-label">MIN\x3C/div>\x3C/div>              \x3Cdiv class="tg-df-countdown-item">\x3Cdiv class="tg-df-countdown-box">\x3Cdiv class="tg-df-countdown-num" id="tg-df-cd-sec">0\x3C/div>\x3C/div>\x3Cdiv class="tg-df-countdown-label">SEC\x3C/div>\x3C/div>            \x3C/div>          \x3C/div>          \x3Cdiv class="tg-df-carousel-box-eyebrow">DEAL FINDER\x3C/div>          \x3Cdiv class="tg-df-carousel-box-title">Find Deals Fast\x3C/div>          \x3Cdiv class="tg-df-carousel-box-subtitle">The latest deals from the biggest retailers, all in one place\x3C/div>                    \x3Cdiv class="tg-df-carousel-roundels-wrapper">          \x3Cbutton class="tg-df-carousel-scroll-left" type="button" aria-label="Scroll left" style="display:none;" onclick="this.parentElement.querySelector('.tg-df-carousel-roundels').scrollBy({left: -200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m15 18-6-6 6-6">\x3C/path>\x3C/svg>\x3C/button>          \x3Cdiv class="tg-df-carousel-roundels">            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>          \x3C/div>          \x3Cbutton class="tg-df-carousel-scroll-right" type="button" aria-label="Scroll right" onclick="this.parentElement.querySelector('.tg-df-carousel-roundels').scrollBy({left: 200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m9 18 6-6-6-6">\x3C/path>\x3C/svg>\x3C/button>        \x3C/div>        \x3Cdiv class="tg-df-carousel-filters-outer" style="position: relative;">          \x3Cbutton class="tg-df-carousel-scroll-left" type="button" aria-label="Scroll left" style="display:none;" onclick="this.parentElement.querySelector('.tg-df-carousel-filters-wrap').scrollBy({left: -200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m15 18-6-6 6-6">\x3C/path>\x3C/svg>\x3C/button>          \x3Cdiv class="tg-df-carousel-filters-wrap">                      \x3Cbutton class="tg-df-carousel-filter-btn" data-d="0">All\x3C/button>                      \x3Cbutton class="tg-df-carousel-filter-btn" data-ot="amazon_lightning">              \x3Cimg src="https://cdn.mos.cms.futurecdn.net/HqAui7w97ft2NPqBtQ5r38-600-100.png" class="inactive-img" alt="" />\x3Cimg src="https://cdn.mos.cms.futurecdn.net/yWPQ5yyQRhUwVKzGwYbh38-600-100.png" class="active-img" alt="" /> Lightning deals\x3C/button>            \x3Cbutton class="tg-df-carousel-filter-btn" data-ot="amazon_prime">              \x3Cimg src="https://cdn.mos.cms.futurecdn.net/fwoVXvL79turN3Ph535m38-600-100.png" class="inactive-img" alt="" />\x3Cimg src="https://cdn.mos.cms.futurecdn.net/u75QjVpt3w2EsMimJiRo38-600-100.png" class="active-img" alt="" /> Prime deals\x3C/button>            \x3Cbutton class="tg-df-carousel-filter-btn" data-d="10">              \x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tag">\x3Cpath d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z">\x3C/path>\x3Ccircle cx="7.5" cy="7.5" r=".5" fill="currentColor">\x3C/circle>\x3C/svg>            Min 10% off\x3C/button>                      \x3Cbutton class="tg-df-carousel-filter-btn" data-d="15">              \x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tag">\x3Cpath d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z">\x3C/path>\x3Ccircle cx="7.5" cy="7.5" r=".5" fill="currentColor">\x3C/circle>\x3C/svg>            Min 15% off\x3C/button>                      \x3Cbutton class="tg-df-carousel-filter-btn" data-d="25">              \x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tag">\x3Cpath d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z">\x3C/path>\x3Ccircle cx="7.5" cy="7.5" r=".5" fill="currentColor">\x3C/circle>\x3C/svg>            Min 25% off\x3C/button>                      \x3Cbutton class="tg-df-carousel-filter-btn" data-pr="under50">              \x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-dollar-sign">\x3Cpath d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z">\x3C/path>\x3Cpath d="M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8">\x3C/path>\x3Cpath d="M12 18V6">\x3C/path>\x3C/svg>            Under $50\x3C/button>        \x3C/div>        \x3Cbutton class="tg-df-carousel-scroll-right" type="button" aria-label="Scroll right" style="display:none;" onclick="this.parentElement.querySelector('.tg-df-carousel-filters-wrap').scrollBy({left: 200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m9 18 6-6-6-6">\x3C/path>\x3C/svg>\x3C/button>      \x3C/div>    \x3C/div>    \x3C/div>      \x3C!-- Search & Filter Controls --\x3E    \x3Cdiv class="tg-df-controls" id="tg-df-controls" style="display:flex;">      \x3Cdiv class="tg-df-top-bar">        \x3Cdiv class="tg-df-search-wrapper">          \x3Cinput type="text" class="tg-df-search-input" placeholder="Search for deals, products, or brands...">          \x3Cbutton type="button" class="tg-df-search-btn" aria-label="Search">              \x3Csvg class="tg-df-search-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">                \x3Cpath d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"/>              \x3C/svg>          \x3C/button>          \x3Cdiv class="tg-df-autocomplete-dropdown" id="tg-df-autocomplete">\x3C/div>        \x3C/div>                \x3Cdiv class="tg-df-settings-wrapper">          \x3Cbutton type="button" class="tg-df-settings-btn" aria-label="Settings" id="tg-df-settings-toggle">            \x3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="20" height="20">                \x3Cpath d="M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.06-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.73 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.06.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .43-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.49-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z"/>            \x3C/svg>          \x3C/button>          \x3Cdiv class="tg-df-settings-dropdown-backdrop" id="tg-df-settings-backdrop">\x3C/div>          \x3Cdiv class="tg-df-settings-dropdown" id="tg-df-settings-panel">            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">Search Region\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-region-select">                \x3Coption value="auto">🌍 Auto-detect\x3C/option>                \x3Coption value="US">🇺🇸 United States (US)\x3C/option>                \x3Coption value="GB">🇬🇧 United Kingdom (UK)\x3C/option>                \x3Coption value="CA">🇨🇦 Canada (CA)\x3C/option>                \x3Coption value="AU">🇦🇺 Australia (AU)\x3C/option>                \x3Coption value="DE">🇩🇪 Germany (DE)\x3C/option>                \x3Coption value="FR">🇫🇷 France (FR)\x3C/option>                \x3Coption value="IT">🇮🇹 Italy (IT)\x3C/option>              \x3C/select>            \x3C/div>            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">Retailer\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-retailer-select">                \x3Coption value="">All Retailers\x3C/option>                \x3Coption value="Amazon">Amazon\x3C/option>                \x3Coption value="Walmart">Walmart\x3C/option>                \x3Coption value="Best Buy">Best Buy\x3C/option>                \x3Coption value="Target">Target\x3C/option>                \x3Coption value="John Lewis">John Lewis\x3C/option>                \x3Coption value="Currys">Currys\x3C/option>                \x3Coption value="Argos">Argos\x3C/option>              \x3C/select>            \x3C/div>            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">Offer Type\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-offer-type-select">                \x3Coption value="">All Offers\x3C/option>                \x3Coption value="amazon_prime">Amazon Prime\x3C/option>                \x3Coption value="recommended_promo">Recommended Promo\x3C/option>                \x3Coption value="amazon_lightning">Amazon Lightning Deal\x3C/option>              \x3C/select>            \x3C/div>            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">Result Count\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-rows-select">                \x3Coption value="3">3 Items\x3C/option>                \x3Coption value="4">4 Items\x3C/option>                \x3Coption value="6">6 Items\x3C/option>                \x3Coption value="12" selected>12 Items\x3C/option>                \x3Coption value="24">24 Items\x3C/option>                \x3Coption value="48">48 Items\x3C/option>              \x3C/select>            \x3C/div>            \x3Cdiv class="tg-df-setting-item tg-df-dl-row">              \x3Cdiv>                \x3Cspan class="tg-df-dl-row-text">Deal Mode\x3C/span>                \x3Cspan class="tg-df-dl-row-subtext">Only show products with active offers or previous prices (was_price)\x3C/span>              \x3C/div>              \x3Clabel class="tg-df-toggle">                \x3Cinput type="checkbox" id="tg-df-deal-mode">                \x3Cspan class="tg-df-slider">\x3C/span>              \x3C/label>            \x3C/div>            \x3Cdiv class="tg-df-setting-item tg-df-dl-row">              \x3Cdiv>                \x3Cspan class="tg-df-dl-row-text">Editor Mode\x3C/span>                \x3Cspan class="tg-df-dl-row-subtext">Enable multi-select to copy deals to CMS\x3C/span>              \x3C/div>              \x3Clabel class="tg-df-toggle">                \x3Cinput type="checkbox" id="tg-df-editor-mode">                \x3Cspan class="tg-df-slider">\x3C/span>              \x3C/label>            \x3C/div>            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">View Mode\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-view-mode-select">                \x3Coption value="auto">Auto Collection\x3C/option>                \x3Coption value="carousel">Carousel\x3C/option>                \x3Coption value="savings_squad">Savings Squad\x3C/option>                \x3Coption value="grid">Grid (Columns)\x3C/option>                \x3Coption value="row">Row (List)\x3C/option>              \x3C/select>            \x3C/div>          \x3C/div>        \x3C/div>      \x3C/div>      \x3Cdiv class="tg-df-filters">        \x3Cdiv class="tg-df-sort-wrapper" id="tg-df-category-filter-wrapper" style="display: none;">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">            \x3Cpath d="M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z"/>          \x3C/svg>          \x3Cselect class="tg-df-filter-select" id="tg-df-category-filter" aria-label="Category">            \x3Coption value="all">All Categories\x3C/option>          \x3C/select>        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper tg-df-multiselect-container" id="tg-df-brand-filter-wrapper" style="display:none;">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">            \x3Cpath d="M4.25 5.61C6.27 8.2 10 13 10 13v6c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-6s3.72-4.8 5.74-7.39A.998.998 0 0 0 18.95 4H5.04c-.83 0-1.3.95-.79 1.61z"/>          \x3C/svg>          \x3Cdiv class="tg-df-filter-select tg-df-multiselect-trigger" id="tg-df-brand-trigger" tabindex="0">            Any Brand          \x3C/div>          \x3Cdiv class="tg-df-multiselect-dropdown" id="tg-df-brand-dropdown">            \x3C!-- Populated via script --\x3E          \x3C/div>        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">            \x3Cpath d="M9 3L5 6.99h3V14h2V6.99h3L9 3zm7 14.01V10h-2v7.01h-3L15 21l4-3.99h-3z"/>          \x3C/svg>          \x3Cselect class="tg-df-sort-select" aria-label="Sort Deals">            \x3Coption value="date_desc">Newest First\x3C/option>            \x3Coption value="best_match">Sort by: Match\x3C/option>            \x3Coption value="price_asc">Price Low to High\x3C/option>            \x3Coption value="price_desc">Price High to Low\x3C/option>            \x3Coption value="discount_desc">Biggest Discount\x3C/option>          \x3C/select>        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper tg-df-price-range-wrapper" id="tg-df-custom-price-wrapper" style="display: flex; align-items:center; justify-content:center; padding: 10px 20px; gap: 8px; border: 1px solid var(--tg-df-border); border-radius: 100px; background-color: var(--tg-df-bg);">          \x3Cspan style="font-size:14px; font-weight:500; color:var(--tg-df-text-primary);">Price\x3C/span>          \x3Cinput type="number" class="tg-df-price-input" id="tg-df-custom-price-min" placeholder="Min" style="width: 48px; background: transparent; border: none; color: var(--tg-df-text-primary); outline: none; font-size: 14px; text-align: center; padding: 0;">          \x3Cspan style="color:var(--tg-df-text-muted)">-\x3C/span>          \x3Cinput type="number" class="tg-df-price-input" id="tg-df-custom-price-max" placeholder="Max" style="width: 48px; background: transparent; border: none; color: var(--tg-df-text-primary); outline: none; font-size: 14px; text-align: center; padding: 0;">        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper" id="tg-df-legacy-price-wrapper">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">            \x3Cpath d="M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58.55 0 1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41 0-.55-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7z"/>          \x3C/svg>          \x3Cselect class="tg-df-filter-select" id="tg-df-price-filter" aria-label="Filter Prices">            \x3Coption value="all">All Prices\x3C/option>            \x3Coption value="under50">Under $50\x3C/option>            \x3Coption value="50_100">$50 - $100\x3C/option>            \x3Coption value="100_200">$100 - $200\x3C/option>            \x3Coption value="200_500">$200 - $500\x3C/option>            \x3Coption value="over500">Over $500\x3C/option>          \x3C/select>        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper" id="tg-df-discount-filter-wrapper">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">            \x3Cpath d="M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58.55 0 1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41 0-.55-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7z"/>          \x3C/svg>          \x3Cselect class="tg-df-filter-select" id="tg-df-discount-filter" aria-label="Discount Amount">            \x3Coption value="all">Any discount\x3C/option>            \x3Coption value="5">Min 5%\x3C/option>            \x3Coption value="10">Min 10%\x3C/option>            \x3Coption value="15">Min 15%\x3C/option>            \x3Coption value="20">Min 20%\x3C/option>            \x3Coption value="25">Min 25%\x3C/option>            \x3Coption value="30">Min 30%\x3C/option>            \x3Coption value="40">Min 40%\x3C/option>            \x3Coption value="50">Min 50%\x3C/option>            \x3Coption value="60">Min 60%\x3C/option>            \x3Coption value="70">Min 70%\x3C/option>          \x3C/select>        \x3C/div>      \x3C/div>    \x3C/div>    \x3C!-- Deals Grid Wrapper --\x3E    \x3Cdiv class="tg-df-grid-wrapper tg-df-carousel-cards-wrapper" id="tg-df-grid-wrapper">      \x3Cbutton class="tg-df-carousel-scroll-left" type="button" aria-label="Scroll left" style="display:none;" onclick="this.parentElement.querySelector('#tg-df-grid').scrollBy({left: -200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m15 18-6-6 6-6">\x3C/path>\x3C/svg>\x3C/button>      \x3Cdiv class="tg-df-grid" id="tg-df-grid">        \x3C!-- Content populated by JavaScript --\x3E      \x3C/div>      \x3Cbutton class="tg-df-carousel-scroll-right" type="button" aria-label="Scroll right" style="display:none;" onclick="this.parentElement.querySelector('#tg-df-grid').scrollBy({left: 200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m9 18 6-6-6-6">\x3C/path>\x3C/svg>\x3C/button>    \x3C/div>        \x3C!-- Vouchers Modal --\x3E    \x3Cdiv class="tg-df-modal-backdrop" id="tg-df-vouchers-modal">      \x3Cdiv class="tg-df-modal">        \x3Cdiv class="tg-df-modal-header">          \x3Ch3 class="tg-df-modal-title" id="tg-df-vouchers-title">Available Coupons & Deals\x3C/h3>          \x3Cbutton class="tg-df-modal-close" id="tg-df-vouchers-close">            \x3Csvg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">              \x3Cline x1="18" y1="6" x2="6" y2="18">\x3C/line>              \x3Cline x1="6" y1="6" x2="18" y2="18">\x3C/line>            \x3C/svg>          \x3C/button>        \x3C/div>        \x3Cdiv class="tg-df-modal-body" id="tg-df-vouchers-content">          \x3C!-- Vouchers injected here --\x3E        \x3C/div>      \x3C/div>    \x3C/div>  \x3C/div>`;      if (!template) {        template = document.createElement('template');        template.innerHTML = rawTemplate;      }      let shadowRoot = null;      if (hostContainer && template) {        hostContainer.setAttribute('data-initialized', 'true');        shadowRoot = hostContainer.attachShadow({ mode: 'open' });        shadowRoot.appendChild(template.content.cloneNode(true));      }      class DealsFinderWidget {        constructor(config) {          this.rootNode = config.rootNode || document;          this.hostContainer = config.hostContainer || null;          this.rootId = config.rootId || 'signal-deals-finder-root';          this.root = this.rootNode.querySelector('#' + this.rootId);          if (!this.root) return;          this.widgetId = (window.crypto && window.crypto.randomUUID) ? window.crypto.randomUUID() : 'widget-' + Date.now() + '-' + Math.random().toString(36).slice(2);          this.grid = this.root.querySelector('#tg-df-grid');          this.tagsContainer = this.root.querySelector('#tg-df-tags-container');          this.categoryFilter = this.root.querySelector('#tg-df-category-filter');          this.categoryFilterWrapper = this.root.querySelector('#tg-df-category-filter-wrapper');          this.searchInput = this.root.querySelector('.tg-df-search-input');          this.autocompleteDropdown = this.root.querySelector('#tg-df-autocomplete');          this.sortSelect = this.root.querySelector('.tg-df-sort-select');          this.searchBtn = this.root.querySelector('.tg-df-search-btn');                    this.settingsToggle = this.root.querySelector('#tg-df-settings-toggle');          this.settingsPanel = this.root.querySelector('#tg-df-settings-panel');          this.settingsBackdrop = this.root.querySelector('#tg-df-settings-backdrop');          this.regionSelect = this.root.querySelector('#tg-df-region-select');          this.retailerSelect = this.root.querySelector('#tg-df-retailer-select');          this.offerTypeSelect = this.root.querySelector('#tg-df-offer-type-select');          this.viewModeSelect = this.root.querySelector('#tg-df-view-mode-select');          this.rowsSelect = this.root.querySelector('#tg-df-rows-select');          this.dealModeToggle = this.root.querySelector('#tg-df-deal-mode');          this.editorModeToggle = this.root.querySelector('#tg-df-editor-mode');          this.priceFilter = this.root.querySelector('#tg-df-price-filter');          this.discountFilter = this.root.querySelector('#tg-df-discount-filter');                    this.editorBar = this.root.querySelector('#tg-df-editor-bar');          this.editorSelectedCount = this.root.querySelector('#tg-df-selected-count');          this.editorCopyBtn = this.root.querySelector('#tg-df-editor-copy');          this.editorClearBtn = this.root.querySelector('#tg-df-editor-clear');                    this.apiUrl = 'https://search-api.fie.future.net.uk/widget.php';          this.deals = [];          this.displayLimit = 12;          this.airedaleArticles = null;          this.airedaleTags = [];          this.airedaleTagCounts = {};          this.activeDealTag = null;          this.selectedBrands = [];          this.currentQuery = '';          this.editorMode = this.hostContainer ? this.hostContainer.hasAttribute('data-editor-mode') : false;          this.viewModeOverride = this.hostContainer ? this.hostContainer.getAttribute('data-view-mode') : null;          this.selectedDeals = new Map();                    this.brandFilterWrapper = this.root.querySelector('#tg-df-brand-filter-wrapper');          this.brandTrigger = this.root.querySelector('#tg-df-brand-trigger');          this.brandDropdown = this.root.querySelector('#tg-df-brand-dropdown');                    this.customPriceWrapper = this.root.querySelector('#tg-df-custom-price-wrapper');          this.customPriceMin = this.root.querySelector('#tg-df-custom-price-min');          this.customPriceMax = this.root.querySelector('#tg-df-custom-price-max');          this.legacyPriceWrapper = this.root.querySelector('#tg-df-legacy-price-wrapper');          this.discountFilterWrapper = this.root.querySelector('#tg-df-discount-filter-wrapper');          this.initResizeObserver();          this.init();            if (['carousel', 'carousel-compact', 'auto', 'grid', 'row'].includes(this.getViewMode())) { this.loadCarouselSpreadsheet(); }        }        getViewMode() {          if (this.viewModeOverride && (!this.editorMode || !this.viewModeSelect)) {            return this.viewModeOverride;          }          return (this.viewModeSelect && this.viewModeSelect.value) ? this.viewModeSelect.value : (this.viewModeOverride || 'auto');        }        applyLayoutMode() {          if (!this.grid) return;          const mode = this.getViewMode();          this.grid.classList.remove('layout-row', 'layout-grid', 'tg-df-grid-auto', 'carousel-compact', 'layout-replica-1', 'layout-replica-2');                    const carouselHost = this.root.querySelector('#tg-df-carousel-host');          const controlsDiv = this.root.querySelector('#tg-df-controls');          if (mode === 'carousel' || mode === 'auto' || mode === 'grid' || mode === 'row') {             if (mode === 'carousel') this.grid.classList.add('carousel-compact');             if (carouselHost) carouselHost.style.display = 'block';             if (controlsDiv) controlsDiv.style.display = 'none';             if (this.root.classList.contains('tg-df-container') && mode === 'carousel') {               this.root.classList.add('is-carousel');             } else if (this.root.classList.contains('tg-df-container')) {               this.root.classList.remove('is-carousel');             }          } else {             if (carouselHost) carouselHost.style.display = 'none';             if (controlsDiv) controlsDiv.style.display = 'flex';             if (this.root.classList.contains('tg-df-container')) {               this.root.classList.remove('is-carousel');             }          }          if (mode === 'grid') {            this.grid.classList.add('layout-grid');          } else if (mode === 'row') {            this.grid.classList.add('layout-row');          } else if (mode === 'savings_squad') {            this.grid.classList.add('tg-df-grid-auto', 'savings-squad-cards');          } else if (mode !== 'carousel') {            this.grid.classList.add('tg-df-grid-auto');          }                    const settingsWrapper = this.root.querySelector('.tg-df-settings-wrapper');          if (settingsWrapper) {            settingsWrapper.style.display = mode === 'auto' ? 'none' : 'block';          }          if (this.customPriceWrapper) {             this.customPriceWrapper.style.display = mode === 'auto' ? 'flex' : 'none';          }          if (this.legacyPriceWrapper) {             this.legacyPriceWrapper.style.display = mode === 'auto' ? 'none' : 'flex';          }          if (this.discountFilterWrapper) {             this.discountFilterWrapper.style.display = mode === 'auto' ? 'none' : 'flex';          }        }        initResizeObserver() {          try {            if (window.parent === window) return;          } catch (e) {            // cross origin frame check threw          }          const emitHeight = () => {            try {              const height = document.documentElement.scrollHeight || document.body.scrollHeight;              const msg = { type: 'embed-size', height: height };              if (window.parent && window.parent !== window) {                window.parent.postMessage(msg, '*');                window.parent.postMessage(JSON.stringify({ ...msg, sentinel: 'amp' }), '*');              }            } catch (e) {}          };                    if (window.ResizeObserver) {            try {              const ro = new ResizeObserver(() => emitHeight());              ro.observe(document.body);              if (this.root) ro.observe(this.root);            } catch(e){ console.warn(e); }          }          window.addEventListener('resize', emitHeight);          setTimeout(emitHeight, 300);        }        initCountdown() {          this.cdWrapper = this.root.querySelector('#tg-df-countdown-wrapper');                    let searchSource = window.location.search;          if (this.hostContainer && this.hostContainer.hasAttribute('data-widget-config')) {            searchSource = this.hostContainer.getAttribute('data-widget-config');          } else if (typeof window !== 'undefined' && window.__WIDGET_CONFIG__) {            searchSource = window.__WIDGET_CONFIG__;          }          const params = new URLSearchParams(searchSource);          this.showCountdown = params.get('show_countdown') === 'true';          const showHeaderDetails = params.get('show_header_details') !== 'false';          const eyebrow = this.root.querySelector('.tg-df-carousel-box-eyebrow');          const title = this.root.querySelector('.tg-df-carousel-box-title');          const subtitle = this.root.querySelector('.tg-df-carousel-box-subtitle');          if (!showHeaderDetails) {            let containerElement = this.root.classList.contains('tg-df-container') ? this.root : this.root.querySelector('.tg-df-container');            if (containerElement) containerElement.classList.add('hide-header-details');            if (eyebrow) eyebrow.style.display = 'none';            if (title) title.style.display = 'none';            if (subtitle) subtitle.style.display = 'none';          }          if (!this.cdWrapper) return;          this.cdTitle = this.root.querySelector('#tg-df-countdown-title');          this.cdDays = this.root.querySelector('#tg-df-cd-days');          this.cdHrs = this.root.querySelector('#tg-df-cd-hrs');          this.cdMin = this.root.querySelector('#tg-df-cd-min');          this.cdSec = this.root.querySelector('#tg-df-cd-sec');          this.updateCountdown();          this.cdInterval = setInterval(() => this.updateCountdown(), 1000);        }        updateCountdown() {          if (!this.cdWrapper) return;          if (!this.showCountdown) {            this.cdWrapper.style.display = 'none';            return;          }          const area = this.getAreaCode();          let offset = '-04:00';          if (['DE', 'FR', 'IT', 'ES', 'NL'].includes(area)) {             offset = '+02:00';          } else if (['GB', 'IE', 'UK'].includes(area)) {             offset = '+01:00';          }          const startTime = new Date('2026-06-23T00:00:00' + offset).getTime();          const endTime = new Date('2026-06-26T00:00:00' + offset).getTime();          const now = Date.now();          let targetTime = 0;          if (now < startTime) {             targetTime = startTime;             if (this.cdTitle) this.cdTitle.textContent = 'Prime Day starts in';             this.cdWrapper.style.display = 'flex';          } else if (now < endTime) {             targetTime = endTime;             if (this.cdTitle) this.cdTitle.textContent = 'Prime Day ends in';             this.cdWrapper.style.display = 'flex';          } else {             this.cdWrapper.style.display = 'none';             if (this.cdInterval) clearInterval(this.cdInterval);             return;          }          const diff = Math.max(0, targetTime - now);          const d = Math.floor(diff / (1000 * 60 * 60 * 24));          const h = Math.floor((diff / (1000 * 60 * 60)) % 24);          const m = Math.floor((diff / 1000 / 60) % 60);          const s = Math.floor((diff / 1000) % 60);          if (this.cdDays) this.cdDays.textContent = d;          if (this.cdHrs) this.cdHrs.textContent = h;          if (this.cdMin) this.cdMin.textContent = m;          if (this.cdSec) this.cdSec.textContent = s;        }        init() {          this.initCountdown();          try {            initAnalytics();          } catch (e) {            console.warn('Deals Widget Analytics Error:', e);          }                    this.bindEvents();                    let initialQuery = '';                    let searchSource = window.location.search;          if (this.hostContainer && this.hostContainer.hasAttribute('data-widget-config')) {            searchSource = this.hostContainer.getAttribute('data-widget-config');          } else if (typeof window !== 'undefined' && window.__WIDGET_CONFIG__) {            searchSource = window.__WIDGET_CONFIG__;          }          const params = new URLSearchParams(searchSource);          let initialViewMode = params.get('view_mode');          if (!params.has('search') && !params.has('q') && !params.has('query') && initialViewMode !== 'savings_squad') {             initialQuery = 'Everything';             if (this.discountFilter && !params.has('min_discount_ratio')) {               this.discountFilter.value = '5';             }          }          const website = params.get('website') || 'tomsguide';          this.website = website;          if (website === 'techradar') {            const squadHeader = this.root.querySelector('.tg-df-savings-squad-header');            if (squadHeader) {               const pic = squadHeader.querySelector('picture');               if (pic) pic.style.display = 'none';            }            const style = document.createElement('style');            style.innerHTML = `              .tg-df-container .hawk-affiliate-link-deal-button, .tg-df-container .tg-df-card-cta { background-color: #5DAF08 !important; }              .tg-df-container .hawk-affiliate-link-deal-button:hover, .tg-df-container .tg-df-card-cta:hover { background-color: #4a8c06 !important; }            `;            this.root.appendChild(style);          }                    if (this.regionSelect) {            this.regionSelect.value = params.get('region') || 'auto';            this.updatePriceDropdownCurrency();          }                    if (this.retailerSelect && params.has('retailer')) {            this.retailerSelect.value = params.get('retailer');          }                    if (params.has('brands')) {            const b = params.get('brands');            if (b) {              this.selectedBrands = b.split(',');            }          }                    if (this.offerTypeSelect && params.has('offer_type')) {            this.offerTypeSelect.value = params.get('offer_type');          }          if (params.has('bg_color')) {            const bg = params.get('bg_color');            if (bg === 'white') {              this.root.style.setProperty('background-color', '#ffffff', 'important');            } else if (bg === 'transparent') {              this.root.style.setProperty('background-color', 'transparent', 'important');            } else if (bg === 'light_blue') {              this.root.style.setProperty('background-color', '#E7F0FF', 'important');            }          } else {             this.root.style.removeProperty('background-color');          }                    if (params.has('view_mode')) {            if (this.viewModeSelect) {              this.viewModeSelect.value = params.get('view_mode');            } else {              this.viewModeOverride = params.get('view_mode');            }          }          if (this.rowsSelect && params.has('rows')) {            this.rowsSelect.value = params.get('rows');          }          if (params.has('price')) {            const priceVal = params.get('price');            if (this.priceFilter) {               // Try assigning it directly to select. If it's not present implicitly ignores               this.priceFilter.value = priceVal;            }            if (priceVal.includes('_')) {               const parts = priceVal.split('_');               if (this.customPriceMin && parts[0]) this.customPriceMin.value = parts[0];               if (this.customPriceMax && parts[1]) this.customPriceMax.value = parts[1];            }          }          if (this.discountFilter && params.has('min_discount_ratio')) {            // Need to convert back from ratio (e.g. 0.8) to select value (e.g. "20")            const ratioStr = params.get('min_discount_ratio');            const ratioFloat = parseFloat(ratioStr);            if (!isNaN(ratioFloat)) {               const percentage = Math.round((1 - ratioFloat) * 100);               this.discountFilter.value = percentage.toString();            }          }          if (this.sortSelect) {            this.sortSelect.value = params.get('sort') || 'discount_desc';          }          if (this.dealModeToggle && params.has('deal_mode')) {            this.dealModeToggle.checked = params.get('deal_mode') === 'true' || params.get('deal_mode') === '1';          }                    // Re-apply layout after params have updated control values          this.applyLayoutMode();                    if (params.get('search')) {            initialQuery = params.get('search');          } else if (params.get('q')) {            initialQuery = params.get('q');          } else if (params.get('query')) {            initialQuery = params.get('query');          }                    this.currentQuery = initialQuery;          if (this.searchInput) {            this.searchInput.value = this.currentQuery;          }                    if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {            this.fetchDeals(this.currentQuery);          } else {            this.render();          }        }        updatePriceDropdownCurrency() {          if (!this.priceFilter || !this.regionSelect) return;          const currencySymbols = {            'US': '$',            'GB': '£',            'CA': '$CA',            'AU': '$AU',            'DE': '€',            'FR': '€',            'IT': '€',          };          const area = this.getAreaCode();          const cur = currencySymbols[area || 'US'] || '$';                    const options = this.priceFilter.options;          for (let i = 0; i < options.length; i++) {            const opt = options[i];            if (opt.value === 'all') {              opt.innerText = 'All Prices';            } else if (opt.value === 'under50') {              opt.innerText = `Under ${cur}50`;            } else if (opt.value === '50_100') {              opt.innerText = `${cur}50 - ${cur}100`;            } else if (opt.value === '100_200') {              opt.innerText = `${cur}100 - ${cur}200`;            } else if (opt.value === '200_500') {              opt.innerText = `${cur}200 - ${cur}500`;            } else if (opt.value === 'over500') {              opt.innerText = `Over ${cur}500`;            }          }        }        populateBrandDropdown(values) {          if (!this.brandDropdown || !this.brandFilterWrapper) return;          this.brandFilterWrapper.style.display = 'flex'; // show the wrapper                    let html = '';          const allChecked = this.selectedBrands.length === 0 ? 'checked' : '';          const _div = '<' + '/div>';          const _span = '<' + '/span>';          html += `\x3Cdiv class="tg-df-ms-option">\x3Cinput type="checkbox" value="" ${allChecked} class="tg-df-brand-chk"> Any Brand${_div}`;                    values.forEach(v => {             if (!v.formatted_value || v.formatted_value === 'Any Brand') return;             const isChecked = this.selectedBrands.includes(v.formatted_value) ? 'checked' : '';             html += `\x3Cdiv class="tg-df-ms-option">\x3Cinput type="checkbox" value="${this.escapeHTML(v.formatted_value)}" ${isChecked} class="tg-df-brand-chk"> ${this.escapeHTML(v.formatted_value)} \x3Cspan style="color:var(--tg-df-text-muted);font-size:12px">(${v.count || 0})${_span}${_div}`;          });                    this.brandDropdown.innerHTML = html;                    // Re-bind listeners          const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');          chks.forEach(chk => {            chk.addEventListener('change', (e) => {              const val = e.target.value;              if (val === '') {                this.selectedBrands = [];              } else {                if (e.target.checked) {                   if (!this.selectedBrands.includes(val)) this.selectedBrands.push(val);                } else {                   this.selectedBrands = this.selectedBrands.filter(b => b !== val);                }              }                            if (this.selectedBrands.length === 0) {                 this.brandTrigger.innerText = 'Any Brand';              } else if (this.selectedBrands.length === 1) {                 this.brandTrigger.innerText = this.selectedBrands[0];              } else {                 this.brandTrigger.innerText = `${this.selectedBrands.length} Brands selected`;              }                            // Only call API if changed from UI interactions              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                 this.updateURLParams();                 this.fetchDeals(this.currentQuery);              }            });          });                    // Update button text on load          if (this.selectedBrands.length === 0) {             this.brandTrigger.innerText = 'Any Brand';          } else if (this.selectedBrands.length === 1) {             this.brandTrigger.innerText = this.selectedBrands[0];          } else {             this.brandTrigger.innerText = `${this.selectedBrands.length} Brands selected`;          }        }        updateURLParams() {          const url = new URL(window.location);          if (this.currentQuery && this.currentQuery !== 'Gaming laptops') {            url.searchParams.set('q', this.currentQuery);          } else {            url.searchParams.delete('q');            url.searchParams.delete('search');            url.searchParams.delete('query');          }                    if (this.regionSelect && this.regionSelect.value !== 'auto') {            url.searchParams.set('region', this.regionSelect.value);          } else {            url.searchParams.delete('region');          }                    if (this.retailerSelect && this.retailerSelect.value) {            url.searchParams.set('retailer', this.retailerSelect.value);          } else {            url.searchParams.delete('retailer');          }                    if (this.selectedBrands && this.selectedBrands.length > 0) {            url.searchParams.set('brands', this.selectedBrands.join(','));          } else {            url.searchParams.delete('brands');          }                    if (this.offerTypeSelect && this.offerTypeSelect.value) {            url.searchParams.set('offer_type', this.offerTypeSelect.value);          } else {            url.searchParams.delete('offer_type');          }                    if (this.viewModeSelect && this.viewModeSelect.value !== 'auto') {            url.searchParams.set('view_mode', this.viewModeSelect.value);          } else {            url.searchParams.delete('view_mode');          }                    if (this.rowsSelect && this.rowsSelect.value !== '12') {            url.searchParams.set('rows', this.rowsSelect.value);          } else {            url.searchParams.delete('rows');          }                    const min = this.customPriceMin ? this.customPriceMin.value : '';          const max = this.customPriceMax ? this.customPriceMax.value : '';          if (min || max) {             url.searchParams.set('price', `${min}_${max}`);          } else if (this.priceFilter && this.priceFilter.value !== 'all') {            url.searchParams.set('price', this.priceFilter.value);          } else {            url.searchParams.delete('price');          }                    if (this.discountFilter && this.discountFilter.value !== 'all' && this.discountFilter.value !== '0') {            const v = parseInt(this.discountFilter.value);            if (!isNaN(v) && v > 0) {               const ratio = (100 - v) / 100;               url.searchParams.set('min_discount_ratio', ratio.toString());            }          } else {            url.searchParams.delete('min_discount_ratio');          }                    if (this.sortSelect && this.sortSelect.value !== 'discount_desc') {            url.searchParams.set('sort', this.sortSelect.value);          } else {            url.searchParams.delete('sort');          }                    if (this.dealModeToggle && this.dealModeToggle.checked) {            url.searchParams.set('deal_mode', 'true');          } else {            url.searchParams.delete('deal_mode');          }                    window.history.replaceState({}, '', url);        }        bindEvents() {          const roundels = this.root.querySelectorAll('.tg-df-carousel-cat.original-hardcoded');          roundels.forEach(r => {             r.addEventListener('click', () => {                const q = r.getAttribute('data-query');                const pr = r.getAttribute('data-pr');                if (typeof trackHawkEvent !== 'undefined') {                     trackHawkEvent({                         clickType: "CC",                         widgetId: this.widgetId,                         productCategoryName: "deals",                         zeroBasedProductIndexOrNull: null,                         totalDealsOrProducts: null,                         areaClicked: "Category Roundel",                         revenueId: this.revenueId,                         isoCurrencyCode: typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD',                         queryName: q,                         widgetTypeName: this.widgetTypeName                     });                 }                this.currentQuery = q;                const label = this.root.querySelector('#tg-df-carousel-title-label');                if (label) label.textContent = 'Best ' + q;                if (this.priceFilter) this.priceFilter.value = pr || 'all';                if (this.discountFilter) this.discountFilter.value = '5';                if (this.searchInput) this.searchInput.value = q;                                roundels.forEach(ro => ro.classList.remove('active'));                r.classList.add('active');                this.fetchDeals(this.currentQuery);             });          });          const discBtns = this.root.querySelectorAll('.tg-df-carousel-filter-btn');          discBtns.forEach(b => {             b.addEventListener('click', () => {                const d = b.getAttribute('data-d');                const pr = b.getAttribute('data-pr');                const ot = b.getAttribute('data-ot');                let label = b.innerText ? b.innerText.trim() : '';                let filterType = 'unknown';                let filterVal = 'unknown';                if (d !== null) { filterType = 'discount'; filterVal = d; }                else if (pr !== null) { filterType = 'price'; filterVal = pr; }                else if (ot !== null) { filterType = 'offertype'; filterVal = ot; }                if (typeof trackElementInteraction === 'function') trackElementInteraction({ id: `filter-${filterType}-${filterVal}`, name: 'Filter Button', label: label });                                if (d !== null) {                   if (this.discountFilter) this.discountFilter.value = this.discountFilter.value === d ? '0' : d;                } else if (pr !== null) {                   if (this.priceFilter) this.priceFilter.value = this.priceFilter.value === pr ? 'all' : pr;                } else if (ot !== null) {                   if (this.offerTypeSelect) this.offerTypeSelect.value = this.offerTypeSelect.value === ot ? 'all' : ot;                } else {                   if (this.discountFilter) this.discountFilter.value = '0';                   if (this.priceFilter) this.priceFilter.value = 'all';                   if (this.offerTypeSelect) this.offerTypeSelect.value = 'all';                }                if (d === null && pr === null && ot === null && b.getAttribute("data-type") !== "custom") {                   discBtns.forEach(ro => ro.classList.remove('active'));                   b.classList.add('active');                } else if (b.getAttribute("data-type") !== "custom") {                   // Only operate on hardcoded buttons (those without data-type)                   discBtns.forEach(ro => {                      if (!ro.getAttribute('data-d') && !ro.getAttribute('data-pr') && !ro.getAttribute('data-ot') && ro.getAttribute('data-type') !== 'custom') ro.classList.remove('active');                   });                                      let makeActive = true;                   if (d !== null) {                       if (b.classList.contains('active')) makeActive = false;                       discBtns.forEach(ro => { if (ro.getAttribute('data-d') !== null && ro.getAttribute('data-type') !== 'custom') ro.classList.remove('active') });                   } else if (pr !== null) {                       if (b.classList.contains('active')) makeActive = false;                       discBtns.forEach(ro => { if (ro.getAttribute('data-pr') !== null && ro.getAttribute('data-type') !== 'custom') ro.classList.remove('active') });                   } else if (ot !== null) {                       if (b.classList.contains('active')) makeActive = false;                       discBtns.forEach(ro => { if (ro.getAttribute('data-ot') !== null && ro.getAttribute('data-type') !== 'custom') ro.classList.remove('active') });                   }                                      if (makeActive) b.classList.add('active');                                      // Check if anything is active, if not activate "All"                   let anyActive = false;                   discBtns.forEach(ro => { if (ro.classList.contains('active') && ro.getAttribute('data-type') !== 'custom') anyActive = true; });                   if (!anyActive) {                       discBtns.forEach(ro => { if (!ro.getAttribute('data-d') && !ro.getAttribute('data-pr') && !ro.getAttribute('data-ot') && ro.getAttribute('data-type') !== 'custom') ro.classList.add('active'); });                   }                }                                this.fetchDeals(this.currentQuery);             });          });          if (this.brandTrigger && this.brandDropdown) {            this.brandTrigger.addEventListener('click', () => {              this.brandDropdown.classList.toggle('active');            });            document.addEventListener('click', (e) => {              if (this.brandFilterWrapper && !e.composedPath().includes(this.brandFilterWrapper)) {                this.brandDropdown.classList.remove('active');              }            });          }          let debounceTimer;          if(this.searchInput) {            this.searchInput.addEventListener('input', (e) => {              clearTimeout(debounceTimer);              const query = e.target.value.trim();              this.currentQuery = query;              if (this.getViewMode() === 'savings_squad' && this.autocompleteDropdown && this.airedaleTags && query.length > 0) {                 const matches = this.airedaleTags.filter(t => t.toLowerCase().includes(query.toLowerCase()) && t.toLowerCase() !== query.toLowerCase()).slice(0, 5);                 if (matches.length > 0) {                    this.autocompleteDropdown.innerHTML = matches.map(m => `\x3Cdiv class="tg-df-autocomplete-item" data-tag="${this.escapeHTML(m)}">${this.escapeHTML(m)}<` + `/div>`).join('');                    this.autocompleteDropdown.classList.add('active');                 } else {                    this.autocompleteDropdown.classList.remove('active');                 }              } else if (this.autocompleteDropdown) {                 this.autocompleteDropdown.classList.remove('active');              }              debounceTimer = setTimeout(() => {                this.updateURLParams();                if (query.length > 2) {                  this.fetchDeals(query);                } else if (query.length === 0) {                  this.deals = [];                  this.render();                }              }, 400);            });            this.searchInput.addEventListener('keypress', (e) => {              if (e.key === 'Enter') {                if (this.autocompleteDropdown) this.autocompleteDropdown.classList.remove('active');                clearTimeout(debounceTimer);                const query = e.target.value.trim();                this.currentQuery = query;                this.activeDealTag = null;                trackElementInteraction({ id: 'search-submit', name: 'Ask', label: 'Ask (main search)', text: query });                this.updateURLParams();                if (query.length > 2 || (this.getViewMode() === 'savings_squad')) {                   this.fetchDeals(query);                }              }            });          }          if (this.autocompleteDropdown) {             this.autocompleteDropdown.addEventListener('click', (e) => {                const item = e.target.closest('.tg-df-autocomplete-item');                if (item) {                   const tag = item.getAttribute('data-tag');                   this.currentQuery = tag;                   if (this.searchInput) this.searchInput.value = tag;                   this.activeDealTag = tag;                   this.autocompleteDropdown.classList.remove('active');                   this.updateURLParams();                   this.fetchDeals(tag);                }             });             document.addEventListener('click', (e) => {               if (this.autocompleteDropdown && this.searchInput && !e.composedPath().includes(this.searchInput) && !e.composedPath().includes(this.autocompleteDropdown)) {                 this.autocompleteDropdown.classList.remove('active');               }             });          }          if (this.searchBtn) {            this.searchBtn.addEventListener('click', () => {              if (this.autocompleteDropdown) this.autocompleteDropdown.classList.remove('active');              clearTimeout(debounceTimer);              const query = this.searchInput.value.trim();              trackElementInteraction({ id: 'search-submit', name: 'Ask', label: 'Ask (main search)', text: query });              this.activeDealTag = null;              this.currentQuery = query;              this.updateURLParams();              if (query.length > 2 || (this.getViewMode() === 'savings_squad')) {                 this.fetchDeals(query);              }            });          }          if(this.sortSelect) this.sortSelect.addEventListener('change', () => {            trackElementInteraction({ id: `sort-option-${this.sortSelect.value}`, name: 'Sort', label: `Sort: ${this.sortSelect.options[this.sortSelect.selectedIndex].text}` });            this.updateURLParams();            if (this.deals.length > 0) {              this.sortData();              this.render();            }          });                    const priceFilter = this.root.querySelector('#tg-df-price-filter');          if (priceFilter) {            this.priceFilter = priceFilter;            this.priceFilter.addEventListener('change', () => {              trackElementInteraction({ id: `filter-price-${this.priceFilter.value}`, name: 'Price', label: this.priceFilter.options[this.priceFilter.selectedIndex].text });              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              } else {                this.render();              }            });          }          const updateCustomPrice = () => {             this.updateURLParams();             if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);             } else {                this.render();             }          };          if (this.customPriceMin) {             this.customPriceMin.addEventListener('change', updateCustomPrice);             this.customPriceMin.addEventListener('keypress', (e) => {                if (e.key === 'Enter') updateCustomPrice();             });          }          if (this.customPriceMax) {             this.customPriceMax.addEventListener('change', updateCustomPrice);             this.customPriceMax.addEventListener('keypress', (e) => {                if (e.key === 'Enter') updateCustomPrice();             });          }          const discountFilter = this.root.querySelector('#tg-df-discount-filter');          if (discountFilter) {            this.discountFilter = discountFilter;            this.discountFilter.addEventListener('change', () => {              trackElementInteraction({ id: `filter-discount-${this.discountFilter.value}`, name: 'Discount', label: this.discountFilter.options[this.discountFilter.selectedIndex].text });              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              } else {                this.render();              }            });          }          if (this.categoryFilter) {            this.categoryFilter.addEventListener('change', (e) => {               const val = e.target.value === 'all' ? null : e.target.value;               this.activeDealTag = val;               this.fetchSavingsSquad();            });          }                    if (this.settingsToggle) {            this.settingsToggle.addEventListener('click', () => {              const o = this.settingsPanel.classList.toggle('active');              this.settingsBackdrop.classList.toggle('active');              if (o) trackElementInteraction({ id: 'filter-open', name: 'Filters', label: 'Open filters' });            });          }                    if (this.settingsBackdrop) {            this.settingsBackdrop.addEventListener('click', () => {              this.settingsPanel.classList.remove('active');              this.settingsBackdrop.classList.remove('active');            });          }                    if (this.regionSelect) {            this.regionSelect.addEventListener('change', () => {              trackElementInteraction({ id: `filter-region-${this.regionSelect.value}`, name: 'Region', label: this.regionSelect.options[this.regionSelect.selectedIndex].text });              this.updateURLParams();              this.updatePriceDropdownCurrency();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              }            });          }                    if (this.retailerSelect) {            this.retailerSelect.addEventListener('change', () => {              trackElementInteraction({ id: `filter-merchant-${this.retailerSelect.value}`, name: 'Retailer', label: this.retailerSelect.options[this.retailerSelect.selectedIndex].text });              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              }            });          }                    if (this.offerTypeSelect) {            this.offerTypeSelect.addEventListener('change', () => {              trackElementInteraction({ id: `filter-offertype-${this.offerTypeSelect.value}`, name: 'Offer Type', label: this.offerTypeSelect.options[this.offerTypeSelect.selectedIndex].text });              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              }            });          }                    if (this.viewModeSelect) {            this._prevViewMode = this.viewModeSelect.value;            this.viewModeSelect.addEventListener('change', () => {              trackElementInteraction({ id: `filter-viewmode-${this.viewModeSelect.value}`, name: 'View Mode', label: this.viewModeSelect.options[this.viewModeSelect.selectedIndex].text });                            // Reset all active toggles and filters to prevent config carry-over              this.selectedBrands = [];              if (this.brandTrigger) this.brandTrigger.innerText = 'Select Brands';              if (this.brandDropdown) {                const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');                chks.forEach(chk => { chk.checked = false; });              }              if (this.priceFilter) this.priceFilter.value = 'all';              if (this.customPriceMin) this.customPriceMin.value = '';              if (this.customPriceMax) this.customPriceMax.value = '';              if (this.sortSelect) this.sortSelect.value = this.viewModeSelect.value === 'savings_squad' ? 'date_desc' : 'discount_desc';              if (this.discountFilter) this.discountFilter.value = '0';              if (this.retailerSelect) this.retailerSelect.value = '';              if (this.offerTypeSelect) this.offerTypeSelect.value = '';              if (this.rowsSelect) this.rowsSelect.value = '12';              if (this.categoryFilter) this.categoryFilter.value = 'all';              this.activeDealTag = null;              this.updateURLParams();              this.applyLayoutMode();                            if (this.getViewMode() === 'savings_squad' || this._prevViewMode === 'savings_squad') {                this.fetchDeals(this.currentQuery);              } else {                this.render();              }              this._prevViewMode = this.viewModeSelect.value;            });          }                    if (this.rowsSelect) {            this.rowsSelect.addEventListener('change', () => {              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              }            });          }                    if (this.dealModeToggle) {            this.dealModeToggle.addEventListener('change', () => {              this.updateURLParams();              this.render();            });          }          if (this.editorModeToggle) {             this.editorModeToggle.addEventListener('change', (e) => {                this.editorMode = e.target.checked;                this.render();                this.updateFloatingCopyBar();             });          }          if (this.editorCopyBtn) {             this.editorCopyBtn.addEventListener('click', () => {                this.copySelectedDealsToCMS();             });          }          if (this.editorClearBtn) {             this.editorClearBtn.addEventListener('click', () => {                this.selectedDeals.clear();                this.render();                this.updateFloatingCopyBar();             });          }          if (this.grid) {            this.grid.addEventListener('change', (e) => {               if (e.target.classList.contains('tg-df-deal-checkbox')) {                  const dealId = e.target.getAttribute('data-id');                  if (e.target.checked) {                     const dealObj = this.deals.find(d => d.id === dealId);                     if (dealObj) this.selectedDeals.set(dealId, dealObj);                  } else {                     this.selectedDeals.delete(dealId);                  }                  this.updateFloatingCopyBar();               }            });            this.grid.addEventListener('click', (e) => {              const dealCard = e.target.closest('[data-action="deal-click"]');              const similarCard = e.target.closest('[data-action="view-similar-click"]');              const cardLink = dealCard || similarCard;              if (cardLink) {                const productName = cardLink.getAttribute('data-product-name');                const merchantName = cardLink.getAttribute('data-merchant-name');                const productId = cardLink.getAttribute('data-analytics-id');                const price = parseFloat(cardLink.getAttribute('data-price')) || null;                const prevPriceStr = cardLink.getAttribute('data-previous-price');                const previousPrice = prevPriceStr ? parseFloat(prevPriceStr) : null;                const originalLink = cardLink.getAttribute('data-original-link');                const rewrittenLink = cardLink.getAttribute('href');                const revenueId = cardLink.getAttribute('data-revenue-id');                const index = parseInt(cardLink.getAttribute('data-index'), 10) || 0;                const inStock = cardLink.getAttribute('data-in-stock') === 'true';                const totalText = cardLink.getAttribute('data-total');                const totalDeals = parseInt(totalText, 10) || 0;                const productCategoryName = 'deals';                const trackingParams = {                  widgetId: this.widgetId,                  productCategoryName: productCategoryName,                  product: {                    modelId: cardLink.getAttribute('data-model-id') || null,                    matchId: cardLink.getAttribute('data-match-id') || null,                    brand: cardLink.getAttribute('data-model-brand') || null,                    parent: cardLink.getAttribute('data-model-parent') || null,                    name: productName,                    price: price,                    previousPrice: previousPrice,                    link: rewrittenLink,                    originalLink: originalLink,                    inStock: inStock                  },                  zeroBasedProductIndexOrNull: index,                  totalDealsOrProducts: totalDeals,                   merchant: {                    id: cardLink.getAttribute('data-merchant-id') || null,                    network: cardLink.getAttribute('data-merchant-network') || null,                    url: cardLink.getAttribute('data-merchant-url') || null,                    name: merchantName                  },                  revenueId: revenueId,                  widgetTypeName: this.widgetTypeName,                  isoCurrencyCode: normalizeCurrency(this.escapeHTML(cardLink.getAttribute('data-currency') || '$'))                };                if (dealCard) {                  trackDealClick(trackingParams);                } else {                  trackViewSimilarClick(trackingParams);                }              }              const couponsBtn = e.target.closest('[data-action="coupons-click"]');              if (couponsBtn) {                trackElementInteraction({                  id: 'product-card-show-coupons',                  name: 'Coupons',                  label: `Product card coupons: ${couponsBtn.getAttribute('data-merchant')}`                });              }            });          }          this.setupScrollListeners();        }        setupScrollListeners() {          const containers = [             this.root.querySelector('.tg-df-carousel-roundels'),             this.root.querySelector('.tg-df-carousel-filters-wrap'),             this.root.querySelector('#tg-df-grid')          ];                    containers.forEach(container => {             if (!container) return;                          const checkScroll = () => {                if (!container.parentElement) return;                const leftBtn = container.parentElement.querySelector('.tg-df-carousel-scroll-left');                const rightBtn = container.parentElement.querySelector('.tg-df-carousel-scroll-right');                                if (leftBtn) {                   if (container.scrollLeft <= 5) leftBtn.style.display = 'none';                   else leftBtn.style.display = 'flex';                }                                if (rightBtn) {                   if (container.scrollWidth <= container.clientWidth) {                       rightBtn.style.display = 'none';                   } else if (container.scrollLeft >= container.scrollWidth - container.clientWidth - 5) {                       rightBtn.style.display = 'none';                   } else {                       rightBtn.style.display = 'flex';                   }                }             };                          container.addEventListener('scroll', checkScroll);             checkScroll();                          window.addEventListener('resize', checkScroll);                          const observer = new MutationObserver(checkScroll);             observer.observe(container, { childList: true, subtree: true, characterData: false });          });        }        get widgetTypeName() {          const mode = this.viewModeSelect ? this.viewModeSelect.value : (this.viewModeOverride || 'auto');          switch(mode) {              case 'carousel': return 'Carousel';              case 'savings_squad': return 'Savings Squad';              case 'grid': return 'Grid';              case 'row': return 'Row';              default: return 'Auto Collection';          }        }        getRowsLimit() {          if (this.rowsSelect && this.rowsSelect.value) return parseInt(this.rowsSelect.value, 10);          let configSource = window.location.search;          if (this.hostContainer && this.hostContainer.hasAttribute('data-widget-config')) {             configSource = this.hostContainer.getAttribute('data-widget-config');          } else if (typeof window !== 'undefined' && window.__WIDGET_CONFIG__) {             configSource = window.__WIDGET_CONFIG__;          }          const params = new URLSearchParams(configSource);          if (params.has('rows')) return parseInt(params.get('rows'), 10) || 12;          return 12;        }        getAreaCode() {          if (this.regionSelect && this.regionSelect.value) {            if (this.regionSelect.value === 'auto') return null;            return this.regionSelect.value;          }          let area = null;          try {            const locale = window.navigator.language || window.navigator.userLanguage;            if (locale && locale.includes('-')) {              area = locale.split('-')[1].toUpperCase();            } else if (locale && locale.length === 2) {              if (locale.toUpperCase() === 'EN') { area = 'US'; }              else { area = locale.toUpperCase(); }            }          } catch (e) { /* Ignore */ }                    // Map to known valid options or fallback to US          const valid = ['US', 'GB', 'CA', 'AU', 'DE', 'FR', 'IT'];          if (area === 'UK') area = 'GB';          if (valid.includes(area)) {             return area;          }          return 'US';        }                async loadCarouselSpreadsheet() {          try {              const parseCSVRow = (str) => {                  let result = [], cur = '', inQuotes = false;                  for (let i = 0; i < str.length; i++) {                      let char = str[i];                      if (inQuotes) {                          if (char === '"') {                              if (str[i + 1] === '"') { cur += '"'; i++; }                              else { inQuotes = false; }                          } else { cur += char; }                      } else {                          if (char === '"') { inQuotes = true; }                          else if (char === ',') { result.push(cur); cur = ''; }                          else { cur += char; }                      }                  }                  result.push(cur); return result;              };              const parseCSV = (str) => {                  const rows = []; let curRow = '', inQuotes = false;                  for (let i = 0; i < str.length; i++) {                      let char = str[i];                      if (char === '"') inQuotes = !inQuotes;                      if ((char === '\n' || char === '\r') && !inQuotes) {                          if (char === '\r' && str[i+1] === '\n') i++;                          if (curRow) rows.push(parseCSVRow(curRow));                          curRow = '';                      } else { curRow += char; }                  }                  if (curRow) rows.push(parseCSVRow(curRow));                  return rows;              };              const preloadedCSV = decodeURIComponent(escape(atob("LCwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNQ0KUm91bmRlbCB0ZXh0LEFsbCxUVnMsRm9vdHdlYXIsQXBwYXJlbCxNYXR0cmVzZXMsQXBwbGlhbmNlcyxXZWFyYWJsZSB0ZWNoLEhlYWRwaG9uZXMsU21hcnQgSG9tZSxTcGVha2VycyxMYXB0b3BzLFRhYmxldHMsQ29tcHV0aW5nLFBob25lcyxHYW1pbmcsTGVnbw0KUm91bmRlbCBpbWFnZSxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Nob3AtYXNzZXRzL2Nhcm91c2VsL2FpLnBuZyxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Nob3AtYXNzZXRzL2Nhcm91c2VsL3R2cy5wbmcsaHR0cHM6Ly9pbWFnZXMuZmllLmZ1dHVyZWNkbi5uZXQvcHJvZHVjdHMvN2IzYTIyNGIwNzk2M2M2MjdiNmI5MDliZDc4MzM4MzZlMDJmZjgxOS5qcGcud2VicCxodHRwczovL2ltYWdlcy5maWUuZnV0dXJlY2RuLm5ldC9wcm9kdWN0cy84NGRhYzVkNDhlZDJkNDQ4NTU5ZWJhNjdhY2U4MzE0Y2M2N2NjZDk0LmpwZy53ZWJwLGh0dHBzOi8vd3d3LnRvbXNndWlkZS5jb20vc2hvcC1hc3NldHMvY2Fyb3VzZWwvbWF0dHJlc3Nlcy5wbmcsaHR0cHM6Ly9pbWFnZXMuZmllLmZ1dHVyZWNkbi5uZXQvcHJvZHVjdHMvNzY4ZTk3Y2ViMDcxODAxZmFlMjA5MTBkMDgyMGIxNmY3NDdhZjkzOS5qcGcud2VicCxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Nob3AtYXNzZXRzL2Nhcm91c2VsL3dlbGxuZXNzLnBuZyxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Nob3AtYXNzZXRzL2Nhcm91c2VsL2hlYWRwaG9uZXMuanBnLGh0dHBzOi8vaW1hZ2VzLmZpZS5mdXR1cmVjZG4ubmV0L3Byb2R1Y3RzLzg5NTM1YmVlYmUyMGRiYmQ0YTM0NmQ2ZDZiZGZlOTFkOGE4ODRhMjEuanBnLndlYnAsaHR0cHM6Ly93d3cudG9tc2d1aWRlLmNvbS9zaG9wLWFzc2V0cy9jYXJvdXNlbC9hdWRpby5qcGcsaHR0cHM6Ly93d3cudG9tc2d1aWRlLmNvbS9zaG9wLWFzc2V0cy9jYXJvdXNlbC9sYXB0b3BzLmpwZyxodHRwczovL2ltYWdlcy5maWUuZnV0dXJlY2RuLm5ldC9wcm9kdWN0cy8yMzk3NTY0ZWQ3YTVmZjk0N2U5YjZiMzBlNTRmNDc0OTRiODQxZjg5LmpwZy53ZWJwLGh0dHBzOi8vd3d3LnRvbXNndWlkZS5jb20vc2hvcC1hc3NldHMvY2Fyb3VzZWwvY29tcHV0aW5nLmpwZyxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Nob3AtYXNzZXRzL2Nhcm91c2VsL3Bob25lcy5wbmcsaHR0cHM6Ly93d3cudG9tc2d1aWRlLmNvbS9zaG9wLWFzc2V0cy9jYXJvdXNlbC9nYW1pbmcucG5nLGh0dHBzOi8vaW1hZ2VzLmZpZS5mdXR1cmVjZG4ubmV0L3Byb2R1Y3RzLzRmNmM2MjFjYWMwYmMxYTg1ZDU5M2UzNTk0YmE1YjM0OWVmZmQyOTIuanBnLndlYnANClNlYXJjaCBRdWVyeSxFdmVyeXRoaW5nLFRlbGV2aXNpb25zLCJTbmVha2VycywgcnVubmluZyBzaG9lcywgc2FuZGFscyIsQ2xvdGhpbmcsTWF0dHJlc3NlcyxIb21lIEFwcGxpYW5jZXMsV2VhcmFibGVzICYgRml0bmVzcyBUZWNoLEhlYWRwaG9uZXMsSG9tZSBUZWNoLFNwZWFrZXJzLExhcHRvcHMsVGFibGV0cyxDb21wdXRpbmcsUGhvbmVzLEdhbWluZyxDb25zdHJ1Y3Rpb24gVG95cw0KRGlzY291bnQgQW1vdW50LG1pbiA1JSxtaW4gMTAlLG1pbiA1JSxtaW4gNSUsbWluIDUlLG1pbiA1JSxtaW4gNSUsbWluIDUlLG1pbiA1JSxtaW4gNSUsbWluIDUlLG1pbiA1JSxtaW4gNSUsbWluIDUlLG1pbiA1JSxtaW4gNSUNClByaWNlIFJhbmdlLCwsLCxtaW4gJDQwMCwsLCxtaW4gJDI1LCxtaW4gJDMwMCwsLG1pbiAkMTAwLCwNCkJyYW5kIFNlbGVjdGlvbiwsLCwsLCwsLCwsLCwsLCwNCkZpbHRlciBidXR0b25zLCwsLCwsLCwsLCwsLCwsLA0KMSxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMNCjIsQW1hem9uIGRlYWxzLFVuZGVyICQxMDAwLDUwJSBvZmYsQWRpZGFzLEFtYXpvbiBkZWFscyxBbWF6b24gZGVhbHMsNTAlIG9mZixBbWF6b24gZGVhbHMsQW1hem9uIGRlYWxzLEFtYXpvbiBkZWFscyxBbWF6b24gZGVhbHMsQW1hem9uIGRlYWxzLEFtYXpvbiBkZWFscyxBbWF6b24gZGVhbHMsQW1hem9uIGRlYWxzLEFtYXpvbiBkZWFscw0KMyxPdmVyICQ0MDAsVW5kZXIgJDUwMCxIb2thLE5pa2UsU2FhdHZhLE5pbmphLDQwJSBvZmYsSkxhYiwsSkJMLERlbGwsLEFzdXMsQXBwbGUsQ29uc29sZXMsU3RhciBXYXJzDQo0LFVuZGVyICQxMDAwLDUwJSBvZmYsU2tlY2hlcnMsVW5kZXIgQXJtb3VyLEhlbGl4LFNoYXJrLEdhcm1pbixBbmtlciBTb3VuZGNvcmUsUmluZyxTb25vcyxBcHBsZSxBcHBsZSxUUC1saW5rLFNhbXN1bmcsQWNjZXNzb3JpZXMsVW5kZXIgJDI1DQo1LFVuZGVyICQ1MDAsTEcsQXNpY3MsQ29sdW1iaWEsRHJlYW1DbG91ZCxLZXVyaWcsQXBwbGUsU29ueSxHb3ZlZSxUcmliaXQsTGVub3ZvLFNhbXN1bmcsRWVybyxHb29nbGUsR2FtZXMsVW5kZXIgJDUwDQo2LDUwJSBvZmYsU2Ftc3VuZyxOaWtlLFBhdGFnb25pYSxOZWN0YXIsRGUnTG9uZ2hpLEFtYXpmaXQsQXBwbGUsS2FzYSBzbWFydCxTb255LEFsaWVud2FyZSxUQ0wsTmV0Z2VhcixNb3Rvcm9sYSxOaW50ZW5kbyxCb3RhbmljYWxzDQo3LEFtYXpvbixIaXNlbnNlLE5ldyBCYWxhbmNlLEFyYyd0ZXJ5eCxUZW1wdXItcGVkaWMsRHlzb24sRml0Yml0LEJlYXRzLFBoaWxpcHMgSHVlLEFua2VyLEFjZXIsT25lUGx1cyxEZWxsLE9uZVBsdXMsU29ueSxEaXNuZXkNCjgsQXBwbGUsVENMLEFkaWRhcyxDYXJoYXJ0dCxCZWFyLEJpc3NlbGwsU2Ftc3VuZyxFYXJmdW4sQmxpbmssQmVhdHMsTVNJLE1pY3Jvc29mdCxBY2VyLE5vdGhpbmcsWGJveCxNYXJ2ZWwNCjksLFNvbnksU2F1Y29ueSxUaGUgTm9ydGggRmFjZSxTaWVuYSxOdXRyaWJ1bGxldCxPdXJhLFNhbXN1bmcsR29vZ2xlIE5lc3QgLE1hcnNoYWxsLFNhbXN1bmcsTGVub3ZvLExlbm92bywsLFBva2Vtb24NCjEwLCxSb2t1LEJpcmtlbnN0b2NrLENSWiBZb2dhLFdpbmtCZWRzLEJsYWNrIGFuZCBEZWNrZXIsUmluZ2Nvbm4sQ01GLEV1ZnksU2Ftc3VuZyxNaWNyb3NvZnQsUmVNYXJrYWJsZSxBbGllbndhcmUsLCwNCjExLCwsQnJvb2tzLFRoZSBHeW0gUGVvcGxlLEJyb29rbHluIGJlZGRpbmcsTmVzcHJlc3NvLCwxTW9yZSxBcmxvLCxSYXplciwsQ29yc2FpciwsLA0KMTIsLCxDcm9jcywsRWlnaHQgU2xlZXAsQ3Vpc2luYXJ0LCxKQkwsLCwsLEhQLCwsDQpOb3RlcywsLCwsLCwsLCwsLCwsLCwNCiwsIlByaW9yaXRpc2UgYmlnZ2VzdCAlLyQgZGlzY291bnQsIFR2cyB3aXRoIH41MCUgb2ZmIGhhdmUgYmVlbiB0aGUgbW9zdCBwb3B1bGFyIGV2ZW4gaWYgdGhleSBhcmUgc3RpbGwgZXhwZW5zaXZlIiwiTm8gcGF0dGVybiB0byBwcmljaW5nL2Rpc2NvdW50LCByZWFkZXJzIG1haW5seSBzaG9wIGJ5IGJyYW5kL3JlY29nbmlzYWJsZSBzaG9lcyIsIk5vIHBhdHRlcm4gdG8gcHJpY2luZy9kaXNjb3VudCwgcmVhZGVycyBtYWlubHkgc2hvcCBieSBicmFuZCIsIkEgbGFiZWwgd2lsbCBkZWZpbml0ZWx5IGhlbHAgaGVyZSBlLmcuIGJlc3QgZm9yIHNpZGUgc2xlZXBlciwgYmVzdCBtZW1vcnkgZm9hbSIsIkFwcGxpYW5jZXMgaXMgYSBiaWcgY2F0ZWdvcnksIGlzIGl0IHBvc3NpYmxlIHRvIHNwbGl0IGludG8ga2l0Y2hlbiBhcHBsaWFuY2VzLCBmbG9vcmNhcmUsIGFpciBoZWFsdGgvY29vbGluZz8gT3Igc2ltaWxhciIsIkZvY3VzIG9uIHZhbHVlIGZvciBtb25leSwgR2FybWlucyB3aXRoIH41MCUgb2ZmIGhhdmUgYmVlbiBwb3B1bGFyIGV2ZW4gdGhvdWdoIHRoZXkgYXJlIHN0aWxsICQ1MDAiLCwsLCxJbmNsdWRlIEtpbmRsZXMsSSB3b3VsZCBpbmNsdWRlIHdpZmkgcm91dGVycyBoZXJlIGluc3RlYWQgb2Ygc21hcnQgaG9tZSxDYW4gd2Ugc3VyZmFjZSBwaG9uZSBwcm92aWRlciBkZWFscz8gVC1tb2JpbGUgYW5kIHZlcml6b24gd291bGQgbWFrZSBhIGxvdCBtb3JlIG1vbmV5IHRoYW4gQW1hem9uLCwNCiwsaGF2aW5nIGEgJ2Jlc3QgZm9yJyBsYWJlbCB3b3VsZCBiZSBoZWxwZnVsIGUuZy4gYmVzdCBmb3IgYnJpZ2h0IHJvb20sQ2FuIHdlIHN0b3Aga2lkcyBzaG9lcyBmcm9tIHB1bGxpbmcgdGhyb3VnaD8sIldpbGwgdGhpcyBpbmNsdWRlIGFjY2Vzc29yaWVzIGUuZy4gY2FwcywgYmFncywgaWYgc28gbWFrZSBzdXJlIHRoZXNlIGFyZSBtaXhlZCB0aHJvdWdob3V0IGNsb3RoaW5nIGRlYWxzIixXaWxsIHRoaXMgaW5jbHVkZSB0b3BwZXJzIGFuZCBwaWxsb3dzPyBTZWVpbmcgbW9yZSBtb21lbnR1bSB3aXRoIHRoaXMgY2F0ZWdvcnkgcmVjZW50bHkgc28gYSBiZWRkaW5nIHRhYiBtaWdodCB3b3JrLCwiTmVlZCB0byBtYWtlIHN1cmUgYmFuZHMsIHNjcmVlbiBwcm90ZWN0b3JzIGV0Yy4gZG9uJ3QgcHVsbCBpbnRvIGhlcmUiLCwsLCwsLCwsDQosLCJQcmlvcml0aXNlIDY1JycgYW5kIDU1JyBpbmNoIFRWcywgdGhlbiBiaWdnZXIgc2NyZWVucyBiZWZvcmUgdGhlIHNtYWxsZXIgc2l6ZXMiLCwsUXVlZW4gaXMgdGhlIG1vc3QgcG9wdWxhciBzaXplIGluIHRoZSBVUyAtIHByaW9yaXRpc2UgZGVhbHMgZm9yIHRoaXMgc2l6ZSwsLCwsLCwsLCwsDQosLCwsLCwsLCwsLCwsLCwsDQpDYXRlZ29yaWVzIHRvIGNvbnNpZGVyLCxQcm9kdWN0cyBpbmNsdWRlZCwsLCwsLCwsLCwsLCwsDQpVbmRlciAkNTA/LCxBaXIgdGFncywsLCwsLCwsLCwsLCwsDQosLFBvcnRhYmxlIGNoYXJnZXJzL3dpcmVsZXNzIGNoYXJnZXJzLCwsLCwsLCwsLCwsLCwNCiwsIldhdGVyIGJvdHRsZXMgKHN0YW5sZXlzLCBPd2FsYSwgSHlkcm8gZmxhc2ssIFlldGkpIiwsLCwsLCwsLCwsLCwsDQosLEhhbmQgaGVsZCBmYW5zLCwsLCwsLCwsLCwsLCwNCiwsLCwsLCwsLCwsLCwsLCwNCmhvbWUgb2ZmaWNlLCxvZmZpY2UgY2hhaXJzLCwsLCwsLCwsLCwsLCwNCiwsc3RhbmRpbmcgZGVza3MsLCwsLCwsLCwsLCwsLA0KLCxtb25pdG9ycywsLCwsLCwsLCwsLCwsDQosLEtleWJvYXJkcywsLCwsLCwsLCwsLCwsDQosLGRvY2tpbmcgc3RhdGlvbiwsLCwsLCwsLCwsLCwsDQosLCwsLCwsLCwsLCwsLCwsDQpHYW1pbmcsLENvbnNvbGVzLCwsLCwsLCwsLCwsLCwNCiwsQWNjZXNzb3JpZXMsLCwsLCwsLCwsLCwsLA0KLCxHYW1lcywsLCwsLCwsLCwsLCwsDQosLENvdWxkIGluY2x1ZGUgTGVnbz8sLCwsLCwsLCwsLCwsLA==")));              const text = preloadedCSV;              const parsed = parseCSV(text);                            const rowsByName = {};              let filterStart = -1;              parsed.forEach((rc, i) => {                 if (rc && rc.length > 0 && rc[0]) rowsByName[rc[0]] = rc;                 if (rc && rc.length > 0 && rc[0] === 'Filter buttons') filterStart = i;              });                            const cols = [];              if(rowsByName['Roundel text']) {                const headerRow = rowsByName['Roundel text'];                for(let col = 1; col < headerRow.length; col++) {                   let label = headerRow[col];                   if (!label) continue;                                      let q = rowsByName['Search Query'] && rowsByName['Search Query'][col] ? rowsByName['Search Query'][col] : '';                   let img = rowsByName['Roundel image'] && rowsByName['Roundel image'][col] ? rowsByName['Roundel image'][col] : '';                   let ds = rowsByName['Discount Amount'] && rowsByName['Discount Amount'][col] ? rowsByName['Discount Amount'][col] : '';                   let pr = rowsByName['Price Range'] && rowsByName['Price Range'][col] ? rowsByName['Price Range'][col] : '';                   let rt = rowsByName['Retailer'] && rowsByName['Retailer'][col] ? rowsByName['Retailer'][col] : '';                   let ot = rowsByName['Offer Type'] && rowsByName['Offer Type'][col] ? rowsByName['Offer Type'][col] : '';                                      let filters = [];                   if(filterStart > 0) {                     for(let r = filterStart + 1; r < parsed.length; r++) {                         if(!parsed[r] || parsed[r][0] === 'Notes' || parsed[r][0] === 'Categories to consider') break;                         let f = parsed[r][col];                         if(f) filters.push(f);                     }                   }                   cols.push({ label, img, q, ds, pr, rt, ot, filters });                }              }              this.carouselData = cols;              if (this.carouselData && this.carouselData.length > 0) {                 const isMatched = this.carouselData.some(c => c.q === this.currentQuery || c.label === this.currentQuery);                 if (!isMatched) {                    const first = this.carouselData[0];                    this.currentQuery = first.q || first.label;                    if (this.priceFilter) this.priceFilter.value = 'all';                    if (this.customPriceMin) this.customPriceMin.value = '';                    if (this.customPriceMax) this.customPriceMax.value = '';                    let dPr = first.pr || 'all';                    if (typeof dPr === 'string' && dPr !== 'all') {                       let prLower = dPr.toLowerCase();                       if (prLower.includes('min') || prLower.includes('over')) {                          let m = dPr.match(/(\d+)/);                          if (m && this.customPriceMin) this.customPriceMin.value = m[1];                       } else if (prLower.includes('max') || prLower.includes('under')) {                          let m = dPr.match(/(\d+)/);                          if (m && this.customPriceMax) this.customPriceMax.value = m[1];                       }                    }                    let dAm = '0';                    if(first.ds && typeof first.ds === 'string') {                       let m = first.ds.match(/(\d+)/);                       if(m) dAm = m[1];                    }                    if (this.discountFilter) this.discountFilter.value = dAm;                    if (this.offerTypeSelect) this.offerTypeSelect.value = first.ot || '';                    if (this.retailerSelect) this.retailerSelect.value = first.rt || '';                    this.selectedBrands = [];                    if (this.brandDropdown) {                        const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');                        chks.forEach(chk => chk.checked = false);                    }                    if (this.searchInput) this.searchInput.value = this.currentQuery;                 }              }              this.renderCarouselUI();          } catch(e){ console.warn(e); }        }                renderCarouselUI() {           const roundelWrapper = this.root.querySelector('.tg-df-carousel-roundels');           if(!roundelWrapper || !this.carouselData) return;                      let html = '';           this.carouselData.forEach(r => {              const q = r.q || r.label;              const isActive = (this.currentQuery === q || this.currentQuery === r.label) ? 'active' : '';              const imgHtml = r.img ? `\x3Cimg src="${r.img}" alt="${r.label}" />` : `\x3Csvg width="32" height="32" fill="#1F69FF" viewBox="0 0 24 24">\x3Cpath d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"/>\x3C/svg>`;              html += `                \x3Cdiv class="tg-df-roundel tg-df-carousel-cat ${isActive}" data-label="${this.escapeHTML(r.label)}">                  \x3Cdiv class="tg-df-roundel-img-box">${imgHtml}\x3C/div>                  \x3Cspan class="tg-df-roundel-label">${this.escapeHTML(r.label)}\x3C/span>                \x3C/div>              `;           });           roundelWrapper.innerHTML = html;                      // Rebind clicks           const roundels = this.root.querySelectorAll('.tg-df-carousel-cat');           roundels.forEach(rNode => {             rNode.addEventListener('click', () => {                const r = this.carouselData.find(c => c.label === rNode.getAttribute('data-label'));                 if(!r) return;                                  if (typeof trackHawkEvent !== 'undefined') {                     trackHawkEvent({                         clickType: "CC",                         widgetId: this.widgetId,                         productCategoryName: "deals",                         zeroBasedProductIndexOrNull: null,                         totalDealsOrProducts: null,                         areaClicked: "Category Roundel",                         revenueId: this.revenueId,                         isoCurrencyCode: typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD',                         queryName: r.label,                         widgetTypeName: this.widgetTypeName                     });                 }                this.currentQuery = r.q || r.label;                const labelTitle = this.root.querySelector('#tg-df-carousel-title-label');                if (labelTitle) labelTitle.textContent = 'Best ' + this.currentQuery;                if (this.priceFilter) this.priceFilter.value = 'all';                if (this.customPriceMin) this.customPriceMin.value = '';                if (this.customPriceMax) this.customPriceMax.value = '';                let dPr = r.pr || 'all';                if (typeof dPr === 'string' && dPr !== 'all') {                   let prLower = dPr.toLowerCase();                   if (prLower.includes('min') || prLower.includes('over')) {                      let m = dPr.match(/(\d+)/);                      if (m && this.customPriceMin) this.customPriceMin.value = m[1];                   } else if (prLower.includes('max') || prLower.includes('under')) {                      let m = dPr.match(/(\d+)/);                      if (m && this.customPriceMax) this.customPriceMax.value = m[1];                   }                }                                let discountAmount = '0';                if(r.ds && typeof r.ds === 'string') {                   let m = r.ds.match(/(\d+)/);                   if(m) discountAmount = m[1];                }                if (this.discountFilter) this.discountFilter.value = discountAmount;                if (this.offerTypeSelect) this.offerTypeSelect.value = r.ot || '';                if (this.retailerSelect) this.retailerSelect.value = r.rt || '';                                // Clear brands                    this.selectedBrands = [];                    if (this.brandDropdown) {                    const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');                    chks.forEach(chk => chk.checked = false);                }                                if (this.searchInput) this.searchInput.value = this.currentQuery;                                roundels.forEach(ro => ro.classList.remove('active'));                if (rNode) rNode.classList.add('active');                                this.renderCarouselFilters(r);                this.fetchDeals(this.currentQuery);             });           });                      // Auto-highlight active           const activeR = this.carouselData.find(c => c.q === this.currentQuery || c.label === this.currentQuery);           if(activeR) this.renderCarouselFilters(activeR);        }                renderCarouselFilters(r) {           const filtersWrap = this.root.querySelector('.tg-df-carousel-filters-wrap');           if(!filtersWrap) return;                      let html = `\x3Cbutton class="tg-df-carousel-filter-btn" data-type="all">All\x3C/button>`;                      r.filters.forEach(f => {              let fL = f.toLowerCase();              let icon = '';              let logic = `data-type="custom" data-v="${this.escapeHTML(f)}"`;              if (fL === 'amazon deals' || fL === 'prime deals') {                 html += `\x3Cbutton class="tg-df-carousel-filter-btn" ${logic}>\x3Cimg src="https://cdn.mos.cms.futurecdn.net/fwoVXvL79turN3Ph535m38-600-100.png" class="inactive-img" alt="" />\x3Cimg src="https://cdn.mos.cms.futurecdn.net/u75QjVpt3w2EsMimJiRo38-600-100.png" class="active-img" alt="" /> Prime deals\x3C/button>`;              } else if (fL === 'lightning deals') {                 html += `\x3Cbutton class="tg-df-carousel-filter-btn" ${logic}>\x3Cimg src="https://cdn.mos.cms.futurecdn.net/HqAui7w97ft2NPqBtQ5r38-600-100.png" class="inactive-img" alt="" />\x3Cimg src="https://cdn.mos.cms.futurecdn.net/yWPQ5yyQRhUwVKzGwYbh38-600-100.png" class="active-img" alt="" /> Lightning deals\x3C/button>`;              } else {                 if (fL.includes('lightning')) {                    icon = `\x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-zap">\x3Cpolygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2">\x3C/polygon>\x3C/svg>`;                 } else if (fL.includes('% off')) {                    icon = `\x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tag">\x3Cpath d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z">\x3C/path>\x3Ccircle cx="7.5" cy="7.5" r=".5" fill="currentColor">\x3C/circle>\x3C/svg>`;                 } else if (fL.includes('under') || fL.includes('min ')) {                    icon = `\x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-dollar-sign">\x3Cpath d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z">\x3C/path>\x3Cpath d="M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8">\x3C/path>\x3Cpath d="M12 18V6">\x3C/path>\x3C/svg>`;                 }                 html += `\x3Cbutton class="tg-df-carousel-filter-btn" ${logic}>${icon} ${this.escapeHTML(f)}\x3C/button>`;              }           });                      filtersWrap.innerHTML = html;                      const btns = filtersWrap.querySelectorAll('button');           btns.forEach(b => {             b.addEventListener('click', () => {                const type = b.getAttribute('data-type');                if (type === 'custom') {                   const v = b.getAttribute('data-v');                   if (typeof trackElementInteraction === 'function') trackElementInteraction({ id: `filter-custom-${(v||'').toLowerCase().replace(/[^a-z0-9]+/g, '-')}`, name: 'Custom Filter', label: v });                }                if (type === 'all') {                   if (typeof trackElementInteraction === 'function') trackElementInteraction({ id: 'filter-clear-all', name: 'Clear all', label: 'Clear all filters' });                   // reset everything                   btns.forEach(btn => btn.classList.remove('active'));                   b.classList.add('active');                                      // Reset prices                   if (this.priceFilter) this.priceFilter.value = 'all';                   if (this.customPriceMin) this.customPriceMin.value = '';                   if (this.customPriceMax) this.customPriceMax.value = '';                   let dPr = r.pr || 'all';                   if (typeof dPr === 'string' && dPr !== 'all') {                      let prLower = dPr.toLowerCase();                      if (prLower.includes('min') || prLower.includes('over')) {                         let m = dPr.match(/(\d+)/);                         if (m && this.customPriceMin) this.customPriceMin.value = m[1];                      } else if (prLower.includes('max') || prLower.includes('under')) {                         let m = dPr.match(/(\d+)/);                         if (m && this.customPriceMax) this.customPriceMax.value = m[1];                      }                   }                                      let discountAmount = '0';                   if(r.ds && typeof r.ds === 'string') {                      let m = r.ds.match(/(\d+)/);                      if(m) discountAmount = m[1];                   }                   if (this.discountFilter) this.discountFilter.value = discountAmount;                   if (this.offerTypeSelect) this.offerTypeSelect.value = r.ot || '';                   if (this.retailerSelect) this.retailerSelect.value = r.rt || '';                   this.selectedBrands = [];                   if (this.brandDropdown) {                     const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');                     chks.forEach(chk => chk.checked = false);                   }                } else {                   const v = b.getAttribute('data-v');                   const fL = v.toLowerCase();                                      let mapRet = ['amazon', 'walmart', 'best buy', 'target', 'john lewis', 'currys', 'argos'];                   const getCategory = (s) => {                      if (s === 'lightning deals' || s === 'amazon deals' || s === 'prime deals') return 'offer';                      if (s.includes('% off')) return 'discount';                      if (s.includes('under') || s.includes('over') || s.includes('min') || s.includes('max')) return 'price';                      if (mapRet.includes(s)) return 'retailer';                      return 'brand';                   };                   const cat = getCategory(fL);                   const wasActive = b.classList.contains('active');                   if (cat !== 'brand') {                      btns.forEach(btn => {                          if (btn === b) return;                          if (btn.getAttribute('data-type') === 'all') return;                          const bV = btn.getAttribute('data-v');                          if (!bV) return;                          if (getCategory(bV.toLowerCase()) === cat) btn.classList.remove('active');                      });                   }                   if (wasActive) b.classList.remove('active');                   else b.classList.add('active');                   let anyActive = Array.from(btns).some(btn => btn !== btns[0] && btn.classList.contains('active'));                   if (!anyActive) {                       btns[0].click();                       return;                   } else {                       btns[0].classList.remove('active');                   }                                      if (this.priceFilter) this.priceFilter.value = 'all';                   if (this.customPriceMin) this.customPriceMin.value = '';                   if (this.customPriceMax) this.customPriceMax.value = '';                   let dPr = r.pr || 'all';                   if (typeof dPr === 'string' && dPr !== 'all') {                      let prLower = dPr.toLowerCase();                      if (prLower.includes('min') || prLower.includes('over')) {                         let m = dPr.match(/(\d+)/);                         if (m && this.customPriceMin) this.customPriceMin.value = m[1];                      } else if (prLower.includes('max') || prLower.includes('under')) {                         let m = dPr.match(/(\d+)/);                         if (m && this.customPriceMax) this.customPriceMax.value = m[1];                      }                   }                                      let discountAmount = '0';                   if(r.ds && typeof r.ds === 'string') {                      let m = r.ds.match(/(\d+)/);                      if(m) discountAmount = m[1];                   }                   if (this.discountFilter) this.discountFilter.value = discountAmount;                   if (this.offerTypeSelect) this.offerTypeSelect.value = r.ot || '';                   if (this.retailerSelect) this.retailerSelect.value = r.rt || '';                   this.selectedBrands = [];                   btns.forEach(btn => {                       if (!btn.classList.contains('active') || btn.getAttribute('data-type') === 'all') return;                       const vv = btn.getAttribute('data-v');                       const vl = vv.toLowerCase();                                              if (vl === 'lightning deals') {                          if (this.offerTypeSelect) this.offerTypeSelect.value = 'amazon_lightning';                       } else if (vl === 'amazon deals' || vl === 'prime deals') {                          if (this.offerTypeSelect) this.offerTypeSelect.value = 'amazon_prime';                       } else if (vl.includes('% off')) {                          let m = vl.match(/(\d+)%/);                          if (m && this.discountFilter) this.discountFilter.value = m[1];                       } else if (vl.includes('under') || vl.includes('max')) {                          let m = vl.match(/(\d+)/);                          if (m && this.customPriceMax) this.customPriceMax.value = m[1];                       } else if (vl.includes('min') || vl.includes('over')) {                          let m = vl.match(/(\d+)/);                          if (m && this.customPriceMin) this.customPriceMin.value = m[1];                       } else {                          let foundR = mapRet.find(x => x === vl);                          if (foundR) {                             let realR = ['Amazon', 'Walmart', 'Best Buy', 'Target', 'John Lewis', 'Currys', 'Argos'].find(x => x.toLowerCase() === vl);                             if (this.retailerSelect) this.retailerSelect.value = realR;                          } else {                             this.selectedBrands.push(vv);                          }                       }                   });                                      if (this.brandDropdown) {                       const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');                       chks.forEach(c => c.checked = this.selectedBrands.includes(c.value));                   }                                      if (r.pr && typeof r.pr === 'string') {                       let prL = r.pr.toLowerCase();                       if (prL.includes('under $')) {                           let m = prL.match(/under \$(\d+)/i);                           if (m && this.customPriceMax && !this.customPriceMax.value) this.customPriceMax.value = m[1];                       }                   }                }                                this.fetchDeals(this.currentQuery);             });           });                      // default to highlighting first           btns[0].classList.add('active');        }async fetchDeals(query, append = false) {          if (!append) {             this.showLoading();             this.deals = [];             this.displayLimit = this.getRowsLimit();          } else {             this.displayLimit += this.getRowsLimit();          }                    try {            if (this.getViewMode() === 'savings_squad') {               await this.fetchSavingsSquad(append);            } else {               if (this.isBroadQuery(query)) {                 await this.fetchAdviserDeals(query, append);               } else {                 await this.fetchHawkDeals(query, append);                 if (this.deals.length === 0) {                   await this.fetchAdviserDeals(query, append);                 }               }            }          } catch (error) {            console.warn("[Tom's Guide Widget] Fetch error:", error);            this.showError();          }        }        async fetchSavingsSquad() {          let topArticles = this.airedaleArticles;          if (!topArticles) {            const airedaleUrl = `https://airedale.futurecdn.net/feeds/feed_1776420579726.json?site=tomsguide&articleType=deals&limit=50`;            let res;            try {               res = await fetch(airedaleUrl);            } catch(e) {               try { res = await fetch(`https://airedale.futurecdn.net/feeds/feed_1776420579726.json?site=tomsguide&articleType=deals&limit=50`); } catch (err) { console.warn("Fallback fetch failed", err); return; }            }            if (!res.ok) throw new Error('Airedale API Error');            const articles = await res.json();            topArticles = Array.isArray(articles) ? articles.slice(0, 50) : ((articles.data && Array.isArray(articles.data)) ? articles.data.slice(0, 50) : []);            this.airedaleArticles = topArticles;                        let tagCounts = {};            topArticles.forEach((a) => {              let articleTags = new Set();              if (a.articlecategory && Array.isArray(a.articlecategory)) {                 a.articlecategory.forEach((t) => articleTags.add(t));              }              articleTags.forEach(t => {                 tagCounts[t] = (tagCounts[t] || 0) + 1;              });            });                        this.airedaleTags = Object.keys(tagCounts).sort((a, b) => tagCounts[b] - tagCounts[a]);            this.airedaleTagCounts = tagCounts;          }                    let targetArticles = topArticles;          if (this.activeDealTag) {             const cleanTag = this.activeDealTag.toLowerCase().replace(/&/g, '').replace(/[^a-z0-9]+/g, '-').replace(/-+/g, '-').replace(/^-|-$/g, '');             const encodedTag = encodeURIComponent(cleanTag);             const url = `https://airedale.futurecdn.net/feeds/feed_1776420579726.json?site=tomsguide&articleType=deals&limit=50&articleCategoryHandle=${encodedTag}`;             try {                const res = await fetch(url);                if (res.ok) {                   const articles = await res.json();                   targetArticles = Array.isArray(articles) ? articles.slice(0, 50) : ((articles.data && Array.isArray(articles.data)) ? articles.data.slice(0, 50) : []);                }             } catch(e) {                console.warn("Failed to fetch by activeDealTag", e);             }          }          let extractedDeals = [];          let dynamicBrandsCounts = {};                    targetArticles.forEach((article) => {             if (!article.articlepage) return;                          let pageData = [];             try {                pageData = JSON.parse(article.articlepage[0]);             } catch(e){ console.warn(e); }                          const savingsSquad = pageData.filter((p) => p.type === 'deal' || p.type === 'featured-product');                          savingsSquad.forEach((block, idx) => {                const data = block.data || {};                const isFeatured = block.type === 'featured-product';                                const link = data.link || {};                const priceObj = data.price || {};                const image = data.image || {};                                if (data.brand) {                   data.brand = data.brand.replace(/^\d+\.\s*/, '').trim();                   dynamicBrandsCounts[data.brand] = (dynamicBrandsCounts[data.brand] || 0) + 1;                }                const externalUrl = isFeatured ? data.url : (link.href || null);                let summaryTitle = isFeatured ? (data.name || data.brand) : (data.productName || link.label || article.articlename);                let description = isFeatured ? (data.strapline || '') : (data.text || '');                                if (!isFeatured && !data.productName && data.text) {                   const brSplit = data.text.split(new RegExp('\x3Cbr\\s*\\/?\\x3E', 'i'));                   if (brSplit.length > 1) {                     summaryTitle = brSplit[0].replace(/<[^>]+>/g, '').trim();                     description = brSplit.slice(1).join(' ').replace(/<br\s*\/?>/gi, ' ').replace(/<\/?(p|div)[^>]*>/gi, ' ').replace(/<[^>]+>/g, '').replace(/\s+/g, ' ').trim();                   } else {                     const match = data.text.match(/\x3Cstrong>(.*?)<\/strong>/);                     if (match) {                       summaryTitle = match[1].replace(/<[^>]+>/g, '').trim();                       if (summaryTitle.endsWith(':')) summaryTitle = summaryTitle.slice(0, -1);                     }                   }                }                                let imageUrl = isFeatured ? image.mos : (image.src || null);                if (imageUrl && imageUrl.startsWith('//')) imageUrl = 'https:' + imageUrl;                                description = description.replace(/<br\s*\/?>/gi, ' ').replace(/<\/?(p|div)[^>]*>/gi, ' ').replace(/<[^>]+>/g, '').replace(/\s+/g, ' ').replace(/View Deal$/i, '').trim();                                let merchantName = data.retailer || '';                if (!merchantName && externalUrl) {                   try {                     merchantName = new URL(externalUrl).hostname.replace('www.', '').split('.')[0];                     merchantName = merchantName.charAt(0).toUpperCase() + merchantName.slice(1);                   }catch(e){ console.warn(e); }                }                if (!merchantName) merchantName = 'Retailer';                const q = (this.currentQuery || '').toLowerCase();                const activeTagLogic = (this.activeDealTag || '').toLowerCase();                if (q.length > 2 && q !== activeTagLogic) {                   const searchTarget = `${summaryTitle || ''} ${description || ''}`.toLowerCase();                   if (!searchTarget.includes(q)) return;                }                let rawPrice = 0;                let rawMsrp = 0;                let currencyStr = '$';                if (isFeatured) {                   rawPrice = typeof data.salePrice === 'number' && data.salePrice > 0 ? data.salePrice : (typeof data.price === 'number' ? data.price : 0);                   rawMsrp = typeof data.salePrice === 'number' && typeof data.price === 'number' && data.price > data.salePrice ? data.price : 0;                   currencyStr = data.currency === 'GBP' ? '£' : '$';                } else {                   rawPrice = priceObj.amount ? parseFloat(priceObj.amount) : 0;                   rawMsrp = priceObj.amountWas ? parseFloat(priceObj.amountWas) : 0;                   currencyStr = priceObj.currency === 'GBP' ? '£' : '$';                }                                let savingAmt = 0;                let savingLabel = '';                if (rawPrice > 0 && rawMsrp > rawPrice) {                   savingAmt = parseFloat((rawMsrp - rawPrice).toFixed(2));                   savingLabel = `Save ${currencyStr}${savingAmt}`;                }                                // Apply Brand filter                if (this.selectedBrands && this.selectedBrands.length > 0) {                   const itemBrand = (data.brand || '').toLowerCase();                   const hasMatch = this.selectedBrands.some(sb => sb.toLowerCase() === itemBrand);                   if (!hasMatch) return;                }                // Apply Price filter                let priceFilterVal = null;                const min = this.customPriceMin ? this.customPriceMin.value : '';                const max = this.customPriceMax ? this.customPriceMax.value : '';                if (min || max) {                   priceFilterVal = `${min}_${max}`;                } else if (this.priceFilter && this.priceFilter.value !== 'all') {                   priceFilterVal = this.priceFilter.value;                }                if (priceFilterVal && rawPrice > 0) {                   if (priceFilterVal === 'under50' && rawPrice >= 50) return;                   if (priceFilterVal === 'over50' && rawPrice <= 50) return;                   if (priceFilterVal === 'over30' && rawPrice <= 30) return;                   if (priceFilterVal === 'over500' && rawPrice <= 500) return;                   if (priceFilterVal.includes('_')) {                      const parts = priceFilterVal.split('_');                      const min = parseFloat(parts[0]);                      const max = parseFloat(parts[1]);                      if (!isNaN(min) && rawPrice < min) return;                      if (!isNaN(max) && rawPrice > max) return;                   }                }                // Apply Discount filter                if (this.discountFilter && this.discountFilter.value !== 'all' && this.discountFilter.value !== '0') {                   const requiredDiscount = parseInt(this.discountFilter.value);                   if (!isNaN(requiredDiscount) && requiredDiscount > 0) {                      if (!rawMsrp || rawMsrp <= rawPrice) return;                      const ratio = Math.round((1 - (rawPrice / rawMsrp)) * 100);                      if (ratio < requiredDiscount) return;                   }                }                                extractedDeals.push({                   id: `airedale-${article.id || Math.random()}-${idx}`,                   url: externalUrl,                   image: imageUrl,                   fallbackImage: imageUrl,                   title: summaryTitle,                   brand: data.brand || '',                   productName: data.productName || '',                   merchant: merchantName,                   rawPrice: rawPrice,                   rawMsrp: rawMsrp,                   price: rawPrice > 0 ? rawPrice.toString() : '',                   msrp: rawMsrp > 0 ? rawMsrp.toString() : '',                   currency: currencyStr,                   isCheckPrice: !rawPrice,                   savingLabel: savingLabel,                   savingType: rawMsrp > rawPrice ? 'amount' : 'none',                   isPrime: false,                   starRating: null,                   description: description,                   text: data.text || ''                });             });          });                    const airedaleBrandsList = Object.keys(dynamicBrandsCounts).map(b => ({              formatted_value: b,              count: dynamicBrandsCounts[b]          })).sort((a,b) => b.count - a.count);                    if (this.getViewMode() === 'savings_squad') {             this.populateBrandDropdown(airedaleBrandsList.slice(0, 15));             if (this.brandFilterWrapper) {                if (airedaleBrandsList.length === 0) {                    this.brandFilterWrapper.style.display = 'none';                } else {                    this.brandFilterWrapper.style.display = 'flex';                }             }          }                    this.deals = extractedDeals;          this.sortData();          this.render();          if (typeof trackDealsAppeared !== 'undefined') {             trackDealsAppeared(this.widgetId, this.deals, this.revenueId, typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD', this.currentQuery, this.widgetTypeName);          }        }        isBroadQuery(query) {          const q = query.toLowerCase();          const intentModifiers = ['deals', 'best', 'sale', 'under', 'cheap', 'offers', 'discount'];          return intentModifiers.some(term => q.includes(term));        }        async fetchHawkDeals(query, append = false) {          const url = new URL(this.apiUrl);          url.searchParams.append('model_name', query);          const areaCode = this.getAreaCode();          if (areaCode) {            url.searchParams.append('area', areaCode);          }                    if (append && this.deals.length > 0) {            url.searchParams.append('offset', this.deals.length.toString());          }                    if (this.retailerSelect && this.retailerSelect.value) {            url.searchParams.append('filter_merchant_name', this.retailerSelect.value);          }                    if (this.selectedBrands && this.selectedBrands.length > 0) {            url.searchParams.append('filter_label[text_brand]', this.selectedBrands.join(','));          }                    let priceVal = null;          const min = this.customPriceMin ? this.customPriceMin.value : '';          const max = this.customPriceMax ? this.customPriceMax.value : '';          if (min || max) {             priceVal = `${min}_${max}`;          } else if (this.priceFilter && this.priceFilter.value !== 'all') {             priceVal = this.priceFilter.value;          }          if (priceVal) {            if (priceVal === 'under50') {              url.searchParams.append('filter_max_price', '50');            } else if (priceVal === 'over50') {              url.searchParams.append('filter_min_price', '50');            } else if (priceVal === 'over30') {              url.searchParams.append('filter_min_price', '30');            } else if (priceVal === 'over500') {              url.searchParams.append('filter_min_price', '500');            } else if (priceVal.includes('_')) {              const parts = priceVal.split('_');              if (parts[0]) url.searchParams.append('filter_min_price', parts[0]);              if (parts[1]) url.searchParams.append('filter_max_price', parts[1]);            }          }                    if (this.discountFilter && this.discountFilter.value !== 'all' && this.discountFilter.value !== '0') {            const v = parseInt(this.discountFilter.value);            if (!isNaN(v) && v > 0) {              const ratio = (100 - v) / 100;              url.searchParams.append('min_discount_ratio', ratio.toString());            }          }                    if (this.offerTypeSelect && this.offerTypeSelect.value) {            url.searchParams.append('offer', this.offerTypeSelect.value);          }                    url.searchParams.append('filter_product_types', 'deals');                    url.searchParams.append('rows', this.getRowsLimit().toString());          let response;          try {             response = await fetch(url.toString());          } catch(e) {             if (window.location.protocol === 'file:') {                console.warn("[Tom's Guide Widget] fetch from file:// blocked by local CORS policy, falling back to Adviser mock.");                await this.fetchAdviserDeals(query);                return;             }             console.warn("Hawk fetch failed", e);             this.deals = [];             this.render();             return;          }          if (!response.ok) {            throw new Error('Hawk API Response Error');          }          const rawData = await response.json();          // Safely locate data array from potentially wrapped response          let offers = [];          let modelInfoArray = [];                    let brandFilterData = null;          if (rawData && rawData.widget && rawData.widget.data && Array.isArray(rawData.widget.data.filters)) {             brandFilterData = rawData.widget.data.filters.find(f => f.type === 'label_text_brand');          } else if (rawData && rawData.data && Array.isArray(rawData.data.filters)) {             brandFilterData = rawData.data.filters.find(f => f.type === 'label_text_brand');          }          if (brandFilterData && Array.isArray(brandFilterData.values) && brandFilterData.values.length > 0) {             this.populateBrandDropdown(brandFilterData.values);          } else {             if (this.brandFilterWrapper && this.selectedBrands.length === 0) {                this.brandFilterWrapper.style.display = 'none';             }          }                    if (rawData && rawData.widget && rawData.widget.data) {            if (Array.isArray(rawData.widget.data.offers)) offers = rawData.widget.data.offers;            if (rawData.widget.data.model_info && typeof rawData.widget.data.model_info === 'object') {              modelInfoArray = Array.isArray(rawData.widget.data.model_info) ? rawData.widget.data.model_info : Object.values(rawData.widget.data.model_info);            }          } else if (rawData && rawData.data) {            if (Array.isArray(rawData.data.offers)) offers = rawData.data.offers;            if (rawData.data.model_info && typeof rawData.data.model_info === 'object') {              modelInfoArray = Array.isArray(rawData.data.model_info) ? rawData.data.model_info : Object.values(rawData.data.model_info);            }          } else {            if (Array.isArray(rawData)) offers = rawData;            else if (rawData && Array.isArray(rawData.offers)) offers = rawData.offers;            else if (rawData && rawData.offers && Array.isArray(rawData.offers.offer)) offers = rawData.offers.offer;            else if (rawData && rawData.offers) offers = [].concat(rawData.offers);                        if (rawData && rawData.model_info && typeof rawData.model_info === 'object') {              modelInfoArray = Array.isArray(rawData.model_info) ? rawData.model_info : Object.values(rawData.model_info);            }          }          let modelDetails = {};          modelInfoArray.forEach(m => {            const mId = m.model_id || m.id;            if (mId) {              modelDetails[mId] = {                score: m.score != null ? parseFloat(m.score) : null,                brand: m.brand || null,                parent: (m.parents && Array.isArray(m.parents) && m.parents.length > 0) ? m.parents[0].name : null              };            }          });          offers.forEach(item => {            let data = { ...item };            const mId = data.model_id;            if (mId && modelDetails[mId]) {              data.review_score = modelDetails[mId].score;              data.model_brand = modelDetails[mId].brand;              data.model_parent = modelDetails[mId].parent;            } else {              data.review_score = null;            }                        let itemOffers = [];            if (Array.isArray(item.offers)) itemOffers = item.offers;            else if (Array.isArray(item.offer)) itemOffers = item.offer;            else if (item.offers && typeof item.offers === 'object') itemOffers = [item.offers];            else if (item.offer && typeof item.offer === 'object') itemOffers = [item.offer];            if (itemOffers.length > 0) {              itemOffers.forEach(subItem => {                let subData = { ...item, ...subItem };                const subId = subData.model_id;                if (subId && modelDetails[subId]) {                  subData.review_score = modelDetails[subId].score;                  subData.model_brand = modelDetails[subId].brand;                  subData.model_parent = modelDetails[subId].parent;                } else if (data.review_score != null) {                  subData.review_score = data.review_score;                }                if (subData.merchant && typeof subData.merchant === 'object') {                  subData.merchant_name = subData.merchant.name;                }                this.deals.push(this.extractDealData(subData));              });              return;            }                        if (item.merchant && typeof item.merchant === 'object') {              data.merchant_name = item.merchant.name;            }                        this.deals.push(this.extractDealData(data));          });                    this.sortData();          this.render();          if (typeof trackDealsAppeared !== 'undefined') {             trackDealsAppeared(this.widgetId, this.deals, this.revenueId, typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD', this.currentQuery, this.widgetTypeName);          }        }        async fetchAdviserDeals(query) {          // ======================================================================          // TODO: ADVISER API REPLACEMENT          // The code below simulates the Adviser API response using mock data.          // Once the real endpoint is ready, remove getAdviserMockData() and           // perform an actual fetch() request similar to fetchHawkDeals().          // Example:          // const area = this.getAreaCode();          // let apiUrl = `https://your-adviser-api.com/search?q=${query}&area=${area}`;          // if (this.priceFilter && this.priceFilter.value !== 'all') {          //   const val = this.priceFilter.value;          //   if (val === 'under50') apiUrl += '&filter_max_price=50';          //   else if (val === '50_100') apiUrl += '&filter_max_price=100';          //   else if (val === '100_200') apiUrl += '&filter_max_price=200';          //   else if (val === '200_500') apiUrl += '&filter_max_price=500';          // }          // const res = await fetch(apiUrl);          // const rawData = await res.json();          // ======================================================================          // Simulating network latency          await new Promise(resolve => setTimeout(resolve, 400));                    const rawData = this.getAdviserMockData();          let offers = [];                    if (rawData && rawData.data && rawData.data.Get && Array.isArray(rawData.data.Get.Deal)) {            offers = rawData.data.Get.Deal;          }                    // Basic client-side filtering for the mock if we want it to react to the query          const q = query.toLowerCase();          const selectedRetailer = (this.retailerSelect && this.retailerSelect.value) ? this.retailerSelect.value.toLowerCase() : null;                    offers.forEach(item => {            const dataObj = item;                        // Apply retailer filter            const itemRetailer = (dataObj.dataRetailer || '').toLowerCase();            if (selectedRetailer && itemRetailer !== selectedRetailer && !itemRetailer.includes(selectedRetailer)) {              return;            }                        // Apply mock price filter            let price = dataObj.dataDiscountedPrice || 0;            if (typeof price === 'string') {              price = parseFloat(price.replace(/[^0-9.]/g, ''));            }            let priceVal = null;            const min = this.customPriceMin ? this.customPriceMin.value : '';            const max = this.customPriceMax ? this.customPriceMax.value : '';            if (min || max) {               priceVal = `${min}_${max}`;            } else if (this.priceFilter && this.priceFilter.value !== 'all') {               priceVal = this.priceFilter.value;            }            if (priceVal) {              if (priceVal === 'under50' && price >= 50) return;              if (priceVal === 'over50' && price <= 50) return;              if (priceVal === 'over30' && price <= 30) return;              if (priceVal === 'over500' && price <= 500) return;              if (priceVal.includes('_')) {                 const parts = priceVal.split('_');                 if (parts[0] && price < parseFloat(parts[0])) return;                 if (parts[1] && price > parseFloat(parts[1])) return;              }            }                        // Map Adviser schema to our widget's expected schema            const mappedData = {              url: dataObj.linkHREF || dataObj.dataLink || '#',              image: dataObj.imageURL || (dataObj.image && dataObj.image.src) || '',              title: dataObj.dataProduct || (dataObj.product && dataObj.product.name) || 'Product Deal',              merchant: dataObj.dataRetailer || 'Retailer',              price: dataObj.dataDiscountedPrice || 0,              currency: dataObj.dataCurrency === 'USD' ? '$' : (dataObj.dataCurrency || '$'),              msrp: dataObj.dataOriginalPrice || null            };                        const titleLow = mappedData.title.toLowerCase();            const merchLow = mappedData.merchant.toLowerCase();                        // Smarter mock filtering            let isMatch = false;            if (q === '' || this.isBroadQuery(q)) {              isMatch = true;            } else if (titleLow.includes(q) || merchLow.includes(q)) {              isMatch = true;            } else if ((q.includes('laptop') || q.includes('mac') || q.includes('pc')) && (titleLow.includes('macbook') || titleLow.includes('laptop'))) {              isMatch = true;            } else if ((q.includes('tv') || q.includes('television')) && (titleLow.includes('tv') || titleLow.includes('oled') || titleLow.includes('qled'))) {              isMatch = true;            } else if ((q.includes('phone') || q.includes('smartphone')) && (titleLow.includes('galaxy') || titleLow.includes('phone'))) {              isMatch = true;            } else if ((q.match(/watch|fitness|run|shoe/)) && (titleLow.includes('forerunner') || titleLow.includes('saucony') || titleLow.includes('watch'))) {              isMatch = true;            }                        if (isMatch) {               this.deals.push(this.extractDealData(mappedData));            }          });                    let rowLimit = this.getRowsLimit();          // Intentionally omitting the slice here to allow "Load More" to work if the API returns more                    this.sortData();          this.render();          if (typeof trackDealsAppeared !== 'undefined') {             trackDealsAppeared(this.widgetId, this.deals, this.revenueId, typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD', this.currentQuery, this.widgetTypeName);          }        }        getAdviserMockData() {          return {            "data": {              "Get": {                "Deal": [                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 300,                    "dataOriginalPrice": 399,                    "dataProduct": "Samsung Galaxy A36",                    "dataRetailer": "Samsung",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/MqDYsukV3JBG54te6dEs7j.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 14,                    "dataOriginalPrice": 24,                    "dataProduct": "Blink Mini",                    "dataRetailer": "Amazon",                    "imageURL": "http://cdn.mos.cms.futurecdn.net/3JurmAjHsDa5tPdaHAwEV8.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 59,                    "dataOriginalPrice": 99,                    "dataProduct": "Ring Video Doorbell",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/rAh4uR7AsAsALCCLTXnLNJ.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 10,                    "dataOriginalPrice": 599,                    "dataProduct": "MacBook Neo",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/Lg4Dvg68j9SbB5CPNrTEpH.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 749,                    "dataOriginalPrice": 849,                    "dataProduct": "65\\\" Fire TV Omni 4K QLED TV",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/SG34ZWodUkLTxJvMTbjPYR.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 71,                    "dataOriginalPrice": 160,                    "dataProduct": "Saucony Hurricane 24",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/vxf7UD5T2Am7guVzFoFcZ4.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 649,                    "dataOriginalPrice": 749,                    "dataProduct": "Garmin Forerunner 970",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/3GKnEu7CdhtxPMfnPCMCiA.png"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 1049,                    "dataOriginalPrice": 1499,                    "dataProduct": "LG 48\\\" C4 4K OLED TV",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/imvwZV9zoMD6fn9Afuge35.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 1499,                    "dataOriginalPrice": 2199,                    "dataProduct": "Samsung 49\\\" Odyssey Neo G9 4K Gaming Monitor",                    "dataRetailer": "Amazon",                    "imageURL": "http://cdn.mos.cms.futurecdn.net/XWDEJ5dUAE2nhK8k3Jk7k7.png"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 299,                    "dataOriginalPrice": 699,                    "dataProduct": "EGOHOME Black Memory Foam Mattress (queen)",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/hMUemtAejNETLVYxNrktzm.jpg"                  }                ]              }            }          };        }        decodeHTML(html) {          if (!html) return '';          const txt = document.createElement("textarea");          txt.innerHTML = String(html);          return txt.value;        }        extractDealData(item) {          const priceRawStr = String(item.price || item.current_price || '0');          const msrpRawStr = String(item.was_price || item.msrp || item.original_price || '0');          const rawPrice = parseFloat(priceRawStr.replace(/[^\d.]/g, '')) || 0;          const rawMsrp = parseFloat(msrpRawStr.replace(/[^\d.]/g, '')) || 0;          const isCheckPrice = rawPrice === 0 || priceRawStr === '0.00' || priceRawStr === '0';                    let originalImageUrl = item.image || item.image_url || item.product_image || '';          let imageUrl = originalImageUrl;          if ((!imageUrl || isCheckPrice) && item.model_image_url) {             imageUrl = item.model_image_url;             originalImageUrl = imageUrl;          } else if ((!imageUrl || isCheckPrice) && item.model_image) {             imageUrl = item.model_image;             originalImageUrl = imageUrl;          }                    if (imageUrl) {            imageUrl = imageUrl.replace(/-(\d+)-(\d+)(\.[a-z.]+)$/i, '$3');          }                    let fallbackImage = '';          if (originalImageUrl && originalImageUrl !== imageUrl) {             fallbackImage = originalImageUrl;          } else if (item.model_image && item.model_image !== imageUrl) {             fallbackImage = item.model_image;          } else if (item.model_image_url && item.model_image_url !== imageUrl) {             fallbackImage = item.model_image_url;          }                    const rawCurrency = item.currency || item.currency_symbol || '$';                    let savingLabel = item.percentage_saving_label || '';          if (!savingLabel && rawMsrp > rawPrice && rawPrice > 0) {            const pct = Math.round(((rawMsrp - rawPrice) / rawMsrp) * 100);            if (pct > 0) {              savingLabel = `${pct}% OFF`;            }          }                    const isPrime = item.shipping && item.shipping.prime === true;                    let scoreRaw = (item.review_score !== undefined && item.review_score !== null && item.review_score > 0) ? parseFloat(item.review_score) : null;          let starRating = 0;          if (scoreRaw !== null) {            starRating = Math.round((scoreRaw > 10 ? scoreRaw / 20 : scoreRaw / 2) * 2) / 2;          }                    return {            id: item.offer_id || item.link || item.url || item.offer_link || Math.random().toString(),            url: item.link || item.url || item.offer_link || '#',            image: imageUrl,            fallbackImage: fallbackImage,            title: item.name || item.title || item.model_name || item.product_name || 'Unknown Product',            brand: item.brand || '',            productName: item.model_name || item.product_name || item.name || '',            merchant: item.merchant_name || item.merchant || item.retailer || 'Retailer',            price: item.price !== undefined ? String(item.price) : '0.00',            currency: this.decodeHTML(rawCurrency),            msrp: item.was_price || item.msrp || item.original_price || null,            rawPrice: rawPrice,            rawMsrp: rawMsrp,            hasWasPrice: (item.was_price !== undefined && item.was_price !== null),            isCheckPrice: isCheckPrice,            savingLabel: savingLabel,            isPrime: isPrime,            starRating: starRating > 0 ? starRating : null,            modelId: item.model_id || '',            productKey: item.product_key || '',            merchantId: (item.merchant && typeof item.merchant === 'object') ? item.merchant.id || '' : '',            matchId: item.match_id || '',            merchantNetwork: (item.merchant && typeof item.merchant === 'object') ? item.merchant.an || '' : '',            merchantUrl: (item.merchant && typeof item.merchant === 'object') ? item.merchant.url || '' : '',            modelBrand: item.model_brand || item.brand || '',            modelParent: item.model_parent || ''          };        }        sortData() {          const sortVal = this.sortSelect ? this.sortSelect.value : (this.getViewMode() === 'savings_squad' ? 'date_desc' : 'discount_desc');          if (sortVal === 'price_asc') {            this.deals.sort((a, b) => a.rawPrice - b.rawPrice);          } else if (sortVal === 'price_desc') {            this.deals.sort((a, b) => b.rawPrice - a.rawPrice);          } else if (sortVal === 'discount_desc') {            this.deals.sort((a, b) => {              const aDiscount = a.rawMsrp > a.rawPrice ? (a.rawMsrp - a.rawPrice) : 0;              const bDiscount = b.rawMsrp > b.rawPrice ? (b.rawMsrp - b.rawPrice) : 0;              return bDiscount - aDiscount;            });          } else if (sortVal === 'date_desc') {             this.deals.sort((a, b) => {                let dateA = 0;                let dateB = 0;                if (a && a.modifiedDate) {                   const valA = Array.isArray(a.modifiedDate) ? a.modifiedDate[0] : a.modifiedDate;                   dateA = new Date(valA).getTime();                   if (isNaN(dateA)) dateA = 0;                }                if (b && b.modifiedDate) {                   const valB = Array.isArray(b.modifiedDate) ? b.modifiedDate[0] : b.modifiedDate;                   dateB = new Date(valB).getTime();                   if (isNaN(dateB)) dateB = 0;                }                return dateB - dateA;             });          }        }        getFilteredDeals() {          let filteredDeals = [...this.deals];                    if (this.dealModeToggle && this.dealModeToggle.checked) {            filteredDeals = filteredDeals.filter(d => d.hasWasPrice || (d.msrp && d.rawMsrp > d.rawPrice));          }                    return filteredDeals;        }        showLoading() {          const _div = '<' + '/div>';          const skeletonCardHtml = `            \x3Cdiv class="tg-df-card">              \x3Cdiv class="tg-df-card-image-box">                \x3Cdiv class="tg-df-skeleton tg-df-skeleton-img">${_div}              ${_div}              \x3Cdiv class="tg-df-card-body">                \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short">${_div}                \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text title">${_div}                \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text title">${_div}                \x3Cdiv class="tg-df-card-footer mt-auto">                  \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="height:24px;">${_div}                  \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text" style="height:44px; margin-top:8px;">${_div}                ${_div}              ${_div}            ${_div}`;          this.grid.innerHTML = Array(4).fill(skeletonCardHtml).join('');        }        showError() {          const _div = '<' + '/div>';          this.grid.innerHTML = `\x3Cdiv class="tg-df-message">            An error occurred while finding deals. Please check your connection and try again.          ${_div}`;        }        escapeHTML(str) {          if (!str) return '';          return String(str).replace(/[&<>'"]/g, tag => ({              '&': '&', '<': '<', '>': '>', "'": ''', '"': '"'          }[tag] || tag));        }                bindCouponButtons() {          const btns = this.root.querySelectorAll('.tg-df-tag-coupons');          btns.forEach(btn => {            btn.addEventListener('click', (e) => {              e.preventDefault();              e.stopPropagation();              const merchant = btn.getAttribute('data-merchant');              this.openVouchersModal(merchant);            });          });                    const closeBtn = this.root.querySelector('#tg-df-vouchers-close');          const backdrop = this.root.querySelector('#tg-df-vouchers-modal');          if (closeBtn) {            closeBtn.onclick = () => this.closeVouchersModal();          }          if (backdrop) {            backdrop.onclick = (e) => {              if (e.target === backdrop) this.closeVouchersModal();            };          }        }                closeVouchersModal() {          const backdrop = this.root.querySelector('#tg-df-vouchers-modal');          if (backdrop) backdrop.classList.remove('active');        }                async checkMerchantsCouponsBulk(merchants) {          if (!merchants || merchants.length === 0) return {};          const controller = new AbortController();          const timeoutId = setTimeout(() => controller.abort(), 4000);          try {            const area = this.getAreaCode();            const url = new URL('https://search-api.fie.future.net.uk/widget.php');            url.searchParams.append('model_name', 'Everything');            url.searchParams.append('language', 'en-GB');            if (area) url.searchParams.append('area', area);            url.searchParams.append('combine_product_types', '1');            url.searchParams.append('filter_merchant_name', merchants.join(','));            url.searchParams.append('all_filters', 'false');            url.searchParams.append('exclude_unlabelled', 'false');            url.searchParams.append('include_specs', 'false');            url.searchParams.append('sort', 'voucher');            url.searchParams.append('distinct_merchants', 'natural');            url.searchParams.append('filter_product_types', 'vouchers,offer_deals,newsletter');            url.searchParams.append('rows', '120');            url.searchParams.append('origin', 'widgets-clientside');                        let res; try { res = await fetch(url.toString(), { signal: controller.signal }); } catch (e) { return {}; }            clearTimeout(timeoutId);            if (!res.ok) return {};            const data = await res.json();                        let offers = [];            if (data && data.widget && data.widget.data && Array.isArray(data.widget.data.offers)) {              offers = data.widget.data.offers;            } else if (data && data.data && Array.isArray(data.data.offers)) {              offers = data.data.offers;            } else if (Array.isArray(data)) {              offers = data;            } else if (data && Array.isArray(data.offers)) {              offers = data.offers;            } else if (data && data.offers && Array.isArray(data.offers.offer)) {              offers = data.offers.offer;            } else if (data && Array.isArray(data.data)) {              offers = data.data;            }                        const foundMerchants = new Set();            offers.forEach(o => {              let mName = o.merchant_name || o.merchant || o.retailer;              if (mName && typeof mName === 'object') mName = mName.name;              if (mName) foundMerchants.add(String(mName).toLowerCase());            });            const resultMap = {};            merchants.forEach(m => {              if (m) resultMap[m] = foundMerchants.has(String(m).toLowerCase());            });            return resultMap;          } catch (e) {            return {};          }        }                async openVouchersModal(merchantName) {          const backdrop = this.root.querySelector('#tg-df-vouchers-modal');          const title = this.root.querySelector('#tg-df-vouchers-title');          const content = this.root.querySelector('#tg-df-vouchers-content');                    if (!backdrop || !content) return;                    // HACK: Hide closing tags          const _div = '<' + '/div>';          const _span = '<' + '/span>';          const _a = '<' + '/a>';          const _h4 = '<' + '/h4>';          const _svg = '<' + '/svg>';          const _circle = '<' + '/circle>';          const _polyline = '<' + '/polyline>';          const _rect = '<' + '/rect>';          const _path = '<' + '/path>';                    title.innerText = `${merchantName} Coupons & Deals`;          content.innerHTML = `\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text">${_div}                               \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text">${_div}`;          backdrop.classList.add('active');                    try {            const area = this.getAreaCode();            const url = new URL('https://search-api.fie.future.net.uk/widget.php');            url.searchParams.append('model_name', 'Everything');            url.searchParams.append('language', 'en-GB');            if (area) url.searchParams.append('area', area);            url.searchParams.append('combine_product_types', '1');            url.searchParams.append('filter_merchant_name', merchantName);            url.searchParams.append('all_filters', 'false');            url.searchParams.append('exclude_unlabelled', 'false');            url.searchParams.append('include_specs', 'false');            url.searchParams.append('sort', 'voucher');            url.searchParams.append('distinct_merchants', 'natural');            url.searchParams.append('filter_product_types', 'vouchers,offer_deals,newsletter');            url.searchParams.append('rows', '50');            url.searchParams.append('origin', 'widgets-clientside');                        const res = await fetch(url.toString());            if (!res.ok) throw new Error('API Error');            const data = await res.json();                        let offers = [];            if (data && data.widget && data.widget.data && Array.isArray(data.widget.data.offers)) {              offers = data.widget.data.offers;            } else if (data && data.data && Array.isArray(data.data.offers)) {              offers = data.data.offers;            } else if (Array.isArray(data)) {              offers = data;            } else if (data && Array.isArray(data.offers)) {              offers = data.offers;            } else if (data && data.offers && Array.isArray(data.offers.offer)) {              offers = data.offers.offer;            } else if (data && Array.isArray(data.data)) {              offers = data.data;            }                        if (offers.length === 0) {              content.innerHTML = `\x3Cdiv class="tg-df-message">No vouchers currently available for ${this.escapeHTML(merchantName)}.${_div}`;              return;            }                        content.innerHTML = offers.map((v, idx) => {              let offerObj = v;              if (v.offers && v.offers.offer) {                offerObj = Array.isArray(v.offers.offer) ? v.offers.offer[0] : v.offers.offer;              } else if (v.offer) {                offerObj = Array.isArray(v.offer) ? v.offer[0] : v.offer;              }              let logoUrl = v.logo_url || offerObj.logo_url || '';              if (!logoUrl && v.merchant) {                if (Array.isArray(v.merchant) && v.merchant.length > 0) logoUrl = v.merchant[0].logo_url || '';                else logoUrl = v.merchant.logo_url || '';              }                            const offerName = offerObj.name || offerObj.title || v.name || v.title || 'Special Offer';              const endTime = offerObj.end_time || v.end_time || '';              const linkUrl = offerObj.link || offerObj.url || v.link || v.url || '#';                            let foundVoucherCode = '';              const findVoucherCode = (obj) => {                if (!obj || typeof obj !== 'object') return;                if (obj.type === 'voucher_code' && obj.display_value) {                  foundVoucherCode = obj.display_value;                  return;                }                if (Array.isArray(obj)) {                  for (const item of obj) {                    findVoucherCode(item);                    if (foundVoucherCode) return;                  }                } else {                  for (const k in obj) {                    if (Object.prototype.hasOwnProperty.call(obj, k)) {                      findVoucherCode(obj[k]);                      if (foundVoucherCode) return;                    }                  }                }              };              findVoucherCode(offerObj);              if (!foundVoucherCode) findVoucherCode(v);                            const voucherCode = foundVoucherCode || offerObj.voucher_code || v.voucher_code || '';              const codeHtml = voucherCode ? `\x3Cspan class="tg-df-voucher-code" data-action="copy-code" data-code="${this.escapeHTML(voucherCode)}" title="Copy to clipboard">                \x3Cspan class="tg-df-voucher-code-text">${this.escapeHTML(voucherCode)}${_span}                \x3Csvg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-left:6px;flex-shrink:0;" class="tg-df-voucher-copy-icon">                  \x3Crect x="9" y="9" width="13" height="13" rx="2" ry="2">${_rect}                  \x3Cpath d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1">${_path}                ${_svg}              ${_span}` : '';                            const logoHtml = logoUrl                 ? `\x3Cimg src="${this.escapeHTML(logoUrl)}" alt="${this.escapeHTML(offerName)}" class="tg-df-voucher-logo" />`                 : `\x3Cdiv class="tg-df-voucher-logo" style="background:#e2e8f0;">${_div}`;                            let expiryHtml = '';              if (endTime) {                let dStr = endTime;                if (!isNaN(dStr) && String(dStr).length === 10) dStr = Number(dStr) * 1000;                const d = new Date(dStr);                if (!isNaN(d.getTime())) {                  const options = { year: 'numeric', month: 'short', day: 'numeric' };                  expiryHtml = `                    \x3Cdiv class="tg-df-voucher-expiry">                      \x3Csvg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">                        \x3Ccircle cx="12" cy="12" r="10">${_circle}                        \x3Cpolyline points="12 6 12 12 16 14">${_polyline}                      ${_svg}                      Expires ${d.toLocaleDateString(undefined, options)}                    ${_div}`;                }              }              const revenueIdVal = generateRevenueId(linkUrl, offerName, merchantName, null);              const rewrittenLinkUrl = rewriteAffiliateLink(linkUrl, area, revenueIdVal);              return `                \x3Ca href="${this.escapeHTML(rewrittenLinkUrl)}" target="_blank" rel="noopener nofollow" class="tg-df-voucher-item"                  data-action="voucher-click"                  data-product-name="${this.escapeHTML(offerName)}"                  data-merchant-name="${this.escapeHTML(merchantName)}"                  data-analytics-id="${this.escapeHTML(offerObj.offer_id || offerObj.id || v.id || '')}"                  data-price=""                  data-previous-price=""                  data-original-link="${this.escapeHTML(linkUrl)}"                  data-revenue-id="${revenueIdVal}"                  data-index="${idx}"                  data-total="${offers.length}"                  data-in-stock="true"                  data-currency="USD"                  data-model-id="${this.escapeHTML(offerObj.model_id || v.model_id || offerObj.id || v.id || '')}"                  data-merchant-id="${this.escapeHTML(offerObj.merchant_id || offerObj.merchant?.id || '')}"                >                  ${logoHtml}                  \x3Cdiv class="tg-df-voucher-content">                    \x3Ch4 class="tg-df-voucher-title">${this.escapeHTML(offerName)}${_h4}                    ${codeHtml}                    ${expiryHtml}                  ${_div}                ${_a}              `;            }).join('');                        // Attach copy functionality            const copyBtns = content.querySelectorAll('[data-action="copy-code"]');            copyBtns.forEach(btn => {              btn.addEventListener('click', async (e) => {                e.preventDefault();                e.stopPropagation();                                const code = btn.getAttribute('data-code');                if (!code) return;                                try {                  const copyToClipboard = async (text) => {                     if (window.navigator.clipboard && window.isSecureContext) {                        try { await window.navigator.clipboard.writeText(text); return; } catch (e) {}                     }                     const textArea = document.createElement("textarea");                     textArea.value = text;                     textArea.style.position = "fixed";                     document.body.appendChild(textArea);                     textArea.focus();                     textArea.select();                     document.execCommand('copy');                     textArea.remove();                  };                  await copyToClipboard(code);                                    // Visual feedback                  btn.classList.add('copied');                  const textSpan = btn.querySelector('.tg-df-voucher-code-text');                  const iconSvg = btn.querySelector('.tg-df-voucher-copy-icon');                                    const origText = textSpan.innerText;                  const origIcon = iconSvg.innerHTML;                                    textSpan.innerText = 'Copied!';                  iconSvg.innerHTML = `\x3Cpolyline points="20 6 9 17 4 12">${_polyline}`;                                    setTimeout(() => {                    if (btn) {                      btn.classList.remove('copied');                      if (textSpan) textSpan.innerText = origText;                      if (iconSvg) iconSvg.innerHTML = origIcon;                    }                  }, 2000);                                    trackElementInteraction({                    id: 'voucher-code-copy',                    name: 'Copy Voucher Code',                    label: `Copied ${code} for ${merchantName}`                  });                } catch (err) {                  console.warn('Failed to copy text: ', err);                }              });            });            // Attach voucher click tracking            const voucherBtns = content.querySelectorAll('[data-action="voucher-click"]');            voucherBtns.forEach(btn => {              btn.addEventListener('click', (e) => {                if (e.target.closest('[data-action="copy-code"]')) return;                                const productName = btn.getAttribute('data-product-name');                const merchantNameAttr = btn.getAttribute('data-merchant-name');                const productId = btn.getAttribute('data-analytics-id');                const price = parseFloat(btn.getAttribute('data-price')) || null;                const prevPriceStr = btn.getAttribute('data-previous-price');                const previousPrice = prevPriceStr ? parseFloat(prevPriceStr) : null;                const originalLink = btn.getAttribute('data-original-link');                const rewrittenLink = btn.getAttribute('href');                const revenueId = btn.getAttribute('data-revenue-id');                const index = parseInt(btn.getAttribute('data-index'), 10) || 0;                const inStock = btn.getAttribute('data-in-stock') === 'true';                const totalText = btn.getAttribute('data-total');                const totalDeals = parseInt(totalText, 10) || 0;                const productCategoryName = 'deals';                const trackingParams = {                  widgetId: this.widgetId,                  productCategoryName: productCategoryName,                  product: {                    modelId: btn.getAttribute('data-model-id') || null,                    matchId: btn.getAttribute('data-match-id') || null,                    brand: btn.getAttribute('data-model-brand') || null,                    parent: btn.getAttribute('data-model-parent') || null,                    name: productName,                    price: price,                    previousPrice: previousPrice,                    link: rewrittenLink,                    originalLink: originalLink,                    inStock: inStock                  },                  zeroBasedProductIndexOrNull: index,                  totalDealsOrProducts: totalDeals,                   merchant: {                    id: btn.getAttribute('data-merchant-id') || null,                    network: btn.getAttribute('data-merchant-network') || null,                    url: btn.getAttribute('data-merchant-url') || null,                    name: merchantNameAttr                  },                  revenueId: revenueId,                  widgetTypeName: this.widgetTypeName,                  isoCurrencyCode: btn.getAttribute('data-currency') || 'USD'                };                if (typeof trackDealClick === 'function') {                  trackDealClick(trackingParams);                }              });            });                                  } catch (e) {            console.warn(e);            content.innerHTML = `\x3Cdiv class="tg-df-message">Failed to load vouchers.${_div}`;          }        }        render() {          try {            if (this.getViewMode() === 'savings_squad' && this.airedaleTags.length > 0) {              if (this.categoryFilterWrapper) {                 this.categoryFilterWrapper.style.display = 'flex';              }              if (this.categoryFilter) {                 const _option = '<' + '/option>';                 let optionsHtml = `\x3Coption value="all">All Categories${_option}`;                 this.airedaleTags.forEach(tag => {                    const isSelected = this.activeDealTag === tag ? 'selected' : '';                    optionsHtml += `\x3Coption value="${this.escapeHTML(tag)}" ${isSelected}>${this.escapeHTML(tag)} (${this.airedaleTagCounts[tag] || 0})${_option}`;                 });                 this.categoryFilter.innerHTML = optionsHtml;                 this.categoryFilter.value = this.activeDealTag || 'all';              }            } else {               if (this.categoryFilterWrapper) {                  this.categoryFilterWrapper.style.display = 'none';               }            }            const displayDeals = this.getFilteredDeals();          // HACK: Hide closing tags from the CMS HTML sanitizer so it doesn't strip them during in-page injection          const _div = '<' + '/div>';          const _span = '<' + '/span>';          const _a = '<' + '/a>';          const _h3 = '<' + '/h3>';          const _p = '<' + '/p>';          const _strong = '<' + '/strong>';          const _sup = '<' + '/sup>';          const _button = '<' + '/button>';          if (displayDeals.length === 0) {            if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {              if (this.deals.length > 0) {                 this.grid.innerHTML = `\x3Cdiv class="tg-df-message">                  No deals match your selected filters.                ${_div}`;              } else if (this.getViewMode() === 'savings_squad' && this.currentQuery.length <= 2) {                 // Do not show "no exact matches" if query is empty for savings_squad                 this.grid.innerHTML = '';              } else {                 this.grid.innerHTML = `\x3Cdiv class="tg-df-message">                  No exact matches found for "\x3Cstrong>${this.escapeHTML(this.currentQuery)}${_strong}". Try adjusting your search term.                ${_div}`;              }            } else {              this.grid.innerHTML = `\x3Cdiv class="tg-df-message">                Search product or category names to discover the best deals from across the web.              ${_div}`;            }            return;          }          let dealsHtml = displayDeals.slice(0, this.displayLimit).map((deal, index) => {            try {               const currencySym = this.escapeHTML(deal.currency);               const isoCurrencyCode = normalizeCurrency(currencySym);               const escapedPrice = this.escapeHTML(deal.price);               const escapedMsrp = this.escapeHTML(deal.msrp);               const areaCode = this.getAreaCode();                              const revenueId = generateRevenueId(deal.url, deal.title, deal.merchant, null);               const originalLink = deal.url;               const rewrittenLink = rewriteAffiliateLink(deal.url, areaCode, revenueId);                        const productCategoryName = 'deals';            const dataAttr = `              data-action="${deal.isCheckPrice ? 'view-similar-click' : 'deal-click'}"              data-analytics-id="${this.escapeHTML(deal.externalProductId || deal.id || '')}"              data-product-name="${this.escapeHTML(deal.title)}"              data-merchant-name="${this.escapeHTML(deal.merchant)}"              data-price="${deal.rawPrice || ''}"              data-previous-price="${deal.rawMsrp || ''}"              data-original-link="${this.escapeHTML(originalLink)}"              data-revenue-id="${revenueId}"              data-index="${index}"              data-total="${displayDeals.length}"              data-in-stock="${deal.inStock !== false}"              data-currency="${this.escapeHTML(isoCurrencyCode)}"              data-model-id="${this.escapeHTML(deal.modelId || '')}"              data-product-key="${this.escapeHTML(deal.productKey || '')}"              data-merchant-id="${this.escapeHTML(deal.merchantId || '')}"            `;                        let priceGroupHtml = '';            let isSavingsSquadMode = this.getViewMode() === 'savings_squad';            let ctaText = 'View Deal';            let formattedPrice = '';            let msrpHtml = '';                        if (deal.isCheckPrice) {              ctaText = isSavingsSquadMode ? 'View Deal' : 'Check Price';              if (isSavingsSquadMode) {                priceGroupHtml = `                  \x3Cdiv class="tg-df-card-merchant-wrapper">                    \x3Cspan class="tg-df-card-merchant-pill" title="${this.escapeHTML(deal.merchant)}">${this.escapeHTML(deal.merchant)}${_span}                  ${_div}                  \x3Cdiv class="tg-df-card-price-group">                  ${_div}                `;              } else {                priceGroupHtml = `                  \x3Cdiv class="tg-df-card-merchant-wrapper">                    \x3Cspan class="tg-df-card-merchant-pill" title="${this.escapeHTML(deal.merchant)}">${this.escapeHTML(deal.merchant)}${_span}                  ${_div}                  \x3Cdiv class="tg-df-card-price-group">                    \x3Cspan class="tg-df-card-price" style="font-size: 15px; font-weight: 500; font-style: italic;">See price at retailer${_span}                  ${_div}                `;              }            } else {              // Format Price              formattedPrice = escapedPrice.includes(currencySym)                 ? escapedPrice                 : `${currencySym}${escapedPrice}`;                              // Format MSRP              msrpHtml = deal.msrp && deal.rawMsrp > deal.rawPrice                ? `\x3Cspan class="tg-df-card-msrp">${escapedMsrp.includes(currencySym) ? escapedMsrp : currencySym + escapedMsrp}${_span}`                : '';                              priceGroupHtml = `                \x3Cdiv class="tg-df-card-merchant-wrapper">                  \x3Cspan class="tg-df-card-merchant-pill" title="${this.escapeHTML(deal.merchant)}">${this.escapeHTML(deal.merchant)}${_span}                ${_div}                \x3Cdiv class="tg-df-card-price-group">                  ${isSavingsSquadMode ? '' : `                  \x3Cspan class="tg-df-card-price">${formattedPrice}${_span}                  ${msrpHtml}                  `}                ${_div}              `;            }                        const discountBadgeHtml = deal.savingLabel && !deal.isCheckPrice              ? `\x3Cspan class="tg-df-card-discount-badge">${this.escapeHTML(deal.savingLabel)}${_span}`              : '';                          // HACK for CMS            const _button = '<' + '/button>';            const _svg = '<' + '/svg>';            const _path = '<' + '/path>';            const _rect = '<' + '/rect>';            const _circle = '<' + '/circle>';            const _polyline = '<' + '/polyline>';            const _line = '<' + '/line>';                        let badgesHtml = '';            const primeBadge = deal.isPrime ? `              \x3Cspan class="tg-df-tag tg-df-tag-prime">                \x3Csvg width="12" height="12" viewBox="0 0 24 24" fill="currentColor">                  \x3Cpath d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z">${_path}                ${_svg} Prime              ${_span}            ` : '';                        const couponsBadge = deal.merchant && deal.merchant.toLowerCase().includes('amazon') ? '' : `              \x3Cdiv class="tg-df-coupon-wrapper" data-merchant="${this.escapeHTML(deal.merchant)}" style="display:inline-flex; align-items:center;">                \x3Cdiv class="tg-df-coupon-spinner">${_div}                \x3Cbutton type="button" class="tg-df-tag tg-df-tag-coupons" data-action="coupons-click" data-merchant="${this.escapeHTML(deal.merchant)}" style="display:none;">                  \x3Csvg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">                    \x3Cpath d="M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z">${_path}                    \x3Cline x1="7" y1="7" x2="7.01" y2="7">${_line}                  ${_svg} Coupons                ${_button}              ${_div}            `;                        // Note: We always add coupons badge if there's a chance, but to allow 3-line titles we check wrapper display state            badgesHtml = `              \x3Cdiv class="tg-df-card-badges">                ${primeBadge}                ${couponsBadge}              ${_div}            `;            const _linearGradient = '<' + '/linearGradient>';            const _polygon = '<' + '/polygon>';            const _stop = '<' + '/stop>';            const _defs = '<' + '/defs>';                        let starHtml = '';            if (deal.starRating) {              let rating = deal.starRating;                            if (rating > 0) {                const fullStars = Math.floor(rating);                const halfStar = (rating - fullStars) >= 0.5 ? 1 : 0;                const emptyStars = Math.max(0, 5 - fullStars - halfStar);                const blue = '#1f69ff'; // Tom's guide brand color from VIEW DEAL button                const gray = '#cbd5e1';                                const starSvgFull = `\x3Csvg width="14" height="14" viewBox="0 0 24 24" fill="${blue}" stroke="${blue}" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpolygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26">${_polygon}${_svg}`;                                const gradId = 'half_grad_' + Math.floor(Math.random()*1000000);                const starSvgHalf = `\x3Csvg width="14" height="14" viewBox="0 0 24 24" stroke="${blue}" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">\x3Cdefs>\x3ClinearGradient id="${gradId}" x1="0" x2="1" y1="0" y2="0">\x3Cstop offset="50%" stop-color="${blue}">${_stop}\x3Cstop offset="50%" stop-color="transparent">${_stop}${_linearGradient}${_defs}                  \x3Cpolygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26" fill="url(#${gradId})">${_polygon}${_svg}`;                                  const starSvgEmpty = `\x3Csvg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="${gray}" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpolygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26">${_polygon}${_svg}`;                                let stars = [];                for (let i=0; i<fullStars; i++) stars.push(starSvgFull);                if (halfStar) stars.push(starSvgHalf);                for (let i=0; i<emptyStars; i++) stars.push(starSvgEmpty);                                starHtml = `\x3Cdiv class="tg-df-card-stars" style="display:flex;align-items:center;margin-bottom:8px;font-size:13px;font-weight:600;color:var(--tg-df-text-muted);">                  \x3Cspan style="margin-right:6px;">Tom's Guide:${_span}                  \x3Cdiv style="display:flex;gap:2px;">                    ${stars.join('')}                  ${_div}                ${_div}`;              }            }            let htmlOutput = '';            if (isSavingsSquadMode) {              htmlOutput += `              \x3Cdiv class="hawk-deal-widget-container tg-df-mobile-only" data-collapsible="true">                ${this.editorMode ? `\x3Cinput type="checkbox" class="tg-df-deal-checkbox" data-id="${this.escapeHTML(deal.id)}" ${this.selectedDeals.has(deal.id) ? 'checked' : ''} style="margin-bottom: 10px;">` : ''}                \x3Cdiv class="hawk-deal-widget-wrap">                  \x3Cdiv class="hawk-deal-widget-image-container">                    \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" rel="sponsored noopener" target="_blank" class="hawk-affiliate-link-deal-widget" ${dataAttr}>                      \x3Cimg ${deal.image ? `src="${this.escapeHTML(deal.image)}"` : ''} alt="${this.escapeHTML(deal.title)}" class="hawk-lazy-image-deal-widget" loading="lazy" width="140" height="160" onerror="${deal.fallbackImage ? `if(!this.dataset.fb) { this.dataset.fb='1'; this.src='${this.escapeHTML(deal.fallbackImage)}'; } else { this.style.opacity='0'; }` : `this.style.opacity='0';`}">                    ${_a}                  ${_div}                  \x3Cdiv class="hawk-deal-widget-text-cta-container">                    \x3Cdiv class="hawk-deal-widget-text-body-container">                      \x3Cdiv class="hawk-deal-widget-text-body-main">                        \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" class="hawk-affiliate-link-container" rel="sponsored noopener" target="_blank" ${dataAttr}>                          ${deal.isCheckPrice ? `                            \x3Cspan class="hawk-deal-widget-title-product-title">${this.escapeHTML(deal.title)}${_span}                          ` : `                            \x3Cspan class="hawk-deal-widget-title-product-title">${deal.brand ? this.escapeHTML(deal.brand) + ' ' : ''}${this.escapeHTML(deal.productName || deal.title || '')}:${_span}                          `}                        ${_a}                        ${!deal.isCheckPrice && deal.rawMsrp && deal.rawMsrp > deal.rawPrice ? `                          \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" class="hawk-affiliate-link-container" rel="sponsored noopener" target="_blank" ${dataAttr}>                            \x3Cspan class="hawk-deal-widget-title-was-price">was ${currencySym}${escapedMsrp}${_span}                          ${_a}                        ` : ''}                        \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" class="hawk-affiliate-link-container" rel="sponsored noopener" target="_blank" ${dataAttr}>                          \x3Cspan class="hawk-deal-widget-title-retailer-price">                            ${!deal.isCheckPrice ? `                              \x3Cspan class="hawk-deal-widget-title-price">now ${formattedPrice}${_span}                              \x3Cspan class="hawk-deal-widget-title-retailer"> at ${this.escapeHTML(deal.merchant)}${_span}                            ` : `                              \x3Cspan class="hawk-deal-widget-title-price">See price at ${this.escapeHTML(deal.merchant)}${_span}                            `}                          ${_span}                        ${_a}                        ${deal.description ? `\x3Cdiv class="hawk-deal-widget-text-body-description">\x3Cp>${this.escapeHTML(deal.description)}${_p}${_div}` : ''}                      ${_div}                    ${_div}                    \x3Cdiv class="hawk-deal-widget-footer">                      \x3Cdiv class="hawk-deal-widget-button-wrapper">                        \x3Cdiv class="hawk-deal-widget-preferred-partner-wrapper">                          \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" class="hawk-affiliate-link-deal-button" rel="sponsored noopener" target="_blank" ${dataAttr}>                            \x3Cspan>${deal.isCheckPrice ? 'Check Price' : 'View Deal'}${_span}                          ${_a}                        ${_div}                      ${_div}                    ${_div}                  ${_div}                ${_div}              ${_div}              `;            }            htmlOutput += `              \x3Cdiv class="tg-df-card ${isSavingsSquadMode ? 'tg-df-desktop-only' : ''}">                ${this.editorMode ? `\x3Cinput type="checkbox" class="tg-df-deal-checkbox" data-id="${this.escapeHTML(deal.id)}" ${this.selectedDeals.has(deal.id) ? 'checked' : ''}>` : ''}                \x3Cdiv class="tg-df-card-image-box">                  ${discountBadgeHtml}                  \x3Ca href="${this.escapeHTML(rewrittenLink)}" ${dataAttr} target="_blank" rel="noopener nofollow" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;">                    \x3Cimg ${deal.image ? `src="${this.escapeHTML(deal.image)}"` : ''} alt="${this.escapeHTML(deal.title)}" class="tg-df-card-image" loading="lazy" onerror="${deal.fallbackImage ? `if(!this.dataset.fb) { this.dataset.fb='1'; this.src='${this.escapeHTML(deal.fallbackImage)}'; } else { this.style.opacity='0'; }` : `this.style.opacity='0';`}">                  ${_a}                ${_div}                \x3Cdiv class="tg-df-card-body">                  ${starHtml}                  ${badgesHtml}                  \x3Ch3 class="tg-df-card-title tg-df-custom-savings-squad-title" title="${this.escapeHTML(deal.title)}">                    \x3Ca href="${this.escapeHTML(rewrittenLink)}" disable-tracking="true" target="_blank" rel="noopener nofollow" style="text-decoration: none; color: inherit;">                      ${isSavingsSquadMode                         ? (deal.isCheckPrice                             ? (deal.title && deal.title.includes(':')                                 ? `\x3Cstrong>${this.escapeHTML(deal.title.substring(0, deal.title.indexOf(':') + 1))}${_strong}\x3Cspan style="color: #1f69ff; font-weight: normal;">${this.escapeHTML(deal.title.substring(deal.title.indexOf(':') + 1))}${_span}`                                : this.escapeHTML(deal.title)                              )                             : `\x3Cstrong>${deal.brand ? this.escapeHTML(deal.brand) + ' ' : ''}${this.escapeHTML(deal.productName || deal.title || '')}:${_strong} ${deal.rawMsrp && deal.rawMsrp > deal.rawPrice ? `\x3Cspan style="color: #d0021b; text-decoration: line-through; font-weight: normal; margin-right: 4px;">was ${currencySym}${escapedMsrp}${_span} ` : ''}\x3Cspan style="color: #1f69ff; font-weight: normal;">now ${formattedPrice} at ${this.escapeHTML(deal.merchant)}${_span}`                          )                        : this.escapeHTML(deal.title)                      }                    ${_a}                  ${_h3}                  ${deal.description ? `\x3Cp style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 12px; line-height: 1.4;">${this.escapeHTML(deal.description)}${_p}` : ''}                  \x3Cdiv class="tg-df-card-footer">                    ${priceGroupHtml}                    \x3Ca href="${this.escapeHTML(rewrittenLink)}" ${dataAttr} target="_blank" rel="noopener nofollow" class="tg-df-card-cta ${isSavingsSquadMode ? 'tg-df-cta-savings-squad' : ''}" style="text-decoration: none;">${ctaText}${_a}                  ${_div}                ${_div}              ${_div}            `;                        return htmlOutput;            } catch (e) {               console.log("Error rendering deal in map for index", index, typeof deal === 'object' ? JSON.stringify(deal) : deal, "MSG:", e.message);               return '';            }          }).join('');                    if (displayDeals.length > this.displayLimit || ((this.getViewMode() === 'carousel' || this.getViewMode() === 'auto') && displayDeals.length > 0 && displayDeals.length % ((this.rowsSelect && this.rowsSelect.value) ? parseInt(this.rowsSelect.value, 10) : 12) === 0)) {            if (this.getViewMode() === 'carousel') {               dealsHtml += `                 \x3Cbutton type="button" class="tg-df-load-more-card tg-df-load-more">                   \x3Csvg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-bottom: 8px;">\x3Cpath d="M5 12h14">\x3C/path>\x3Cpath d="m12 5 7 7-7 7">\x3C/path>\x3C/svg>                   Load More                 ${_button}               `;            } else {               dealsHtml += `                 \x3Cdiv style="width: 100%; display: flex; justify-content: center; margin-top: 16px; grid-column: 1 / -1;">                   \x3Cbutton type="button" class="tg-df-tag-outline tg-df-load-more" style="padding: 8px 24px; border-radius: 100px; font-weight: 600; font-size: 14px; cursor: pointer; display: flex; align-items: center;">Load More${_button}                 ${_div}               `;            }          }                    this.grid.innerHTML = dealsHtml;          // Inject JSON-LD          try {            let targetNode = this.hostContainer || document.head;            let jsonLdScript = targetNode.querySelector('#tg-df-json-ld-' + this.widgetId);            if (!jsonLdScript) {                jsonLdScript = document.createElement('script');                jsonLdScript.type = 'application/ld+json';                jsonLdScript.id = 'tg-df-json-ld-' + this.widgetId;                targetNode.appendChild(jsonLdScript);            }            const jsonLdData = {              "@context": "https://schema.org",              "@type": "ItemList",              "itemListElement": displayDeals.slice(0, this.displayLimit).map((deal, index) => {                 let isoCurrency = "USD";                 if (deal.currency === '£') isoCurrency = "GBP";                 else if (deal.currency === '€') isoCurrency = "EUR";                 else if (deal.currency === 'A$') isoCurrency = "AUD";                 else if (deal.currency === 'CA$') isoCurrency = "CAD";                 const areaCode = typeof this.getAreaCode === 'function' ? this.getAreaCode() : 'US';                 const revenueId = typeof generateRevenueId === 'function' ? generateRevenueId(deal.url, deal.title, deal.merchant, null) : '';                 const rewrittenLink = typeof rewriteAffiliateLink === 'function' ? rewriteAffiliateLink(deal.url, areaCode, revenueId) : deal.url;                 return {                   "@type": "ListItem",                   "position": index + 1,                   "item": {                     "@type": "Product",                     "name": deal.title,                     "image": deal.image || "",                     "description": deal.description || "",                     "brand": {                       "@type": "Brand",                       "name": deal.brand || ""                     },                     "offers": {                       "@type": "Offer",                       "priceCurrency": isoCurrency,                       "price": deal.rawPrice || 0,                       "url": rewrittenLink,                       "seller": {                         "@type": "Organization",                         "name": deal.merchant || ""                       }                     }                   }                 };              }).filter(item => item.item.name)            };            jsonLdScript.textContent = JSON.stringify(jsonLdData);          } catch(e) { console.warn("JSON-LD generation failed", e); }                    let gridWrapper = this.grid.parentElement;          if (gridWrapper && gridWrapper.classList.contains('tg-df-grid-wrapper')) {             let rightChevron = gridWrapper.querySelector('.tg-df-carousel-scroll-right');             let leftChevron = gridWrapper.querySelector('.tg-df-carousel-scroll-left');             if (this.getViewMode() === 'carousel') {                 // The observer set up in setupScrollListeners handles visibility.                 if (rightChevron) rightChevron.style.display = 'flex';                 if (leftChevron) leftChevron.style.display = 'none'; // reset correctly             } else {                 if (rightChevron) rightChevron.style.display = 'none';                 if (leftChevron) leftChevron.style.display = 'none';             }          }                    const loadMoreBtn = this.grid.querySelector('.tg-df-load-more');          if (loadMoreBtn) {            loadMoreBtn.addEventListener('click', async () => {              if (typeof trackElementInteraction === 'function') {                trackElementInteraction({ id: 'load-more', name: 'Load more', label: 'Load More Results' });              }              if (displayDeals.length <= this.displayLimit) {                 loadMoreBtn.innerHTML = `                  <svg class="tg-df-spinner" style="width: 16px; height: 16px; display: inline-block; vertical-align: middle; margin-right: 8px;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M12 2v4m0 12v4M4.93 4.93l2.83 2.83m8.48 8.48l2.83 2.83M2 12h4m12 0h4M4.93 19.07l2.83-2.83m8.48-8.48l2.83-2.83"/></svg>                  Loading...                 `;                 loadMoreBtn.disabled = true;                 await this.fetchDeals(this.currentQuery, true);              } else {                 this.displayLimit += this.getRowsLimit();                 this.render();              }            });          }                      this.bindCouponButtons();            this.checkAndUpdateCoupons();                        // Allow hawklinks.js to discover and rewrite our widget links             // by appending the .article-body class and manually triggering processArticle.            let container = this.root.classList.contains('tg-df-container') ? this.root : this.root.querySelector('.tg-df-container');            if (container && !container.classList.contains('article-body')) {               container.classList.add('article-body');            }            setTimeout(() => {               if (this.grid && !this.grid.classList.contains('article-body')) this.grid.classList.add('article-body');               document.dispatchEvent(new CustomEvent('processArticle', { detail: { element: this.root } }));            }, 50);          } catch(e) {            console.warn("Widget render error", e);          }        }                async checkAndUpdateCoupons() {          const wrappers = Array.from(this.root.querySelectorAll('.tg-df-coupon-wrapper'));          if (wrappers.length === 0) return;                    const merchants = [...new Set(wrappers.map(w => w.getAttribute('data-merchant')).filter(Boolean))];          if (merchants.length === 0) return;          const couponResultsMap = await this.checkMerchantsCouponsBulk(merchants);                    for (const merchant of merchants) {            const hasCoupons = !!couponResultsMap[merchant];            const merchantWrappers = wrappers.filter(w => w.getAttribute('data-merchant') === merchant);            merchantWrappers.forEach(wrapper => {              const spinner = wrapper.querySelector('.tg-df-coupon-spinner');              const btn = wrapper.querySelector('.tg-df-tag-coupons');                            if (spinner) spinner.style.display = 'none';                            if (hasCoupons && btn) {                btn.style.display = 'inline-flex';              } else if (!hasCoupons) {                wrapper.style.display = 'none';              }            });          }        }        updateFloatingCopyBar() {          if (!this.editorBar || !this.editorSelectedCount) return;          if (this.editorMode && this.selectedDeals.size > 0) {            this.editorBar.style.display = 'flex';            this.editorSelectedCount.innerText = this.selectedDeals.size;          } else {            this.editorBar.style.display = 'none';          }        }        async copySelectedDealsToCMS() {           function htmlToSlate(htmlString) {              if (!htmlString) return [{ type: 'paragraph', children: [{ text: '' }] }];              let doc;              if (typeof window !== 'undefined' && window.DOMParser) {                 doc = new DOMParser().parseFromString(htmlString, 'text/html');              } else {                 doc = document.implementation.createHTMLDocument('');                 doc.body.innerHTML = htmlString;              }                            function parseNode(node, marks = {}) {                  if (node.nodeType === 3) {                      const text = node.textContent;                      if (!text) return null;                      return { text: text, ...marks };                  }                  if (node.nodeType === 1) {                      const tagName = node.tagName.toLowerCase();                      if (tagName === 'br') {                          return { type: 'line-break', children: [{ text: '' }] };                      }                      if (tagName === 'p') {                          let children = Array.from(node.childNodes).map(child => parseNode(child, marks)).flat().filter(Boolean);                          if (children.length === 0) children.push({ text: "" });                          return { type: 'paragraph', children };                      }                      if (tagName === 'strong' || tagName === 'b') {                          const newMarks = { ...marks, bold: true };                          return Array.from(node.childNodes).map(child => parseNode(child, newMarks)).flat().filter(Boolean);                      }                      if (tagName === 'em' || tagName === 'i') {                          const newMarks = { ...marks, italic: true };                          return Array.from(node.childNodes).map(child => parseNode(child, newMarks)).flat().filter(Boolean);                      }                      if (tagName === 'a') {                          const href = node.getAttribute('href') || '';                          let children = Array.from(node.childNodes).map(child => parseNode(child, marks)).flat().filter(Boolean);                          if (children.length === 0) children.push({ text: "" });                          return {                              type: 'link',                              url: href,                              isNoFollow: (node.getAttribute('rel') || '').includes('nofollow'),                              isSponsored: (node.getAttribute('rel') || '').includes('sponsored'),                              isOpenNewTab: node.getAttribute('target') === '_blank',                              isPreventDataRewrite: false,                              children: children                          };                      }                      return Array.from(node.childNodes).map(child => parseNode(child, marks)).flat().filter(Boolean);                  }                  return null;              }                            let blocksArray = [];              let currentParagraphChildren = [];              function flushParagraph() {                  if (currentParagraphChildren.length > 0) {                      blocksArray.push({ type: 'paragraph', children: currentParagraphChildren });                      currentParagraphChildren = [];                  }              }              Array.from(doc.body.childNodes).forEach(node => {                  const parsed = parseNode(node, {});                  const parsedItems = Array.isArray(parsed) ? parsed : (parsed ? [parsed] : []);                  parsedItems.forEach(item => {                      if (item.type === 'paragraph') {                          flushParagraph();                          blocksArray.push(item);                      } else {                          currentParagraphChildren.push(item);                      }                  });              });              flushParagraph();              if (blocksArray.length === 0) {                  blocksArray = [{ type: 'paragraph', children: [{ text: '' }] }];              }              return blocksArray;           }           const blocks = [];                      this.editorCopyBtn.innerHTML = '\x3Cspan class="tg-df-coupon-spinner" style="display:inline-block; margin-right:8px; border-top-color:#fff;">' + '<' + '/span> Copying...';           for (const deal of Array.from(this.selectedDeals.values())) {              const url = deal.url;              const merchant = deal.merchant;              const title = deal.title;              const image = deal.image;              const currentPrice = deal.currency + deal.rawPrice;              const wasPrice = deal.hasWasPrice && deal.rawMsrp > deal.rawPrice ? deal.currency + deal.rawMsrp : '';                            let couponsChildren = [];              try {                  const area = this.getAreaCode();                  const apiUrl = new URL('https://search-api.fie.future.net.uk/widget.php');                  apiUrl.searchParams.append('model_name', 'Everything');                  apiUrl.searchParams.append('language', 'en-GB');                  apiUrl.searchParams.append('area', area);                  apiUrl.searchParams.append('combine_product_types', '1');                  apiUrl.searchParams.append('filter_merchant_name', merchant);                  apiUrl.searchParams.append('all_filters', 'false');                  apiUrl.searchParams.append('exclude_unlabelled', 'false');                  apiUrl.searchParams.append('include_specs', 'false');                  apiUrl.searchParams.append('sort', 'voucher');                  apiUrl.searchParams.append('distinct_merchants', 'natural');                  apiUrl.searchParams.append('filter_product_types', 'vouchers,offer_deals,newsletter');                  apiUrl.searchParams.append('rows', '3');                  apiUrl.searchParams.append('origin', 'widgets-clientside');                                    let res; try { res = await fetch(apiUrl.toString()); } catch (e) { return; }                  if (res.ok) {                      const data = await res.json();                      let offers = [];                      if (data && data.widget && data.widget.data && Array.isArray(data.widget.data.offers)) {                        offers = data.widget.data.offers;                      } else if (data && data.data && Array.isArray(data.data.offers)) {                        offers = data.data.offers;                      }                                            if (offers.length > 0) {                          couponsChildren.push({ text: "Also check out these coupons: ", bold: true });                          offers.slice(0, 3).forEach((offer, idx) => {                              const actualOffer = offer.offer || offer;                              const offerName = actualOffer.name || actualOffer.title || offer.model_name || offer.title || offer.name || 'Coupon';                              const linkUrl = actualOffer.link || actualOffer.url || actualOffer.offer_link || '#';                              couponsChildren.push({ type: "line-break", children: [{ text: "" }] });                              couponsChildren.push({ text: "🎟️ " });                              couponsChildren.push({                                  type: "link",                                  url: linkUrl,                                  isNoFollow: true,                                  isSponsored: false,                                  isOpenNewTab: true,                                  isPreventDataRewrite: false,                                  children: [{ text: offerName, bold: true }]                              });                          });                      }                  }              } catch (err) {                  console.warn('Failed to fetch coupons for', merchant, err);              }              let descriptionValue = [];              if (deal.text) {                 descriptionValue = htmlToSlate(deal.text);              } else {                 const dealDescriptions = [                   `Don't miss out on this fantastic deal for the ${title}. It is currently available at ${merchant} for a highly competitive price.`,                   `We've spotted an excellent price drop on the ${title}. Grab it now at ${merchant} before it's gone.`,                   `The ${title} is currently seeing a generous discount over at ${merchant}. This is a perfect time to buy if you've been holding out.`,                   `If you're in the market for the ${title}, ${merchant} has just the deal for you.`,                   `Score the ${title} for less at ${merchant} right now. This is a rare chance to save big.`,                   `Upgrade your setup with the ${title}, now available at a stellar price via ${merchant}.`                 ];                 const randomDescription = dealDescriptions[Math.floor(Math.random() * dealDescriptions.length)];                 descriptionValue = [                    { type: "paragraph", children: [{ text: randomDescription }] }                 ];              }                            if (couponsChildren.length > 0) {                 let lastBlock = descriptionValue[descriptionValue.length - 1];                 if (lastBlock && lastBlock.type === 'paragraph') {                     lastBlock.children.push({ type: "line-break", children: [{ text: "" }] });                     lastBlock.children.push({ type: "line-break", children: [{ text: "" }] });                     lastBlock.children.push({ text: "Also check out these coupons: ", bold: true });                     lastBlock.children.push({ type: "line-break", children: [{ text: "" }] });                     lastBlock.children = lastBlock.children.concat(couponsChildren);                 } else {                     descriptionValue.push({                         type: "paragraph",                         children: [                             { type: "line-break", children: [{ text: "" }] },                             { type: "line-break", children: [{ text: "" }] },                             { text: "Also check out these coupons: ", bold: true },                             { type: "line-break", children: [{ text: "" }] },                             ...couponsChildren                         ]                     });                 }              }              function normalizeCurrencyToISO(symbol) {                const map = { '£': 'GBP', '$': 'USD', 'A$': 'AUD', 'CA$': 'CAD', '€': 'EUR' };                return map[symbol] || symbol;              }              const isoCurrency = normalizeCurrencyToISO(deal.currency);              blocks.push({                 id: (window.crypto && window.crypto.randomUUID) ? window.crypto.randomUUID() : 'cms-' + Date.now() + Math.random(),                 blockTypeName: "deal",                 excludeFrom: [],                 collapsible: false,                 props: {                    description: {                       value: descriptionValue,                       touched: false,                       validationMessage: ""                    },                    image: {                       value: {                          credit: [{ type: "paragraph", children: [{ text: merchant }] }],                          dateCreated: Date.now(),                          dateModified: Date.now(),                          distribution: [],                          fileSize: 0,                          height: 1000,                          id: deal.id,                          imageRights: "",                          src: image,                          name: title + ".jpg",                          tags: [],                          width: 1000                       },                       touched: false,                       validationMessage: ""                    },                    showDealButton: { value: true, touched: false, validationMessage: "" },                    isPreferredPartner: { value: false, touched: false, validationMessage: "" },                    linkHref: { value: url, touched: false, validationMessage: "" },                    linkLabel: { value: "", touched: false, validationMessage: "" },                    linkIsNoFollow: { value: true, touched: false, validationMessage: "" },                    linkIsSponsored: { value: false, touched: false, validationMessage: "" },                    linkIsOpenNewWindow: { value: true, touched: false, validationMessage: "" },                    customPromoFlags: { value: [], touched: false, validationMessage: "" },                    showStarDeal: { value: false, touched: false, validationMessage: "" },                    savingType: { value: "none", touched: false, validationMessage: "" },                    starDealPromoFlag: { value: "", touched: false, validationMessage: "" },                    showEditorsChoice: { value: false, touched: false, validationMessage: "" },                    editorsChoiceTitle: { value: "", touched: false, validationMessage: "" },                    hawkPriceCurrency: { value: { value: isoCurrency, label: isoCurrency }, touched: false, validationMessage: "" },                    hawkPrice: { value: deal.hasWasPrice ? String(deal.rawMsrp) : String(deal.rawPrice), touched: false, validationMessage: "" },                    hawkSalePrice: { value: String(deal.rawPrice), touched: false, validationMessage: "" },                    lastCheckedPriceDate: { value: "", touched: false, validationMessage: "" },                    hawkModel: { touched: false, validationMessage: "" },                    productId: { value: "", touched: false, validationMessage: "" },                    voucherId: { value: "", touched: false, validationMessage: "" },                    brand: { value: deal.brand || merchant, touched: false, validationMessage: "" },                    productName: { value: title, touched: false, validationMessage: "" },                    label: { value: "", touched: false, validationMessage: "" },                    retailer: { value: merchant, touched: false, validationMessage: "" },                    priceCheckError: false                 },                 failedFetchError: ""              });           }           const payload = {              type: "articleBuilderPages",              data: blocks           };           const jsonStr = JSON.stringify(payload);                      if (navigator.clipboard && navigator.clipboard.writeText) {              navigator.clipboard.writeText(jsonStr).then(() => {                 this.editorCopyBtn.innerHTML = 'Copied!';                 setTimeout(() => {                    this.editorCopyBtn.innerHTML = '\x3Csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-right: 6px;">\x3Crect x="9" y="9" width="13" height="13" rx="2" ry="2"><' + '/rect>\x3Cpath d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"><' + '/path><' + '/svg> Copy to CMS';                 }, 2000);              }).catch(err => {                 console.warn('Failed to copy text: ', err);                 alert('Failed to copy deals to clipboard. See console.');              });           } else {              // Fallback              const textArea = document.createElement("textarea");              textArea.value = jsonStr;              document.body.appendChild(textArea);              textArea.focus();              textArea.select();              try {                 document.execCommand('copy');                 this.editorCopyBtn.innerHTML = 'Copied!';                 setTimeout(() => {                    this.editorCopyBtn.innerHTML = '\x3Csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-right: 6px;">\x3Crect x="9" y="9" width="13" height="13" rx="2" ry="2"><' + '/rect>\x3Cpath d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"><' + '/path><' + '/svg> Copy to CMS';                 }, 2000);              } catch (err) {                 console.warn('Fallback: Oops, unable to copy', err);                 alert('Fallback: Failed to copy deals to clipboard.');              }              document.body.removeChild(textArea);           }        }      }      // Initialize the Widget      if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', () => new DealsFinderWidget({ rootId: 'signal-deals-finder-root', rootNode: shadowRoot, hostContainer: hostContainer }));      } else {        new DealsFinderWidget({ rootId: 'signal-deals-finder-root', rootNode: shadowRoot, hostContainer: hostContainer });      }    })();  </script></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I tested DLSS 5 in NBA 2K27 on a mid-range gaming laptop — it's the future of photorealistic graphics, but there's a catch ]]></title>
                                                                                                <dc:content><![CDATA[ <p>So while NBA 2K27 is officially the first game to launch with <a href="https://www.tomsguide.com/gaming/pc-gaming/i-tested-the-real-dlss-5-forget-the-leaked-mods-its-not-an-ai-filter-this-is-nvidias-photorealistic-game-changer">Nvidia’s newly launched DLSS 5</a>, you’ve probably already seen it pop up in hundreds of more games than that. And I’ll say it again just like I said it before — in photorealistic games, it’s fantastic. But If you venture out of that into anything more stylized, it’s going to look weird.</p><p>That’s why it makes the world of sense in 2K27, but during my hands-on testing with my <a href="https://www.tomsguide.com/computing/gaming-laptops/i-review-gaming-laptops-for-a-living-and-this-is-my-favorite-of-2025">Asus ROG Zephyrus G14</a> (armed with an RTX 5070 Ti), I noticed something bizarre. The moment I entered a menu or triggered a replay, it suddenly felt like it was trudging through molasses.</p><p>I dug into the raw telemetry data to figure out what was going on, and what I found completely changed my understanding of Nvidia’s “3D-guided neural rendering.” That intensive new graphics pipeline of DLSS 5 may indeed be a graphical revolution — but on my humble laptop (and lower end desktops), I get the sense Frame Generation is a requirement to make it playable.</p><h2 id="the-laptop-i-m-playing-on">The laptop I’m playing on</h2><div ><table><tbody><tr><td class="firstcol " ><p><strong>CPU</strong></p></td><td  ><p>Intel Core Ultra 9 386H</p></td></tr><tr><td class="firstcol " ><p><strong>GPU</strong></p></td><td  ><p>RTX 5070 Ti (115 watts)</p></td></tr><tr><td class="firstcol " ><p><strong>RAM</strong></p></td><td  ><p>32GB LPDDR5X</p></td></tr><tr><td class="firstcol " ><p><strong>SSD</strong></p></td><td  ><p>1TB PCIe Gen 4</p></td></tr></tbody></table></div><p>I’m seeing a lot of people test it on massive desktop rigs. I’ll of course get round to doing this when I’m not on my honeymoon (my wife will kill me if I started benchmarking DLSS 5 in Cancun), but first I wanted to show you some numbers on something that isn’t really being covered here — my Asus ROG Zephyrus G14 gaming laptop.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="2akjJwtoAsyJWCruapJF9E" name="Asus ROG Zephyrus G14 (2026)" alt="Asus ROG Zephyrus G14 (2026)" src="https://cdn.mos.cms.futurecdn.net/2akjJwtoAsyJWCruapJF9E-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Nvidia’s been talking about how the model running this mode of neural rendering has been made super efficient over the past few months. In fact, when it first debuted, it ran on a separate RTX 5090 desktop GPU; whereas now, it’s able to run on a single card with the game.</p><p>So let’s give it a go in a notebook with a lower power level running through those graphics.</p><h2 id="by-the-numbers">By the numbers</h2><p>To figure out why the game was suddenly stuttering, I ran the telemetry on three different game states with DLSS 5 turned on and off. And as you can see, while the gameplay numbers are very close matching, elsewhere, the difference is pretty significant.</p><div ><table><tbody><tr><td class="firstcol " ><p><strong>Scenario</strong></p></td><td  ><p><strong>Setting</strong></p></td><td  ><p><strong>Avg FPS</strong></p></td><td  ><p><strong>1% Low FPS</strong></p></td><td  ><p><strong>PC Latency (ms)</strong></p></td><td  ><p><strong>GPU Util (%)</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Menu screen</strong></p></td><td  ><p>DLSS 5 Off</p></td><td  ><p>109.8</p></td><td  ><p>85.3</p></td><td  ><p>35.8</p></td><td  ><p>91.5</p></td></tr><tr><td class="firstcol empty" ></td><td  ><p>DLSS 5 On</p></td><td  ><p>30.4</p></td><td  ><p>27.9</p></td><td  ><p>102.1</p></td><td  ><p>96.9</p></td></tr><tr><td class="firstcol " ><p><strong>Gameplay</strong></p></td><td  ><p>DLSS 5 Off</p></td><td  ><p>115.8</p></td><td  ><p>19.8</p></td><td  ><p>79.8</p></td><td  ><p>41</p></td></tr><tr><td class="firstcol empty" ></td><td  ><p>DLSS 5 On</p></td><td  ><p>115.2</p></td><td  ><p>19.8</p></td><td  ><p>111.2</p></td><td  ><p>86</p></td></tr><tr><td class="firstcol " ><p><strong>Replay</strong></p></td><td  ><p>DLSS 5 Off</p></td><td  ><p>92.6</p></td><td  ><p>57</p></td><td  ><p>56.6</p></td><td  ><p>92.9</p></td></tr><tr><td class="firstcol empty" ></td><td  ><p>DLSS 5 On</p></td><td  ><p>26.9</p></td><td  ><p>16.2</p></td><td  ><p>128.8</p></td><td  ><p>97.7</p></td></tr></tbody></table></div><p>In fact, this kind of lines up with <a href="https://www.pcgamer.com/hardware/graphics-cards/dlss-5-comes-with-a-massive-50-60-percent-performance-hit-so-i-hope-you-like-lower-frame-rates-with-your-dose-of-ai-image-enhancement/" target="_blank">PC Gamer’s report</a> of a 50-60% drop in performance. So what’s going on here? Let’s talk about it.</p><h2 id="the-heavy-cost-of-the-transformer">The heavy cost of the transformer</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="n9SYNVP4yTgoCse4GzHQaL" name="DLSS 5" alt="DLSS 5" src="https://cdn.mos.cms.futurecdn.net/n9SYNVP4yTgoCse4GzHQaL-1920-80.png" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>So why does turning <em>off </em>the new tech triple frame rate in menus and replays? Because DLSS 5 is not just an upscale filter. It is a highly complex transformer model that interacts with the on-screen geometry and injects neural rendering.</p><p>Speaking to Nvidia, it’s clear that this AI pipeline is a heavy one, and the answer to why you don’t see that same impact in gameplay is a simple one: <strong>Frame Generation</strong>.</p><p>During live gameplay, I engaged the 6x Frame Generation multiplier to take that slower neurally rendered base and fill the gaps. However, developers typically disable frame gen during static menus, UI-heavy pause screens or camera-cut replays.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="sGWd4w3FSK3c3NZvRKTvTQ" name="DLSS 5" alt="DLSS 5" src="https://cdn.mos.cms.futurecdn.net/sGWd4w3FSK3c3NZvRKTvTQ-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>You can see how much this first iteration of DLSS 5 is sweating the system by looking at a couple of factors in the gameplay. Yes, the framerate is barely touched, but the 1% Lows takes a dip and the latency is upped quite drastically, as well as the GPU utilization spiking.</p><p>In a controller-centric game like NBA 2K27, that’s not necessarily a noticeable hit, but I can imagine that when this in its current form is moved to games that require faster inputs with a keyboard and mouse, it could become more apparent.</p><p>Take away the prop of frame generation in menus, and you see the DLSS 5 penalty more realistically on an RTX 5070 Ti laptop GPU.</p><h2 id="but-it-looks-incredible">But it looks incredible</h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/dgiemBJh8Ntef9MvZNJ43R-1920-80.png" alt="NBA 2K27" /><figcaption><small role="credit">2K Games</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/2vmZFSEToxZQnXLg9PiZAR-1920-80.png" alt="NBA 2K27" /><figcaption><small role="credit">2K Games</small></figcaption></figure></figure><p>Like I said in my first impressions, when faced with photorealistic graphics, DLSS 5 is undeniably impressive. There is one very specific takeaway when I looked at these “before and after” pairs of screen captures: the core game look is preserved impressively.</p><p>DLSS 5 does a flawless job of preserving the game’s visual integrity. The shots of Jalen Brunson and Victor Wembanyama show off the micro-details on the skin and the way the sweat catches the harsh stadium lighting. The upscaler isn’t adding any aggressive smoothing or plastic-looking artifacts — it’s remarkably lifelike.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/zt3qUDcUT3hUT3uCggfbCR-1920-80.png" alt="NBA 2K27" /><figcaption><small role="credit">2K Games</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/75Z5j9Mo3Xtosb8oN2e9CR-1920-80.png" alt="NBA 2K27" /><figcaption><small role="credit">2K Games</small></figcaption></figure></figure><p>Then there’s the fabric and material textures. Brunson’s Knicks jersey and the fabric of the couch in the cutscene get an upgrade to show off the stitching more with high-resolution clarity, and without any noticeable AI-induced blurring.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/jDbGWSTjdSLRHjA7eAq48R-1920-80.png" alt="NBA 2K27" /><figcaption><small role="credit">2K Games</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/q4xFZMUkJMWp6Z9tBJ3rvP-1920-80.png" alt="NBA 2K27" /><figcaption><small role="credit">2K Games</small></figcaption></figure></figure><p>The lighting reacts to on-screen characters more realistically, there isn’t any noticeable AI “fizzing” or ghosting around finer textures like hair — something upscalers have had problems with in the past. </p><h2 id="is-this-a-frame-generated-future">Is this a frame-generated future?</h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/YWWyKjCTaivXpgCJPxyaBR-1920-80.png" alt="NBA 2K27" /><figcaption><small role="credit">2K Games</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/aZfs5KRJDBPYAFnnv8zE9R-1920-80.png" alt="NBA 2K27" /><figcaption><small role="credit">2K Games</small></figcaption></figure></figure><p>DLSS 5 integration proved to me that the uncanny valley is dead, but it also proves that native frame rates are on their way out with it.</p><p>Nvidia themselves keep saying that Moore’s law is dead, and getting crafty with AI is what will bridge that generational gap. That threshold has been crossed — photorealism is getting too heavy for high-end silicon to render natively. </p><p>And DLSS 5 proves that future of photorealism isn’t just about rendering better pixels; it’s about accepting that a good chunk of the frames you see on your screen aren’t <em>technically </em>going to be “real” at all. </p><p>We’ve been coming to this moment in the PC gaming space for a while now, and it’s also happening on consoles too. </p><p>And personally, I have no problem with it if it looks this good — provided it’s used the right way (such as in photorealistic games).</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><strong></strong><a href="https://www.tomsguide.com/tech-events/best-of-ifa-2026-we-found-the-26-top-new-gadgets"><strong>Best of IFA 2026: We found the 26 top new gadgets</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/computing/laptops/macbook-pro-14-inch-vs-asus-proart-p14-nvidia-rtx-spark"><strong>I held the Asus ProArt P14 next to my MacBook Pro 14 — and Apple should be genuinely terrified of Nvidia’s RTX Spark</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/gaming/handheld-gaming/i-tested-acers-wild-flip-and-swivel-handheld-why-project-dualplay-mini-is-the-ultimate-netbook-love-letter"><strong>I tested Acer's wild Project DualPlay Mini — and it's a gaming handheld and laptop in one gadget</strong></a><strong></strong></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/gaming/pc-gaming/i-benchmarked-the-real-dlss-5-in-nba-2k27-and-the-future-of-photorealistic-graphics-has-one-big-catch</link>
                                                                            <description>
                            <![CDATA[ I benchmarked Nvidia’s DLSS 5 in NBA 2K27 on an RTX 5070 Ti laptop. Here is why the neural rendering model requires frame generation to stay playable. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">28R4VdDndCAzgMBfVtV3TM</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/j8Wmy2eeJWccYHQige6uD5-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 06 Sep 2026 07:00:00 +0000</pubDate>                                                                                                                                <updated>Sun, 06 Sep 2026 12:21:56 +0000</updated>
                                                                                                                                            <category><![CDATA[PC Gaming]]></category>
                                                    <category><![CDATA[Gaming Laptops]]></category>
                                                    <category><![CDATA[Gaming]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Laptops]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jason England ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/v4fSq5U4uZUEtGY2BwNuJ6-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jason brings a decade of tech and gaming journalism experience to his role as a Managing Editor of Computing at Tom&#039;s Guide. He has previously written for Laptop Mag, Tom&#039;s Hardware, Kotaku, Stuff and BBC Science Focus. In his spare time, you&#039;ll find Jason looking for good dogs to pet or thinking about eating pizza if he isn&#039;t already.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/j8Wmy2eeJWccYHQige6uD5-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[DLSS 5]]></media:description>                                                            <media:text><![CDATA[DLSS 5]]></media:text>
                                <media:title type="plain"><![CDATA[DLSS 5]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/j8Wmy2eeJWccYHQige6uD5-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>So while NBA 2K27 is officially the first game to launch with <a href="https://www.tomsguide.com/gaming/pc-gaming/i-tested-the-real-dlss-5-forget-the-leaked-mods-its-not-an-ai-filter-this-is-nvidias-photorealistic-game-changer">Nvidia’s newly launched DLSS 5</a>, you’ve probably already seen it pop up in hundreds of more games than that. And I’ll say it again just like I said it before — in photorealistic games, it’s fantastic. But If you venture out of that into anything more stylized, it’s going to look weird.</p><p>That’s why it makes the world of sense in 2K27, but during my hands-on testing with my <a href="https://www.tomsguide.com/computing/gaming-laptops/i-review-gaming-laptops-for-a-living-and-this-is-my-favorite-of-2025">Asus ROG Zephyrus G14</a> (armed with an RTX 5070 Ti), I noticed something bizarre. The moment I entered a menu or triggered a replay, it suddenly felt like it was trudging through molasses.</p><p>I dug into the raw telemetry data to figure out what was going on, and what I found completely changed my understanding of Nvidia’s “3D-guided neural rendering.” That intensive new graphics pipeline of DLSS 5 may indeed be a graphical revolution — but on my humble laptop (and lower end desktops), I get the sense Frame Generation is a requirement to make it playable.</p><h2 id="the-laptop-i-m-playing-on">The laptop I’m playing on</h2><div ><table><tbody><tr><td class="firstcol " ><p><strong>CPU</strong></p></td><td  ><p>Intel Core Ultra 9 386H</p></td></tr><tr><td class="firstcol " ><p><strong>GPU</strong></p></td><td  ><p>RTX 5070 Ti (115 watts)</p></td></tr><tr><td class="firstcol " ><p><strong>RAM</strong></p></td><td  ><p>32GB LPDDR5X</p></td></tr><tr><td class="firstcol " ><p><strong>SSD</strong></p></td><td  ><p>1TB PCIe Gen 4</p></td></tr></tbody></table></div><p>I’m seeing a lot of people test it on massive desktop rigs. I’ll of course get round to doing this when I’m not on my honeymoon (my wife will kill me if I started benchmarking DLSS 5 in Cancun), but first I wanted to show you some numbers on something that isn’t really being covered here — my Asus ROG Zephyrus G14 gaming laptop.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="2akjJwtoAsyJWCruapJF9E" name="Asus ROG Zephyrus G14 (2026)" alt="Asus ROG Zephyrus G14 (2026)" src="https://cdn.mos.cms.futurecdn.net/2akjJwtoAsyJWCruapJF9E-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Nvidia’s been talking about how the model running this mode of neural rendering has been made super efficient over the past few months. In fact, when it first debuted, it ran on a separate RTX 5090 desktop GPU; whereas now, it’s able to run on a single card with the game.</p><p>So let’s give it a go in a notebook with a lower power level running through those graphics.</p><h2 id="by-the-numbers">By the numbers</h2><p>To figure out why the game was suddenly stuttering, I ran the telemetry on three different game states with DLSS 5 turned on and off. And as you can see, while the gameplay numbers are very close matching, elsewhere, the difference is pretty significant.</p><div ><table><tbody><tr><td class="firstcol " ><p><strong>Scenario</strong></p></td><td  ><p><strong>Setting</strong></p></td><td  ><p><strong>Avg FPS</strong></p></td><td  ><p><strong>1% Low FPS</strong></p></td><td  ><p><strong>PC Latency (ms)</strong></p></td><td  ><p><strong>GPU Util (%)</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Menu screen</strong></p></td><td  ><p>DLSS 5 Off</p></td><td  ><p>109.8</p></td><td  ><p>85.3</p></td><td  ><p>35.8</p></td><td  ><p>91.5</p></td></tr><tr><td class="firstcol empty" ></td><td  ><p>DLSS 5 On</p></td><td  ><p>30.4</p></td><td  ><p>27.9</p></td><td  ><p>102.1</p></td><td  ><p>96.9</p></td></tr><tr><td class="firstcol " ><p><strong>Gameplay</strong></p></td><td  ><p>DLSS 5 Off</p></td><td  ><p>115.8</p></td><td  ><p>19.8</p></td><td  ><p>79.8</p></td><td  ><p>41</p></td></tr><tr><td class="firstcol empty" ></td><td  ><p>DLSS 5 On</p></td><td  ><p>115.2</p></td><td  ><p>19.8</p></td><td  ><p>111.2</p></td><td  ><p>86</p></td></tr><tr><td class="firstcol " ><p><strong>Replay</strong></p></td><td  ><p>DLSS 5 Off</p></td><td  ><p>92.6</p></td><td  ><p>57</p></td><td  ><p>56.6</p></td><td  ><p>92.9</p></td></tr><tr><td class="firstcol empty" ></td><td  ><p>DLSS 5 On</p></td><td  ><p>26.9</p></td><td  ><p>16.2</p></td><td  ><p>128.8</p></td><td  ><p>97.7</p></td></tr></tbody></table></div><p>In fact, this kind of lines up with <a href="https://www.pcgamer.com/hardware/graphics-cards/dlss-5-comes-with-a-massive-50-60-percent-performance-hit-so-i-hope-you-like-lower-frame-rates-with-your-dose-of-ai-image-enhancement/" target="_blank">PC Gamer’s report</a> of a 50-60% drop in performance. So what’s going on here? Let’s talk about it.</p><h2 id="the-heavy-cost-of-the-transformer">The heavy cost of the transformer</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="n9SYNVP4yTgoCse4GzHQaL" name="DLSS 5" alt="DLSS 5" src="https://cdn.mos.cms.futurecdn.net/n9SYNVP4yTgoCse4GzHQaL-1920-80.png" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>So why does turning <em>off </em>the new tech triple frame rate in menus and replays? Because DLSS 5 is not just an upscale filter. It is a highly complex transformer model that interacts with the on-screen geometry and injects neural rendering.</p><p>Speaking to Nvidia, it’s clear that this AI pipeline is a heavy one, and the answer to why you don’t see that same impact in gameplay is a simple one: <strong>Frame Generation</strong>.</p><p>During live gameplay, I engaged the 6x Frame Generation multiplier to take that slower neurally rendered base and fill the gaps. However, developers typically disable frame gen during static menus, UI-heavy pause screens or camera-cut replays.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="sGWd4w3FSK3c3NZvRKTvTQ" name="DLSS 5" alt="DLSS 5" src="https://cdn.mos.cms.futurecdn.net/sGWd4w3FSK3c3NZvRKTvTQ-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>You can see how much this first iteration of DLSS 5 is sweating the system by looking at a couple of factors in the gameplay. Yes, the framerate is barely touched, but the 1% Lows takes a dip and the latency is upped quite drastically, as well as the GPU utilization spiking.</p><p>In a controller-centric game like NBA 2K27, that’s not necessarily a noticeable hit, but I can imagine that when this in its current form is moved to games that require faster inputs with a keyboard and mouse, it could become more apparent.</p><p>Take away the prop of frame generation in menus, and you see the DLSS 5 penalty more realistically on an RTX 5070 Ti laptop GPU.</p><h2 id="but-it-looks-incredible">But it looks incredible</h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/dgiemBJh8Ntef9MvZNJ43R-1920-80.png" alt="NBA 2K27" /><figcaption><small role="credit">2K Games</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/2vmZFSEToxZQnXLg9PiZAR-1920-80.png" alt="NBA 2K27" /><figcaption><small role="credit">2K Games</small></figcaption></figure></figure><p>Like I said in my first impressions, when faced with photorealistic graphics, DLSS 5 is undeniably impressive. There is one very specific takeaway when I looked at these “before and after” pairs of screen captures: the core game look is preserved impressively.</p><p>DLSS 5 does a flawless job of preserving the game’s visual integrity. The shots of Jalen Brunson and Victor Wembanyama show off the micro-details on the skin and the way the sweat catches the harsh stadium lighting. The upscaler isn’t adding any aggressive smoothing or plastic-looking artifacts — it’s remarkably lifelike.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/zt3qUDcUT3hUT3uCggfbCR-1920-80.png" alt="NBA 2K27" /><figcaption><small role="credit">2K Games</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/75Z5j9Mo3Xtosb8oN2e9CR-1920-80.png" alt="NBA 2K27" /><figcaption><small role="credit">2K Games</small></figcaption></figure></figure><p>Then there’s the fabric and material textures. Brunson’s Knicks jersey and the fabric of the couch in the cutscene get an upgrade to show off the stitching more with high-resolution clarity, and without any noticeable AI-induced blurring.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/jDbGWSTjdSLRHjA7eAq48R-1920-80.png" alt="NBA 2K27" /><figcaption><small role="credit">2K Games</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/q4xFZMUkJMWp6Z9tBJ3rvP-1920-80.png" alt="NBA 2K27" /><figcaption><small role="credit">2K Games</small></figcaption></figure></figure><p>The lighting reacts to on-screen characters more realistically, there isn’t any noticeable AI “fizzing” or ghosting around finer textures like hair — something upscalers have had problems with in the past. </p><h2 id="is-this-a-frame-generated-future">Is this a frame-generated future?</h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/YWWyKjCTaivXpgCJPxyaBR-1920-80.png" alt="NBA 2K27" /><figcaption><small role="credit">2K Games</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/aZfs5KRJDBPYAFnnv8zE9R-1920-80.png" alt="NBA 2K27" /><figcaption><small role="credit">2K Games</small></figcaption></figure></figure><p>DLSS 5 integration proved to me that the uncanny valley is dead, but it also proves that native frame rates are on their way out with it.</p><p>Nvidia themselves keep saying that Moore’s law is dead, and getting crafty with AI is what will bridge that generational gap. That threshold has been crossed — photorealism is getting too heavy for high-end silicon to render natively. </p><p>And DLSS 5 proves that future of photorealism isn’t just about rendering better pixels; it’s about accepting that a good chunk of the frames you see on your screen aren’t <em>technically </em>going to be “real” at all. </p><p>We’ve been coming to this moment in the PC gaming space for a while now, and it’s also happening on consoles too. </p><p>And personally, I have no problem with it if it looks this good — provided it’s used the right way (such as in photorealistic games).</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><strong></strong><a href="https://www.tomsguide.com/tech-events/best-of-ifa-2026-we-found-the-26-top-new-gadgets"><strong>Best of IFA 2026: We found the 26 top new gadgets</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/computing/laptops/macbook-pro-14-inch-vs-asus-proart-p14-nvidia-rtx-spark"><strong>I held the Asus ProArt P14 next to my MacBook Pro 14 — and Apple should be genuinely terrified of Nvidia’s RTX Spark</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/gaming/handheld-gaming/i-tested-acers-wild-flip-and-swivel-handheld-why-project-dualplay-mini-is-the-ultimate-netbook-love-letter"><strong>I tested Acer's wild Project DualPlay Mini — and it's a gaming handheld and laptop in one gadget</strong></a><strong></strong></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I held the Asus ProArt P14 next to my MacBook Pro 14 — and Apple should be genuinely terrified of Nvidia’s RTX Spark ]]></title>
                                                                                                <dc:content><![CDATA[ <p>As I keep saying, there’s a big two-device compromise problem. I love my 14-inch MacBook Pro for its rigidity, battery life, silent thermals, great ergonomics, and raw performance for my prosumer workload. But macOS locks me out of native PC gaming (mostly), so I need <em>another </em>machine to do that.</p><p>So when <a href="https://www.tomsguide.com/computing/laptops/nvidias-rtx-spark-n1x-drops-this-october-why-apple-silicon-should-be-terrified-and-our-price-predictions">Nvidia’s RTX Spark</a> was announced, I saw the possibility of a future daily driver pull into view — the everything machine I’d always wanted. And then when I held the Asus ProArt P14 in my right hand and the <a href="https://www.tomsguide.com/computing/macbooks/macbook-pro-m5-review">14-inch M5 MacBook Pro</a> in my left, it became clear I’d found my top pick of Team Green’s roster.</p><p>That’s because Asus didn’t just build a competitor; they pretty obviously reverse-engineered the MacBook Pro’s footprint and low-profile industrial aesthetic. It was going to take a lot to get me to switch from my Apple lifestyle, but coming as close to the Apple feel as possible is a helpful start, to say the least!</p><p>So for the first time, a Windows machine has the silicon architecture to challenge Apple Silicon, and Asus is packing it into a machine that rolls tanks onto the MacBook Pro’s turf.</p><h2 class="article-body__section" id="section-design-and-build-spotting-the-physical-differences"><span>Design and build: spotting the physical differences</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2252px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="ctV2oQ993HC4K2YGEhyUp3" name="Asus ProArt P14 vs MacBook Pro M5-4" alt="Asus ProArt P14 vs MacBook Pro M5" src="https://cdn.mos.cms.futurecdn.net/ctV2oQ993HC4K2YGEhyUp3-1920-80.jpg" mos="" align="middle" fullscreen="" width="2252" height="1267" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><div ><table><thead><tr><th class="firstcol " ><p>Laptop</p></th><th  ><p>Dimensions</p></th><th  ><p>Weight</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Asus ProArt P14</strong></p></td><td  ><p>12.2 x 8.6 x 0.6 inches</p></td><td  ><p>3.3 pounds</p></td></tr><tr><td class="firstcol " ><p><strong>M5 MacBook Pro</strong></p></td><td  ><p>12.3 x 8.7 x 0.6 inches </p></td><td  ><p>3.4 pounds</p></td></tr></tbody></table></div><p>Stacking them directly, you can see how much Asus took inspiration from Apple, as the ProArt P14 matches the MacBook Pro 14 almost millimeter for millimeter. But there are subtle differences.</p><p>First is the finish. Apple’s anodized aluminum has a smoother, more metallic texture, whereas Asus’ stealthy matte charcoal coating has a much more interesting texture under your fingers.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1939px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="TEfbvPPiTx8rkw63wxqVp3" name="Asus ProArt P14 vs MacBook Pro M5-3" alt="Asus ProArt P14 vs MacBook Pro M5" src="https://cdn.mos.cms.futurecdn.net/TEfbvPPiTx8rkw63wxqVp3-1920-80.jpg" mos="" align="middle" fullscreen="" width="1939" height="1091" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>And second is the weight balance. Holding them both one-handed, the Pro definitely feels denser, but the distribution feels better balanced. Whereas in the ProArt P14, it’s lighter but more heavily weighted toward thermal management at the back of the system (more on that later).</p><p>Ports-wise, both are effectively set up for creators with full-size HDMI, high-speed USB-C, a headphone jack, and a full-size SD card slot. But the ProArt flex here comes with the legacy USB-A port on the right flank — a minor detail that saves you from carrying dongles.</p><h3 class="article-body__section" id="section-screen-showdown-2-8k-oled-vs-liquid-retina-xdr"><span>Screen showdown: 2.8K OLED vs Liquid Retina XDR</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="YfDkKjavVW2VjBgLTRD9u3" name="Asus ProArt P14 vs MacBook Pro M5-2" alt="Asus ProArt P14 vs MacBook Pro M5" src="https://cdn.mos.cms.futurecdn.net/YfDkKjavVW2VjBgLTRD9u3-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><div ><table><thead><tr><th class="firstcol " ><p>Laptop</p></th><th  ><p>Display</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Asus ProArt P14</strong></p></td><td  ><p>14-inch 2.8K (2800 x 1800) 16:10 OLED</p></td></tr><tr><td class="firstcol " ><p><strong>M5 MacBook Pro</strong></p></td><td  ><p>14.2-inch (3024 x 1964) Liquid Retina XDR Mini-LED</p></td></tr></tbody></table></div><p>So when it comes to picking between these screens, I know the default is to say “OLED is better,” but there are levels to this.</p><p>Because yes, the infinite contrast, instant pixel response times for gaming, zero blooming, and no camera notch give the ProArt P14 an advantage. It’s a gorgeous display — this is Asus’ bread and butter after all, as colors melt off the screen.</p><p>But the MacBook Pro (I’m assuming, as we won’t know until full testing — this is just based on what’s always happened before) will likely have a higher sustained peak brightness for outdoor work.</p><p>Really, it comes down to what you’re going to do with it. For gaming and color-accurate video grading in indoor/studio settings, the OLED wins on pure punch. However, for working out and about in bright coffee shops, Apple’s Mini-LED will probably retain the top spot.</p><h3 class="article-body__section" id="section-the-tactile-friction-point-key-feel-and-trackpad"><span>The tactile friction point: Key feel and trackpad</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2283px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="PjazzbgGFaXr5deUkzKUu3" name="Asus ProArt P14 vs MacBook Pro M5" alt="Asus ProArt P14 vs MacBook Pro M5" src="https://cdn.mos.cms.futurecdn.net/PjazzbgGFaXr5deUkzKUu3-1920-80.jpg" mos="" align="middle" fullscreen="" width="2283" height="1284" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>The MacBook Pro has always been one of my favorites ergonomically speaking —packing shallow but snappy scissor keyboard switches set in a well. It feels familiar, reliable, and fatigue-free, but it does lack the travel for deep gaming presses.</p><p>Meanwhile, the ProArt P14’s keys have a deeper dish, a little more key travel, and a softer landing underneath. The added depth creates a more satisfying impact, and the WASD stability for gaming feels a little better. But the slight added mushiness may come back to haunt me if I type all day.</p><p>Then there’s the trackpads. Now don’t get me wrong, the ProArt’s physical trackpad is massive and smooth, with a nice tactility to the physical click. But Apple’s Force Touch haptics are basically witchcraft, with an identical click anywhere on the glass and zero chance of any mechanical dead zones.</p><h3 class="article-body__section" id="section-under-the-hood"><span>Under the hood</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="9i5mcD3e3DmixKtuq3mnzU" name="Asus ProArt P14 vs MacBook Pro M5" alt="Asus ProArt P14 vs MacBook Pro M5" src="https://cdn.mos.cms.futurecdn.net/9i5mcD3e3DmixKtuq3mnzU-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Currently, I’m on an M5 MacBook Pro, but you can spec it up to M5 Pro or M5 Max with unified memory shared between CPU and GPU cores. The end result is lightning-fast performance across all your tasks that has always been one step ahead of the competition from Qualcomm, Intel, and AMD.</p><p>And now, the ProArt P14 is taking on Apple with the RTX Spark N1X platform — marrying an Arm-based Nvidia Grace CPU with a dedicated Blackwell RTX GPU, backed up by up to 128GB of unified memory.</p><p>In terms of how much you can spec it, ProArt P14 configurations start from that baseline N1X with fewer cores and 24GB of memory, so the versatility of configs means you can run the full gamut against the MacBook Pro.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="5X7LesSj9fyDU8yrouBoSU" name="Asus ProArt P14 vs MacBook Pro M5" alt="Asus ProArt P14 vs MacBook Pro M5" src="https://cdn.mos.cms.futurecdn.net/5X7LesSj9fyDU8yrouBoSU-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Apple’s machine falls down in modern AAA PC gaming backlogs — some of it works through Metal compatibility, but most will be left to crippling emulation or cloud streaming.</p><p>But with N1X’s CUDA cores, the ProArt P14 can run 1440p games at 100 FPS, complete with DLSS support and anti-cheat compatibility. Beyond that, I expect they’ll be pretty evenly matched in creator performance and AI. Differences there will come down to the software optimization for the silicon.</p><h3 class="article-body__section" id="section-the-potential-dealbreakers"><span>The potential dealbreakers</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="pbfBZx7ZmNxAR8JxpPcEHU" name="Asus ProArt P14 vs MacBook Pro M5" alt="Asus ProArt P14 vs MacBook Pro M5" src="https://cdn.mos.cms.futurecdn.net/pbfBZx7ZmNxAR8JxpPcEHU-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I’m just going to summarize some quick things that may become the thorn in the ProArt P14’s side once we get one in the labs to fully test.</p><ul><li><strong>The fan noise: </strong>When I tested the <a href="https://www.tomsguide.com/computing/gaming-laptops/i-tested-6-rtx-spark-laptops-for-gaming-and-the-winner-completely-shocked-me">ProArt P14 for gaming</a>, it was the loudest RTX Spark laptop in the room. The MacBook Pro stays near-silent during everyday tasks, and hopefully the P14 is the same — but it’s clear that an insane amount of Nvidia silicon requires aggressive airflow.</li><li><strong>Battery endurance: </strong>Nvidia is claiming “all-day” battery life and the same performance both on and off the charger. During my testing, I can confirm the latter, but we don’t know about the former yet! If it can achieve that 12-14+ hours of mixed real-world productivity, Apple loses its biggest single advantage.</li><li><strong>The price: </strong>The MacBook Pro starts at $1,999. To get the equivalent amount of memory (24GB), that price goes up to $2,199. This is the big question mark for N1X laptops, and hopefully they’ll be competitive on cost.</li></ul><h2 class="article-body__section" id="section-early-verdict"><span>Early verdict</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="RPrRBEsYKHxXze25EpotYU" name="Asus ProArt P14 vs MacBook Pro M5" alt="Asus ProArt P14 vs MacBook Pro M5" src="https://cdn.mos.cms.futurecdn.net/RPrRBEsYKHxXze25EpotYU-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>This is a way-too-early verdict, as I’m piecing together the few times I’ve had to test the ProArt P14 and its potential against months of MacBook Pro use. But I’ll give it a stab.</p><section class="howto-block">                    <h3>Switch to the Asus ProArt P14 if</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/r2srK5bDXmnczCLfapywsU.jpg"                                        alt="Asus ProArt P14 vs MacBook Pro M5"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/r2srK5bDXmnczCLfapywsU.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Future)</div></figure>                    <p><p>You refuse to carry two laptops ever again. If you want a sleek, premium aluminum daily driver that can handle your prosumer work by day and play games by night, the ProArt P14 is the first Windows laptop that really steps on the MacBook Pro's throat.</p></p>                </section><section class="howto-block">                    <h3>Stick with the MacBook Pro 14 if</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/aeAsuGHPsdeNftt767USaK.jpg"                                        alt="MacBook Pro M5"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/aeAsuGHPsdeNftt767USaK.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Tom's Guide)</div></figure>                    <p><p>Gaming isn't a priority; you prioritize whisper-quiet operation, a uniform haptic trackpad, and a pure macOS creative pipeline. Battery endurance is proven on this machine, but the jury’s still out until we get the P14 in for testing.</p></p>                </section><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/gaming/handheld-gaming/i-tested-acers-wild-flip-and-swivel-handheld-why-project-dualplay-mini-is-the-ultimate-netbook-love-letter">I tested Acer’s wild flip-and-swivel handheld — why Project DualPlay Mini is the ultimate netbook love letter</a></li><li><a href="https://www.tomsguide.com/gaming/pc-gaming/i-tested-the-real-dlss-5-forget-the-leaked-mods-its-not-an-ai-filter-this-is-nvidias-photorealistic-game-changer">I wanted to hate Nvidia’s DLSS 5 ‘AI filter’ — but the real DLSS 5 is photorealistic black magic</a></li><li><a href="https://www.tomsguide.com/gaming/playstation/as-a-pc-snob-i-wanted-to-catch-gta-6-making-console-compromises-instead-im-in-awe-of-the-trickery">As a PC snob, I wanted to catch GTA 6 making console compromises. Instead, I’m in awe of the trickery</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/laptops/macbook-pro-14-inch-vs-asus-proart-p14-nvidia-rtx-spark</link>
                                                                            <description>
                            <![CDATA[ I compared the Asus ProArt P14 directly against the MacBook Pro 14. With an Nvidia RTX Spark N1X inside, here is why Apple Silicon faces its biggest threat. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">33izTM5yiYMybq5eKoynuK</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/J3R2bCJ8gw5H7tBVt5kWvC-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 04 Sep 2026 09:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Laptops]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jason England ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/v4fSq5U4uZUEtGY2BwNuJ6-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jason brings a decade of tech and gaming journalism experience to his role as a Managing Editor of Computing at Tom&#039;s Guide. He has previously written for Laptop Mag, Tom&#039;s Hardware, Kotaku, Stuff and BBC Science Focus. In his spare time, you&#039;ll find Jason looking for good dogs to pet or thinking about eating pizza if he isn&#039;t already.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/J3R2bCJ8gw5H7tBVt5kWvC-1920-80.jpg">
                                                            <media:credit><![CDATA[Tom&amp;#39;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Asus ProArt P14 vs MacBook Pro M5]]></media:description>                                                            <media:text><![CDATA[Asus ProArt P14 vs MacBook Pro M5]]></media:text>
                                <media:title type="plain"><![CDATA[Asus ProArt P14 vs MacBook Pro M5]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/J3R2bCJ8gw5H7tBVt5kWvC-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>As I keep saying, there’s a big two-device compromise problem. I love my 14-inch MacBook Pro for its rigidity, battery life, silent thermals, great ergonomics, and raw performance for my prosumer workload. But macOS locks me out of native PC gaming (mostly), so I need <em>another </em>machine to do that.</p><p>So when <a href="https://www.tomsguide.com/computing/laptops/nvidias-rtx-spark-n1x-drops-this-october-why-apple-silicon-should-be-terrified-and-our-price-predictions">Nvidia’s RTX Spark</a> was announced, I saw the possibility of a future daily driver pull into view — the everything machine I’d always wanted. And then when I held the Asus ProArt P14 in my right hand and the <a href="https://www.tomsguide.com/computing/macbooks/macbook-pro-m5-review">14-inch M5 MacBook Pro</a> in my left, it became clear I’d found my top pick of Team Green’s roster.</p><p>That’s because Asus didn’t just build a competitor; they pretty obviously reverse-engineered the MacBook Pro’s footprint and low-profile industrial aesthetic. It was going to take a lot to get me to switch from my Apple lifestyle, but coming as close to the Apple feel as possible is a helpful start, to say the least!</p><p>So for the first time, a Windows machine has the silicon architecture to challenge Apple Silicon, and Asus is packing it into a machine that rolls tanks onto the MacBook Pro’s turf.</p><h2 class="article-body__section" id="section-design-and-build-spotting-the-physical-differences"><span>Design and build: spotting the physical differences</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2252px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="ctV2oQ993HC4K2YGEhyUp3" name="Asus ProArt P14 vs MacBook Pro M5-4" alt="Asus ProArt P14 vs MacBook Pro M5" src="https://cdn.mos.cms.futurecdn.net/ctV2oQ993HC4K2YGEhyUp3-1920-80.jpg" mos="" align="middle" fullscreen="" width="2252" height="1267" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><div ><table><thead><tr><th class="firstcol " ><p>Laptop</p></th><th  ><p>Dimensions</p></th><th  ><p>Weight</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Asus ProArt P14</strong></p></td><td  ><p>12.2 x 8.6 x 0.6 inches</p></td><td  ><p>3.3 pounds</p></td></tr><tr><td class="firstcol " ><p><strong>M5 MacBook Pro</strong></p></td><td  ><p>12.3 x 8.7 x 0.6 inches </p></td><td  ><p>3.4 pounds</p></td></tr></tbody></table></div><p>Stacking them directly, you can see how much Asus took inspiration from Apple, as the ProArt P14 matches the MacBook Pro 14 almost millimeter for millimeter. But there are subtle differences.</p><p>First is the finish. Apple’s anodized aluminum has a smoother, more metallic texture, whereas Asus’ stealthy matte charcoal coating has a much more interesting texture under your fingers.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1939px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="TEfbvPPiTx8rkw63wxqVp3" name="Asus ProArt P14 vs MacBook Pro M5-3" alt="Asus ProArt P14 vs MacBook Pro M5" src="https://cdn.mos.cms.futurecdn.net/TEfbvPPiTx8rkw63wxqVp3-1920-80.jpg" mos="" align="middle" fullscreen="" width="1939" height="1091" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>And second is the weight balance. Holding them both one-handed, the Pro definitely feels denser, but the distribution feels better balanced. Whereas in the ProArt P14, it’s lighter but more heavily weighted toward thermal management at the back of the system (more on that later).</p><p>Ports-wise, both are effectively set up for creators with full-size HDMI, high-speed USB-C, a headphone jack, and a full-size SD card slot. But the ProArt flex here comes with the legacy USB-A port on the right flank — a minor detail that saves you from carrying dongles.</p><h3 class="article-body__section" id="section-screen-showdown-2-8k-oled-vs-liquid-retina-xdr"><span>Screen showdown: 2.8K OLED vs Liquid Retina XDR</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="YfDkKjavVW2VjBgLTRD9u3" name="Asus ProArt P14 vs MacBook Pro M5-2" alt="Asus ProArt P14 vs MacBook Pro M5" src="https://cdn.mos.cms.futurecdn.net/YfDkKjavVW2VjBgLTRD9u3-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><div ><table><thead><tr><th class="firstcol " ><p>Laptop</p></th><th  ><p>Display</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Asus ProArt P14</strong></p></td><td  ><p>14-inch 2.8K (2800 x 1800) 16:10 OLED</p></td></tr><tr><td class="firstcol " ><p><strong>M5 MacBook Pro</strong></p></td><td  ><p>14.2-inch (3024 x 1964) Liquid Retina XDR Mini-LED</p></td></tr></tbody></table></div><p>So when it comes to picking between these screens, I know the default is to say “OLED is better,” but there are levels to this.</p><p>Because yes, the infinite contrast, instant pixel response times for gaming, zero blooming, and no camera notch give the ProArt P14 an advantage. It’s a gorgeous display — this is Asus’ bread and butter after all, as colors melt off the screen.</p><p>But the MacBook Pro (I’m assuming, as we won’t know until full testing — this is just based on what’s always happened before) will likely have a higher sustained peak brightness for outdoor work.</p><p>Really, it comes down to what you’re going to do with it. For gaming and color-accurate video grading in indoor/studio settings, the OLED wins on pure punch. However, for working out and about in bright coffee shops, Apple’s Mini-LED will probably retain the top spot.</p><h3 class="article-body__section" id="section-the-tactile-friction-point-key-feel-and-trackpad"><span>The tactile friction point: Key feel and trackpad</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2283px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="PjazzbgGFaXr5deUkzKUu3" name="Asus ProArt P14 vs MacBook Pro M5" alt="Asus ProArt P14 vs MacBook Pro M5" src="https://cdn.mos.cms.futurecdn.net/PjazzbgGFaXr5deUkzKUu3-1920-80.jpg" mos="" align="middle" fullscreen="" width="2283" height="1284" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>The MacBook Pro has always been one of my favorites ergonomically speaking —packing shallow but snappy scissor keyboard switches set in a well. It feels familiar, reliable, and fatigue-free, but it does lack the travel for deep gaming presses.</p><p>Meanwhile, the ProArt P14’s keys have a deeper dish, a little more key travel, and a softer landing underneath. The added depth creates a more satisfying impact, and the WASD stability for gaming feels a little better. But the slight added mushiness may come back to haunt me if I type all day.</p><p>Then there’s the trackpads. Now don’t get me wrong, the ProArt’s physical trackpad is massive and smooth, with a nice tactility to the physical click. But Apple’s Force Touch haptics are basically witchcraft, with an identical click anywhere on the glass and zero chance of any mechanical dead zones.</p><h3 class="article-body__section" id="section-under-the-hood"><span>Under the hood</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="9i5mcD3e3DmixKtuq3mnzU" name="Asus ProArt P14 vs MacBook Pro M5" alt="Asus ProArt P14 vs MacBook Pro M5" src="https://cdn.mos.cms.futurecdn.net/9i5mcD3e3DmixKtuq3mnzU-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Currently, I’m on an M5 MacBook Pro, but you can spec it up to M5 Pro or M5 Max with unified memory shared between CPU and GPU cores. The end result is lightning-fast performance across all your tasks that has always been one step ahead of the competition from Qualcomm, Intel, and AMD.</p><p>And now, the ProArt P14 is taking on Apple with the RTX Spark N1X platform — marrying an Arm-based Nvidia Grace CPU with a dedicated Blackwell RTX GPU, backed up by up to 128GB of unified memory.</p><p>In terms of how much you can spec it, ProArt P14 configurations start from that baseline N1X with fewer cores and 24GB of memory, so the versatility of configs means you can run the full gamut against the MacBook Pro.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="5X7LesSj9fyDU8yrouBoSU" name="Asus ProArt P14 vs MacBook Pro M5" alt="Asus ProArt P14 vs MacBook Pro M5" src="https://cdn.mos.cms.futurecdn.net/5X7LesSj9fyDU8yrouBoSU-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Apple’s machine falls down in modern AAA PC gaming backlogs — some of it works through Metal compatibility, but most will be left to crippling emulation or cloud streaming.</p><p>But with N1X’s CUDA cores, the ProArt P14 can run 1440p games at 100 FPS, complete with DLSS support and anti-cheat compatibility. Beyond that, I expect they’ll be pretty evenly matched in creator performance and AI. Differences there will come down to the software optimization for the silicon.</p><h3 class="article-body__section" id="section-the-potential-dealbreakers"><span>The potential dealbreakers</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="pbfBZx7ZmNxAR8JxpPcEHU" name="Asus ProArt P14 vs MacBook Pro M5" alt="Asus ProArt P14 vs MacBook Pro M5" src="https://cdn.mos.cms.futurecdn.net/pbfBZx7ZmNxAR8JxpPcEHU-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I’m just going to summarize some quick things that may become the thorn in the ProArt P14’s side once we get one in the labs to fully test.</p><ul><li><strong>The fan noise: </strong>When I tested the <a href="https://www.tomsguide.com/computing/gaming-laptops/i-tested-6-rtx-spark-laptops-for-gaming-and-the-winner-completely-shocked-me">ProArt P14 for gaming</a>, it was the loudest RTX Spark laptop in the room. The MacBook Pro stays near-silent during everyday tasks, and hopefully the P14 is the same — but it’s clear that an insane amount of Nvidia silicon requires aggressive airflow.</li><li><strong>Battery endurance: </strong>Nvidia is claiming “all-day” battery life and the same performance both on and off the charger. During my testing, I can confirm the latter, but we don’t know about the former yet! If it can achieve that 12-14+ hours of mixed real-world productivity, Apple loses its biggest single advantage.</li><li><strong>The price: </strong>The MacBook Pro starts at $1,999. To get the equivalent amount of memory (24GB), that price goes up to $2,199. This is the big question mark for N1X laptops, and hopefully they’ll be competitive on cost.</li></ul><h2 class="article-body__section" id="section-early-verdict"><span>Early verdict</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="RPrRBEsYKHxXze25EpotYU" name="Asus ProArt P14 vs MacBook Pro M5" alt="Asus ProArt P14 vs MacBook Pro M5" src="https://cdn.mos.cms.futurecdn.net/RPrRBEsYKHxXze25EpotYU-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>This is a way-too-early verdict, as I’m piecing together the few times I’ve had to test the ProArt P14 and its potential against months of MacBook Pro use. But I’ll give it a stab.</p><section class="howto-block">                    <h3>Switch to the Asus ProArt P14 if</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/r2srK5bDXmnczCLfapywsU.jpg"                                        alt="Asus ProArt P14 vs MacBook Pro M5"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/r2srK5bDXmnczCLfapywsU.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Future)</div></figure>                    <p><p>You refuse to carry two laptops ever again. If you want a sleek, premium aluminum daily driver that can handle your prosumer work by day and play games by night, the ProArt P14 is the first Windows laptop that really steps on the MacBook Pro's throat.</p></p>                </section><section class="howto-block">                    <h3>Stick with the MacBook Pro 14 if</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/aeAsuGHPsdeNftt767USaK.jpg"                                        alt="MacBook Pro M5"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/aeAsuGHPsdeNftt767USaK.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Tom's Guide)</div></figure>                    <p><p>Gaming isn't a priority; you prioritize whisper-quiet operation, a uniform haptic trackpad, and a pure macOS creative pipeline. Battery endurance is proven on this machine, but the jury’s still out until we get the P14 in for testing.</p></p>                </section><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/gaming/handheld-gaming/i-tested-acers-wild-flip-and-swivel-handheld-why-project-dualplay-mini-is-the-ultimate-netbook-love-letter">I tested Acer’s wild flip-and-swivel handheld — why Project DualPlay Mini is the ultimate netbook love letter</a></li><li><a href="https://www.tomsguide.com/gaming/pc-gaming/i-tested-the-real-dlss-5-forget-the-leaked-mods-its-not-an-ai-filter-this-is-nvidias-photorealistic-game-changer">I wanted to hate Nvidia’s DLSS 5 ‘AI filter’ — but the real DLSS 5 is photorealistic black magic</a></li><li><a href="https://www.tomsguide.com/gaming/playstation/as-a-pc-snob-i-wanted-to-catch-gta-6-making-console-compromises-instead-im-in-awe-of-the-trickery">As a PC snob, I wanted to catch GTA 6 making console compromises. Instead, I’m in awe of the trickery</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Nvidia’s RTX Spark N1X launches this October: My price predictions for the potential MacBook Pro killer ]]></title>
                                                                                                <dc:content><![CDATA[ <p>For years, creatives and gamers have had to deal with the two-device compromise: you buy an M-series MacBook Pro for the seamless productivity and all-day battery life, and keep the power-hungry Windows gaming rig at home.</p><p>I’ve <a href="https://www.tomsguide.com/computing/laptops/nvidia-rtx-spark-hands-on-review">tested RTX Spark</a> a few times now, and I believe it’s the end of that compromise. And at <a href="http://tomsguide.com/tag/ifa-2026">IFA 2026</a>, Team Green has confirmed that the <strong>RTX Spark N1X is coming this October</strong>.</p><p>Nvidia is aggressively targeting Apple’s throat. By shifting to the Arm-based Grace CPU paired with Blackwell graphics, as you’d see in its RTX 50-series GPUs, and massive pools of memory, Nvidia is finally bringing the Apple Silicon paradigm to Windows — without sacrificing PC gaming.</p><h2 id="impressive-power-in-a-14mm-chassis">Impressive power in a 14mm chassis</h2><p>This isn’t the first foray with Windows on Arm that we’ve seen. Qualcomm’s Snapdragon X2 Elite continues to deliver strong performance and power efficiency. But RTX Spark goes at things a different way by chucking a massive GPU at the silicon. </p><p>In my time testing, that leads to super-powered prosumer productivity performance (especially with the software integrations across Blender and Adobe’s creative suite), stellar gaming performance and enough fuel for Nvidia’s mission to “reinvent the PC” with local agentic AI. And for that power efficiency side of things, it manages to keep the same performance both on and off the charger!</p><p>Up until this point, we’d only known about the top-of-the-line N1X chip. Now we know about the baseline option (also called N1X…this could get a little confusing).</p><div ><table><thead><tr><th class="firstcol " ><p>Spec</p></th><th  ><p>Configuration 1 (The powerhouse)</p></th><th  ><p>Configuration 2 (The baseline)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>CPU</strong></p></td><td  ><p>20-core Grace CPU</p></td><td  ><p>18-core Grace CPU</p></td></tr><tr><td class="firstcol " ><p><strong>GPU</strong></p></td><td  ><p>Blackwell RTX GPU with 6,144 CUDA cores <strong>(same count found in desktop RTX 5070)</strong></p></td><td  ><p>Blackwell RTX GPU with 5,120 CUDA cores <strong>(more than the cores found on mobile RTX 5070)</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Unified Memory</strong></p></td><td  ><p>Up to 128GB</p></td><td  ><p>24GB-32GB</p></td></tr></tbody></table></div><p>Obviously it’s worth noting that with the lower power consumption of a laptop, even though it does have a massive amount of cores, you won’t get the same level of performance as a desktop-class GPU. Just fun for comparison's sake, you know?</p><h2 id="the-form-factors">The form factors</h2><p>We already know about eight laptops launching with RTX Spark N1X. You can see where I rank them all in a <a href="https://www.tomsguide.com/computing/laptops/ive-gone-hands-on-with-every-nvidia-rtx-spark-laptop-coming-this-fall-heres-my-ranked-list-of-the-best-options">tiered list</a> I did a couple of months ago. Basically, to match the premium specs of that chip, you’re getting premium shells that tick all the boxes needed to take on a MacBook Pro — metallic bodies, gorgeous displays (OLED or mini LED), solid ergonomics and plenty of I/O.</p><p>There are also a couple of mini PCs from Asus and MSI launching with the chip inside, and here at IFA, we’re getting word on two new systems coming to the party in October too:</p><ul><li><strong>Lenovo Yoga 9n 2-in-1: </strong>Another convertible RTX Spark system has arrived to take on MSI’s Prestige Flip N16. The chassis is just 14mm thin.</li><li><strong>Acer SFF RTX Spark: </strong>A small form factor desktop that would look pretty perfect under my living room TV as well as my desk.</li></ul><p>So that’s the next advantage over the MacBook — variety of designs.</p><h2 id="the-friction-point-predicting-the-price">The friction point: Predicting the price</h2><p>While Nvidia was eager to show off the specs, it was noticeably silent on the price. Well, I’m gonna do some bac-of-the-napkin math here to fill this gap and make a prediction. Based on components and the direct competition with Apple, it’s obvious that these machines are going to carry a heavy premium.</p><ul><li><strong>The baseline prediction: </strong>The lower-tier configuration (18-core CPU, 5,120 CUDA cores, 24GB RAM) will likely start around the<strong> $1,999 to $2,499 range </strong>— pricing it directly against the base MacBook Pro models.</li><li><strong>The agentic premium: </strong>If you want that maxed out configuration with 128GB of unified memory to run massive local AI models, expect a jaw-dropping price tag. Given that a maxed-out MacBook Pro easily pushes past the $4,500 mark, an equivalent N1X will likely land in the <strong>$4,000 to $5,000+ range.</strong></li></ul><p>Bookmark this and remind me in the comments if I get this wrong!</p><h2 id="the-early-verdict">The early verdict</h2><p>Way back at <a href="https://www.tomsguide.com/computing/best-of-computex-2026">Computex 2026</a>, Nvidia CEO Jensen Huang made it clear that he wants to reinvent the PC with RTX Spark. This is all fair and good, but I believe the real showcase of N1X here is <strong>not </strong>the local AI computation. That part is impressive, but it’s still up for debate on whether people will actually use their computers in this way.</p><p>The real game-changer here (to me at least) is the fundamental architectural shift that bridges the gap between serious productivity and high-end gaming — complete with all-day battery life (providing it does match up to Nvidia’s claims of course). </p><p>It’s the MacBook Pro that actually has games to play on, and if everything plays out the way I’m anticipating (and there’s no nasty surprises on the performance front), then Apple is finally going to have genuine, uncompromised competition.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/gaming/pc-gaming/i-tested-the-real-dlss-5-forget-the-leaked-mods-its-not-an-ai-filter-this-is-nvidias-photorealistic-game-changer">I wanted to hate Nvidia’s DLSS 5 ‘AI filter’ — but the real DLSS 5 is photorealistic black magic</a></li><li><a href="https://www.tomsguide.com/computing/gaming-laptops/i-tested-6-rtx-spark-laptops-for-gaming-and-the-winner-completely-shocked-me">I tested 6 RTX Spark laptops for gaming — and the winner completely shocked me</a></li><li><a href="https://www.tomsguide.com/computing/toms-guide-computing-awards-2026-22-game-changing-laptops-desktops-and-peripherals">Tom’s Guide Computing Awards 2026: 22 game-changing laptops, desktops and peripherals</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/laptops/nvidias-rtx-spark-n1x-drops-this-october-why-apple-silicon-should-be-terrified-and-our-price-predictions</link>
                                                                            <description>
                            <![CDATA[ Nvidia’s RTX Spark N1X arrives this October. With up to 6,144 CUDA cores and 128GB unified memory, here is why Apple Silicon should be terrified. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">m4VrnYwhSNun6hoJrvGDyb</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/WudXrWFBDRvTr4BfJPKW3T-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 03 Sep 2026 16:00:00 +0000</pubDate>                                                                                                                                <updated>Fri, 04 Sep 2026 06:59:04 +0000</updated>
                                                                                                                                            <category><![CDATA[Laptops]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jason England ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/v4fSq5U4uZUEtGY2BwNuJ6-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jason brings a decade of tech and gaming journalism experience to his role as a Managing Editor of Computing at Tom&#039;s Guide. He has previously written for Laptop Mag, Tom&#039;s Hardware, Kotaku, Stuff and BBC Science Focus. In his spare time, you&#039;ll find Jason looking for good dogs to pet or thinking about eating pizza if he isn&#039;t already.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/WudXrWFBDRvTr4BfJPKW3T-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[RTX Spark]]></media:description>                                                            <media:text><![CDATA[RTX Spark]]></media:text>
                                <media:title type="plain"><![CDATA[RTX Spark]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/WudXrWFBDRvTr4BfJPKW3T-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>For years, creatives and gamers have had to deal with the two-device compromise: you buy an M-series MacBook Pro for the seamless productivity and all-day battery life, and keep the power-hungry Windows gaming rig at home.</p><p>I’ve <a href="https://www.tomsguide.com/computing/laptops/nvidia-rtx-spark-hands-on-review">tested RTX Spark</a> a few times now, and I believe it’s the end of that compromise. And at <a href="http://tomsguide.com/tag/ifa-2026">IFA 2026</a>, Team Green has confirmed that the <strong>RTX Spark N1X is coming this October</strong>.</p><p>Nvidia is aggressively targeting Apple’s throat. By shifting to the Arm-based Grace CPU paired with Blackwell graphics, as you’d see in its RTX 50-series GPUs, and massive pools of memory, Nvidia is finally bringing the Apple Silicon paradigm to Windows — without sacrificing PC gaming.</p><h2 id="impressive-power-in-a-14mm-chassis">Impressive power in a 14mm chassis</h2><p>This isn’t the first foray with Windows on Arm that we’ve seen. Qualcomm’s Snapdragon X2 Elite continues to deliver strong performance and power efficiency. But RTX Spark goes at things a different way by chucking a massive GPU at the silicon. </p><p>In my time testing, that leads to super-powered prosumer productivity performance (especially with the software integrations across Blender and Adobe’s creative suite), stellar gaming performance and enough fuel for Nvidia’s mission to “reinvent the PC” with local agentic AI. And for that power efficiency side of things, it manages to keep the same performance both on and off the charger!</p><p>Up until this point, we’d only known about the top-of-the-line N1X chip. Now we know about the baseline option (also called N1X…this could get a little confusing).</p><div ><table><thead><tr><th class="firstcol " ><p>Spec</p></th><th  ><p>Configuration 1 (The powerhouse)</p></th><th  ><p>Configuration 2 (The baseline)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>CPU</strong></p></td><td  ><p>20-core Grace CPU</p></td><td  ><p>18-core Grace CPU</p></td></tr><tr><td class="firstcol " ><p><strong>GPU</strong></p></td><td  ><p>Blackwell RTX GPU with 6,144 CUDA cores <strong>(same count found in desktop RTX 5070)</strong></p></td><td  ><p>Blackwell RTX GPU with 5,120 CUDA cores <strong>(more than the cores found on mobile RTX 5070)</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Unified Memory</strong></p></td><td  ><p>Up to 128GB</p></td><td  ><p>24GB-32GB</p></td></tr></tbody></table></div><p>Obviously it’s worth noting that with the lower power consumption of a laptop, even though it does have a massive amount of cores, you won’t get the same level of performance as a desktop-class GPU. Just fun for comparison's sake, you know?</p><h2 id="the-form-factors">The form factors</h2><p>We already know about eight laptops launching with RTX Spark N1X. You can see where I rank them all in a <a href="https://www.tomsguide.com/computing/laptops/ive-gone-hands-on-with-every-nvidia-rtx-spark-laptop-coming-this-fall-heres-my-ranked-list-of-the-best-options">tiered list</a> I did a couple of months ago. Basically, to match the premium specs of that chip, you’re getting premium shells that tick all the boxes needed to take on a MacBook Pro — metallic bodies, gorgeous displays (OLED or mini LED), solid ergonomics and plenty of I/O.</p><p>There are also a couple of mini PCs from Asus and MSI launching with the chip inside, and here at IFA, we’re getting word on two new systems coming to the party in October too:</p><ul><li><strong>Lenovo Yoga 9n 2-in-1: </strong>Another convertible RTX Spark system has arrived to take on MSI’s Prestige Flip N16. The chassis is just 14mm thin.</li><li><strong>Acer SFF RTX Spark: </strong>A small form factor desktop that would look pretty perfect under my living room TV as well as my desk.</li></ul><p>So that’s the next advantage over the MacBook — variety of designs.</p><h2 id="the-friction-point-predicting-the-price">The friction point: Predicting the price</h2><p>While Nvidia was eager to show off the specs, it was noticeably silent on the price. Well, I’m gonna do some bac-of-the-napkin math here to fill this gap and make a prediction. Based on components and the direct competition with Apple, it’s obvious that these machines are going to carry a heavy premium.</p><ul><li><strong>The baseline prediction: </strong>The lower-tier configuration (18-core CPU, 5,120 CUDA cores, 24GB RAM) will likely start around the<strong> $1,999 to $2,499 range </strong>— pricing it directly against the base MacBook Pro models.</li><li><strong>The agentic premium: </strong>If you want that maxed out configuration with 128GB of unified memory to run massive local AI models, expect a jaw-dropping price tag. Given that a maxed-out MacBook Pro easily pushes past the $4,500 mark, an equivalent N1X will likely land in the <strong>$4,000 to $5,000+ range.</strong></li></ul><p>Bookmark this and remind me in the comments if I get this wrong!</p><h2 id="the-early-verdict">The early verdict</h2><p>Way back at <a href="https://www.tomsguide.com/computing/best-of-computex-2026">Computex 2026</a>, Nvidia CEO Jensen Huang made it clear that he wants to reinvent the PC with RTX Spark. This is all fair and good, but I believe the real showcase of N1X here is <strong>not </strong>the local AI computation. That part is impressive, but it’s still up for debate on whether people will actually use their computers in this way.</p><p>The real game-changer here (to me at least) is the fundamental architectural shift that bridges the gap between serious productivity and high-end gaming — complete with all-day battery life (providing it does match up to Nvidia’s claims of course). </p><p>It’s the MacBook Pro that actually has games to play on, and if everything plays out the way I’m anticipating (and there’s no nasty surprises on the performance front), then Apple is finally going to have genuine, uncompromised competition.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/gaming/pc-gaming/i-tested-the-real-dlss-5-forget-the-leaked-mods-its-not-an-ai-filter-this-is-nvidias-photorealistic-game-changer">I wanted to hate Nvidia’s DLSS 5 ‘AI filter’ — but the real DLSS 5 is photorealistic black magic</a></li><li><a href="https://www.tomsguide.com/computing/gaming-laptops/i-tested-6-rtx-spark-laptops-for-gaming-and-the-winner-completely-shocked-me">I tested 6 RTX Spark laptops for gaming — and the winner completely shocked me</a></li><li><a href="https://www.tomsguide.com/computing/toms-guide-computing-awards-2026-22-game-changing-laptops-desktops-and-peripherals">Tom’s Guide Computing Awards 2026: 22 game-changing laptops, desktops and peripherals</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I wanted to hate Nvidia’s DLSS 5 ‘AI filter’ — but the real DLSS 5 is photorealistic black magic ]]></title>
                                                                                                <dc:content><![CDATA[ <p>So there I was — Nvidia giving me a full breakdown of what DLSS 5 is and how it works, alongside a chance to play NBA 2K27 on multiple systems to show how it’s evolved from the controversial AI slop filter that divided opinions in the office to something much more refined.</p><p>I thought things were heading in the right direction. But then, modders extracted the leaked DLSS 5 files from 2K27 and stuffed it into unsupported games. The online reaction was immediate and fracturing: half praising the added detail while the other half declared it the AI-filtered destroyer of frame rates.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="high" data-lazy-src="https://www.youtube-nocookie.com/embed/tTowPWp3cQc" allowfullscreen></iframe></div></div><p>Now that the embargo has lifted and I can (finally) talk about DLSS 5 (coming September 3 to NBA 2K27 first), as someone who spent time with the official integration, these mods are missing the point. Brute forcing a neural rendering file into a game without engine-level hooks is like judging a luxury car after hot-wiring it with missing spark plugs.</p><h2 id="the-big-question-is-dlss-5-just-an-ai-filter">The big question: is DLSS 5 just an AI filter?</h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/4w9bUQZKZ6c7JsnLzuYy8P-1920-80.jpg" alt="DLSS 5" /><figcaption><small role="credit">Nvidia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/HjqdMVf7ovcCsyq9FrJJ8P-1920-80.jpg" alt="DLSS 5" /><figcaption><small role="credit">Nvidia</small></figcaption></figure></figure><p>So the answer, technically, is no. But there’s a lot to it. When you think about AI filters, they slap a 2D post-processing effect over a completed image. As I quickly learnt when talking to the team behind DLSS 5, this is so much more.</p><p>This is a <strong>3D-guided neural rendering pipeline</strong> — ingesting all that vital 3D geometry data, such as surface normals, semantics of lighting, motion vectors and scene depth, to work <em>within </em>the physical rules of the game engine rather than hallucinating.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="mQgB2pqurghoQdopNCHRnM" name="DLSS 5" alt="DLSS 5" src="https://cdn.mos.cms.futurecdn.net/mQgB2pqurghoQdopNCHRnM-1920-80.jpg" mos="" align="middle" fullscreen="1" width="3840" height="2160" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/mQgB2pqurghoQdopNCHRnM-1920-80.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>And with all that information, it does something Nvidia calls <strong>real-time determinism</strong>. Think of it like the neural equivalent of when a bar is full — the rendering queue has a one-in/one-out policy. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="n9SYNVP4yTgoCse4GzHQaL" name="DLSS 5" alt="DLSS 5" src="https://cdn.mos.cms.futurecdn.net/n9SYNVP4yTgoCse4GzHQaL-1920-80.png" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Unlike offline video gen models that process chunks of video and take a guess at what it’ll look like (probabilistically), DLSS 5 processes every single frame in real-time to maintain stability between each one (deterministically). </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/JjiF69QSN3XmKNf8yCVMaP-1920-80.jpg" alt="DLSS 5" /><figcaption><small role="credit">Nvidia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Uaa37z8HugEzreqYB5Q3aP-1920-80.jpg" alt="DLSS 5" /><figcaption><small role="credit">Nvidia</small></figcaption></figure></figure><p>This means that instead of seeing somebody’s face change with every scene change in AI-generated video, the neural rendering on offer here doesn’t just imagine something new out of nowhere.</p><h2 id="what-s-new-since-we-saw-dlss-5">What’s new since we saw DLSS 5?</h2><p>When the next generation DLSS was announced earlier this year, the reaction across Tom’s Guide’s gaming Slack channel was swift and severe. The AI beautification of characters felt weird, and Digital Foundry’s test was combed over to see how much of the lighting and atmosphere had changed for the worse.</p><p>Of course, this was an <em>extremely </em>early build, and a lot has changed since then. Nvidia was quick to tell me they should’ve communicated DLSS 5 better at GTC, and Team Green is laying everything out about this new upscaler to us.</p><section class="howto-block">                    <h3>It’s now a lot smaller (and more efficient)</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/xVwWU3WNBnHMmPhzWSVfzL.jpg"                                        alt="DLSS 5"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/xVwWU3WNBnHMmPhzWSVfzL.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Nvidia)</div></figure>                    <p><p>You may remember old demos of this needing two RTX 5090s to run. Now, just a few months later, I’ve seen it run on a single desktop GPU, GeForce Now and even an RTX 5060 laptop.</p></p>                </section><section class="howto-block">                    <h3>You’ve got a choice of three models</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/CuDozKyrNfVXvXdGPn7vQQ.jpg"                                        alt="DLSS 5"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/CuDozKyrNfVXvXdGPn7vQQ.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Nvidia)</div></figure>                    <p><p>Models A, B and C all do the same thing, but are trained in slightly different ways to provide different looks. Model A seems to be more contrasty with its lighting, Model C looks to brighten faces and objects more, and B lands right in the middle.</p></p>                </section><section class="howto-block">                    <h3>Structure and tone sliders</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/tSw8MdDZPLg5JyAaKMYZpQ.jpg"                                        alt="DLSS 5"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/tSw8MdDZPLg5JyAaKMYZpQ.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Nvidia)</div></figure>                    <p><p>Developers have the tools to adjust details with sliders. These can be both from a high level dial that turns everything up and down to specific details separate of color tones and lighting.</p></p>                </section><section class="howto-block">                    <h3>Automasking</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/yHeDb7BKEgwj37xPCyTqrP.jpg"                                        alt="DLSS 5"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/yHeDb7BKEgwj37xPCyTqrP.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Nvidia)</div></figure>                    <p><p>On top of that, masks for neural enhancement can be applied exclusively to specific character models without touching a single thing around them.</p></p>                </section><p>Put simply, Nvidia’s providing some very strong tools here, but ensuring artistic intent remains at the heart of how you work with them — rather than having them replace the artistry.</p><h2 id="performance-reality-check">Performance reality check</h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/fZTFuryubHFp9s5jRHKMHH-1920-80.jpg" alt="NBA 2K27" /><figcaption><small role="credit">Nvidia / 2K Games</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/U78k4rErwqZWfTCkwrekUH-1920-80.jpg" alt="NBA 2K27" /><figcaption><small role="credit">Nvidia / 2K Games</small></figcaption></figure></figure><p>If you were to look at the DLSS 5-injected modding over the weekend, it’d be fair to believe that frame rate takes a huge hit when doing this frame-by-frame neural rendering.</p><p>However, that’s not the experience I had across multiple tiers of systems playing the official DLSS 5 integration on NBA 2K27. Now, it’s worth noting that these demos I tried all had multi-frame generation turned on and ramped up too.</p><p>Frame counts were not turned on, so I can’t give you anything more numbers-wise than what Nvidia has given me here. But what I can confirm is gameplay felt silky smooth with no noticeable latency.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/GQJgtPguVwMYkcPXmk6x5T-1920-80.png" alt="DLSS 5" /><figcaption><small role="credit">Nvidia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/X3KnpMo5oMH3CKRSynyEDT-1920-80.png" alt="DLSS 5" /><figcaption><small role="credit">Nvidia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/S7QuF9kjY7HQVyCY8oprET-1920-80.png" alt="DLSS 5" /><figcaption><small role="credit">Nvidia</small></figcaption></figure></figure><p>The RTX 5090 desktop rig was of course the star of the show, with frame rates so high that it completely saturated the refresh rate of the gaming monitor. And when played using GeForce Now, it <em>looked </em>like a flawless 120 FPS frame rate.</p><p>But the real star of the show to me is that RTX 5060 laptop. This goes to show the huge work Nvidia’s done to shrink DLSS 5 down and optimize it to run across the entire breadth of its GPUs, and the smoothness felt like it was around the 90-100 FPS mark in play.</p><h2 id="how-does-it-look">How does it look?</h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/em2iCp7Ub6HgtSUzvsW6SF-1920-80.jpg" alt="NBA 2K27" /><figcaption><small role="credit">Nvidia / 2K Games</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/LBFMM98tqWqFEYgHyTUjUH-1920-80.jpg" alt="NBA 2K27" /><figcaption><small role="credit">Nvidia / 2K Games</small></figcaption></figure></figure><p>Visuals-wise, in a game like this that is actively pursuing photorealistic quality in its graphics, DLSS 5 really sings. Whether its the massive improvement in facial textures and definition in hair, the deeper contrast in and more realistic lighting, and the upgrades made to the crowd watching too, everything comes together nicely here.</p><p>If this were to placed on a game that’s more artistically stylized, it would look weird (and you’re seeing that on some of the modded work). Nvidia themselves are clear in saying that developers can just choose not to use it if that is what developers are aiming for.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/ervmMEDXgaQMWYNigs5qmH-1920-80.jpg" alt="NBA 2K27" /><figcaption><small role="credit">Nvidia / 2K Games</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/bY7zJQEB8rcYiXznuv8BYH-1920-80.jpg" alt="NBA 2K27" /><figcaption><small role="credit">Nvidia / 2K Games</small></figcaption></figure></figure><p>But in the case of NBA 2K27, the updates made to DLSS 5 since we last saw the super filtered looks from previous are really evident. The changes are more nuanced, and with the granular levels of control, they make a big positive difference to my eyes.</p><h2 id="a-specialized-weapon">A specialized weapon</h2><p>So let’s get down to brass tacks. DLSS 5 is built specifically to bridge the uncanny valley in photorealistic titles. It won’t make sense for cel-shared or heavily stylized indie games. But for sports sims, cinematic shooters and immersive open worlds, to my eyes and early impressions, this feels like a generational leap.</p><p>Of course, I want to test it more to be definitive about it, which is what I’ll absolutely do when it officially drops on September 3rd with NBA 2K27 across RTX 50-series systems and GeForce Now.</p><p>One thing is clear: this isn’t an AI filter — it’s the start of real-time neural rendering. I'm looking forward to seeing how it develops, and how the people will respond to it.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OaLGwW"></div>                            </div>                            <script src="https://kwizly.com/embed/OaLGwW.js" async></script><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/gaming-laptops/i-tested-6-rtx-spark-laptops-for-gaming-and-the-winner-completely-shocked-me">I tested 6 RTX Spark laptops for gaming — and the winner completely shocked me</a></li><li><a href="https://www.tomsguide.com/gaming/playstation/as-a-pc-snob-i-wanted-to-catch-gta-6-making-console-compromises-instead-im-in-awe-of-the-trickery">As a PC snob, I wanted to catch GTA 6 making console compromises. Instead, I’m in awe of the trickery</a></li><li><a href="https://www.tomsguide.com/computing/gpus/i-tested-nvidias-new-dlss-4-5-ray-reconstruction-it-finally-fixes-path-tracings-biggest-flaw-but-heres-the-reality-check">I tested NVIDIA’s new DLSS 4.5 Ray Reconstruction — it finally fixes path tracing’s biggest flaw, but here’s the reality check</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/gaming/pc-gaming/i-tested-the-real-dlss-5-forget-the-leaked-mods-its-not-an-ai-filter-this-is-nvidias-photorealistic-game-changer</link>
                                                                            <description>
                            <![CDATA[ I tested official DLSS 5 in NBA 2K27. Forget the leaked mods — here is why Nvidia's 3D-guided neural rendering pipeline is a photorealistic game-changer. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">VkkzRDt6JbL53rYUrTH3zc</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/yqb8cdrEp58qDStyShw9e3-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 01 Sep 2026 16:24:22 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[PC Gaming]]></category>
                                                    <category><![CDATA[GPUs]]></category>
                                                    <category><![CDATA[Gaming]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Computing Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jason England ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/v4fSq5U4uZUEtGY2BwNuJ6-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jason brings a decade of tech and gaming journalism experience to his role as a Managing Editor of Computing at Tom&#039;s Guide. He has previously written for Laptop Mag, Tom&#039;s Hardware, Kotaku, Stuff and BBC Science Focus. In his spare time, you&#039;ll find Jason looking for good dogs to pet or thinking about eating pizza if he isn&#039;t already.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/yqb8cdrEp58qDStyShw9e3-1920-80.jpg">
                                                            <media:credit><![CDATA[Nvidia / Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[DLSS 5]]></media:description>                                                            <media:text><![CDATA[DLSS 5]]></media:text>
                                <media:title type="plain"><![CDATA[DLSS 5]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/yqb8cdrEp58qDStyShw9e3-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>So there I was — Nvidia giving me a full breakdown of what DLSS 5 is and how it works, alongside a chance to play NBA 2K27 on multiple systems to show how it’s evolved from the controversial AI slop filter that divided opinions in the office to something much more refined.</p><p>I thought things were heading in the right direction. But then, modders extracted the leaked DLSS 5 files from 2K27 and stuffed it into unsupported games. The online reaction was immediate and fracturing: half praising the added detail while the other half declared it the AI-filtered destroyer of frame rates.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="high" data-lazy-src="https://www.youtube-nocookie.com/embed/tTowPWp3cQc" allowfullscreen></iframe></div></div><p>Now that the embargo has lifted and I can (finally) talk about DLSS 5 (coming September 3 to NBA 2K27 first), as someone who spent time with the official integration, these mods are missing the point. Brute forcing a neural rendering file into a game without engine-level hooks is like judging a luxury car after hot-wiring it with missing spark plugs.</p><h2 id="the-big-question-is-dlss-5-just-an-ai-filter">The big question: is DLSS 5 just an AI filter?</h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/4w9bUQZKZ6c7JsnLzuYy8P-1920-80.jpg" alt="DLSS 5" /><figcaption><small role="credit">Nvidia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/HjqdMVf7ovcCsyq9FrJJ8P-1920-80.jpg" alt="DLSS 5" /><figcaption><small role="credit">Nvidia</small></figcaption></figure></figure><p>So the answer, technically, is no. But there’s a lot to it. When you think about AI filters, they slap a 2D post-processing effect over a completed image. As I quickly learnt when talking to the team behind DLSS 5, this is so much more.</p><p>This is a <strong>3D-guided neural rendering pipeline</strong> — ingesting all that vital 3D geometry data, such as surface normals, semantics of lighting, motion vectors and scene depth, to work <em>within </em>the physical rules of the game engine rather than hallucinating.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="mQgB2pqurghoQdopNCHRnM" name="DLSS 5" alt="DLSS 5" src="https://cdn.mos.cms.futurecdn.net/mQgB2pqurghoQdopNCHRnM-1920-80.jpg" mos="" align="middle" fullscreen="1" width="3840" height="2160" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/mQgB2pqurghoQdopNCHRnM-1920-80.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>And with all that information, it does something Nvidia calls <strong>real-time determinism</strong>. Think of it like the neural equivalent of when a bar is full — the rendering queue has a one-in/one-out policy. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="n9SYNVP4yTgoCse4GzHQaL" name="DLSS 5" alt="DLSS 5" src="https://cdn.mos.cms.futurecdn.net/n9SYNVP4yTgoCse4GzHQaL-1920-80.png" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Unlike offline video gen models that process chunks of video and take a guess at what it’ll look like (probabilistically), DLSS 5 processes every single frame in real-time to maintain stability between each one (deterministically). </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/JjiF69QSN3XmKNf8yCVMaP-1920-80.jpg" alt="DLSS 5" /><figcaption><small role="credit">Nvidia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Uaa37z8HugEzreqYB5Q3aP-1920-80.jpg" alt="DLSS 5" /><figcaption><small role="credit">Nvidia</small></figcaption></figure></figure><p>This means that instead of seeing somebody’s face change with every scene change in AI-generated video, the neural rendering on offer here doesn’t just imagine something new out of nowhere.</p><h2 id="what-s-new-since-we-saw-dlss-5">What’s new since we saw DLSS 5?</h2><p>When the next generation DLSS was announced earlier this year, the reaction across Tom’s Guide’s gaming Slack channel was swift and severe. The AI beautification of characters felt weird, and Digital Foundry’s test was combed over to see how much of the lighting and atmosphere had changed for the worse.</p><p>Of course, this was an <em>extremely </em>early build, and a lot has changed since then. Nvidia was quick to tell me they should’ve communicated DLSS 5 better at GTC, and Team Green is laying everything out about this new upscaler to us.</p><section class="howto-block">                    <h3>It’s now a lot smaller (and more efficient)</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/xVwWU3WNBnHMmPhzWSVfzL.jpg"                                        alt="DLSS 5"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/xVwWU3WNBnHMmPhzWSVfzL.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Nvidia)</div></figure>                    <p><p>You may remember old demos of this needing two RTX 5090s to run. Now, just a few months later, I’ve seen it run on a single desktop GPU, GeForce Now and even an RTX 5060 laptop.</p></p>                </section><section class="howto-block">                    <h3>You’ve got a choice of three models</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/CuDozKyrNfVXvXdGPn7vQQ.jpg"                                        alt="DLSS 5"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/CuDozKyrNfVXvXdGPn7vQQ.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Nvidia)</div></figure>                    <p><p>Models A, B and C all do the same thing, but are trained in slightly different ways to provide different looks. Model A seems to be more contrasty with its lighting, Model C looks to brighten faces and objects more, and B lands right in the middle.</p></p>                </section><section class="howto-block">                    <h3>Structure and tone sliders</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/tSw8MdDZPLg5JyAaKMYZpQ.jpg"                                        alt="DLSS 5"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/tSw8MdDZPLg5JyAaKMYZpQ.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Nvidia)</div></figure>                    <p><p>Developers have the tools to adjust details with sliders. These can be both from a high level dial that turns everything up and down to specific details separate of color tones and lighting.</p></p>                </section><section class="howto-block">                    <h3>Automasking</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/yHeDb7BKEgwj37xPCyTqrP.jpg"                                        alt="DLSS 5"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/yHeDb7BKEgwj37xPCyTqrP.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Nvidia)</div></figure>                    <p><p>On top of that, masks for neural enhancement can be applied exclusively to specific character models without touching a single thing around them.</p></p>                </section><p>Put simply, Nvidia’s providing some very strong tools here, but ensuring artistic intent remains at the heart of how you work with them — rather than having them replace the artistry.</p><h2 id="performance-reality-check">Performance reality check</h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/fZTFuryubHFp9s5jRHKMHH-1920-80.jpg" alt="NBA 2K27" /><figcaption><small role="credit">Nvidia / 2K Games</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/U78k4rErwqZWfTCkwrekUH-1920-80.jpg" alt="NBA 2K27" /><figcaption><small role="credit">Nvidia / 2K Games</small></figcaption></figure></figure><p>If you were to look at the DLSS 5-injected modding over the weekend, it’d be fair to believe that frame rate takes a huge hit when doing this frame-by-frame neural rendering.</p><p>However, that’s not the experience I had across multiple tiers of systems playing the official DLSS 5 integration on NBA 2K27. Now, it’s worth noting that these demos I tried all had multi-frame generation turned on and ramped up too.</p><p>Frame counts were not turned on, so I can’t give you anything more numbers-wise than what Nvidia has given me here. But what I can confirm is gameplay felt silky smooth with no noticeable latency.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/GQJgtPguVwMYkcPXmk6x5T-1920-80.png" alt="DLSS 5" /><figcaption><small role="credit">Nvidia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/X3KnpMo5oMH3CKRSynyEDT-1920-80.png" alt="DLSS 5" /><figcaption><small role="credit">Nvidia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/S7QuF9kjY7HQVyCY8oprET-1920-80.png" alt="DLSS 5" /><figcaption><small role="credit">Nvidia</small></figcaption></figure></figure><p>The RTX 5090 desktop rig was of course the star of the show, with frame rates so high that it completely saturated the refresh rate of the gaming monitor. And when played using GeForce Now, it <em>looked </em>like a flawless 120 FPS frame rate.</p><p>But the real star of the show to me is that RTX 5060 laptop. This goes to show the huge work Nvidia’s done to shrink DLSS 5 down and optimize it to run across the entire breadth of its GPUs, and the smoothness felt like it was around the 90-100 FPS mark in play.</p><h2 id="how-does-it-look">How does it look?</h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/em2iCp7Ub6HgtSUzvsW6SF-1920-80.jpg" alt="NBA 2K27" /><figcaption><small role="credit">Nvidia / 2K Games</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/LBFMM98tqWqFEYgHyTUjUH-1920-80.jpg" alt="NBA 2K27" /><figcaption><small role="credit">Nvidia / 2K Games</small></figcaption></figure></figure><p>Visuals-wise, in a game like this that is actively pursuing photorealistic quality in its graphics, DLSS 5 really sings. Whether its the massive improvement in facial textures and definition in hair, the deeper contrast in and more realistic lighting, and the upgrades made to the crowd watching too, everything comes together nicely here.</p><p>If this were to placed on a game that’s more artistically stylized, it would look weird (and you’re seeing that on some of the modded work). Nvidia themselves are clear in saying that developers can just choose not to use it if that is what developers are aiming for.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/ervmMEDXgaQMWYNigs5qmH-1920-80.jpg" alt="NBA 2K27" /><figcaption><small role="credit">Nvidia / 2K Games</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/bY7zJQEB8rcYiXznuv8BYH-1920-80.jpg" alt="NBA 2K27" /><figcaption><small role="credit">Nvidia / 2K Games</small></figcaption></figure></figure><p>But in the case of NBA 2K27, the updates made to DLSS 5 since we last saw the super filtered looks from previous are really evident. The changes are more nuanced, and with the granular levels of control, they make a big positive difference to my eyes.</p><h2 id="a-specialized-weapon">A specialized weapon</h2><p>So let’s get down to brass tacks. DLSS 5 is built specifically to bridge the uncanny valley in photorealistic titles. It won’t make sense for cel-shared or heavily stylized indie games. But for sports sims, cinematic shooters and immersive open worlds, to my eyes and early impressions, this feels like a generational leap.</p><p>Of course, I want to test it more to be definitive about it, which is what I’ll absolutely do when it officially drops on September 3rd with NBA 2K27 across RTX 50-series systems and GeForce Now.</p><p>One thing is clear: this isn’t an AI filter — it’s the start of real-time neural rendering. I'm looking forward to seeing how it develops, and how the people will respond to it.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OaLGwW"></div>                            </div>                            <script src="https://kwizly.com/embed/OaLGwW.js" async></script><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/gaming-laptops/i-tested-6-rtx-spark-laptops-for-gaming-and-the-winner-completely-shocked-me">I tested 6 RTX Spark laptops for gaming — and the winner completely shocked me</a></li><li><a href="https://www.tomsguide.com/gaming/playstation/as-a-pc-snob-i-wanted-to-catch-gta-6-making-console-compromises-instead-im-in-awe-of-the-trickery">As a PC snob, I wanted to catch GTA 6 making console compromises. Instead, I’m in awe of the trickery</a></li><li><a href="https://www.tomsguide.com/computing/gpus/i-tested-nvidias-new-dlss-4-5-ray-reconstruction-it-finally-fixes-path-tracings-biggest-flaw-but-heres-the-reality-check">I tested NVIDIA’s new DLSS 4.5 Ray Reconstruction — it finally fixes path tracing’s biggest flaw, but here’s the reality check</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Anthropic just made a staggering $35 billion bet on Claude — here's why it needs so much computing power ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Anthropic has reportedly signed a $35 billion cloud computing deal with Nvidia-backed Lambda for access to infrastructure at a massive new data center in Texas, according to <a href="https://www.reuters.com/technology/anthropic-signs-35-billion-cloud-deal-with-nvidia-backed-lambda-source-says-2026-08-31/" target="_blank">Reuters</a>.</p><p>The project, which is being developed by Hut 8 in Nueces County, Texas, will provide Anthropic with access to roughly <a href="https://www.tomsguide.com/ai/the-ai-boom-is-driving-up-electricity-bills-heres-what-you-need-to-know">350 megawatts of capacity</a>. Nvidia GPUs will provide the computing muscle, with the additional capacity intended to help meet growing demand for <a href="https://www.tomsguide.com/ai/claude/you-might-be-using-claude-wrong-5-habits-to-stop-right-now">Claude</a>.</p><p>It's an eye-watering amount of money. But what's even more remarkable is that the $35 billion agreement comes less than a week after Anthropic reportedly committed another $45 billion to rent computing power from Nscale.</p><p>In other words, Anthropic has reportedly committed around $80 billion to just these two computing deals in the span of a week.</p><p>So why does the company behind a chatbot need that much infrastructure? Let's dig into it. </p><h2 id="claude-needs-a-lot-more-compute">Claude needs a lot more compute</h2><p>If you open Claude on your phone or laptop, it's easy to forget what happens after you hit send.</p><p>Your request ultimately has to be processed by specialized hardware running inside a data center. Multiply that by millions of prompts, API calls and complicated <a href="https://www.tomsguide.com/ai/i-tested-claude-cowork-anthropics-new-ai-feels-more-like-a-coworker-than-a-chatbot">AI agent tasks</a>, and the infrastructure requirements quickly become enormous.</p><p>And Anthropic isn't preparing for Claude's current level of demand. It's building for where it thinks that demand is headed.</p><p>Anthropic said in May that its annualized revenue had surpassed $47 billion, up from approximately $9 billion at the end of 2025. The company specifically said some of the money from its latest funding round would be used to "<a href="https://www.anthropic.com/news/series-h" target="_blank">expand compute to meet growing demand for Claude</a>."</p><h2 id="claude-code-appears-to-be-particularly-important-to-growth">Claude Code appears to be particularly important to growth</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4359px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="MgNuts2aMA2ezHUyzAPVSQ" name="shutterstock_2677732223" alt="Claude Code image on laptop" src="https://cdn.mos.cms.futurecdn.net/MgNuts2aMA2ezHUyzAPVSQ-1920-80.jpg" mos="" align="middle" fullscreen="" width="4359" height="2452" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p><a href="https://www.anthropic.com/news/anthropic-raises-30-billion-series-g-funding-380-billion-post-money-valuation?_bhlid=56ba2f10e46d916732c3d1fc42c9e6a4ac5ba966" target="_blank">Anthropic said</a> earlier this year that<a href="https://www.tomsguide.com/ai/i-test-ai-coding-tools-all-day-here-are-9-hidden-claude-code-features-youre-probably-missing"> Claude Code's</a> annualized revenue had climbed above $2.5 billion and that weekly active users had doubled since the beginning of 2026. Business subscriptions to the coding agent had quadrupled over the same period.</p><p>That's important because tools such as Claude Code can require considerably more interaction with an AI model than asking a chatbot a single question.</p><p>Instead of producing one response and stopping, an AI coding agent can inspect files, write code, run commands, analyze the results, fix mistakes and continue working through a task. Anthropic's own research into roughly 400,000 Claude Code sessions found that usage has been shifting toward more end-to-end <a href="https://www.tomsguide.com/ai/claude-sonnet-4-5-can-code-for-30-hours-straight-and-it-could-change-the-future-of-work-forever">agentic tasks</a>, including running software, analyzing data and producing documents.</p><p>The more work we hand over to AI agents, the more inference compute companies such as Anthropic need behind them.</p><h2 id="35-billion-isn-39-t-even-anthropic-39-s-biggest-recent-compute-deal">$35 billion isn't even Anthropic's biggest recent compute deal</h2><p>Just days ago, <a href="https://www.reuters.com/technology/anthropic-pay-nscale-45-billion-rent-ai-computing-power-bloomberg-news-reports-2026-08-26/" target="_blank">Reuters reported</a> that Anthropic had agreed to spend $45 billion over six years for computing capacity from Nscale's data center campus in West Virginia.</p><p>That agreement covers about 460 megawatts of capacity and is expected to use Nvidia's next-generation Vera Rubin hardware.</p><p>Anthropic has been assembling compute capacity from multiple directions. It announced a <a href="https://www.anthropic.com/news/anthropic-invests-50-billion-in-american-ai-infrastructure" target="_blank">$50 billion U.S. data center investment</a> with Fluidstack last year, and in May said a partnership with <a href="https://www.tomsguide.com/ai/spacex-just-spent-usd60-billion-on-cursor-and-it-proves-ai-chatbots-arent-the-future-anymore">SpaceX </a>would substantially increase the amount of compute available for Claude.</p><p>That SpaceX capacity had an immediate impact users could actually see: Anthropic doubled Claude <a href="https://www.tomsguide.com/ai/claude/claude-free-vs-claude-pro-vs-claude-max-whats-the-difference">Code's five-hour rate limits for Pro</a>, Max, Team and some Enterprise users, removed a peak-hours restriction and raised API limits for Claude Opus models.</p><p>It's a useful example of why these enormous infrastructure deals ultimately matter to people using Claude. More compute doesn't automatically mean a smarter AI model, but it can determine how many people can use it, how frequently they can use it and how much work increasingly autonomous AI agents can perform.</p><h2 id="nvidia-is-everywhere-in-this-deal">Nvidia is everywhere in this deal</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="wCckHxw68LXgtKj3mm5HqS" name="Nvidia" alt="Nvidia" src="https://cdn.mos.cms.futurecdn.net/wCckHxw68LXgtKj3mm5HqS-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>There's another interesting wrinkle to Anthropic's latest agreement: Nvidia seems to be everywhere.</p><p>Lambda is backed by Nvidia. The data center will contain Nvidia hardware. And according to The Wall Street Journal, Nvidia itself will hold the lease on the Texas data center.</p><p>Nvidia is also an Anthropic investor. The companies announced a broader strategic partnership last November that included plans for Anthropic to use Nvidia hardware and for the two companies to work together on optimizing future Nvidia architectures for Anthropic's AI workloads.</p><p>Even Anthropic's $45 billion Nscale agreement reportedly involves Nvidia's upcoming Vera Rubin chips.</p><p>That shows just how central Nvidia has become to the infrastructure sitting behind the current AI boom. Companies such as Anthropic may be competing with OpenAI, Google and others to build the best AI models, but much of that race still depends on securing enormous quantities of computing hardware and electricity to run them.</p><h2 id="what-this-means-for-claude-users">What this means for Claude users</h2><p>Don't expect your Claude subscription to suddenly look different because Anthropic signed another data center deal. This is a much longer-term bet.</p><p>Anthropic is effectively wagering tens of billions of dollars that Claude usage — particularly through products such as Claude Code and future AI agents — is going to continue growing dramatically.</p><p>We've already seen what additional computing capacity can do. Anthropic used its SpaceX deal to raise Claude usage limits earlier this year. More infrastructure could similarly help the company accommodate more users, longer-running agents and increasingly compute-intensive models without constantly running into capacity constraints.</p><p>And with another $35 billion reportedly going toward Claude's computing needs, Anthropic clearly doesn't expect our appetite for AI to slow down anytime soon.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/ai/perplexitys-new-local-first-ai-runs-on-your-pc-and-asks-before-using-the-cloud">Perplexity’s new local-first AI runs on your PC — and asks before using the cloud</a></li><li><a href="https://www.tomsguide.com/ai/chatgpt/chatgpt-can-learn-your-repetitive-tasks-by-watching-you-here-are-7-prompts-to-try">ChatGPT can learn your repetitive tasks by watching you — here are 7 prompts to try</a></li><li><a href="https://www.tomsguide.com/ai/openai-is-leaving-cursor-in-november-here-are-your-3-options">OpenAI is leaving Cursor in November — here are your 3 options</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/ai/claude/anthropic-just-made-a-staggering-usd35-billion-bet-on-claude-heres-why-it-needs-so-much-computing-power</link>
                                                                            <description>
                            <![CDATA[ Anthropic is reportedly spending $35 billion on new computing power for Claude. Here’s why the AI chatbot needs so much infrastructure to keep growing. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">mEmhmvRrXuvkazu7t5rCsK</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/3xUsXu3ofF4sniyG4TZ9PM-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 01 Sep 2026 13:16:44 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Claude]]></category>
                                                    <category><![CDATA[AI]]></category>
                                                                                                <author><![CDATA[ amanda.caswell@futurenet.com (Amanda Caswell) ]]></author>                    <dc:creator><![CDATA[ Amanda Caswell ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/zYjevim2q7FjQiefqpjZRB-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/3xUsXu3ofF4sniyG4TZ9PM-1920-80.jpg">
                                                            <media:credit><![CDATA[Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Dario Amodei, Anthropic CEO]]></media:description>                                                            <media:text><![CDATA[Dario Amodei, Anthropic CEO]]></media:text>
                                <media:title type="plain"><![CDATA[Dario Amodei, Anthropic CEO]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/3xUsXu3ofF4sniyG4TZ9PM-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Anthropic has reportedly signed a $35 billion cloud computing deal with Nvidia-backed Lambda for access to infrastructure at a massive new data center in Texas, according to <a href="https://www.reuters.com/technology/anthropic-signs-35-billion-cloud-deal-with-nvidia-backed-lambda-source-says-2026-08-31/" target="_blank">Reuters</a>.</p><p>The project, which is being developed by Hut 8 in Nueces County, Texas, will provide Anthropic with access to roughly <a href="https://www.tomsguide.com/ai/the-ai-boom-is-driving-up-electricity-bills-heres-what-you-need-to-know">350 megawatts of capacity</a>. Nvidia GPUs will provide the computing muscle, with the additional capacity intended to help meet growing demand for <a href="https://www.tomsguide.com/ai/claude/you-might-be-using-claude-wrong-5-habits-to-stop-right-now">Claude</a>.</p><p>It's an eye-watering amount of money. But what's even more remarkable is that the $35 billion agreement comes less than a week after Anthropic reportedly committed another $45 billion to rent computing power from Nscale.</p><p>In other words, Anthropic has reportedly committed around $80 billion to just these two computing deals in the span of a week.</p><p>So why does the company behind a chatbot need that much infrastructure? Let's dig into it. </p><h2 id="claude-needs-a-lot-more-compute">Claude needs a lot more compute</h2><p>If you open Claude on your phone or laptop, it's easy to forget what happens after you hit send.</p><p>Your request ultimately has to be processed by specialized hardware running inside a data center. Multiply that by millions of prompts, API calls and complicated <a href="https://www.tomsguide.com/ai/i-tested-claude-cowork-anthropics-new-ai-feels-more-like-a-coworker-than-a-chatbot">AI agent tasks</a>, and the infrastructure requirements quickly become enormous.</p><p>And Anthropic isn't preparing for Claude's current level of demand. It's building for where it thinks that demand is headed.</p><p>Anthropic said in May that its annualized revenue had surpassed $47 billion, up from approximately $9 billion at the end of 2025. The company specifically said some of the money from its latest funding round would be used to "<a href="https://www.anthropic.com/news/series-h" target="_blank">expand compute to meet growing demand for Claude</a>."</p><h2 id="claude-code-appears-to-be-particularly-important-to-growth">Claude Code appears to be particularly important to growth</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4359px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="MgNuts2aMA2ezHUyzAPVSQ" name="shutterstock_2677732223" alt="Claude Code image on laptop" src="https://cdn.mos.cms.futurecdn.net/MgNuts2aMA2ezHUyzAPVSQ-1920-80.jpg" mos="" align="middle" fullscreen="" width="4359" height="2452" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p><a href="https://www.anthropic.com/news/anthropic-raises-30-billion-series-g-funding-380-billion-post-money-valuation?_bhlid=56ba2f10e46d916732c3d1fc42c9e6a4ac5ba966" target="_blank">Anthropic said</a> earlier this year that<a href="https://www.tomsguide.com/ai/i-test-ai-coding-tools-all-day-here-are-9-hidden-claude-code-features-youre-probably-missing"> Claude Code's</a> annualized revenue had climbed above $2.5 billion and that weekly active users had doubled since the beginning of 2026. Business subscriptions to the coding agent had quadrupled over the same period.</p><p>That's important because tools such as Claude Code can require considerably more interaction with an AI model than asking a chatbot a single question.</p><p>Instead of producing one response and stopping, an AI coding agent can inspect files, write code, run commands, analyze the results, fix mistakes and continue working through a task. Anthropic's own research into roughly 400,000 Claude Code sessions found that usage has been shifting toward more end-to-end <a href="https://www.tomsguide.com/ai/claude-sonnet-4-5-can-code-for-30-hours-straight-and-it-could-change-the-future-of-work-forever">agentic tasks</a>, including running software, analyzing data and producing documents.</p><p>The more work we hand over to AI agents, the more inference compute companies such as Anthropic need behind them.</p><h2 id="35-billion-isn-39-t-even-anthropic-39-s-biggest-recent-compute-deal">$35 billion isn't even Anthropic's biggest recent compute deal</h2><p>Just days ago, <a href="https://www.reuters.com/technology/anthropic-pay-nscale-45-billion-rent-ai-computing-power-bloomberg-news-reports-2026-08-26/" target="_blank">Reuters reported</a> that Anthropic had agreed to spend $45 billion over six years for computing capacity from Nscale's data center campus in West Virginia.</p><p>That agreement covers about 460 megawatts of capacity and is expected to use Nvidia's next-generation Vera Rubin hardware.</p><p>Anthropic has been assembling compute capacity from multiple directions. It announced a <a href="https://www.anthropic.com/news/anthropic-invests-50-billion-in-american-ai-infrastructure" target="_blank">$50 billion U.S. data center investment</a> with Fluidstack last year, and in May said a partnership with <a href="https://www.tomsguide.com/ai/spacex-just-spent-usd60-billion-on-cursor-and-it-proves-ai-chatbots-arent-the-future-anymore">SpaceX </a>would substantially increase the amount of compute available for Claude.</p><p>That SpaceX capacity had an immediate impact users could actually see: Anthropic doubled Claude <a href="https://www.tomsguide.com/ai/claude/claude-free-vs-claude-pro-vs-claude-max-whats-the-difference">Code's five-hour rate limits for Pro</a>, Max, Team and some Enterprise users, removed a peak-hours restriction and raised API limits for Claude Opus models.</p><p>It's a useful example of why these enormous infrastructure deals ultimately matter to people using Claude. More compute doesn't automatically mean a smarter AI model, but it can determine how many people can use it, how frequently they can use it and how much work increasingly autonomous AI agents can perform.</p><h2 id="nvidia-is-everywhere-in-this-deal">Nvidia is everywhere in this deal</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="wCckHxw68LXgtKj3mm5HqS" name="Nvidia" alt="Nvidia" src="https://cdn.mos.cms.futurecdn.net/wCckHxw68LXgtKj3mm5HqS-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>There's another interesting wrinkle to Anthropic's latest agreement: Nvidia seems to be everywhere.</p><p>Lambda is backed by Nvidia. The data center will contain Nvidia hardware. And according to The Wall Street Journal, Nvidia itself will hold the lease on the Texas data center.</p><p>Nvidia is also an Anthropic investor. The companies announced a broader strategic partnership last November that included plans for Anthropic to use Nvidia hardware and for the two companies to work together on optimizing future Nvidia architectures for Anthropic's AI workloads.</p><p>Even Anthropic's $45 billion Nscale agreement reportedly involves Nvidia's upcoming Vera Rubin chips.</p><p>That shows just how central Nvidia has become to the infrastructure sitting behind the current AI boom. Companies such as Anthropic may be competing with OpenAI, Google and others to build the best AI models, but much of that race still depends on securing enormous quantities of computing hardware and electricity to run them.</p><h2 id="what-this-means-for-claude-users">What this means for Claude users</h2><p>Don't expect your Claude subscription to suddenly look different because Anthropic signed another data center deal. This is a much longer-term bet.</p><p>Anthropic is effectively wagering tens of billions of dollars that Claude usage — particularly through products such as Claude Code and future AI agents — is going to continue growing dramatically.</p><p>We've already seen what additional computing capacity can do. Anthropic used its SpaceX deal to raise Claude usage limits earlier this year. More infrastructure could similarly help the company accommodate more users, longer-running agents and increasingly compute-intensive models without constantly running into capacity constraints.</p><p>And with another $35 billion reportedly going toward Claude's computing needs, Anthropic clearly doesn't expect our appetite for AI to slow down anytime soon.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/ai/perplexitys-new-local-first-ai-runs-on-your-pc-and-asks-before-using-the-cloud">Perplexity’s new local-first AI runs on your PC — and asks before using the cloud</a></li><li><a href="https://www.tomsguide.com/ai/chatgpt/chatgpt-can-learn-your-repetitive-tasks-by-watching-you-here-are-7-prompts-to-try">ChatGPT can learn your repetitive tasks by watching you — here are 7 prompts to try</a></li><li><a href="https://www.tomsguide.com/ai/openai-is-leaving-cursor-in-november-here-are-your-3-options">OpenAI is leaving Cursor in November — here are your 3 options</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I tested 6 RTX Spark laptops for gaming — and the winner completely shocked me ]]></title>
                                                                                                <dc:content><![CDATA[ <p>For years, my ultimate computing friction point has been the two-device compromise: I buy a thin and light MacBook for productivity, and keep a massive gaming rig at home for play. But after going hands-on with six <a href="https://www.tomsguide.com/computing/laptops/nvidia-rtx-spark-hands-on-review">Nvidia RTX Spark</a> laptops launching later this year, I can confidently say that era is over.</p><p>Put simply, this is shaping up to be a game-changer. Packing 6,144 CUDA cores into thin and light notebooks like these, it’s bridging the gap between serious productivity and high-end gaming. And crucially, game developers are already jumping on board to support it — ensuring vital anti-cheat software compatibility is ready to go.</p><p>But packing a powerful GPU into a sleek chassis doesn’t automatically make it a great gaming machine. Other factors are just as vital like how the keyboard feels, how loud the fans are and display quality. </p><p>I spent extensive time playing on six different models, and here’s my definitive RTX Spark gaming tier list, ranked from worst to best.</p><h2 id="a-dream-for-gamers">A dream for gamers</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="VPJcvprGffc9FfD2cHiytJ" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/VPJcvprGffc9FfD2cHiytJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Before I get there, though, this isn’t my <a href="https://www.tomsguide.com/computing/laptops/nvidia-rtx-spark-hands-on-review">first rodeo with Spark</a>. I did get to try the chip out at Computex this year (on my Birthday of all days). And since that was a much earlier version of what I saw here at Gamescom, here are some general updates:</p><ul><li><strong>More laptops, more fun: </strong>At Computex, only the <a href="https://www.tomsguide.com/computing/laptops/microsoft-surface-laptop-ultra-rtx-spark-hands-on-review">Surface Laptop Ultra</a> was turned on and usable. However, this time around they were all active and usable.</li><li><strong>Backing up their claims: </strong>Nvidia is touting 1440p gaming at over 100 FPS. Of course, with no visible FPS counter, I can’t confirm that specifically, but to the eye, all the games were running significantly over 60 FPS — settings at a range of medium to high (depending on the title) and DLSS turned on.</li><li><strong>So many developers on board: </strong>Turns out if you’re Nvidia, you have a fair bit of influence to get publishers on board. Windows on Arm is getting a shot in the arm thanks to anti-cheat support and a massive number of studios jumping on board to work on Arm-native versions of their games.</li><li><strong>Emulation looks much better: </strong>The fact Pragmata was even running through the Windows Prism emulation layer to make it play nice on an Arm chip was quite the achievement at Computex. But there definitely was a little bit of fuzziness to the gameplay looking back. Now, with four games including 007 First Light all emulated, they’re all crystal clear and playing great with no discernible latency.</li></ul><p>Put simply, things have definitely moved on since June, and anything with that RTX Spark sticker on the body is going to be a mighty tasty machine to get, come this fall. That being said, I’m here to talk about how some of these specific laptops fare for gaming on a build level — not a chip level.</p><h2 class="article-body__section" id="section-rtx-spark-laptop-for-gaming-tier-list-specs"><span>RTX Spark laptop (for gaming) tier list: Specs</span></h2><div ><table><thead><tr><th class="firstcol " ><p>Laptop</p></th><th  ><p>Form Factor</p></th><th  ><p>Display</p></th><th  ><p>Key Strength</p></th><th  ><p>Gaming Tier</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>HP OmniBook Ultra 16</strong></p></td><td  ><p>16-inch Clamshell</p></td><td  ><p>OLED (High-Refresh)</p></td><td  ><p>Near-mechanical keyboard tactility & stealth chassis</p></td><td  ><p><strong>S-Tier</strong></p></td></tr><tr><td class="firstcol " ><p><strong>MSI Prestige N16 Flip AI+</strong></p></td><td  ><p>16-inch 2-in-1</p></td><td  ><p>OLED Panel</p></td><td  ><p>Convertible tent-mode gaming with controller</p></td><td  ><p><strong>A-Tier</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Lenovo Yoga Pro 9n</strong></p></td><td  ><p>15-inch Clamshell</p></td><td  ><p>OLED Panel</p></td><td  ><p>Superb keyboard ergonomics & premium build</p></td><td  ><p><strong>A-Tier</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Asus ProArt P14</strong></p></td><td  ><p>14-inch Clamshell</p></td><td  ><p>3K OLED</p></td><td  ><p>MacBook Pro build quality (loud under load)</p></td><td  ><p><strong>B-Tier</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Surface Laptop Ultra</strong></p></td><td  ><p>15-inch Clamshell</p></td><td  ><p>Mini-LED PixelSense (3:2)</p></td><td  ><p>Stunning display, but sharp wrist-rest edges</p></td><td  ><p><strong>B-Tier</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Dell XPS 16</strong></p></td><td  ><p>16-inch Clamshell</p></td><td  ><p>Tandem OLED</p></td><td  ><p>Gorgeous design, but zero-gap keys falter in gaming</p></td><td  ><p><strong>C-Tier</strong></p></td></tr></tbody></table></div><h2 class="article-body__section" id="section-c-tier-a-laptop-wearing-a-suit"><span>C-tier: A laptop wearing a suit</span></h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/2kzHp5q252NWjL5RQTYj6K-1920-80.jpg" alt="Nvidia RTX Spark" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/GxuwvNgRn4xiPWpMe3zm5K-1920-80.jpg" alt="Nvidia RTX Spark" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Now don’t get me wrong, the <strong>Dell XPS 16</strong> is an undeniably good-looking laptop that will easily elicit an “oh that’s a cool thing” reaction when you pull it out in a meeting. The utilitarian body is sleek and that Tandem OLED display is super vivid.</p><p>But is this a safe space? Because that keyboard is problematic for gaming to put it mildly. It’s a flat chiclet board with zero gaps between the keys. Doom: The Dark Ages exposed the gaming flaws of a keyboard like this, as the lack of key definition had me panickedly looking down mid-battle to ensure I was on the WASD. </p><p>Like I said earlier this year, with a little time you can get used to this for productivity. But for gaming, it's not quite there.</p><h2 class="article-body__section" id="section-b-tier-productivity-first-gaming-second"><span>B-Tier: Productivity first, gaming second</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="wyCtSGaYPD8Lec4znM2TpJ" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/wyCtSGaYPD8Lec4znM2TpJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>These two are quite a bit better for gaming on an ergonomic level, but aren’t all the way there compared to some superior tactility further up this list.</p><p>First up is the <strong>Microsoft Surface Laptop Ultra: </strong>packing a delicious 15-inch mini-LED PixelSense Ultra touchscreen display with 3:2 aspect ratio. That taller screen may be more productivity-focused, but it’s gonna be great for RTS games too.</p><p>But again, the keyboard falters here slightly. Not that it’s <em>bad</em>, it’s a great-feeling tactile set of keys for productivity for sure. But for gaming, the dish of each key is far too subtle and the sharpness of those edges do cut into your wrists. So it firmly sits in the “it’s okay” category for gameplay.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="QGFSy32iWf8p6fxvjiwcxJ" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/QGFSy32iWf8p6fxvjiwcxJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Slightly better for play is my original personal favorite from Computex — the <strong>Asus ProArt P14. </strong>Basically, Asus understood the assignment and gave me a Windows equivalent of a MacBook Pro in its design and ergonomics. The keyboard’s better here for demanding gameplay too, and that 3K OLED display is mesmerizing.</p><p>But what do you get when you cram this much power into a small body? Loud fans to get all the heat out. To my ears at least, this was the loudest laptop in the testing room. It’s a great hybrid machine, but make sure you get a good gaming headset to drown out that fan noise.</p><h2 class="article-body__section" id="section-a-tier-great-all-rounders"><span>A-Tier: Great all-rounders</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="cHFDiUgx9F3jX98eyxbtsJ" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/cHFDiUgx9F3jX98eyxbtsJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Now we’re moving closer to the elite if gaming is a priority for your RTX Spark machine. The <strong>Lenovo Yoga Pro 9n </strong>boasts a great premium design with another vivid OLED display. </p><p>For gameplay, there are very few genuine downsides here — capped off by Lenovo’s trademark excellent keyboard ergonomics. The only reason it’s here in the A-tier is because one company has pulled a blinder with its board (more on that in a moment).</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="HJHDguXZ5CYkeDPeheeupJ" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/HJHDguXZ5CYkeDPeheeupJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Then there’s the <strong>MSI Prestige N16 Flip AI+</strong>. Yes, the keyboard is a little too heavy on the RGB lighting for my personal taste, but it feels good to tap away on, the OLED screen is a lovely flash flood of color, and it’s a 2-in-1 form factor that allows for tent mode gaming with a controller. That’s something none of these other options can do.</p><h2 class="article-body__section" id="section-s-tier-the-unexpected-champion"><span>S-Tier: The unexpected champion</span></h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/ZacrHEyMkoy6ygfnoXviFK-1920-80.jpg" alt="Nvidia RTX Spark" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/V529XqE9o2HXukhBbZX2zJ-1920-80.jpg" alt="Nvidia RTX Spark" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Which leaves one: the <strong>HP OmniBook Ultra 16. </strong>When I first saw this laptop at Computex, it looked like a decidedly “just fine” device. I expected it to just be another laptop more suited to work over play. I couldn’t have been more wrong.</p><p>There’s of course a crispy and gorgeous OLED panel here that moves fluidly, but that’s not the real champion feature here. That belongs to the keyboard, which elevated this machine to the top of the list. It’s a chiclet board, but the well defined keys and travel make it feel almost mechanical-like. It feels fantastic during gameplay, and with slick stylings to the chassis, it’s the ultimate stealth gaming laptop.</p><h2 class="article-body__section" id="section-plenty-to-look-forward-to"><span>Plenty to look forward to</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="RewkLciiWWu8fmzQZn4nUP" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/RewkLciiWWu8fmzQZn4nUP-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The RTX Spark lineup proves that the days of compromising between a sleek daily driver and a capable gaming machine are finally coming to a close. These six distinct options will hit the market soon, and while I can scrutinize them from a gaming perspective, they’re meant for so much more.</p><p>As <a href="https://www.tomsguide.com/computing/i-spoke-to-nvidia-ceo-jensen-huang-about-rtx-spark-he-is-willing-to-work-on-an-rtx-gaming-handheld-n2x-and-n3x-are-already-planned-and-the-chip-is-more-like-r2d2-than-a-laptop-cpu">CEO Jensen Huang said himself</a> when I got the chance to talk to him: “we’re focused on reinventing the PC.” There’s going to be something for everyone in this range. So I have to ask — if you’ve got the budget for one of these notebooks, which one would you spend your money on?</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><strong></strong><a href="https://www.tomsguide.com/computing/toms-guide-computing-awards-2026-22-game-changing-laptops-desktops-and-peripherals"><strong>Tom’s Guide Computing Awards 2026: 22 game-changing laptops, desktops and peripherals</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/gaming/playstation/as-a-pc-snob-i-wanted-to-catch-gta-6-making-console-compromises-instead-im-in-awe-of-the-trickery"><strong>As a PC snob, I wanted to catch GTA 6 making console compromises. Instead, I’m in awe of the trickery</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/computing/gpus/i-tested-nvidias-new-dlss-4-5-ray-reconstruction-it-finally-fixes-path-tracings-biggest-flaw-but-heres-the-reality-check"><strong>I tested NVIDIA’s new DLSS 4.5 Ray Reconstruction — it finally fixes path tracing’s biggest flaw, but here’s the reality check</strong></a><strong></strong></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/gaming-laptops/i-tested-6-rtx-spark-laptops-for-gaming-and-the-winner-completely-shocked-me</link>
                                                                            <description>
                            <![CDATA[ I just played games on 6 Nvidia RTX Spark laptops. From the Dell XPS 16 to the HP OmniBook Ultra 16, here is our definitive gaming tier list. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">qMNhNCq7WRHfhSGandcSqW</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/myJ3m3LbFK9Ly6WTKEsafK-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 31 Aug 2026 11:00:00 +0000</pubDate>                                                                                                                                <updated>Mon, 31 Aug 2026 11:30:15 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming Laptops]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Laptops]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jason England ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/v4fSq5U4uZUEtGY2BwNuJ6-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jason brings a decade of tech and gaming journalism experience to his role as a Managing Editor of Computing at Tom&#039;s Guide. He has previously written for Laptop Mag, Tom&#039;s Hardware, Kotaku, Stuff and BBC Science Focus. In his spare time, you&#039;ll find Jason looking for good dogs to pet or thinking about eating pizza if he isn&#039;t already.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/myJ3m3LbFK9Ly6WTKEsafK-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Nvidia RTX Spark]]></media:description>                                                            <media:text><![CDATA[Nvidia RTX Spark]]></media:text>
                                <media:title type="plain"><![CDATA[Nvidia RTX Spark]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/myJ3m3LbFK9Ly6WTKEsafK-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>For years, my ultimate computing friction point has been the two-device compromise: I buy a thin and light MacBook for productivity, and keep a massive gaming rig at home for play. But after going hands-on with six <a href="https://www.tomsguide.com/computing/laptops/nvidia-rtx-spark-hands-on-review">Nvidia RTX Spark</a> laptops launching later this year, I can confidently say that era is over.</p><p>Put simply, this is shaping up to be a game-changer. Packing 6,144 CUDA cores into thin and light notebooks like these, it’s bridging the gap between serious productivity and high-end gaming. And crucially, game developers are already jumping on board to support it — ensuring vital anti-cheat software compatibility is ready to go.</p><p>But packing a powerful GPU into a sleek chassis doesn’t automatically make it a great gaming machine. Other factors are just as vital like how the keyboard feels, how loud the fans are and display quality. </p><p>I spent extensive time playing on six different models, and here’s my definitive RTX Spark gaming tier list, ranked from worst to best.</p><h2 id="a-dream-for-gamers">A dream for gamers</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="VPJcvprGffc9FfD2cHiytJ" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/VPJcvprGffc9FfD2cHiytJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Before I get there, though, this isn’t my <a href="https://www.tomsguide.com/computing/laptops/nvidia-rtx-spark-hands-on-review">first rodeo with Spark</a>. I did get to try the chip out at Computex this year (on my Birthday of all days). And since that was a much earlier version of what I saw here at Gamescom, here are some general updates:</p><ul><li><strong>More laptops, more fun: </strong>At Computex, only the <a href="https://www.tomsguide.com/computing/laptops/microsoft-surface-laptop-ultra-rtx-spark-hands-on-review">Surface Laptop Ultra</a> was turned on and usable. However, this time around they were all active and usable.</li><li><strong>Backing up their claims: </strong>Nvidia is touting 1440p gaming at over 100 FPS. Of course, with no visible FPS counter, I can’t confirm that specifically, but to the eye, all the games were running significantly over 60 FPS — settings at a range of medium to high (depending on the title) and DLSS turned on.</li><li><strong>So many developers on board: </strong>Turns out if you’re Nvidia, you have a fair bit of influence to get publishers on board. Windows on Arm is getting a shot in the arm thanks to anti-cheat support and a massive number of studios jumping on board to work on Arm-native versions of their games.</li><li><strong>Emulation looks much better: </strong>The fact Pragmata was even running through the Windows Prism emulation layer to make it play nice on an Arm chip was quite the achievement at Computex. But there definitely was a little bit of fuzziness to the gameplay looking back. Now, with four games including 007 First Light all emulated, they’re all crystal clear and playing great with no discernible latency.</li></ul><p>Put simply, things have definitely moved on since June, and anything with that RTX Spark sticker on the body is going to be a mighty tasty machine to get, come this fall. That being said, I’m here to talk about how some of these specific laptops fare for gaming on a build level — not a chip level.</p><h2 class="article-body__section" id="section-rtx-spark-laptop-for-gaming-tier-list-specs"><span>RTX Spark laptop (for gaming) tier list: Specs</span></h2><div ><table><thead><tr><th class="firstcol " ><p>Laptop</p></th><th  ><p>Form Factor</p></th><th  ><p>Display</p></th><th  ><p>Key Strength</p></th><th  ><p>Gaming Tier</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>HP OmniBook Ultra 16</strong></p></td><td  ><p>16-inch Clamshell</p></td><td  ><p>OLED (High-Refresh)</p></td><td  ><p>Near-mechanical keyboard tactility & stealth chassis</p></td><td  ><p><strong>S-Tier</strong></p></td></tr><tr><td class="firstcol " ><p><strong>MSI Prestige N16 Flip AI+</strong></p></td><td  ><p>16-inch 2-in-1</p></td><td  ><p>OLED Panel</p></td><td  ><p>Convertible tent-mode gaming with controller</p></td><td  ><p><strong>A-Tier</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Lenovo Yoga Pro 9n</strong></p></td><td  ><p>15-inch Clamshell</p></td><td  ><p>OLED Panel</p></td><td  ><p>Superb keyboard ergonomics & premium build</p></td><td  ><p><strong>A-Tier</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Asus ProArt P14</strong></p></td><td  ><p>14-inch Clamshell</p></td><td  ><p>3K OLED</p></td><td  ><p>MacBook Pro build quality (loud under load)</p></td><td  ><p><strong>B-Tier</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Surface Laptop Ultra</strong></p></td><td  ><p>15-inch Clamshell</p></td><td  ><p>Mini-LED PixelSense (3:2)</p></td><td  ><p>Stunning display, but sharp wrist-rest edges</p></td><td  ><p><strong>B-Tier</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Dell XPS 16</strong></p></td><td  ><p>16-inch Clamshell</p></td><td  ><p>Tandem OLED</p></td><td  ><p>Gorgeous design, but zero-gap keys falter in gaming</p></td><td  ><p><strong>C-Tier</strong></p></td></tr></tbody></table></div><h2 class="article-body__section" id="section-c-tier-a-laptop-wearing-a-suit"><span>C-tier: A laptop wearing a suit</span></h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/2kzHp5q252NWjL5RQTYj6K-1920-80.jpg" alt="Nvidia RTX Spark" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/GxuwvNgRn4xiPWpMe3zm5K-1920-80.jpg" alt="Nvidia RTX Spark" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Now don’t get me wrong, the <strong>Dell XPS 16</strong> is an undeniably good-looking laptop that will easily elicit an “oh that’s a cool thing” reaction when you pull it out in a meeting. The utilitarian body is sleek and that Tandem OLED display is super vivid.</p><p>But is this a safe space? Because that keyboard is problematic for gaming to put it mildly. It’s a flat chiclet board with zero gaps between the keys. Doom: The Dark Ages exposed the gaming flaws of a keyboard like this, as the lack of key definition had me panickedly looking down mid-battle to ensure I was on the WASD. </p><p>Like I said earlier this year, with a little time you can get used to this for productivity. But for gaming, it's not quite there.</p><h2 class="article-body__section" id="section-b-tier-productivity-first-gaming-second"><span>B-Tier: Productivity first, gaming second</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="wyCtSGaYPD8Lec4znM2TpJ" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/wyCtSGaYPD8Lec4znM2TpJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>These two are quite a bit better for gaming on an ergonomic level, but aren’t all the way there compared to some superior tactility further up this list.</p><p>First up is the <strong>Microsoft Surface Laptop Ultra: </strong>packing a delicious 15-inch mini-LED PixelSense Ultra touchscreen display with 3:2 aspect ratio. That taller screen may be more productivity-focused, but it’s gonna be great for RTS games too.</p><p>But again, the keyboard falters here slightly. Not that it’s <em>bad</em>, it’s a great-feeling tactile set of keys for productivity for sure. But for gaming, the dish of each key is far too subtle and the sharpness of those edges do cut into your wrists. So it firmly sits in the “it’s okay” category for gameplay.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="QGFSy32iWf8p6fxvjiwcxJ" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/QGFSy32iWf8p6fxvjiwcxJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Slightly better for play is my original personal favorite from Computex — the <strong>Asus ProArt P14. </strong>Basically, Asus understood the assignment and gave me a Windows equivalent of a MacBook Pro in its design and ergonomics. The keyboard’s better here for demanding gameplay too, and that 3K OLED display is mesmerizing.</p><p>But what do you get when you cram this much power into a small body? Loud fans to get all the heat out. To my ears at least, this was the loudest laptop in the testing room. It’s a great hybrid machine, but make sure you get a good gaming headset to drown out that fan noise.</p><h2 class="article-body__section" id="section-a-tier-great-all-rounders"><span>A-Tier: Great all-rounders</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="cHFDiUgx9F3jX98eyxbtsJ" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/cHFDiUgx9F3jX98eyxbtsJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Now we’re moving closer to the elite if gaming is a priority for your RTX Spark machine. The <strong>Lenovo Yoga Pro 9n </strong>boasts a great premium design with another vivid OLED display. </p><p>For gameplay, there are very few genuine downsides here — capped off by Lenovo’s trademark excellent keyboard ergonomics. The only reason it’s here in the A-tier is because one company has pulled a blinder with its board (more on that in a moment).</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="HJHDguXZ5CYkeDPeheeupJ" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/HJHDguXZ5CYkeDPeheeupJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Then there’s the <strong>MSI Prestige N16 Flip AI+</strong>. Yes, the keyboard is a little too heavy on the RGB lighting for my personal taste, but it feels good to tap away on, the OLED screen is a lovely flash flood of color, and it’s a 2-in-1 form factor that allows for tent mode gaming with a controller. That’s something none of these other options can do.</p><h2 class="article-body__section" id="section-s-tier-the-unexpected-champion"><span>S-Tier: The unexpected champion</span></h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/ZacrHEyMkoy6ygfnoXviFK-1920-80.jpg" alt="Nvidia RTX Spark" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/V529XqE9o2HXukhBbZX2zJ-1920-80.jpg" alt="Nvidia RTX Spark" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Which leaves one: the <strong>HP OmniBook Ultra 16. </strong>When I first saw this laptop at Computex, it looked like a decidedly “just fine” device. I expected it to just be another laptop more suited to work over play. I couldn’t have been more wrong.</p><p>There’s of course a crispy and gorgeous OLED panel here that moves fluidly, but that’s not the real champion feature here. That belongs to the keyboard, which elevated this machine to the top of the list. It’s a chiclet board, but the well defined keys and travel make it feel almost mechanical-like. It feels fantastic during gameplay, and with slick stylings to the chassis, it’s the ultimate stealth gaming laptop.</p><h2 class="article-body__section" id="section-plenty-to-look-forward-to"><span>Plenty to look forward to</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="RewkLciiWWu8fmzQZn4nUP" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/RewkLciiWWu8fmzQZn4nUP-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The RTX Spark lineup proves that the days of compromising between a sleek daily driver and a capable gaming machine are finally coming to a close. These six distinct options will hit the market soon, and while I can scrutinize them from a gaming perspective, they’re meant for so much more.</p><p>As <a href="https://www.tomsguide.com/computing/i-spoke-to-nvidia-ceo-jensen-huang-about-rtx-spark-he-is-willing-to-work-on-an-rtx-gaming-handheld-n2x-and-n3x-are-already-planned-and-the-chip-is-more-like-r2d2-than-a-laptop-cpu">CEO Jensen Huang said himself</a> when I got the chance to talk to him: “we’re focused on reinventing the PC.” There’s going to be something for everyone in this range. So I have to ask — if you’ve got the budget for one of these notebooks, which one would you spend your money on?</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><strong></strong><a href="https://www.tomsguide.com/computing/toms-guide-computing-awards-2026-22-game-changing-laptops-desktops-and-peripherals"><strong>Tom’s Guide Computing Awards 2026: 22 game-changing laptops, desktops and peripherals</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/gaming/playstation/as-a-pc-snob-i-wanted-to-catch-gta-6-making-console-compromises-instead-im-in-awe-of-the-trickery"><strong>As a PC snob, I wanted to catch GTA 6 making console compromises. Instead, I’m in awe of the trickery</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/computing/gpus/i-tested-nvidias-new-dlss-4-5-ray-reconstruction-it-finally-fixes-path-tracings-biggest-flaw-but-heres-the-reality-check"><strong>I tested NVIDIA’s new DLSS 4.5 Ray Reconstruction — it finally fixes path tracing’s biggest flaw, but here’s the reality check</strong></a><strong></strong></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Best of Gamescom 2026: The top 8 gadgets and games that will change the way you play ]]></title>
                                                                                                <dc:content><![CDATA[ <p>If you want to understand the future of gaming, you have to survive Gamescom first. With over 350,000 attendees flooding into Cologne, Germany, the city’s convention center is a chaotic, RGB-lit maze of upcoming titles, booth tours and next-generation hardware.</p><p>The Tom’s Guide team was on the ground to cut through the noise, as we spent the week walking the halls, getting exclusive behind-the-scenes access, playing a ton of titles early and getting our hands on the tech that will redefine how we play over the next few years.</p><p>From Nvidia’s astonishing new MacBook-killing superchips and Alienware’s 5-star OLED monitor, to the return of the Alien franchise and gaming furniture we actually want in our living rooms, we found the gear that truly stood out.</p><p>After covering every square inch of the show floor, here are our official Tom’s Guide Best of Gamescom 2026 awards.</p><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="g1WBV8" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><h2 class="article-body__section" id="section-best-of-show-asus-rog-xbox-ally-x20"><span>Best of show: Asus ROG Xbox Ally X20</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="97brn7cdn8eXwea9hDfyFg" name="Asus ROG Xbox Ally X20" alt="Asus ROG Xbox Ally X20" src="https://cdn.mos.cms.futurecdn.net/97brn7cdn8eXwea9hDfyFg-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I’ll put my hands up and admit that <em>maybe </em>I was a little hard on the <a href="https://www.tomsguide.com/gaming/handheld-gaming/i-tested-the-usd1-299-rog-xbox-ally-x20-with-that-oled-display-the-usd300-price-hike-is-surprisingly-palatable">ROG Xbox Ally X20</a> back at <a href="https://www.tomsguide.com/computing/best-of-computex-2026">Computex 2026</a>. In the midst of <a href="https://www.tomsguide.com/gaming/handheld-gaming/msi-claw-8-ex-ai-plus-review">Intel Arc G3 Extreme</a> eating AMD’s lunch in handheld gaming, I was quick to count it out. But as the $1,299 price emerged for this impressively upgraded Ally, my mind changed on it quite drastically.</p><p>That OLED panel is glorious, the ergonomic tweaks with TMR joysticks, reshaped bumpers and face buttons and rubberized grips make the most comfortable PC handheld even more comfortable, and that transparent design is a nerd’s joy to behold.</p><p>Yes, I can only hope that FSR 4 comes to the AMD Ryzen Z2 AI Extreme chipset here for boosted performance in the future. But with 60 FPS being easy to achieve if you tweak the settings in AAA titles, this is a really well-rounded system for gaming enthusiasts on the go. </p><p><em>Jason England - Managing Editor of Core Tech</em></p><h2 class="article-body__section" id="section-best-game-alien-isolation-2"><span>Best game: Alien Isolation 2</span></h2><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/jntsHn2irlo" allowfullscreen></iframe></div></div><p>When it came to getting <a href="https://www.tomsguide.com/gaming/ranking-everything-i-played-at-gamescom-2026-including-alien-isolation-2-metro-2039-silent-hill-townfall-and-more">hands-on with upcoming games</a>, I came into Gamescom 2026 with one mission: Play Alien: Isolation 2. The larger Alien franchise is a personal favorite of mine, and Alien: Isolation was a dream game come true. I still can’t quite believe we’re getting a sequel. But we are; I can confirm it’s real, and I got to play 30 minutes of it at Gamescom.</p><p>My demo was short, but it doesn’t appear to be shaking up the first game’s formula all that much. Once again, it’s a tense survival-horror experience, in which players are powerless against a stalking Xenomorph. But when you hit a home run, why change anything big?</p><p>The scene-setting prologue boasts a phenomenal sense of atmosphere and highlights the game’s biggest change: the setting has been swapped from a claustrophobic spaceship to a more expansive planet surface. Offering the same extraordinary attention to detail and movie-accurate authenticity, Alien: Isolation 2 is shaping up to be my dream sequel! </p><p><em>Rory Mellon - Senior Entertainment Editor</em></p><h2 class="article-body__section" id="section-best-gaming-tech-nvidia-rtx-spark"><span>Best gaming tech: Nvidia RTX Spark</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="myJ3m3LbFK9Ly6WTKEsafK" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/myJ3m3LbFK9Ly6WTKEsafK-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Nvidia had a <em>very </em>busy Gamescom with the likes of <a href="https://www.tomsguide.com/computing/gpus/i-tested-nvidias-new-dlss-4-5-ray-reconstruction-it-finally-fixes-path-tracings-biggest-flaw-but-heres-the-reality-check">DLSS 4.5 Ray Reconstruction</a> and key updates to GeForce Now. But hidden away in the depths of the convention center, I got the first real chance to play games on their upcoming <a href="https://www.tomsguide.com/computing/laptops/nvidia-rtx-spark-hands-on-review">RTX Spark</a> machines. And put simply, I was blown away.</p><p>The promise of 1440p at over 100 FPS is absolutely on show here with the likes of 007 First Light and Arc Raiders pulling it off with near-maxed out settings and DLSS turned on. And some of these games were being emulated in real-time to be compatible with this Arm chip (as well as the anti-cheat software that runs beneath it).</p><p>With these upcoming machines, Team Green has done the one thing I’ve always wanted — a Windows MacBook Pro competitor. No longer do I need a sleek, long-lasting laptop for work and a bulky gaming machine for play. They are now combined into one notebook, and the options look awesome. </p><p><em>Jason England - Managing Editor of Core Tech</em></p><h2 class="article-body__section" id="section-best-gaming-monitor-alienware-39-5k2k-oled-aw3926qw"><span>Best gaming monitor: Alienware 39 5K2K OLED (AW3926QW)</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Z3JcNXe4CYfn5f2F4jwLq4" name="Alienware 39 5K2K OLED-3" alt="Alienware 39 5K2K OLED" src="https://cdn.mos.cms.futurecdn.net/Z3JcNXe4CYfn5f2F4jwLq4-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Alienware really took things to the next level with its fantastic <a href="https://www.tomsguide.com/computing/monitors/alienware-39-5k2k-oled-aw3926qw-review">Alienware 39 5K2K OLED</a> (AW3926QW). The fact that this is the first device I’ve given a full 5-star rating to says it all. If you’re looking for the finest gaming experience possible, then you need this gaming monitor in your setup.</p><p>What makes the AW3926QW stand out is its four-stack, three-subpixel RGB stripe tandem OLED panel, which Alienware says is the first of its kind to hit the market. What all of those fancy terms mean for real-world use is higher OLED brightness, more vibrant colors, sharper text, and exceptional contrast. You can also swap between 5K at 165Hz for cinematic games and WFHD (1080p) at 330Hz for competitive gaming.</p><p>Top that with a sleek design and an immersive 39-inch curved panel, and you have one of the best gaming monitors ever. The fact that it’s a relatively affordable $1,099 for what you get almost makes this a steal. If you have room for it on your desk, then the Alienware 39 5K2K OLED (AW3926QW) comes with my highest recommendation. Trust me, you won’t be disappointed.</p><p><em>Tony Polanco - Senior Computing Writer</em></p><h2 class="article-body__section" id="section-best-gaming-peripheral-genki-manta-controller"><span>Best gaming peripheral: Genki Manta Controller</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="oLvN9jV2fyy52TELotktRL" name="genki manta" alt="genki manta" src="https://cdn.mos.cms.futurecdn.net/oLvN9jV2fyy52TELotktRL-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Speaking to the team behind the Manta Controller, it felt like they’d thought of everything. On the surface, this controller looks similar to an Xbox pad with a built-in 2.7-inch color display, but it’s designed to be customizable. And I mean, fully customizable. Via the display, you can tweak just about every setting, letting you adjust each element to fit your play preference. </p><p>Take, for example, its face buttons; these aren’t your standard buttons that register input at a set point (usually when fully pressed down); they are analog, letting you determine the point at which the input is registered. The triggers are the same. And that’s just the start of the options on the Manta Controller. You could spend hours tweaking everything to your liking. </p><p>For players who want an almost obscene level of control over their controller, the Manta Controller could be a vital gaming peripheral. Plus, all these adjustments can be made on the controller display rather than utilizing a separate desktop or mobile app, which lets you dive into the myriad of adjustment options without even having to put the pad down. </p><p><em>Rory Mellon - Senior Entertainment Editor</em></p><h2 class="article-body__section" id="section-best-gaming-accessories-ikea-x-xbox-yxstaby"><span>Best gaming accessories: Ikea x Xbox YXSTABY</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="xbQAceB9NTCFDAfQS5wqMF" name="Ikea x Xbox YXSTABY" alt="Ikea x Xbox YXSTABY" src="https://cdn.mos.cms.futurecdn.net/xbQAceB9NTCFDAfQS5wqMF-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Normally, gaming furniture is the kind of stuff you’re personally proud of, but I wouldn’t dare seriously consider it in my future home with my wife. It’s all a bit of an angular, RGB-laden cringe fest — that was until I got to see/sit on all the <a href="https://www.tomsguide.com/gaming/i-sat-on-all-the-ikea-x-xbox-furniture-its-the-ultimate-stealth-gaming-upgrade">YXSTABY options</a> created as part of the Ikea x Xbox tie-up.</p><p>The aesthetics are refined, but with cheeky nods to gamers in the aesthetics and ergonomics. For example, the joystick stool that wobbles around is both a cheeky nod to the Xbox controller, while also being optimal for leaning forward and locking in.</p><p>The same can be said for that lounge chair too, paired with some nice storage options including that rolling coffee table. This is a full suite, and it all comes together really nicely. </p><p><em>Jason England - Managing Editor of Core Tech</em></p><h2 class="article-body__section" id="section-best-sim-racing-gear-initium-asetek-ecosystem-expansion"><span>Best sim racing gear: Initium Asetek ecosystem expansion</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="qJwNsb3N8ckLeQpoojhwkd" name="asetek initium" alt="asetek initium" src="https://cdn.mos.cms.futurecdn.net/qJwNsb3N8ckLeQpoojhwkd-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>A while ago, I called the original <a href="https://www.tomsguide.com/gaming/gaming-peripherals/asetek-forte-review">Asetek Initium sim racing rig</a> one of the best investments for driving enthusiasts. And now, the company is proving that by vastly expanding the ecosystem for those who want to start bridging the gap between getting started and becoming an enthusiast.</p><p>From expanding into different disciplines like rally driving with the shifter and handbrake, improving pedal feel with the hydraulic brake expansion kit, to the much more intense-feeling 10 newton-meter DD10 hub, there’s something for everyone here to start building up from that base level. </p><p><em>Jason England - Managing Editor of Core Tech</em></p><h2 class="article-body__section" id="section-best-retro-gaming-tech-evercade-nexus"><span>Best retro gaming tech: Evercade Nexus</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="HhSQZcmua95Q9EREqCjL7U" name="evercade-nexus-handheld-image" alt="Evercade Nexus handheld device on a grey background" src="https://cdn.mos.cms.futurecdn.net/HhSQZcmua95Q9EREqCjL7U-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Blaze Entertainment)</span></figcaption></figure><p>Evercade has been making dedicated retro consoles and handhelds since 2020. However, its latest offering, the Evercade Nexus, looks set to take on rivals like the Nintendo Switch 2 with a slick portable device that proves sometimes you just can’t beat the classics. </p><p>Compatible with Evercade’s entire library of cartridge-based software, including various arcade compilations (Atari, Interplay, Nacom, etc.) and collections dedicated to beloved franchises like Doom, Tomb Raider and Duke Nukem, the Nexus has the potential to be a retro game fan's dream handheld console. And it’ll launch with a Banjo-Kazooie double pack, which completely transported me back to being a young kid playing my first game.</p><p>It’s the first Evercade handheld with dual analog sticks, sports a 5.89-inch IPS display, and the returning “Tate Mode” lets you enjoy vertical-screen arcade titles as they were designed. It’s also not lost on me that in an era when owning your game is under threat, Evercade is designed exclusively to use physical cartridges. There’s no need for digital downloads or “Game-Key Cards” that hold nothing more than a license to install software on your console. </p><p><em>Rory Mellon - Senior Entertainment Editor</em></p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/gaming/playstation/as-a-pc-snob-i-wanted-to-catch-gta-6-making-console-compromises-instead-im-in-awe-of-the-trickery">As a PC snob, I wanted to catch GTA 6 making console compromises. Instead, I’m in awe of the trickery</a></li><li><a href="https://www.tomsguide.com/computing/monitors/i-tested-the-first-5k-g-sync-pulsar-gaming-monitor-144hz-looks-like-500hz-of-clarity-and-it-ruined-my-home-display">I tested the first 5K G-Sync Pulsar gaming monitor — 144Hz looks like 500Hz of clarity, and it ruined my home display</a></li><li><a href="https://www.tomsguide.com/computing/monitors/i-just-went-eyes-on-with-the-worlds-fastest-oled-gaming-monitor-and-motion-blur-is-officially-dead">I just went eyes-on with the world’s fastest OLED gaming monitor — and motion blur is officially dead</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/gaming/best-of-gamescom-2026-the-top-8-gadgets-and-games-that-will-change-the-way-you-play</link>
                                                                            <description>
                            <![CDATA[ The Tom’s Guide Best of Gamescom 2026 Awards: From the Asus ROG Ally X20 and RTX Spark to Alien Isolation 2, meet our 8 top picks of the show. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">dXdtXQUmsb7qQYnSMAkJYn</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/HMTyCTowRt3aYPwhACSXtf-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 29 Aug 2026 09:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming]]></category>
                                                                                                <author><![CDATA[ rory.mellon@futurenet.com (Rory Mellon) ]]></author>                    <dc:creator><![CDATA[ Rory Mellon ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/5Rv6LtQXMj5JB4Eu8Lt4Sn-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                        <dc:contributor><![CDATA[ Jason England ]]></dc:contributor>
                                            <dc:contributor><![CDATA[ Tony Polanco ]]></dc:contributor>
                                                                    <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/HMTyCTowRt3aYPwhACSXtf-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[best of gamescom 2026]]></media:description>                                                            <media:text><![CDATA[best of gamescom 2026]]></media:text>
                                <media:title type="plain"><![CDATA[best of gamescom 2026]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/HMTyCTowRt3aYPwhACSXtf-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>If you want to understand the future of gaming, you have to survive Gamescom first. With over 350,000 attendees flooding into Cologne, Germany, the city’s convention center is a chaotic, RGB-lit maze of upcoming titles, booth tours and next-generation hardware.</p><p>The Tom’s Guide team was on the ground to cut through the noise, as we spent the week walking the halls, getting exclusive behind-the-scenes access, playing a ton of titles early and getting our hands on the tech that will redefine how we play over the next few years.</p><p>From Nvidia’s astonishing new MacBook-killing superchips and Alienware’s 5-star OLED monitor, to the return of the Alien franchise and gaming furniture we actually want in our living rooms, we found the gear that truly stood out.</p><p>After covering every square inch of the show floor, here are our official Tom’s Guide Best of Gamescom 2026 awards.</p><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="g1WBV8" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><h2 class="article-body__section" id="section-best-of-show-asus-rog-xbox-ally-x20"><span>Best of show: Asus ROG Xbox Ally X20</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="97brn7cdn8eXwea9hDfyFg" name="Asus ROG Xbox Ally X20" alt="Asus ROG Xbox Ally X20" src="https://cdn.mos.cms.futurecdn.net/97brn7cdn8eXwea9hDfyFg-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I’ll put my hands up and admit that <em>maybe </em>I was a little hard on the <a href="https://www.tomsguide.com/gaming/handheld-gaming/i-tested-the-usd1-299-rog-xbox-ally-x20-with-that-oled-display-the-usd300-price-hike-is-surprisingly-palatable">ROG Xbox Ally X20</a> back at <a href="https://www.tomsguide.com/computing/best-of-computex-2026">Computex 2026</a>. In the midst of <a href="https://www.tomsguide.com/gaming/handheld-gaming/msi-claw-8-ex-ai-plus-review">Intel Arc G3 Extreme</a> eating AMD’s lunch in handheld gaming, I was quick to count it out. But as the $1,299 price emerged for this impressively upgraded Ally, my mind changed on it quite drastically.</p><p>That OLED panel is glorious, the ergonomic tweaks with TMR joysticks, reshaped bumpers and face buttons and rubberized grips make the most comfortable PC handheld even more comfortable, and that transparent design is a nerd’s joy to behold.</p><p>Yes, I can only hope that FSR 4 comes to the AMD Ryzen Z2 AI Extreme chipset here for boosted performance in the future. But with 60 FPS being easy to achieve if you tweak the settings in AAA titles, this is a really well-rounded system for gaming enthusiasts on the go. </p><p><em>Jason England - Managing Editor of Core Tech</em></p><h2 class="article-body__section" id="section-best-game-alien-isolation-2"><span>Best game: Alien Isolation 2</span></h2><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/jntsHn2irlo" allowfullscreen></iframe></div></div><p>When it came to getting <a href="https://www.tomsguide.com/gaming/ranking-everything-i-played-at-gamescom-2026-including-alien-isolation-2-metro-2039-silent-hill-townfall-and-more">hands-on with upcoming games</a>, I came into Gamescom 2026 with one mission: Play Alien: Isolation 2. The larger Alien franchise is a personal favorite of mine, and Alien: Isolation was a dream game come true. I still can’t quite believe we’re getting a sequel. But we are; I can confirm it’s real, and I got to play 30 minutes of it at Gamescom.</p><p>My demo was short, but it doesn’t appear to be shaking up the first game’s formula all that much. Once again, it’s a tense survival-horror experience, in which players are powerless against a stalking Xenomorph. But when you hit a home run, why change anything big?</p><p>The scene-setting prologue boasts a phenomenal sense of atmosphere and highlights the game’s biggest change: the setting has been swapped from a claustrophobic spaceship to a more expansive planet surface. Offering the same extraordinary attention to detail and movie-accurate authenticity, Alien: Isolation 2 is shaping up to be my dream sequel! </p><p><em>Rory Mellon - Senior Entertainment Editor</em></p><h2 class="article-body__section" id="section-best-gaming-tech-nvidia-rtx-spark"><span>Best gaming tech: Nvidia RTX Spark</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="myJ3m3LbFK9Ly6WTKEsafK" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/myJ3m3LbFK9Ly6WTKEsafK-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Nvidia had a <em>very </em>busy Gamescom with the likes of <a href="https://www.tomsguide.com/computing/gpus/i-tested-nvidias-new-dlss-4-5-ray-reconstruction-it-finally-fixes-path-tracings-biggest-flaw-but-heres-the-reality-check">DLSS 4.5 Ray Reconstruction</a> and key updates to GeForce Now. But hidden away in the depths of the convention center, I got the first real chance to play games on their upcoming <a href="https://www.tomsguide.com/computing/laptops/nvidia-rtx-spark-hands-on-review">RTX Spark</a> machines. And put simply, I was blown away.</p><p>The promise of 1440p at over 100 FPS is absolutely on show here with the likes of 007 First Light and Arc Raiders pulling it off with near-maxed out settings and DLSS turned on. And some of these games were being emulated in real-time to be compatible with this Arm chip (as well as the anti-cheat software that runs beneath it).</p><p>With these upcoming machines, Team Green has done the one thing I’ve always wanted — a Windows MacBook Pro competitor. No longer do I need a sleek, long-lasting laptop for work and a bulky gaming machine for play. They are now combined into one notebook, and the options look awesome. </p><p><em>Jason England - Managing Editor of Core Tech</em></p><h2 class="article-body__section" id="section-best-gaming-monitor-alienware-39-5k2k-oled-aw3926qw"><span>Best gaming monitor: Alienware 39 5K2K OLED (AW3926QW)</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Z3JcNXe4CYfn5f2F4jwLq4" name="Alienware 39 5K2K OLED-3" alt="Alienware 39 5K2K OLED" src="https://cdn.mos.cms.futurecdn.net/Z3JcNXe4CYfn5f2F4jwLq4-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Alienware really took things to the next level with its fantastic <a href="https://www.tomsguide.com/computing/monitors/alienware-39-5k2k-oled-aw3926qw-review">Alienware 39 5K2K OLED</a> (AW3926QW). The fact that this is the first device I’ve given a full 5-star rating to says it all. If you’re looking for the finest gaming experience possible, then you need this gaming monitor in your setup.</p><p>What makes the AW3926QW stand out is its four-stack, three-subpixel RGB stripe tandem OLED panel, which Alienware says is the first of its kind to hit the market. What all of those fancy terms mean for real-world use is higher OLED brightness, more vibrant colors, sharper text, and exceptional contrast. You can also swap between 5K at 165Hz for cinematic games and WFHD (1080p) at 330Hz for competitive gaming.</p><p>Top that with a sleek design and an immersive 39-inch curved panel, and you have one of the best gaming monitors ever. The fact that it’s a relatively affordable $1,099 for what you get almost makes this a steal. If you have room for it on your desk, then the Alienware 39 5K2K OLED (AW3926QW) comes with my highest recommendation. Trust me, you won’t be disappointed.</p><p><em>Tony Polanco - Senior Computing Writer</em></p><h2 class="article-body__section" id="section-best-gaming-peripheral-genki-manta-controller"><span>Best gaming peripheral: Genki Manta Controller</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="oLvN9jV2fyy52TELotktRL" name="genki manta" alt="genki manta" src="https://cdn.mos.cms.futurecdn.net/oLvN9jV2fyy52TELotktRL-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Speaking to the team behind the Manta Controller, it felt like they’d thought of everything. On the surface, this controller looks similar to an Xbox pad with a built-in 2.7-inch color display, but it’s designed to be customizable. And I mean, fully customizable. Via the display, you can tweak just about every setting, letting you adjust each element to fit your play preference. </p><p>Take, for example, its face buttons; these aren’t your standard buttons that register input at a set point (usually when fully pressed down); they are analog, letting you determine the point at which the input is registered. The triggers are the same. And that’s just the start of the options on the Manta Controller. You could spend hours tweaking everything to your liking. </p><p>For players who want an almost obscene level of control over their controller, the Manta Controller could be a vital gaming peripheral. Plus, all these adjustments can be made on the controller display rather than utilizing a separate desktop or mobile app, which lets you dive into the myriad of adjustment options without even having to put the pad down. </p><p><em>Rory Mellon - Senior Entertainment Editor</em></p><h2 class="article-body__section" id="section-best-gaming-accessories-ikea-x-xbox-yxstaby"><span>Best gaming accessories: Ikea x Xbox YXSTABY</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="xbQAceB9NTCFDAfQS5wqMF" name="Ikea x Xbox YXSTABY" alt="Ikea x Xbox YXSTABY" src="https://cdn.mos.cms.futurecdn.net/xbQAceB9NTCFDAfQS5wqMF-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Normally, gaming furniture is the kind of stuff you’re personally proud of, but I wouldn’t dare seriously consider it in my future home with my wife. It’s all a bit of an angular, RGB-laden cringe fest — that was until I got to see/sit on all the <a href="https://www.tomsguide.com/gaming/i-sat-on-all-the-ikea-x-xbox-furniture-its-the-ultimate-stealth-gaming-upgrade">YXSTABY options</a> created as part of the Ikea x Xbox tie-up.</p><p>The aesthetics are refined, but with cheeky nods to gamers in the aesthetics and ergonomics. For example, the joystick stool that wobbles around is both a cheeky nod to the Xbox controller, while also being optimal for leaning forward and locking in.</p><p>The same can be said for that lounge chair too, paired with some nice storage options including that rolling coffee table. This is a full suite, and it all comes together really nicely. </p><p><em>Jason England - Managing Editor of Core Tech</em></p><h2 class="article-body__section" id="section-best-sim-racing-gear-initium-asetek-ecosystem-expansion"><span>Best sim racing gear: Initium Asetek ecosystem expansion</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="qJwNsb3N8ckLeQpoojhwkd" name="asetek initium" alt="asetek initium" src="https://cdn.mos.cms.futurecdn.net/qJwNsb3N8ckLeQpoojhwkd-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>A while ago, I called the original <a href="https://www.tomsguide.com/gaming/gaming-peripherals/asetek-forte-review">Asetek Initium sim racing rig</a> one of the best investments for driving enthusiasts. And now, the company is proving that by vastly expanding the ecosystem for those who want to start bridging the gap between getting started and becoming an enthusiast.</p><p>From expanding into different disciplines like rally driving with the shifter and handbrake, improving pedal feel with the hydraulic brake expansion kit, to the much more intense-feeling 10 newton-meter DD10 hub, there’s something for everyone here to start building up from that base level. </p><p><em>Jason England - Managing Editor of Core Tech</em></p><h2 class="article-body__section" id="section-best-retro-gaming-tech-evercade-nexus"><span>Best retro gaming tech: Evercade Nexus</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="HhSQZcmua95Q9EREqCjL7U" name="evercade-nexus-handheld-image" alt="Evercade Nexus handheld device on a grey background" src="https://cdn.mos.cms.futurecdn.net/HhSQZcmua95Q9EREqCjL7U-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Blaze Entertainment)</span></figcaption></figure><p>Evercade has been making dedicated retro consoles and handhelds since 2020. However, its latest offering, the Evercade Nexus, looks set to take on rivals like the Nintendo Switch 2 with a slick portable device that proves sometimes you just can’t beat the classics. </p><p>Compatible with Evercade’s entire library of cartridge-based software, including various arcade compilations (Atari, Interplay, Nacom, etc.) and collections dedicated to beloved franchises like Doom, Tomb Raider and Duke Nukem, the Nexus has the potential to be a retro game fan's dream handheld console. And it’ll launch with a Banjo-Kazooie double pack, which completely transported me back to being a young kid playing my first game.</p><p>It’s the first Evercade handheld with dual analog sticks, sports a 5.89-inch IPS display, and the returning “Tate Mode” lets you enjoy vertical-screen arcade titles as they were designed. It’s also not lost on me that in an era when owning your game is under threat, Evercade is designed exclusively to use physical cartridges. There’s no need for digital downloads or “Game-Key Cards” that hold nothing more than a license to install software on your console. </p><p><em>Rory Mellon - Senior Entertainment Editor</em></p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/gaming/playstation/as-a-pc-snob-i-wanted-to-catch-gta-6-making-console-compromises-instead-im-in-awe-of-the-trickery">As a PC snob, I wanted to catch GTA 6 making console compromises. Instead, I’m in awe of the trickery</a></li><li><a href="https://www.tomsguide.com/computing/monitors/i-tested-the-first-5k-g-sync-pulsar-gaming-monitor-144hz-looks-like-500hz-of-clarity-and-it-ruined-my-home-display">I tested the first 5K G-Sync Pulsar gaming monitor — 144Hz looks like 500Hz of clarity, and it ruined my home display</a></li><li><a href="https://www.tomsguide.com/computing/monitors/i-just-went-eyes-on-with-the-worlds-fastest-oled-gaming-monitor-and-motion-blur-is-officially-dead">I just went eyes-on with the world’s fastest OLED gaming monitor — and motion blur is officially dead</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I tested the first 5K G-Sync Pulsar gaming monitor — 144Hz looks like 500Hz of clarity, and it ruined my home display ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Super high-resolution monitors usually force you to compromise on motion clarity. Compared to lower-resolution esports panels, it’s simply next-to-impossible to push the same insane 500Hz+ refresh rates. That was until Nvidia found a way around that.</p><p>Enter the 5K AOC Agon Pro AGP327KG — the first of its kind armed with Team Green’s <a href="https://www.tomsguide.com/computing/monitors/i-just-went-eyes-on-with-nvidia-g-sync-pulsar-and-now-my-own-gaming-monitor-feels-obsolete">G-Sync Pulsar</a>. I saw this technology at CES 2026 in some competitive-tier gaming monitors, but now it's in something with staggeringly high pixel density; to me, this is a game changer.</p><h2 id="g-sync-pulsar-explained">G-Sync Pulsar explained</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ebaHxvTUpYApQV4pwQfjWh" name="Nvidia G-Sync Pulsar" alt="Nvidia G-Sync Pulsar" src="https://cdn.mos.cms.futurecdn.net/ebaHxvTUpYApQV4pwQfjWh-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>What is G-Sync Pulsar? Good question! You’ve already got variable refresh rate and extreme low motion blur on deck, so what else does it do? Well, a simple way to explain it would be that Nvidia’s regulating the pulse of the monitor itself — specifically the backlight.</p><p>To make an IPS monitor like this light up, you need a backlight strobing to illuminate the pixels. In normal screens, the whole backlight will strobe independently of what’s being shown on screen. That means that as the game moves, monitor backlight strobes may reveal pixels in mid-transition, which leads to the human eye perceiving blur.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="oF9EwAFVfJDnQir9iZzcLH" name="AOC Agon Pro AGP327KG" alt="AOC Agon Pro AGP327KG" src="https://cdn.mos.cms.futurecdn.net/oF9EwAFVfJDnQir9iZzcLH-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>G-Sync Pulsar brings variable-frequency strobing tied to the refresh rate, so the backlight strobe pulses in lock step with every game frame (also known as a scanout). That ensures a stable image with every pop of light, which gives you a crispier picture and the perception of higher motion clarity.</p><p>Previously, Pulsar was limited to smaller 27-inch 1440p panels, and in my time testing it, I was blown away by the tack-sharp definition of everything on screen. Slapping it on a 5K 144Hz monitor shows exactly what the tech can do when given the space to stretch its legs, and I’m floored by it.</p><h2 id="the-end-result">The end result</h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/yDoosFpNymumM7HAtffd6H-1920-80.jpg" alt="AOC Agon Pro AGP327KG" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/eQzKRVQtqXYaGPAhCFFmHH-1920-80.jpg" alt="AOC Agon Pro AGP327KG" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Just like the smaller screens, there was a level of clarity that meant my eyes didn’t need to focus on specific subjects on-screen. It all jumped into focus in a significant way while playing Delta Force. </p><p>Whether it’s text clarity of the signs on the wall, the targets at a distance or the on-screen elements, the traditional blur I’d become used to just became all the more noticeable. So fair warning — this tech will turn you into a display snob hunting down the absolute peak of crispiness.</p><h2 id="some-final-extra-nice-bits">Some final extra nice bits</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="BF9M4XpNnSmAe8HtSsAzEH" name="AOC Agon Pro AGP327KG" alt="AOC Agon Pro AGP327KG" src="https://cdn.mos.cms.futurecdn.net/BF9M4XpNnSmAe8HtSsAzEH-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>As for the Agon Pro itself, there are a few user-friendly things I wanted to shout out. First off, this is packed with I/O, including 2x HDMI, 1x DisplayPort, 1x USB Type-C, a USB-B upstream and 3x USB-A. This has all the connectivity needed to be your central hub for your setup.</p><p>Second, there’s ambient adaptive tech such as a built-in light sensor that can automatically adjust both brightness and color temperature based on your room’s ambient lighting — nice touch for eye care and accuracy (especially with the deep contrast ratio of that glossy screen)!</p><p>Finally, there’s customizing the screen itself. There’s a joystick to get around the OSD menu, which can feel clunky. But thanks to that Nvidia tie-in, you can change some of the key settings in the Nvidia app without needing to fall out with a clunky menu.</p><p>We’re waiting on confirmed pricing and an official launch date, and given the high resolution and Pulsar inside, we should brace our wallets. But lowkey, this is looking set to be a belter of a monitor for your high-fidelity gaming needs.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/gaming/i-sat-on-all-the-ikea-x-xbox-furniture-its-the-ultimate-stealth-gaming-upgrade">I sat on all the IKEA x Xbox furniture — it’s the ultimate stealth gaming upgrade</a></li><li><a href="https://www.tomsguide.com/gaming/handheld-gaming/i-tested-the-usd1-299-rog-xbox-ally-x20-with-that-oled-display-the-usd300-price-hike-is-surprisingly-palatable">I tested the $1,299 ROG Xbox Ally X20 — with that OLED display, the $300 price hike is surprisingly palatable</a></li><li><a href="https://www.tomsguide.com/computing/monitors/i-just-went-eyes-on-with-the-worlds-fastest-oled-gaming-monitor-and-motion-blur-is-officially-dead">I just went eyes-on with the world’s fastest OLED gaming monitor — and motion blur is officially dead</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/monitors/i-tested-the-first-5k-g-sync-pulsar-gaming-monitor-144hz-looks-like-500hz-of-clarity-and-it-ruined-my-home-display</link>
                                                                            <description>
                            <![CDATA[ I tested the world’s first 5K G-Sync Pulsar gaming monitor from AOC. Here is how NVIDIA's variable backlight strobing eliminates motion blur at 5K. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">uNHxHv3yXdBV7Eq8isaTBo</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/DstaqMy7nsUnWr5GKNgWJH-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 27 Aug 2026 12:29:10 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Monitors]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Computing Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jason England ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/v4fSq5U4uZUEtGY2BwNuJ6-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jason brings a decade of tech and gaming journalism experience to his role as a Managing Editor of Computing at Tom&#039;s Guide. He has previously written for Laptop Mag, Tom&#039;s Hardware, Kotaku, Stuff and BBC Science Focus. In his spare time, you&#039;ll find Jason looking for good dogs to pet or thinking about eating pizza if he isn&#039;t already.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/DstaqMy7nsUnWr5GKNgWJH-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[AOC Agon Pro AGP327KG]]></media:description>                                                            <media:text><![CDATA[AOC Agon Pro AGP327KG]]></media:text>
                                <media:title type="plain"><![CDATA[AOC Agon Pro AGP327KG]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/DstaqMy7nsUnWr5GKNgWJH-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Super high-resolution monitors usually force you to compromise on motion clarity. Compared to lower-resolution esports panels, it’s simply next-to-impossible to push the same insane 500Hz+ refresh rates. That was until Nvidia found a way around that.</p><p>Enter the 5K AOC Agon Pro AGP327KG — the first of its kind armed with Team Green’s <a href="https://www.tomsguide.com/computing/monitors/i-just-went-eyes-on-with-nvidia-g-sync-pulsar-and-now-my-own-gaming-monitor-feels-obsolete">G-Sync Pulsar</a>. I saw this technology at CES 2026 in some competitive-tier gaming monitors, but now it's in something with staggeringly high pixel density; to me, this is a game changer.</p><h2 id="g-sync-pulsar-explained">G-Sync Pulsar explained</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ebaHxvTUpYApQV4pwQfjWh" name="Nvidia G-Sync Pulsar" alt="Nvidia G-Sync Pulsar" src="https://cdn.mos.cms.futurecdn.net/ebaHxvTUpYApQV4pwQfjWh-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>What is G-Sync Pulsar? Good question! You’ve already got variable refresh rate and extreme low motion blur on deck, so what else does it do? Well, a simple way to explain it would be that Nvidia’s regulating the pulse of the monitor itself — specifically the backlight.</p><p>To make an IPS monitor like this light up, you need a backlight strobing to illuminate the pixels. In normal screens, the whole backlight will strobe independently of what’s being shown on screen. That means that as the game moves, monitor backlight strobes may reveal pixels in mid-transition, which leads to the human eye perceiving blur.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="oF9EwAFVfJDnQir9iZzcLH" name="AOC Agon Pro AGP327KG" alt="AOC Agon Pro AGP327KG" src="https://cdn.mos.cms.futurecdn.net/oF9EwAFVfJDnQir9iZzcLH-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>G-Sync Pulsar brings variable-frequency strobing tied to the refresh rate, so the backlight strobe pulses in lock step with every game frame (also known as a scanout). That ensures a stable image with every pop of light, which gives you a crispier picture and the perception of higher motion clarity.</p><p>Previously, Pulsar was limited to smaller 27-inch 1440p panels, and in my time testing it, I was blown away by the tack-sharp definition of everything on screen. Slapping it on a 5K 144Hz monitor shows exactly what the tech can do when given the space to stretch its legs, and I’m floored by it.</p><h2 id="the-end-result">The end result</h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/yDoosFpNymumM7HAtffd6H-1920-80.jpg" alt="AOC Agon Pro AGP327KG" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/eQzKRVQtqXYaGPAhCFFmHH-1920-80.jpg" alt="AOC Agon Pro AGP327KG" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Just like the smaller screens, there was a level of clarity that meant my eyes didn’t need to focus on specific subjects on-screen. It all jumped into focus in a significant way while playing Delta Force. </p><p>Whether it’s text clarity of the signs on the wall, the targets at a distance or the on-screen elements, the traditional blur I’d become used to just became all the more noticeable. So fair warning — this tech will turn you into a display snob hunting down the absolute peak of crispiness.</p><h2 id="some-final-extra-nice-bits">Some final extra nice bits</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="BF9M4XpNnSmAe8HtSsAzEH" name="AOC Agon Pro AGP327KG" alt="AOC Agon Pro AGP327KG" src="https://cdn.mos.cms.futurecdn.net/BF9M4XpNnSmAe8HtSsAzEH-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>As for the Agon Pro itself, there are a few user-friendly things I wanted to shout out. First off, this is packed with I/O, including 2x HDMI, 1x DisplayPort, 1x USB Type-C, a USB-B upstream and 3x USB-A. This has all the connectivity needed to be your central hub for your setup.</p><p>Second, there’s ambient adaptive tech such as a built-in light sensor that can automatically adjust both brightness and color temperature based on your room’s ambient lighting — nice touch for eye care and accuracy (especially with the deep contrast ratio of that glossy screen)!</p><p>Finally, there’s customizing the screen itself. There’s a joystick to get around the OSD menu, which can feel clunky. But thanks to that Nvidia tie-in, you can change some of the key settings in the Nvidia app without needing to fall out with a clunky menu.</p><p>We’re waiting on confirmed pricing and an official launch date, and given the high resolution and Pulsar inside, we should brace our wallets. But lowkey, this is looking set to be a belter of a monitor for your high-fidelity gaming needs.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/gaming/i-sat-on-all-the-ikea-x-xbox-furniture-its-the-ultimate-stealth-gaming-upgrade">I sat on all the IKEA x Xbox furniture — it’s the ultimate stealth gaming upgrade</a></li><li><a href="https://www.tomsguide.com/gaming/handheld-gaming/i-tested-the-usd1-299-rog-xbox-ally-x20-with-that-oled-display-the-usd300-price-hike-is-surprisingly-palatable">I tested the $1,299 ROG Xbox Ally X20 — with that OLED display, the $300 price hike is surprisingly palatable</a></li><li><a href="https://www.tomsguide.com/computing/monitors/i-just-went-eyes-on-with-the-worlds-fastest-oled-gaming-monitor-and-motion-blur-is-officially-dead">I just went eyes-on with the world’s fastest OLED gaming monitor — and motion blur is officially dead</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I tested NVIDIA’s new DLSS 4.5 Ray Reconstruction — it finally fixes path tracing’s biggest flaw, but here’s the reality check ]]></title>
                                                                                                <dc:content><![CDATA[ <p>When you enable full path tracing in a modern game, the lighting looks stunning — but the illusion is often broken by visual artifacts like smudged reflections, ghosting details, light trails that fade weirdly and dark corners that “boil” with digital noise.</p><p>Nvidia is attempting to eradicate those issues for good with <a href="https://www.tomsguide.com/gaming/pc-gaming/deciphering-dlss-4-5-i-tested-nvidias-new-upscaler-and-figured-out-when-to-use-model-l-or-m">DLSS 4.5</a> Ray Reconstruction, and I’ve spent a few days with this tech to see if the company’s new gaming AI model can finally clean up path tracing’s messy edges.</p><p>The truth of it is the same as I’ve felt about ray tracing and path tracing at large. If you stop to pixel-peep, the visual upgrade is undeniable. But if you’re expecting a massive paradigm shift in the middle of a frantic firefight, you need to temper your expectations.</p><p>Sorry for the reality check, and credit to Team Green for managing to make trash bags shinier and more reflective in <a href="https://www.tomsguide.com/reviews/alan-wake-2">Alan Wake 2</a>, but this is definitely an iterative upgrade.</p><h2 class="article-body__section" id="section-how-to-activate-dlss-4-5-ray-reconstruction"><span>How to activate DLSS 4.5 Ray Reconstruction</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="uQBrGoqrBjz9sAtFLGs4em" name="DLSS 4.5 Ray Reconstruction" alt="DLSS 4.5 Ray Reconstruction" src="https://cdn.mos.cms.futurecdn.net/uQBrGoqrBjz9sAtFLGs4em-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Just like a lot of Nvidia’s gaming features, you’ve got to go into the overrides. Pop into the specific game that supports DLSS 4.5 Ray Reconstruction, open the DLSS overrides window, click the dropdown on Ray Reconstruction and select “Model F.”</p><p>At that point, you’re off to the races. The only game I noticed any weird glitching on with the override turned on is Portal RTX, which I’m sure will be ironed over with an update. But everything else worked without a hitch.</p><h2 class="article-body__section" id="section-what-is-ray-reconstruction"><span>What is Ray Reconstruction?</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="dFnwiQjJc9JcKDpfqpKH7W" name="DLSS 4.5 Ray Reconstruction" alt="DLSS 4.5 Ray Reconstruction" src="https://cdn.mos.cms.futurecdn.net/dFnwiQjJc9JcKDpfqpKH7W-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Well, the demands of path tracing are starting to outstrip the raw hardware capabilities of consumer GPUs. Calculating the real physical light paths for millions of pixels every second is just too much to do.</p><p>Instead of painting every single pixel, the game flings a handful of dots of paint across the canvas — just enough to capture rough reflections, colors and shadows. The end result is a noisy, static-filled mess of dots. Something is needed to join the dots.</p><p>The old fix was a technique graphics cards used called “denoisers.” I can go into the specifics about these hand-tuned technologies, but think of it like taking a wet sponge and smudging those paint dots together. It does the job in filling the gaps, but fine details get blurred out and subtle lighting can flicker and “boil.”</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/dSMYgGi0ZvY" allowfullscreen></iframe></div></div><p>So instead, Nvidia’s DLSS Ray Reconstruction hands that unfinished canvas to an AI network trained on supercomputers with millions of flawless images. Think of it like an expert art restorer with a photographic memory — looking at the scattered dots of light, recognizing the 3D geometry of the scene, and predicting how the light naturally behaves.</p><p>The end result (as you’ll see) is crispier puddle reflections, detailed textures without blurring or ghosting and shinier, less smudged light bounces. It takes this taxing work off the GPU, so it can focus on rendering the game, while AI pattern recognition does the heavy lifting of calculating the true light data.</p><h2 class="article-body__section" id="section-the-faster-smarter-engine-in-dlss-4-5"><span>The faster, smarter engine in DLSS 4.5</span></h2><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/NvSYk0PjLrU" allowfullscreen></iframe></div></div><p>To understand what DLSS 4.5 Ray Reconstruction is actually doing, you have to look at the math. Nvidia has replaced its own on-board denoiser with a new 2nd generation transformer model. This AI brain processes 20% more parameters and delivers a massive 35% boost in compute capability.</p><p>That means this hypothetical art restorer is now able to more deeply analyze the space, and intelligently use game engine pixel sampling and motion data to improve the accuracy and stability of lighting — doing so millions of times a second.</p><p>And the best part? Nvidia claims this massive increase in AI compute comes with a negligible performance impact.</p><p>Testing that claim, my RTX 5080 setup saw no frame rate penalty whatsoever, and for lower-end hardware in Nvidia’s 50-series family (like the <a href="https://www.tomsguide.com/computing/gpus/nvidia-geforce-rtx-5060-ti-review">RTX 5060 Ti</a> (16GB) and the RTX 5070 Ti-armed <a href="https://www.tomsguide.com/computing/gaming-laptops/asus-rog-zephyrus-g14-2025-review">Asus ROG Zephyrus G14</a> that I’m testing), the frame drops are negligible (average drop of 2 FPS).</p><p>Of course, that <em>should </em>extend to the RTX 40 and 50 series GPUs. But if you are running an older RTX 20 or 30 series card with the older architecture, limitations mean you may see a more noticeable performance penalty.</p><h2 class="article-body__section" id="section-the-pixel-peeping-test"><span>The pixel-peeping test</span></h2><p>So since this is one for those that just want to scrutinize the specifics of a frame, let’s dip into this with a few games on my RTX 5080 monster rig — putting DLSS 4 and DLSS 4.5’s Ray Reconstruction head-to-head. And I’m not going to lie, when you stop to take a beat and look around, the differences in still frames are striking.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/eMKStybz6tYpi2QPS84k2n-1920-80.jpg" alt="Cyberpunk 2077 DLSS 4 Ray Reconstruction" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/LY3yoVoqVUXeTxpEoFKYUn-1920-80.jpg" alt="Cyberpunk 2077 DLSS 4.5 Ray Reconstruction" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p><strong>In </strong><a href="https://www.tomsguide.com/reviews/cyberpunk-2077"><strong>Cyberpunk 2077</strong></a>, the bright red glow from the “Livepunch Booze” neon sign washes over the floor in a softer, blurrier spread with DLSS 4. Enabling 4.5 shows off the tighter light bounce and higher-contrast, which casts sharper, concentrated red and cyan reflections on those polished floor panels.</p><p>Throw in much sharper, more cohesive specular highlights and a deeper contrast in darker areas without that fuzzy noise that plagued the older denoiser, and the tweaks are small, but significant.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/kt7oe2mExk2eFgWifhfUDF-1920-80.gif" alt="Pragmata DLSS 4 Ray Reconstruction" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/6M3W7Nq3M2MVL9eJShSxKE-1920-80.gif" alt="DLSS 4.5 Ray Reconstruction" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p><strong>Moving over to </strong><a href="https://www.tomsguide.com/computing/gpus/i-stress-tested-pragmatas-path-tracing-it-looks-like-a-dream-and-nvidias-dlss-4-makes-it-play-like-one-provided-you-use-it-right"><strong>Pragmata</strong></a>, the moving neon makes DLSS 4.5 Ray Reconstruction much more noticeable. There’s a moving laser jumping puzzle that makes it so much more obvious — seeing the lasers just fizzle away on the older model vs immediately snapping away.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/fh7NKooL5WoY8FLVPwcCw5-1920-80.jpg" alt="Alan Wake 2 DLSS 4 Ray Reconstruction" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/TSncFRkhF8M4JjvMVp7d36-1920-80.jpg" alt="Alan Wake 2 DLSS 4.5 Ray Reconstruction" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p><strong>Finally, in Alan Wake 2</strong>, Nvidia showed me a demo of shinier trash bags. But if anything, they’re doing the tech a bit of a disservice. This has always been a showcase game for Team Green, and something as simple as walking around a safe room shows off small detail improvements that come together to make quite a difference.</p><p>Saga’s hair, coat and surrounding surfaces are much better defined with smoother, natural lighting bouncing off them. The grain of the wood paneling goes from slightly blurred to no blur whatsoever, lighting sources bounce more tightly off surfaces, and mirror reflections are <em>a lot </em>sharper.</p><h2 class="article-body__section" id="section-my-verdict"><span>My verdict</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="RMiY9oysgWeGfsW6siGLq7" name="DLSS 4.5 Ray Reconstruction" alt="DLSS 4.5 Ray Reconstruction" src="https://cdn.mos.cms.futurecdn.net/RMiY9oysgWeGfsW6siGLq7-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Full credit to Nvidia here — improving image fidelity by running an AI model with 20% more parameters without tanking frame rates on modern hardware is a genuine engineering triumph. </p><p>Of course, I say that specifically about the RTX 50-series gear I tested this on. Nvidia told me that it’s not expected to meaningfully impact performance on older GPUs. I can’t test that, but we’ll find out soon enough as some of my friends in the industry dish their thoughts.</p><p>But DLSS 4.5 Ray Reconstruction is an iterative polish. It cleans up the edge cases and makes your photo mode captures look absolutely spectacular. But during actual, fast-paced gameplay, the difference between DLSS 4 and DLSS 4.5 effectively blends into the background.</p><p>That being said, for the average gamer in motion, you’ll be hard pressed to notice the differences in the midst of gameplay. For the players, this is just a nice, quiet cleanup job. A small upgrade that will become more significant as we head into a world of path traced games.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><strong></strong><a href="https://www.tomsguide.com/computing/gpus/5-beginner-pc-building-tips-from-the-mad-genius-who-built-a-usd34k-353-pound-desktop-with-not-one-but-two-rtx-5090s"><strong>5 beginner PC building tips from the mad genius who built a $34k, 353-pound desktop with not one, but two RTX 5090s</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/computing/gpus/best-graphics-cards"><strong>Best graphics cards in 2026: I've tested every GPU to find the best bang for your buck</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/computing/monitors/exclusive-i-asked-lenovos-gm-to-predict-the-future-of-monitors-and-its-the-end-of-our-chaotic-cable-cluttered-desks-and-monitors-that-fry-your-retinas"><strong>Exclusive: I asked Lenovo’s GM to predict the future of monitors, and it's the end of our chaotic, cable-cluttered desks and monitors that fry your retinas</strong></a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/gpus/i-tested-nvidias-new-dlss-4-5-ray-reconstruction-it-finally-fixes-path-tracings-biggest-flaw-but-heres-the-reality-check</link>
                                                                            <description>
                            <![CDATA[ I tested Nvidia’s new DLSS 4.5 Ray Reconstruction on a lot of RTX 50-series systems. Here is how the new AI transformer model cleans up path tracing noise and ghosting. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">bkJxUX7iTP4EMidLduodNj</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/RMiY9oysgWeGfsW6siGLq7-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 25 Aug 2026 15:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[GPUs]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Computing Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jason England ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/v4fSq5U4uZUEtGY2BwNuJ6-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jason brings a decade of tech and gaming journalism experience to his role as a Managing Editor of Computing at Tom&#039;s Guide. He has previously written for Laptop Mag, Tom&#039;s Hardware, Kotaku, Stuff and BBC Science Focus. In his spare time, you&#039;ll find Jason looking for good dogs to pet or thinking about eating pizza if he isn&#039;t already.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/RMiY9oysgWeGfsW6siGLq7-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[DLSS 4.5 Ray Reconstruction]]></media:description>                                                            <media:text><![CDATA[DLSS 4.5 Ray Reconstruction]]></media:text>
                                <media:title type="plain"><![CDATA[DLSS 4.5 Ray Reconstruction]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/RMiY9oysgWeGfsW6siGLq7-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>When you enable full path tracing in a modern game, the lighting looks stunning — but the illusion is often broken by visual artifacts like smudged reflections, ghosting details, light trails that fade weirdly and dark corners that “boil” with digital noise.</p><p>Nvidia is attempting to eradicate those issues for good with <a href="https://www.tomsguide.com/gaming/pc-gaming/deciphering-dlss-4-5-i-tested-nvidias-new-upscaler-and-figured-out-when-to-use-model-l-or-m">DLSS 4.5</a> Ray Reconstruction, and I’ve spent a few days with this tech to see if the company’s new gaming AI model can finally clean up path tracing’s messy edges.</p><p>The truth of it is the same as I’ve felt about ray tracing and path tracing at large. If you stop to pixel-peep, the visual upgrade is undeniable. But if you’re expecting a massive paradigm shift in the middle of a frantic firefight, you need to temper your expectations.</p><p>Sorry for the reality check, and credit to Team Green for managing to make trash bags shinier and more reflective in <a href="https://www.tomsguide.com/reviews/alan-wake-2">Alan Wake 2</a>, but this is definitely an iterative upgrade.</p><h2 class="article-body__section" id="section-how-to-activate-dlss-4-5-ray-reconstruction"><span>How to activate DLSS 4.5 Ray Reconstruction</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="uQBrGoqrBjz9sAtFLGs4em" name="DLSS 4.5 Ray Reconstruction" alt="DLSS 4.5 Ray Reconstruction" src="https://cdn.mos.cms.futurecdn.net/uQBrGoqrBjz9sAtFLGs4em-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Just like a lot of Nvidia’s gaming features, you’ve got to go into the overrides. Pop into the specific game that supports DLSS 4.5 Ray Reconstruction, open the DLSS overrides window, click the dropdown on Ray Reconstruction and select “Model F.”</p><p>At that point, you’re off to the races. The only game I noticed any weird glitching on with the override turned on is Portal RTX, which I’m sure will be ironed over with an update. But everything else worked without a hitch.</p><h2 class="article-body__section" id="section-what-is-ray-reconstruction"><span>What is Ray Reconstruction?</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="dFnwiQjJc9JcKDpfqpKH7W" name="DLSS 4.5 Ray Reconstruction" alt="DLSS 4.5 Ray Reconstruction" src="https://cdn.mos.cms.futurecdn.net/dFnwiQjJc9JcKDpfqpKH7W-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Well, the demands of path tracing are starting to outstrip the raw hardware capabilities of consumer GPUs. Calculating the real physical light paths for millions of pixels every second is just too much to do.</p><p>Instead of painting every single pixel, the game flings a handful of dots of paint across the canvas — just enough to capture rough reflections, colors and shadows. The end result is a noisy, static-filled mess of dots. Something is needed to join the dots.</p><p>The old fix was a technique graphics cards used called “denoisers.” I can go into the specifics about these hand-tuned technologies, but think of it like taking a wet sponge and smudging those paint dots together. It does the job in filling the gaps, but fine details get blurred out and subtle lighting can flicker and “boil.”</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/dSMYgGi0ZvY" allowfullscreen></iframe></div></div><p>So instead, Nvidia’s DLSS Ray Reconstruction hands that unfinished canvas to an AI network trained on supercomputers with millions of flawless images. Think of it like an expert art restorer with a photographic memory — looking at the scattered dots of light, recognizing the 3D geometry of the scene, and predicting how the light naturally behaves.</p><p>The end result (as you’ll see) is crispier puddle reflections, detailed textures without blurring or ghosting and shinier, less smudged light bounces. It takes this taxing work off the GPU, so it can focus on rendering the game, while AI pattern recognition does the heavy lifting of calculating the true light data.</p><h2 class="article-body__section" id="section-the-faster-smarter-engine-in-dlss-4-5"><span>The faster, smarter engine in DLSS 4.5</span></h2><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/NvSYk0PjLrU" allowfullscreen></iframe></div></div><p>To understand what DLSS 4.5 Ray Reconstruction is actually doing, you have to look at the math. Nvidia has replaced its own on-board denoiser with a new 2nd generation transformer model. This AI brain processes 20% more parameters and delivers a massive 35% boost in compute capability.</p><p>That means this hypothetical art restorer is now able to more deeply analyze the space, and intelligently use game engine pixel sampling and motion data to improve the accuracy and stability of lighting — doing so millions of times a second.</p><p>And the best part? Nvidia claims this massive increase in AI compute comes with a negligible performance impact.</p><p>Testing that claim, my RTX 5080 setup saw no frame rate penalty whatsoever, and for lower-end hardware in Nvidia’s 50-series family (like the <a href="https://www.tomsguide.com/computing/gpus/nvidia-geforce-rtx-5060-ti-review">RTX 5060 Ti</a> (16GB) and the RTX 5070 Ti-armed <a href="https://www.tomsguide.com/computing/gaming-laptops/asus-rog-zephyrus-g14-2025-review">Asus ROG Zephyrus G14</a> that I’m testing), the frame drops are negligible (average drop of 2 FPS).</p><p>Of course, that <em>should </em>extend to the RTX 40 and 50 series GPUs. But if you are running an older RTX 20 or 30 series card with the older architecture, limitations mean you may see a more noticeable performance penalty.</p><h2 class="article-body__section" id="section-the-pixel-peeping-test"><span>The pixel-peeping test</span></h2><p>So since this is one for those that just want to scrutinize the specifics of a frame, let’s dip into this with a few games on my RTX 5080 monster rig — putting DLSS 4 and DLSS 4.5’s Ray Reconstruction head-to-head. And I’m not going to lie, when you stop to take a beat and look around, the differences in still frames are striking.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/eMKStybz6tYpi2QPS84k2n-1920-80.jpg" alt="Cyberpunk 2077 DLSS 4 Ray Reconstruction" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/LY3yoVoqVUXeTxpEoFKYUn-1920-80.jpg" alt="Cyberpunk 2077 DLSS 4.5 Ray Reconstruction" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p><strong>In </strong><a href="https://www.tomsguide.com/reviews/cyberpunk-2077"><strong>Cyberpunk 2077</strong></a>, the bright red glow from the “Livepunch Booze” neon sign washes over the floor in a softer, blurrier spread with DLSS 4. Enabling 4.5 shows off the tighter light bounce and higher-contrast, which casts sharper, concentrated red and cyan reflections on those polished floor panels.</p><p>Throw in much sharper, more cohesive specular highlights and a deeper contrast in darker areas without that fuzzy noise that plagued the older denoiser, and the tweaks are small, but significant.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/kt7oe2mExk2eFgWifhfUDF-1920-80.gif" alt="Pragmata DLSS 4 Ray Reconstruction" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/6M3W7Nq3M2MVL9eJShSxKE-1920-80.gif" alt="DLSS 4.5 Ray Reconstruction" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p><strong>Moving over to </strong><a href="https://www.tomsguide.com/computing/gpus/i-stress-tested-pragmatas-path-tracing-it-looks-like-a-dream-and-nvidias-dlss-4-makes-it-play-like-one-provided-you-use-it-right"><strong>Pragmata</strong></a>, the moving neon makes DLSS 4.5 Ray Reconstruction much more noticeable. There’s a moving laser jumping puzzle that makes it so much more obvious — seeing the lasers just fizzle away on the older model vs immediately snapping away.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/fh7NKooL5WoY8FLVPwcCw5-1920-80.jpg" alt="Alan Wake 2 DLSS 4 Ray Reconstruction" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/TSncFRkhF8M4JjvMVp7d36-1920-80.jpg" alt="Alan Wake 2 DLSS 4.5 Ray Reconstruction" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p><strong>Finally, in Alan Wake 2</strong>, Nvidia showed me a demo of shinier trash bags. But if anything, they’re doing the tech a bit of a disservice. This has always been a showcase game for Team Green, and something as simple as walking around a safe room shows off small detail improvements that come together to make quite a difference.</p><p>Saga’s hair, coat and surrounding surfaces are much better defined with smoother, natural lighting bouncing off them. The grain of the wood paneling goes from slightly blurred to no blur whatsoever, lighting sources bounce more tightly off surfaces, and mirror reflections are <em>a lot </em>sharper.</p><h2 class="article-body__section" id="section-my-verdict"><span>My verdict</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="RMiY9oysgWeGfsW6siGLq7" name="DLSS 4.5 Ray Reconstruction" alt="DLSS 4.5 Ray Reconstruction" src="https://cdn.mos.cms.futurecdn.net/RMiY9oysgWeGfsW6siGLq7-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Full credit to Nvidia here — improving image fidelity by running an AI model with 20% more parameters without tanking frame rates on modern hardware is a genuine engineering triumph. </p><p>Of course, I say that specifically about the RTX 50-series gear I tested this on. Nvidia told me that it’s not expected to meaningfully impact performance on older GPUs. I can’t test that, but we’ll find out soon enough as some of my friends in the industry dish their thoughts.</p><p>But DLSS 4.5 Ray Reconstruction is an iterative polish. It cleans up the edge cases and makes your photo mode captures look absolutely spectacular. But during actual, fast-paced gameplay, the difference between DLSS 4 and DLSS 4.5 effectively blends into the background.</p><p>That being said, for the average gamer in motion, you’ll be hard pressed to notice the differences in the midst of gameplay. For the players, this is just a nice, quiet cleanup job. A small upgrade that will become more significant as we head into a world of path traced games.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><strong></strong><a href="https://www.tomsguide.com/computing/gpus/5-beginner-pc-building-tips-from-the-mad-genius-who-built-a-usd34k-353-pound-desktop-with-not-one-but-two-rtx-5090s"><strong>5 beginner PC building tips from the mad genius who built a $34k, 353-pound desktop with not one, but two RTX 5090s</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/computing/gpus/best-graphics-cards"><strong>Best graphics cards in 2026: I've tested every GPU to find the best bang for your buck</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/computing/monitors/exclusive-i-asked-lenovos-gm-to-predict-the-future-of-monitors-and-its-the-end-of-our-chaotic-cable-cluttered-desks-and-monitors-that-fry-your-retinas"><strong>Exclusive: I asked Lenovo’s GM to predict the future of monitors, and it's the end of our chaotic, cable-cluttered desks and monitors that fry your retinas</strong></a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Perplexity’s new local-first AI runs on your PC — and asks before using the cloud ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Most AI assistants require you to send your questions, files and other data to somebody else’s servers. Perplexity’s new Portable Computer turns that arrangement around by running the entire AI system on hardware you own.</p><p>Announced Tuesday, Portable Computer brings Perplexity’s agentic Computer platform to <a href="https://www.tomsguide.com/computing/laptops/ive-gone-hands-on-with-every-nvidia-rtx-spark-laptop-coming-this-fall-heres-my-ranked-list-of-the-best-options">Nvidia DGX Spark</a> and other <a href="https://www.tomsguide.com/gaming/pc-gaming/i-tried-gaming-on-linux-and-its-better-and-worse-than-you-think">Linux machines</a> with compatible Nvidia graphics cards.</p><p>The company says every task begins on your machine. If the local model reaches a step that requires more advanced reasoning, Portable Computer asks for permission before sending that individual step to a frontier model in the cloud. The answer then returns to the local workflow, while files and other sensitive information can remain on the device.</p><p>That could make it appealing to anyone who wants the convenience of an AI agent without automatically handing everything it touches to a cloud provider.</p><p>There is, however, a fairly expensive catch.</p><h2 id="more-than-a-locally-installed-chatbot">More than a locally installed chatbot</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="YwKRVzwvLwup6hDGh5bVNM" name="RzdqY6hhVUXJjJYEgfCrVe.jpg" alt="A hacker typing quickly on a keyboard" src="https://cdn.mos.cms.futurecdn.net/YwKRVzwvLwup6hDGh5bVNM-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>You can already download open models and run them on your own computer. The difficult part is turning one of those models into an AI agent that can work with files, use tools and complete a task involving several steps.</p><p>Doing that usually means finding and configuring an inference engine, agent harness, sandbox and any connectors needed to reach outside apps. You’re also responsible for getting all those pieces to work together.</p><p>Portable Computer packages that stack into one system. It includes the local model, inference engine, agent tools, app connectors and an isolated sandbox where it can execute code and use tools.</p><p>The AI can work with files stored on your computer, read PDFs, run shell commands, take dictation and search the web. Users can also connect services including Google Drive, Gmail, Slack and GitHub.</p><p>Code and tool use happen inside the local sandbox, according to Perplexity. That provides some separation between the AI agent and the rest of the machine, although I’d still want more detail about exactly what it can access and how those permissions are controlled.</p><h2 id="it-knows-when-to-ask-for-help">It knows when to ask for help</h2><p>The hybrid routing is probably the most interesting part of Portable Computer.</p><p>A smaller local model may be enough to locate a file, extract information from a PDF or carry out a straightforward series of steps. It is less likely to match the reasoning capabilities of the largest models from OpenAI, Anthropic or Google.</p><p>Perplexity’s answer is to let the task remain local until the model encounters something it cannot reliably handle. Portable Computer can then ask whether it may send that step to a cloud model.</p><p>Users don’t have to select a privacy mode or create their own routing rules. The system makes the decision while it is working, but the user still has to approve the handoff. A supposedly local AI system becomes much less private if it quietly falls back to the cloud whenever a task gets difficult.</p><p>Perplexity also says locally completed work won’t consume billing credits. Only the portion sent to the cloud will count toward cloud usage.</p><p>At launch, users can choose a 27-billion-parameter Qwen model or Perplexity’s own post-trained version, called PPLX 27B. Nvidia’s Nemotron 3.5 Lightning is expected to follow. Users will also be able to bring their own model and inference server.</p><h2 id="the-hardware-is-the-catch">The hardware is the catch</h2><p>Portable Computer may run on your PC, but not just any PC.</p><p>The software launches first on Linux and requires Nvidia hardware with at least 24GB of VRAM. It supports the desktop-sized Nvidia DGX Spark as well as compatible computers running DGX OS or Ubuntu on ARM or x64 hardware.</p><p>Windows support is scheduled to arrive in September. Perplexity hasn’t announced support for macOS.</p><p>Portable Computer will be available to <a href="https://www.tomsguide.com/ai/perplexity/how-to-get-perplexity-pro-for-free-3-ways-you-can-get-a-year-at-no-cost">Perplexity Pro</a>, Max, Enterprise Pro and Enterprise Max subscribers. Even with a compatible subscription, most people won’t have the necessary hardware sitting under their desks.</p><p>That makes this initial release more relevant to AI enthusiasts, developers and companies that already own high-end Nvidia systems than someone deciding between ChatGPT and Perplexity on an ordinary laptop.</p><p>Still, the idea behind it could reach a much wider audience. AI assistants are gaining access to increasingly personal information, including email, work documents and files stored on our computers. Running more of that work locally gives users another way to decide what leaves their machine and when.</p><p>Portable Computer isn’t ready to replace a cloud chatbot for most people. It does, however, offer a glimpse of what a more private AI assistant could look like once the hardware needed to run one becomes easier to afford.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/ai/chatgpt/the-best-way-to-use-chatgpt-for-writing-isnt-writing-7-prompts-i-use-to-make-it-my-creative-partner"><strong>The best way to use ChatGPT for writing isn't writing — 7 prompts I use to make it my creative partner</strong></a></li><li><a href="https://www.tomsguide.com/ai/claude/5-features-that-give-claude-the-edge-over-chatgpt"><strong>5 features that give Claude the edge over ChatGPT</strong></a></li><li><a href="https://www.tomsguide.com/ai/i-dont-use-ai-to-write-my-emails-heres-how-i-use-it-to-manage-my-inbox-instead"><strong>I don’t use AI to write my emails — here’s how I use it to manage my inbox instead</strong></a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/ai/perplexitys-new-local-first-ai-runs-on-your-pc-and-asks-before-using-the-cloud</link>
                                                                            <description>
                            <![CDATA[ Perplexity Portable Computer runs its AI models, tools and agent workflows locally, keeping your files on your machine unless you approve cloud access. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">iQqmCz5x7arrFeZ7xLqcDL</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/oW2jKymtiv2rQ7N8Fqenh8-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 25 Aug 2026 13:39:35 +0000</pubDate>                                                                                                                                <updated>Tue, 25 Aug 2026 13:40:33 +0000</updated>
                                                                                                                                            <category><![CDATA[AI]]></category>
                                                    <category><![CDATA[Perplexity]]></category>
                                                                                                <author><![CDATA[ amanda.caswell@futurenet.com (Amanda Caswell) ]]></author>                    <dc:creator><![CDATA[ Amanda Caswell ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/zYjevim2q7FjQiefqpjZRB-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/oW2jKymtiv2rQ7N8Fqenh8-1920-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[perplexity]]></media:description>                                                            <media:text><![CDATA[perplexity]]></media:text>
                                <media:title type="plain"><![CDATA[perplexity]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/oW2jKymtiv2rQ7N8Fqenh8-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Most AI assistants require you to send your questions, files and other data to somebody else’s servers. Perplexity’s new Portable Computer turns that arrangement around by running the entire AI system on hardware you own.</p><p>Announced Tuesday, Portable Computer brings Perplexity’s agentic Computer platform to <a href="https://www.tomsguide.com/computing/laptops/ive-gone-hands-on-with-every-nvidia-rtx-spark-laptop-coming-this-fall-heres-my-ranked-list-of-the-best-options">Nvidia DGX Spark</a> and other <a href="https://www.tomsguide.com/gaming/pc-gaming/i-tried-gaming-on-linux-and-its-better-and-worse-than-you-think">Linux machines</a> with compatible Nvidia graphics cards.</p><p>The company says every task begins on your machine. If the local model reaches a step that requires more advanced reasoning, Portable Computer asks for permission before sending that individual step to a frontier model in the cloud. The answer then returns to the local workflow, while files and other sensitive information can remain on the device.</p><p>That could make it appealing to anyone who wants the convenience of an AI agent without automatically handing everything it touches to a cloud provider.</p><p>There is, however, a fairly expensive catch.</p><h2 id="more-than-a-locally-installed-chatbot">More than a locally installed chatbot</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="YwKRVzwvLwup6hDGh5bVNM" name="RzdqY6hhVUXJjJYEgfCrVe.jpg" alt="A hacker typing quickly on a keyboard" src="https://cdn.mos.cms.futurecdn.net/YwKRVzwvLwup6hDGh5bVNM-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>You can already download open models and run them on your own computer. The difficult part is turning one of those models into an AI agent that can work with files, use tools and complete a task involving several steps.</p><p>Doing that usually means finding and configuring an inference engine, agent harness, sandbox and any connectors needed to reach outside apps. You’re also responsible for getting all those pieces to work together.</p><p>Portable Computer packages that stack into one system. It includes the local model, inference engine, agent tools, app connectors and an isolated sandbox where it can execute code and use tools.</p><p>The AI can work with files stored on your computer, read PDFs, run shell commands, take dictation and search the web. Users can also connect services including Google Drive, Gmail, Slack and GitHub.</p><p>Code and tool use happen inside the local sandbox, according to Perplexity. That provides some separation between the AI agent and the rest of the machine, although I’d still want more detail about exactly what it can access and how those permissions are controlled.</p><h2 id="it-knows-when-to-ask-for-help">It knows when to ask for help</h2><p>The hybrid routing is probably the most interesting part of Portable Computer.</p><p>A smaller local model may be enough to locate a file, extract information from a PDF or carry out a straightforward series of steps. It is less likely to match the reasoning capabilities of the largest models from OpenAI, Anthropic or Google.</p><p>Perplexity’s answer is to let the task remain local until the model encounters something it cannot reliably handle. Portable Computer can then ask whether it may send that step to a cloud model.</p><p>Users don’t have to select a privacy mode or create their own routing rules. The system makes the decision while it is working, but the user still has to approve the handoff. A supposedly local AI system becomes much less private if it quietly falls back to the cloud whenever a task gets difficult.</p><p>Perplexity also says locally completed work won’t consume billing credits. Only the portion sent to the cloud will count toward cloud usage.</p><p>At launch, users can choose a 27-billion-parameter Qwen model or Perplexity’s own post-trained version, called PPLX 27B. Nvidia’s Nemotron 3.5 Lightning is expected to follow. Users will also be able to bring their own model and inference server.</p><h2 id="the-hardware-is-the-catch">The hardware is the catch</h2><p>Portable Computer may run on your PC, but not just any PC.</p><p>The software launches first on Linux and requires Nvidia hardware with at least 24GB of VRAM. It supports the desktop-sized Nvidia DGX Spark as well as compatible computers running DGX OS or Ubuntu on ARM or x64 hardware.</p><p>Windows support is scheduled to arrive in September. Perplexity hasn’t announced support for macOS.</p><p>Portable Computer will be available to <a href="https://www.tomsguide.com/ai/perplexity/how-to-get-perplexity-pro-for-free-3-ways-you-can-get-a-year-at-no-cost">Perplexity Pro</a>, Max, Enterprise Pro and Enterprise Max subscribers. Even with a compatible subscription, most people won’t have the necessary hardware sitting under their desks.</p><p>That makes this initial release more relevant to AI enthusiasts, developers and companies that already own high-end Nvidia systems than someone deciding between ChatGPT and Perplexity on an ordinary laptop.</p><p>Still, the idea behind it could reach a much wider audience. AI assistants are gaining access to increasingly personal information, including email, work documents and files stored on our computers. Running more of that work locally gives users another way to decide what leaves their machine and when.</p><p>Portable Computer isn’t ready to replace a cloud chatbot for most people. It does, however, offer a glimpse of what a more private AI assistant could look like once the hardware needed to run one becomes easier to afford.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/ai/chatgpt/the-best-way-to-use-chatgpt-for-writing-isnt-writing-7-prompts-i-use-to-make-it-my-creative-partner"><strong>The best way to use ChatGPT for writing isn't writing — 7 prompts I use to make it my creative partner</strong></a></li><li><a href="https://www.tomsguide.com/ai/claude/5-features-that-give-claude-the-edge-over-chatgpt"><strong>5 features that give Claude the edge over ChatGPT</strong></a></li><li><a href="https://www.tomsguide.com/ai/i-dont-use-ai-to-write-my-emails-heres-how-i-use-it-to-manage-my-inbox-instead"><strong>I don’t use AI to write my emails — here’s how I use it to manage my inbox instead</strong></a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I tested the Lenovo Legion 5i Gen 11 — it almost achieves gaming laptop greatness, until you see the upgrade prices ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Lenovo’s Legion laptops traditionally sit comfortably in the chunky, high-performance desktop replacement zone. They’re thick, with heavy power supplies, and abysmal battery life. However, this year’s Legion 5i changes that formula.</p><p>The Lenovo Legion 5i Gen 11 offers a more streamlined chassis and better battery life compared to previous models, but still offers the same robust gaming performance, a crisp OLED display, along with Lenovo’s industry-leading keyboard for an all-around powerhouse of a laptop. If not for a sub-par onboard audio experience and expensive upgrades, it would be perfect.</p><p>The real question is: are those downsides enough to keep the Legion 5i Gen 11 from becoming one of our <a href="https://www.tomsguide.com/best-picks/best-gaming-laptops">best gaming laptops</a>? </p><h2 class="article-body__section" id="section-lenovo-legion-5i-gen-11-cheat-sheet"><span>Lenovo Legion 5i Gen 11: Cheat sheet</span></h2><ul><li><strong>What is it?: </strong>The Legion 5i Gen 11 is a more toned-down version of Lenovo’s Legion Pro, offering a fantastic balance between powerful gaming performance and crisp visuals with more affordable pricing compared to the Pro model.</li><li><strong>Who is it for?: </strong>Gamers and STEM students who want a powerful RTX 50-series laptop with Lenovo’s sturdy build quality, while sticking to a more affordable price tag.</li><li><strong>What does it cost?: </strong>The starting price for the <a href="https://www.lenovo.com/us/en/p/laptops/legion-laptops/legion-5-series/legion-5i-gen-11-15-inch-intel-laptop/len101g0053" target="_blank" rel="nofollow">Legion 5i Gen 11 is $1,899</a> while our review spec costs a bit more, running the tab up to $2,825. However, Lenovo is running a special on an RTX 5060 configuration that brings the price down to just $1,899.</li><li><strong>What do we like?:</strong> The new, sleeker chassis makes the Legion 5i a bit more portable, and the improved battery life is fantastic for students or working professionals. The Legion 5i also sports one of Lenovo’s fantastic keyboards, a crisp OLED display, and a powerful Nvidia RTX 50-series GPU.</li><li><strong>What don’t we like?:</strong> Upgrading your RAM and storage, or switching to the RTX 5070 model come at steep premiums which make the affordable Legion 5i Gen 11 a much less attractive bargain.</li></ul><h2 class="article-body__section" id="section-lenovo-legion-5i-gen-11-specs"><span>Lenovo Legion 5i Gen 11: Specs</span></h2><div ><table><thead><tr><th class="firstcol empty" ></th><th  ><p>Lenovo Legion 5i Gen 11<br>(starting price)</p></th><th  ><p>Lenovo Legion 5i Gen 11</p><p>(as reviewed)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p>$1,899</p></td><td  ><p>$2,825</p></td></tr><tr><td class="firstcol " ><p><strong>CPU</strong></p></td><td  ><p>Intel Core Ultra 7 251HX</p></td><td  ><p>Intel Core Ultra 7 251HX</p></td></tr><tr><td class="firstcol " ><p><strong>GPU</strong></p></td><td  ><p>Nvidia GeForce RTX 5060</p></td><td  ><p>Nvidia GeForce RTX 5070</p></td></tr><tr><td class="firstcol " ><p><strong>Display</strong></p></td><td  ><p>15-inch, 2,560 x 1,600, 165Hz OLED</p></td><td  ><p>15-inch, 2,560 x 1,600, 165Hz OLED</p></td></tr><tr><td class="firstcol " ><p><strong>Memory</strong></p></td><td  ><p>16GB</p></td><td  ><p>16GB</p></td></tr><tr><td class="firstcol " ><p><strong>Storage</strong></p></td><td  ><p>512GB SSD</p></td><td  ><p>1TB SSD</p></td></tr><tr><td class="firstcol " ><p><strong>Ports</strong></p></td><td  ><p>1x Thunderbolt 4 (40 Gbps), 1x USB-C (10 Gbps), 3x USB-A (5 Gbps), 1x HDMI 2.1, 1x RJ45 Ethernet, 1x Audio combo jack, 1x DC-in</p></td><td  ><p>1x Thunderbolt 4 (40 Gbps), 1x USB-C (10 Gbps), 3x USB-A (5 Gbps), 1x HDMI 2.1, 1x RJ45 Ethernet, 1x Audio combo jack, 1x DC-in</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>WiFi 7, Bluetooth 5.4</p></td><td  ><p>WiFi 7, Bluetooth 5.4</p></td></tr><tr><td class="firstcol " ><p><strong>Size</strong></p></td><td  ><p>13.54 x 9.66 x 0.75-0.79 inches</p></td><td  ><p>13.54 x 9.66 x 0.75-0.79 inches</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>4.25 pounds</p></td><td  ><p>4.25 pounds</p></td></tr></tbody></table></div><h2 class="article-body__section" id="section-lenovo-legion-5i-gen-11-the-ups"><span>Lenovo Legion 5i Gen 11: The ups</span></h2><p>The Legion 5i is Lenovo’s mid-tier gaming laptop, and it’s got plenty to recommend it as your next gaming laptop. Between the new sleek chassis, crisp OLED display,  fantastic keyboard, useful battery life, and powerful NVIDIA RTX 50-series graphics the Legion 5i has some serious selling points.</p><h2 id="sleek-redesign">Sleek redesign</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="v8X3yJM3jkZE3SsK74vcuX" name="Lenovo Legion 5i Gen 11" alt="Lenovo Legion 5i Gen 11" src="https://cdn.mos.cms.futurecdn.net/v8X3yJM3jkZE3SsK74vcuX-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Lenovo has been thinning out the Legion lineup a bit over the years, and the 11th Gen Legion ditches the clunky hub on the back for a more beveled edge across the entire laptop. While it doesn’t shave a ton off the Z-height of the laptop, the loss of the hub and the bevelling make the Legion 5i feel much slimmer despite being nearly equal in thickness.</p><p>The design overhaul also makes the Legion 5i a bit easier to carry, even with a slightly heavier weight than the <a href="https://www.tomsguide.com/computing/gaming-laptops/lenovo-legion-5i-gen-10-review">10th Gen Legion 5i</a> which was 0.8 inches thick and weighed 4.1 pounds. The 11th Gen is 0.79 inches thick and weighs 4.25 pounds.</p><p>Overall, the new design still keeps some recognizable Legion touches from the smudge-magnet Eclipse Black colorway to the Legion logo on the top cover panel, and Lenovo’s camera and microphone hub at the top edge. </p><p>While this doesn’t drastically change the dimensions of the Legion, it does make it feel more like a modern gaming laptop than previous iterations (particularly the 9th Gen and earlier) which were starting to feel dated.</p><h2 id="industry-leading-keyboard">Industry-leading keyboard</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="7FxRXNUjM6kpSHpL3o6YKb" name="Lenovo Legion 5i Gen 11" alt="Lenovo Legion 5i Gen 11" src="https://cdn.mos.cms.futurecdn.net/7FxRXNUjM6kpSHpL3o6YKb-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Lenovo makes good keyboards. That’s just kind of a universal fact at this point. And the Legion 5i Gen 11 is no exception to that rule.</p><p>The typing experience is the perfect combination of crisp with deep keytravel to avoid bottoming out your fingers while frantically typing instructions to your party in the in-game text window. It’s both satisfying and comfortable, which is a hard sweet-spot to hit for a laptop keyboard. </p><p>The off-set arrow keys also make navigating games a little easier and the included num-pad is great for binding macros and additional skills for input heavy RPGs and MMOs.</p><p>The Legion’s keyboard features 1.6mm key travel with a 0.3mm dish on each key, with swappable keycaps and Lenovo’s Spectrum RGB software for controlling the 1-zone or 24-zone RGB depending on your keyboard upgrades. </p><p>And even with just 1-zone RGB, you still get the same 1.6mm key travel and 0.3mm dish, which means if you don’t go for the 24-zone RGB upgrade, you still get the same great typing experience.</p><h2 id="crisp-display">Crisp display</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="T3tRc94QQQoWVTW3wZRZ5e" name="Lenovo Legion 5i Gen 11" alt="Lenovo Legion 5i Gen 11" src="https://cdn.mos.cms.futurecdn.net/T3tRc94QQQoWVTW3wZRZ5e-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>OLED displays offer some serious gaming benefits, and they’re even better when you’re using your gaming laptop to binge a TV series over a weekend. Getting an OLED display on a mid-range gaming laptop isn’t always a guarantee, so it's incredible to see that as a standard panel option on the Legion 5i.</p><p>From crisper blacks and more vibrant colors, the Legion 5i’s display looks absolutely stunning when watching nature documentaries like The Loneliest Whale or when playing visually intense games like Avowed. Toggle on HDR, and you’ve got a gaming laptop that can actually display the final season of Game of Thrones.</p><div ><table><thead><tr><th class="firstcol " ><p>Laptop</p></th><th  ><p>Average brightness (nits)</p></th><th  ><p>DCI-P3 color gamut (%)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Lenovo Legion 5i Gen 11</strong></p></td><td  ><p>491</p></td><td  ><p>137.5%</p></td></tr><tr><td class="firstcol " ><p><strong>HyperX OMEN 16 VALORANT Limited Edition</strong></p></td><td  ><p>525</p></td><td  ><p>81.1%</p></td></tr><tr><td class="firstcol " ><p><strong>MSI Stealth 16 AI+ B3WF</strong></p></td><td  ><p>375</p></td><td  ><p>85.5%</p></td></tr></tbody></table></div><p>While my eyes absolutely enjoyed my time with the Legion 5i, that experience is also backed up by our lab testing. The Legion 5i Gen 11 covered 137.5% of the DCI-P3 color gamut with an average brightness of 490 nits and a peak HDR brightness of 1,049 nits. </p><p>This is pretty great for an OLED, and absolutely fantastic when compared to other mid-range gaming laptops like the <a href="https://www.tomsguide.com/computing/gaming-laptops/msi-stealth-16-ai-plus-2026-review">MSI Stealth 16 AI+</a> or <a href="https://www.tomsguide.com/computing/gaming-laptops/hp-hyperx-omen-16-valorant-edition-review">HyperX Omen 16 Valorant Edition</a> which both lack HDR support and manage just 85% and 81% coverage of the DCI-P3 spectrum respectively.</p><h2 id="solid-rtx-5070-gaming-chops">Solid RTX 5070 gaming chops</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="9oyTDKwndAVfyW7uDQ3Vdh" name="Lenovo Legion 5i Gen 11" alt="Lenovo Legion 5i Gen 11" src="https://cdn.mos.cms.futurecdn.net/9oyTDKwndAVfyW7uDQ3Vdh-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>While the Legion 5i isn’t Lenovo’s flagship gaming laptop, it should still have solid gaming performance. Particularly our review model which features the powerful Intel Core Ultra 7 251HX and Nvidia GeForce RTX 5070 combination.</p><p>My current go-to games aren’t exactly strong benchmarks so I expected the Legion 5i to have no problems whatsoever running Baldur’s Gate III and Final Fantasy XIV on high graphics presets at the Legion’s max 1600p resolution. In Baldur’s Gate III, I had the Legion running on High graphics presets at 1600p and was easily getting over 90fps. </p><div ><table><thead><tr><th class="firstcol " ><p>Laptop</p></th><th  ><p>3DMark average score (across 7 different tests)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Lenovo Legion 5i Gen 11</strong></p></td><td  ><p>10,394</p></td></tr><tr><td class="firstcol " ><p><strong>HyperX OMEN 16 VALORANT Limited Edition</strong></p></td><td  ><p>9,688</p></td></tr><tr><td class="firstcol " ><p><strong>MSI Stealth 16 AI+ B3WF</strong></p></td><td  ><p>8,587</p></td></tr></tbody></table></div><p>In Final Fantasy XIV, I had the Legion running High (Laptop) graphics presets at 1600p and could get frame-rate peaks of over 100fps though the game tended to settle around 90fps in most zones. Any frame drops I noticed were more due to pop-in rate and high player traffic than anything hardware wise with the Legion.</p><p>To make the Legion 5i work a bit harder, I also booted up Avowed which has a tendency to run at low frame-rates because of its intense graphics and poor optimization. The Legion did stumble here a bit, but then I’ve also seen RTX 5090 laptops struggle with Avowed. </p><div ><table><thead><tr><th class="firstcol " ><p>Laptop</p></th><th  ><p>Cyberpunk 2077 (1080p RT Ultra)</p></th><th  ><p>Black Myth Wukong (1600p Cinematic)</p></th><th  ><p>Forza Horizon 6 (1080p Extreme + RT)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Lenovo Legion 5i Gen 11 (RTX 5070 12 GB)</strong></p></td><td  ><p>44.1 FPS</p></td><td  ><p>27 FPS</p></td><td  ><p>50 FPS</p></td></tr><tr><td class="firstcol " ><p><strong>HyperX OMEN 16 VALORANT Limited Edition (RTX 5070 8GB)</strong></p></td><td  ><p>35.3 FPS</p></td><td  ><p>22 FPS</p></td><td  ><p>42 FPS</p></td></tr><tr><td class="firstcol " ><p><strong>MSI Stealth 16 AI+ B3WF (RTX 5060 8GB)</strong></p></td><td  ><p>31.2 FPS</p></td><td  ><p>21 FPS</p></td><td  ><p>31 FPS</p></td></tr></tbody></table></div><p>However, while keeping my resolution set to 1600p (because Avowed sometimes gets awkward on lower resolutions) , opting for Medium graphics settings got me a perfectly playable game which held at about 59 to 61 FPS, and I didn’t lose too much graphic detail either.</p><p>In our lab tests, the Legion also performed well. Our review unit for the Legion 5i Gen 11 features the upgraded Nvidia GeForce RTX 5070 (12GB) model, which outperformed the HyperX Omen 16 Valorant Edition which featured the 8GB version of the RTX 5070. The Legion also held the lead over the MSI Stealth 16 AI+ which featured the RTX 5060.</p><p>This meant the Legion 5i averaged 9 fps more than the HyperX and 21 FPS more than the Stealth on Black Myth Wukong at 1080p on Medium settings. The Legion’s lead died down a bit on Cinematic settings and 1600p resolution. The Legion also held a 9 FPS lead on the HyperX on Cyberpunk 2077 at 1080p and a 6 FPS lead at 1600p. The Stealth lagged behind the Legion by 12 FPS at 1080p and 8 FPS at 1600p on Cyberpunk.</p><p>While the Legion can still struggle to surpass 60fps on intense titles at max resolution, it can easily clear the 60 FPS mark on High or Ultra settings at 1080p. Which is pretty impressive for an RTX 5070 laptop. It does help that Lenovo opted for the 12GB VRAM model which gives the Legion’s RTX 5070 just enough extra horsepower to clear the competition.</p><h2 id="respectable-battery-life">Respectable battery life</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="tj7xbJnegcrtGwx45Z3uBm" name="Lenovo Legion 5i Gen 11" alt="Lenovo Legion 5i Gen 11" src="https://cdn.mos.cms.futurecdn.net/tj7xbJnegcrtGwx45Z3uBm-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Legion laptops rarely win awards for having long battery life, and usually that’s expected. Legion laptops tend to sit in the desktop replacement sector, where you don’t really expect much in terms of unplugged performance for laptops that feature power-hungry CPUs and GPUs.</p><div ><table><thead><tr><th class="firstcol " ><p>Laptop</p></th><th  ><p>Web surfing battery life test result (hh:mm)</p></th><th  ><p>PCMark 10 gaming battery life test result (hh:mm)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Lenovo Legion 5i Gen 11</strong></p></td><td  ><p>07:03</p></td><td  ><p>01:27</p></td></tr><tr><td class="firstcol " ><p><strong>HyperX OMEN 16 VALORANT Limited Edition</strong></p></td><td  ><p>02:41</p></td><td  ><p>01:30</p></td></tr><tr><td class="firstcol " ><p><strong>MSI Stealth 16 AI+ B3WF</strong></p></td><td  ><p>10:49</p></td><td  ><p>01:55</p></td></tr></tbody></table></div><p>However, the Legion 5i Gen 11 does pack a pretty respectable punch when it comes to web surfing and gaming battery life. The Legion 5i lasted 7 hours and 3 minutes on our web surfing battery test and it survived an impressive 1 hour 27 minutes on the PCMark 10 Gaming battery life benchmark.</p><p>For context, the HyperX Omen 16 lasted just 2:41 on our web surfing battery test, while the MSI Stealth was one of our longer-lasting gaming laptops with a web surfing battery life of 10:49. For a Legion laptop to get over 7 hours of web surfing battery life? That’s a pretty damn impressive turnaround. The Legion 5i Gen 9 barely made it three and a half hours.</p><p>As for the PCMark 10 Gaming battery benchmark, the HyperX Omen 16 lasted 1:30 and the Stealth lasted 1:55. It’s pretty rare to see a gaming laptop hit 2 hours on the PCMark 10 test since any discrete GPU is going to put a major drain on the laptop’s internal battery. However, getting 1:27 is pretty solid. It’s not a great amount of game-time but it is enough that you don’t need to immediately worry if your cat unplugs your laptop mid-raid.</p><h2 class="article-body__section" id="section-lenovo-legion-5i-gen-11-the-downs"><span>Lenovo Legion 5i Gen 11: The downs</span></h2><p>The Legion’s downsides aren’t particularly plentiful, and there are ways to avoid these pitfalls. You can avoid the pricey upgrades by sticking with the pre-configured $1,899 model and you can use a quality headset or set of speakers to get better audio, they are problematic enough to be considered downsides.</p><h2 id="ramaggeddon-strikes-again">RAMaggeddon Strikes Again</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="hBAuDTbNf4tXUyohzRL4e" name="Lenovo Legion 5i Gen 11" alt="Lenovo Legion 5i Gen 11" src="https://cdn.mos.cms.futurecdn.net/hBAuDTbNf4tXUyohzRL4e-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Gaming hardware has always been expensive, but budget gaming hardware is now almost non-existent.</p><p>Lenovo is currently offering a pre-configured version of the Legion 5i Gen 11 at $1,899. That model features the same Intel Core Ultra 7 251HX CPU, 16GB RAM, 1TB SSD, and 15-inch OLED display as our review configuration. However, it has the Nvidia RTX 5060 onboard instead. This is actually cheaper than the $2,355 starting configuration with just 512GB of SSD storage.</p><p>And really, that $1,899 price tag wouldn’t be considered budget just a year ago, but the RAM shortage has made any gaming laptop under $2,000 feel like a steal. </p><p>Unfortunately, the base configuration is more expensive, so if Lenovo ever stops running that sale, the Legion 5i goes from somewhat affordable to expensive. Especially if you need to upgrade the RAM, SSD storage, CPU, or GPU as those will come at steep premiums.</p><p>Upgrading to the Intel Core Ultra 9 290HX processor costs an additional $110 while upgrading to the Nvidia RTX 5070 graphics card adds $300 to the total price. Upgrading your storage to 1TB will set you back $190, upgrading to 2TB will set you back an additional $430 on top of that, while increasing your memory from 16GB to 32GB will come with a $370 price-tag.</p><p>Which is how you get our RTX 5070 configuration at $2,825. And that’s the kind of prices we saw on RTX 5090 laptops just a year ago. So if you want the Legion 5i Gen 11, you better grab the pre-configured model while Lenovo still has that special running. Because otherwise its hard to justify the price.</p><h2 id="don-t-rely-on-the-built-in-audio">Don’t rely on the built-in audio</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="PkmjYjPxSGEd7xDZaP5A96" name="Lenovo Legion 5i Gen 11" alt="Lenovo Legion 5i Gen 11" src="https://cdn.mos.cms.futurecdn.net/PkmjYjPxSGEd7xDZaP5A96-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Considering the Legion 5i’s status as Lenovo’s mid-range Intel gaming laptop, a certain level of quality is expected on all fronts. And audio is no exception.</p><p>While laptop audio setups often have to make sacrifices due to the form factor, some laptops offer more robust built-in sound systems than others. And while the Legion 5i’s audio is perfectly usable, it’s hardly enjoyable.</p><p>Lenovo packed a quad (2x2W) Harman speaker system with Nahimic Audio drivers into the Legion 5i chassis. Unfortunately, those speakers are bottom-firing which leads to some issues based on your gaming surface. </p><p>Downward-facing laptop speakers rely on audio engineering to bounce the audio to the user, so they can be less consistent in audio quality than top or side-firing audio systems.</p><p>While the Legion 5i’s speakers are perfectly fine at lower volume levels (40% and below), the bottom-firing speakers get muddied, and everything sounds overly-sharp with no bass when played at higher volumes. </p><p>So it’s not exactly ideal for a movie or TV show binge. And while you might be able to play a casual game with the Legion’s speaker system, I would opt for a quality studio headset for anything more intense than Runescape.</p><h2 class="article-body__section" id="section-lenovo-legion-5i-gen-11-verdict"><span>Lenovo Legion 5i Gen 11: Verdict</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="oaB2NUuhdEJZzmTwsrspY9" name="Lenovo Legion 5i Gen 11" alt="Lenovo Legion 5i Gen 11" src="https://cdn.mos.cms.futurecdn.net/oaB2NUuhdEJZzmTwsrspY9-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Traditionally, a Lenovo Legion laptop is a chunky, high-performance desktop replacement laptop that you’d rarely dream of carrying to school or to work. </p><p>Between the previous generation and this current gen, that’s starting to change. The Legion 5i offers a sleeker, more modern chassis that’s much easier to carry, and it’s got battery life that’s actually useful for getting some work done.</p><p>Combined with one of Lenovo’s industry leading keyboards, a crisp OLED display, and the same robust gaming performance you’d expect from a Legion laptop and the Legion 5i is a potent powerhouse.</p><p>It could be the perfect laptop, if only its onboard audio system was a bit more robust and its base price and upgrades weren’t so expensive.</p><p>If you are going to nab the Legion 5i Gen 11, I would absolutely recommend sticking with the discounted $1,899 preconfigured model as it's actually affordable and comes with nearly all the same features as our review model. </p><p>The gaming performance will be a bit weaker, but it’s not worth the nearly $1,000 increase in price just to upgrade to the RTX 5070 model.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/gaming-laptops/lenovo-legion-5i-gen-11-review</link>
                                                                            <description>
                            <![CDATA[ Lenovo has trimmed down the Legion 5i a bit from previous iterations, and fixed its battery life issue, leaving the Legion 5i Gen 11 a powerful mid-range gaming laptop with only few downsides holding it back from affordable perfection. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Bt36bdsRmjh4PA9f4JUPBG</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/xUrJiPrftzC9hce8LBdJ4V-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 16 Aug 2026 12:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Laptops]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Laptops]]></category>
                                                                                                                    <dc:creator><![CDATA[ Madeline Ricchiuto ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/huJopNra2ToeEpbCSHU9MV-320-70.webp ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/xUrJiPrftzC9hce8LBdJ4V-1920-80.jpg">
                                                            <media:credit><![CDATA[Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Lenovo Legion 5i Gen 11]]></media:description>                                                            <media:text><![CDATA[Lenovo Legion 5i Gen 11]]></media:text>
                                <media:title type="plain"><![CDATA[Lenovo Legion 5i Gen 11]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/xUrJiPrftzC9hce8LBdJ4V-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Lenovo’s Legion laptops traditionally sit comfortably in the chunky, high-performance desktop replacement zone. They’re thick, with heavy power supplies, and abysmal battery life. However, this year’s Legion 5i changes that formula.</p><p>The Lenovo Legion 5i Gen 11 offers a more streamlined chassis and better battery life compared to previous models, but still offers the same robust gaming performance, a crisp OLED display, along with Lenovo’s industry-leading keyboard for an all-around powerhouse of a laptop. If not for a sub-par onboard audio experience and expensive upgrades, it would be perfect.</p><p>The real question is: are those downsides enough to keep the Legion 5i Gen 11 from becoming one of our <a href="https://www.tomsguide.com/best-picks/best-gaming-laptops">best gaming laptops</a>? </p><h2 class="article-body__section" id="section-lenovo-legion-5i-gen-11-cheat-sheet"><span>Lenovo Legion 5i Gen 11: Cheat sheet</span></h2><ul><li><strong>What is it?: </strong>The Legion 5i Gen 11 is a more toned-down version of Lenovo’s Legion Pro, offering a fantastic balance between powerful gaming performance and crisp visuals with more affordable pricing compared to the Pro model.</li><li><strong>Who is it for?: </strong>Gamers and STEM students who want a powerful RTX 50-series laptop with Lenovo’s sturdy build quality, while sticking to a more affordable price tag.</li><li><strong>What does it cost?: </strong>The starting price for the <a href="https://www.lenovo.com/us/en/p/laptops/legion-laptops/legion-5-series/legion-5i-gen-11-15-inch-intel-laptop/len101g0053" target="_blank" rel="nofollow">Legion 5i Gen 11 is $1,899</a> while our review spec costs a bit more, running the tab up to $2,825. However, Lenovo is running a special on an RTX 5060 configuration that brings the price down to just $1,899.</li><li><strong>What do we like?:</strong> The new, sleeker chassis makes the Legion 5i a bit more portable, and the improved battery life is fantastic for students or working professionals. The Legion 5i also sports one of Lenovo’s fantastic keyboards, a crisp OLED display, and a powerful Nvidia RTX 50-series GPU.</li><li><strong>What don’t we like?:</strong> Upgrading your RAM and storage, or switching to the RTX 5070 model come at steep premiums which make the affordable Legion 5i Gen 11 a much less attractive bargain.</li></ul><h2 class="article-body__section" id="section-lenovo-legion-5i-gen-11-specs"><span>Lenovo Legion 5i Gen 11: Specs</span></h2><div ><table><thead><tr><th class="firstcol empty" ></th><th  ><p>Lenovo Legion 5i Gen 11<br>(starting price)</p></th><th  ><p>Lenovo Legion 5i Gen 11</p><p>(as reviewed)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p>$1,899</p></td><td  ><p>$2,825</p></td></tr><tr><td class="firstcol " ><p><strong>CPU</strong></p></td><td  ><p>Intel Core Ultra 7 251HX</p></td><td  ><p>Intel Core Ultra 7 251HX</p></td></tr><tr><td class="firstcol " ><p><strong>GPU</strong></p></td><td  ><p>Nvidia GeForce RTX 5060</p></td><td  ><p>Nvidia GeForce RTX 5070</p></td></tr><tr><td class="firstcol " ><p><strong>Display</strong></p></td><td  ><p>15-inch, 2,560 x 1,600, 165Hz OLED</p></td><td  ><p>15-inch, 2,560 x 1,600, 165Hz OLED</p></td></tr><tr><td class="firstcol " ><p><strong>Memory</strong></p></td><td  ><p>16GB</p></td><td  ><p>16GB</p></td></tr><tr><td class="firstcol " ><p><strong>Storage</strong></p></td><td  ><p>512GB SSD</p></td><td  ><p>1TB SSD</p></td></tr><tr><td class="firstcol " ><p><strong>Ports</strong></p></td><td  ><p>1x Thunderbolt 4 (40 Gbps), 1x USB-C (10 Gbps), 3x USB-A (5 Gbps), 1x HDMI 2.1, 1x RJ45 Ethernet, 1x Audio combo jack, 1x DC-in</p></td><td  ><p>1x Thunderbolt 4 (40 Gbps), 1x USB-C (10 Gbps), 3x USB-A (5 Gbps), 1x HDMI 2.1, 1x RJ45 Ethernet, 1x Audio combo jack, 1x DC-in</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>WiFi 7, Bluetooth 5.4</p></td><td  ><p>WiFi 7, Bluetooth 5.4</p></td></tr><tr><td class="firstcol " ><p><strong>Size</strong></p></td><td  ><p>13.54 x 9.66 x 0.75-0.79 inches</p></td><td  ><p>13.54 x 9.66 x 0.75-0.79 inches</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>4.25 pounds</p></td><td  ><p>4.25 pounds</p></td></tr></tbody></table></div><h2 class="article-body__section" id="section-lenovo-legion-5i-gen-11-the-ups"><span>Lenovo Legion 5i Gen 11: The ups</span></h2><p>The Legion 5i is Lenovo’s mid-tier gaming laptop, and it’s got plenty to recommend it as your next gaming laptop. Between the new sleek chassis, crisp OLED display,  fantastic keyboard, useful battery life, and powerful NVIDIA RTX 50-series graphics the Legion 5i has some serious selling points.</p><h2 id="sleek-redesign">Sleek redesign</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="v8X3yJM3jkZE3SsK74vcuX" name="Lenovo Legion 5i Gen 11" alt="Lenovo Legion 5i Gen 11" src="https://cdn.mos.cms.futurecdn.net/v8X3yJM3jkZE3SsK74vcuX-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Lenovo has been thinning out the Legion lineup a bit over the years, and the 11th Gen Legion ditches the clunky hub on the back for a more beveled edge across the entire laptop. While it doesn’t shave a ton off the Z-height of the laptop, the loss of the hub and the bevelling make the Legion 5i feel much slimmer despite being nearly equal in thickness.</p><p>The design overhaul also makes the Legion 5i a bit easier to carry, even with a slightly heavier weight than the <a href="https://www.tomsguide.com/computing/gaming-laptops/lenovo-legion-5i-gen-10-review">10th Gen Legion 5i</a> which was 0.8 inches thick and weighed 4.1 pounds. The 11th Gen is 0.79 inches thick and weighs 4.25 pounds.</p><p>Overall, the new design still keeps some recognizable Legion touches from the smudge-magnet Eclipse Black colorway to the Legion logo on the top cover panel, and Lenovo’s camera and microphone hub at the top edge. </p><p>While this doesn’t drastically change the dimensions of the Legion, it does make it feel more like a modern gaming laptop than previous iterations (particularly the 9th Gen and earlier) which were starting to feel dated.</p><h2 id="industry-leading-keyboard">Industry-leading keyboard</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="7FxRXNUjM6kpSHpL3o6YKb" name="Lenovo Legion 5i Gen 11" alt="Lenovo Legion 5i Gen 11" src="https://cdn.mos.cms.futurecdn.net/7FxRXNUjM6kpSHpL3o6YKb-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Lenovo makes good keyboards. That’s just kind of a universal fact at this point. And the Legion 5i Gen 11 is no exception to that rule.</p><p>The typing experience is the perfect combination of crisp with deep keytravel to avoid bottoming out your fingers while frantically typing instructions to your party in the in-game text window. It’s both satisfying and comfortable, which is a hard sweet-spot to hit for a laptop keyboard. </p><p>The off-set arrow keys also make navigating games a little easier and the included num-pad is great for binding macros and additional skills for input heavy RPGs and MMOs.</p><p>The Legion’s keyboard features 1.6mm key travel with a 0.3mm dish on each key, with swappable keycaps and Lenovo’s Spectrum RGB software for controlling the 1-zone or 24-zone RGB depending on your keyboard upgrades. </p><p>And even with just 1-zone RGB, you still get the same 1.6mm key travel and 0.3mm dish, which means if you don’t go for the 24-zone RGB upgrade, you still get the same great typing experience.</p><h2 id="crisp-display">Crisp display</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="T3tRc94QQQoWVTW3wZRZ5e" name="Lenovo Legion 5i Gen 11" alt="Lenovo Legion 5i Gen 11" src="https://cdn.mos.cms.futurecdn.net/T3tRc94QQQoWVTW3wZRZ5e-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>OLED displays offer some serious gaming benefits, and they’re even better when you’re using your gaming laptop to binge a TV series over a weekend. Getting an OLED display on a mid-range gaming laptop isn’t always a guarantee, so it's incredible to see that as a standard panel option on the Legion 5i.</p><p>From crisper blacks and more vibrant colors, the Legion 5i’s display looks absolutely stunning when watching nature documentaries like The Loneliest Whale or when playing visually intense games like Avowed. Toggle on HDR, and you’ve got a gaming laptop that can actually display the final season of Game of Thrones.</p><div ><table><thead><tr><th class="firstcol " ><p>Laptop</p></th><th  ><p>Average brightness (nits)</p></th><th  ><p>DCI-P3 color gamut (%)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Lenovo Legion 5i Gen 11</strong></p></td><td  ><p>491</p></td><td  ><p>137.5%</p></td></tr><tr><td class="firstcol " ><p><strong>HyperX OMEN 16 VALORANT Limited Edition</strong></p></td><td  ><p>525</p></td><td  ><p>81.1%</p></td></tr><tr><td class="firstcol " ><p><strong>MSI Stealth 16 AI+ B3WF</strong></p></td><td  ><p>375</p></td><td  ><p>85.5%</p></td></tr></tbody></table></div><p>While my eyes absolutely enjoyed my time with the Legion 5i, that experience is also backed up by our lab testing. The Legion 5i Gen 11 covered 137.5% of the DCI-P3 color gamut with an average brightness of 490 nits and a peak HDR brightness of 1,049 nits. </p><p>This is pretty great for an OLED, and absolutely fantastic when compared to other mid-range gaming laptops like the <a href="https://www.tomsguide.com/computing/gaming-laptops/msi-stealth-16-ai-plus-2026-review">MSI Stealth 16 AI+</a> or <a href="https://www.tomsguide.com/computing/gaming-laptops/hp-hyperx-omen-16-valorant-edition-review">HyperX Omen 16 Valorant Edition</a> which both lack HDR support and manage just 85% and 81% coverage of the DCI-P3 spectrum respectively.</p><h2 id="solid-rtx-5070-gaming-chops">Solid RTX 5070 gaming chops</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="9oyTDKwndAVfyW7uDQ3Vdh" name="Lenovo Legion 5i Gen 11" alt="Lenovo Legion 5i Gen 11" src="https://cdn.mos.cms.futurecdn.net/9oyTDKwndAVfyW7uDQ3Vdh-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>While the Legion 5i isn’t Lenovo’s flagship gaming laptop, it should still have solid gaming performance. Particularly our review model which features the powerful Intel Core Ultra 7 251HX and Nvidia GeForce RTX 5070 combination.</p><p>My current go-to games aren’t exactly strong benchmarks so I expected the Legion 5i to have no problems whatsoever running Baldur’s Gate III and Final Fantasy XIV on high graphics presets at the Legion’s max 1600p resolution. In Baldur’s Gate III, I had the Legion running on High graphics presets at 1600p and was easily getting over 90fps. </p><div ><table><thead><tr><th class="firstcol " ><p>Laptop</p></th><th  ><p>3DMark average score (across 7 different tests)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Lenovo Legion 5i Gen 11</strong></p></td><td  ><p>10,394</p></td></tr><tr><td class="firstcol " ><p><strong>HyperX OMEN 16 VALORANT Limited Edition</strong></p></td><td  ><p>9,688</p></td></tr><tr><td class="firstcol " ><p><strong>MSI Stealth 16 AI+ B3WF</strong></p></td><td  ><p>8,587</p></td></tr></tbody></table></div><p>In Final Fantasy XIV, I had the Legion running High (Laptop) graphics presets at 1600p and could get frame-rate peaks of over 100fps though the game tended to settle around 90fps in most zones. Any frame drops I noticed were more due to pop-in rate and high player traffic than anything hardware wise with the Legion.</p><p>To make the Legion 5i work a bit harder, I also booted up Avowed which has a tendency to run at low frame-rates because of its intense graphics and poor optimization. The Legion did stumble here a bit, but then I’ve also seen RTX 5090 laptops struggle with Avowed. </p><div ><table><thead><tr><th class="firstcol " ><p>Laptop</p></th><th  ><p>Cyberpunk 2077 (1080p RT Ultra)</p></th><th  ><p>Black Myth Wukong (1600p Cinematic)</p></th><th  ><p>Forza Horizon 6 (1080p Extreme + RT)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Lenovo Legion 5i Gen 11 (RTX 5070 12 GB)</strong></p></td><td  ><p>44.1 FPS</p></td><td  ><p>27 FPS</p></td><td  ><p>50 FPS</p></td></tr><tr><td class="firstcol " ><p><strong>HyperX OMEN 16 VALORANT Limited Edition (RTX 5070 8GB)</strong></p></td><td  ><p>35.3 FPS</p></td><td  ><p>22 FPS</p></td><td  ><p>42 FPS</p></td></tr><tr><td class="firstcol " ><p><strong>MSI Stealth 16 AI+ B3WF (RTX 5060 8GB)</strong></p></td><td  ><p>31.2 FPS</p></td><td  ><p>21 FPS</p></td><td  ><p>31 FPS</p></td></tr></tbody></table></div><p>However, while keeping my resolution set to 1600p (because Avowed sometimes gets awkward on lower resolutions) , opting for Medium graphics settings got me a perfectly playable game which held at about 59 to 61 FPS, and I didn’t lose too much graphic detail either.</p><p>In our lab tests, the Legion also performed well. Our review unit for the Legion 5i Gen 11 features the upgraded Nvidia GeForce RTX 5070 (12GB) model, which outperformed the HyperX Omen 16 Valorant Edition which featured the 8GB version of the RTX 5070. The Legion also held the lead over the MSI Stealth 16 AI+ which featured the RTX 5060.</p><p>This meant the Legion 5i averaged 9 fps more than the HyperX and 21 FPS more than the Stealth on Black Myth Wukong at 1080p on Medium settings. The Legion’s lead died down a bit on Cinematic settings and 1600p resolution. The Legion also held a 9 FPS lead on the HyperX on Cyberpunk 2077 at 1080p and a 6 FPS lead at 1600p. The Stealth lagged behind the Legion by 12 FPS at 1080p and 8 FPS at 1600p on Cyberpunk.</p><p>While the Legion can still struggle to surpass 60fps on intense titles at max resolution, it can easily clear the 60 FPS mark on High or Ultra settings at 1080p. Which is pretty impressive for an RTX 5070 laptop. It does help that Lenovo opted for the 12GB VRAM model which gives the Legion’s RTX 5070 just enough extra horsepower to clear the competition.</p><h2 id="respectable-battery-life">Respectable battery life</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="tj7xbJnegcrtGwx45Z3uBm" name="Lenovo Legion 5i Gen 11" alt="Lenovo Legion 5i Gen 11" src="https://cdn.mos.cms.futurecdn.net/tj7xbJnegcrtGwx45Z3uBm-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Legion laptops rarely win awards for having long battery life, and usually that’s expected. Legion laptops tend to sit in the desktop replacement sector, where you don’t really expect much in terms of unplugged performance for laptops that feature power-hungry CPUs and GPUs.</p><div ><table><thead><tr><th class="firstcol " ><p>Laptop</p></th><th  ><p>Web surfing battery life test result (hh:mm)</p></th><th  ><p>PCMark 10 gaming battery life test result (hh:mm)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Lenovo Legion 5i Gen 11</strong></p></td><td  ><p>07:03</p></td><td  ><p>01:27</p></td></tr><tr><td class="firstcol " ><p><strong>HyperX OMEN 16 VALORANT Limited Edition</strong></p></td><td  ><p>02:41</p></td><td  ><p>01:30</p></td></tr><tr><td class="firstcol " ><p><strong>MSI Stealth 16 AI+ B3WF</strong></p></td><td  ><p>10:49</p></td><td  ><p>01:55</p></td></tr></tbody></table></div><p>However, the Legion 5i Gen 11 does pack a pretty respectable punch when it comes to web surfing and gaming battery life. The Legion 5i lasted 7 hours and 3 minutes on our web surfing battery test and it survived an impressive 1 hour 27 minutes on the PCMark 10 Gaming battery life benchmark.</p><p>For context, the HyperX Omen 16 lasted just 2:41 on our web surfing battery test, while the MSI Stealth was one of our longer-lasting gaming laptops with a web surfing battery life of 10:49. For a Legion laptop to get over 7 hours of web surfing battery life? That’s a pretty damn impressive turnaround. The Legion 5i Gen 9 barely made it three and a half hours.</p><p>As for the PCMark 10 Gaming battery benchmark, the HyperX Omen 16 lasted 1:30 and the Stealth lasted 1:55. It’s pretty rare to see a gaming laptop hit 2 hours on the PCMark 10 test since any discrete GPU is going to put a major drain on the laptop’s internal battery. However, getting 1:27 is pretty solid. It’s not a great amount of game-time but it is enough that you don’t need to immediately worry if your cat unplugs your laptop mid-raid.</p><h2 class="article-body__section" id="section-lenovo-legion-5i-gen-11-the-downs"><span>Lenovo Legion 5i Gen 11: The downs</span></h2><p>The Legion’s downsides aren’t particularly plentiful, and there are ways to avoid these pitfalls. You can avoid the pricey upgrades by sticking with the pre-configured $1,899 model and you can use a quality headset or set of speakers to get better audio, they are problematic enough to be considered downsides.</p><h2 id="ramaggeddon-strikes-again">RAMaggeddon Strikes Again</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="hBAuDTbNf4tXUyohzRL4e" name="Lenovo Legion 5i Gen 11" alt="Lenovo Legion 5i Gen 11" src="https://cdn.mos.cms.futurecdn.net/hBAuDTbNf4tXUyohzRL4e-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Gaming hardware has always been expensive, but budget gaming hardware is now almost non-existent.</p><p>Lenovo is currently offering a pre-configured version of the Legion 5i Gen 11 at $1,899. That model features the same Intel Core Ultra 7 251HX CPU, 16GB RAM, 1TB SSD, and 15-inch OLED display as our review configuration. However, it has the Nvidia RTX 5060 onboard instead. This is actually cheaper than the $2,355 starting configuration with just 512GB of SSD storage.</p><p>And really, that $1,899 price tag wouldn’t be considered budget just a year ago, but the RAM shortage has made any gaming laptop under $2,000 feel like a steal. </p><p>Unfortunately, the base configuration is more expensive, so if Lenovo ever stops running that sale, the Legion 5i goes from somewhat affordable to expensive. Especially if you need to upgrade the RAM, SSD storage, CPU, or GPU as those will come at steep premiums.</p><p>Upgrading to the Intel Core Ultra 9 290HX processor costs an additional $110 while upgrading to the Nvidia RTX 5070 graphics card adds $300 to the total price. Upgrading your storage to 1TB will set you back $190, upgrading to 2TB will set you back an additional $430 on top of that, while increasing your memory from 16GB to 32GB will come with a $370 price-tag.</p><p>Which is how you get our RTX 5070 configuration at $2,825. And that’s the kind of prices we saw on RTX 5090 laptops just a year ago. So if you want the Legion 5i Gen 11, you better grab the pre-configured model while Lenovo still has that special running. Because otherwise its hard to justify the price.</p><h2 id="don-t-rely-on-the-built-in-audio">Don’t rely on the built-in audio</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="PkmjYjPxSGEd7xDZaP5A96" name="Lenovo Legion 5i Gen 11" alt="Lenovo Legion 5i Gen 11" src="https://cdn.mos.cms.futurecdn.net/PkmjYjPxSGEd7xDZaP5A96-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Considering the Legion 5i’s status as Lenovo’s mid-range Intel gaming laptop, a certain level of quality is expected on all fronts. And audio is no exception.</p><p>While laptop audio setups often have to make sacrifices due to the form factor, some laptops offer more robust built-in sound systems than others. And while the Legion 5i’s audio is perfectly usable, it’s hardly enjoyable.</p><p>Lenovo packed a quad (2x2W) Harman speaker system with Nahimic Audio drivers into the Legion 5i chassis. Unfortunately, those speakers are bottom-firing which leads to some issues based on your gaming surface. </p><p>Downward-facing laptop speakers rely on audio engineering to bounce the audio to the user, so they can be less consistent in audio quality than top or side-firing audio systems.</p><p>While the Legion 5i’s speakers are perfectly fine at lower volume levels (40% and below), the bottom-firing speakers get muddied, and everything sounds overly-sharp with no bass when played at higher volumes. </p><p>So it’s not exactly ideal for a movie or TV show binge. And while you might be able to play a casual game with the Legion’s speaker system, I would opt for a quality studio headset for anything more intense than Runescape.</p><h2 class="article-body__section" id="section-lenovo-legion-5i-gen-11-verdict"><span>Lenovo Legion 5i Gen 11: Verdict</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="oaB2NUuhdEJZzmTwsrspY9" name="Lenovo Legion 5i Gen 11" alt="Lenovo Legion 5i Gen 11" src="https://cdn.mos.cms.futurecdn.net/oaB2NUuhdEJZzmTwsrspY9-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Traditionally, a Lenovo Legion laptop is a chunky, high-performance desktop replacement laptop that you’d rarely dream of carrying to school or to work. </p><p>Between the previous generation and this current gen, that’s starting to change. The Legion 5i offers a sleeker, more modern chassis that’s much easier to carry, and it’s got battery life that’s actually useful for getting some work done.</p><p>Combined with one of Lenovo’s industry leading keyboards, a crisp OLED display, and the same robust gaming performance you’d expect from a Legion laptop and the Legion 5i is a potent powerhouse.</p><p>It could be the perfect laptop, if only its onboard audio system was a bit more robust and its base price and upgrades weren’t so expensive.</p><p>If you are going to nab the Legion 5i Gen 11, I would absolutely recommend sticking with the discounted $1,899 preconfigured model as it's actually affordable and comes with nearly all the same features as our review model. </p><p>The gaming performance will be a bit weaker, but it’s not worth the nearly $1,000 increase in price just to upgrade to the RTX 5070 model.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 5 beginner PC building tips from the mad genius who built a $34k, 353-pound desktop with not one, but two RTX 5090s ]]></title>
                                                                                                <dc:content><![CDATA[ <p>When I built my first PC last year, the sheer terror of plugging everything in correctly almost broke me. Mistakes were made and I’m definitely not going to have a personal expert making sure I don’t do something wrong like I did back then! </p><p>That’s something I learned when I built my second PC over the summer. There’s a whole bunch of conflicting advice on how to make building a breeze, so who can I turn to?</p><p>I didn't go to a standard YouTube tutorial. I went to Robbin Snijders (known by his artistic alter ego ‘warbb’) — the mad genius who just built <a href="https://yuga.warbb.store/" target="_blank">'Yuga,’</a> a 353-pound, $34,000 cube of pure technological terror powered by dual RTX 5090s.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/uZRH_P_qs_I" allowfullscreen></iframe></div></div><h2 id="meet-yuga">Meet Yuga</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="m4S2E8beUmRC76AshUQMvJ" name="Warbb Yuga" alt="Warbb Yuga" src="https://cdn.mos.cms.futurecdn.net/m4S2E8beUmRC76AshUQMvJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>This has been nearly a year in the making, and as you can see from the size of it, this is a beast. So big in fact, you need to remove doors and push it into places in a crate like it’s King Kong. </p><p>It is a <strong>32 x 32-inch cube that weighs 353 pounds</strong> — each element 3D printed to the most precise millimeter to fit together and tell this visual story of technology colliding with art. Honestly, I’d spend most of my time just looking at it, but let’s open the hood!</p><p>Inside, you’ve got <strong>two RTX 5090s</strong>, a high-end <strong>Asus ProArt motherboard</strong> to handle all that horsepower, and a <strong>5,500 watt power supply</strong> to keep it all alive…yep, you read that right. At full load, you’ll be using the power equivalent of seven microwave ovens or 55 standard 55-inch LED TVs running simultaneously.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="dbzndm47rBL8XLW2725WxJ" name="Warbb Yuga" alt="Warbb Yuga" src="https://cdn.mos.cms.futurecdn.net/dbzndm47rBL8XLW2725WxJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Keeping it cool is the largest Noctua fan I’ve ever seen at 200mm — something that I’m sure could keep me cool while I’m sleeping. In total, if you were to make this yourself with the components, the custom case and the design work, this would cost you roughly $34,000. </p><p>But how does it perform? We ran Maxon Cinema 4D, one of the most advanced 3D animation apps on the market, without a single hitch. Snijders showed me the file used to virtually build this machine, which contained over 300 layers and nothing slowed down.</p><p>Moving over to Cinebench, all that power came together to deliver a benchmark score that is roughly 3.5x faster than the fastest system we’ve ever tested at Tom’s Guide: the <a href="https://www.tomsguide.com/computing/macos/mac-studio-m3-ultra-3-reasons-to-buy-and-2-reasons-to-skip">M3 Ultra Mac Studio</a>. </p><h2 id="what-advice-can-we-learn-from-this-genius">What advice can we learn from this genius?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="8YCV8pY5fYBTiaeK4zmGrJ" name="Warbb Yuga" alt="Warbb Yuga" src="https://cdn.mos.cms.futurecdn.net/8YCV8pY5fYBTiaeK4zmGrJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>So before I start dreaming up elaborate heist plans to steal this system for myself, let’s be honest. The <em>vast </em>majority of you reading this will not get (or even need) a PC of this magnitude. But the artistry here does show off some key disciplines that you need if you want to build a tower of your own.</p><p>Because if one thing is becoming clear — in this challenging time of memory prices, going the DIY route is the best way to go for your wallet. So I spoke to Snijders about what advice he’d give to first-time builders that he used in crafting this masterpiece.</p><section class="howto-block">                    <h3>1. Build for the next generation, not just this one</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/wVZqaSDookuFJhHTW8b5qJ.jpg"                                        alt="Warbb Yuga"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/wVZqaSDookuFJhHTW8b5qJ.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Future)</div></figure>                    <p><p>In your choice of PC parts — the motherboard, the power supply, the case and more — keep upgradeability in mind," Snijders says. "One of the biggest advantages of building is the ease of turboboosting your system with the latest parts like a brand new CPU or GPU.“</p><p>"Keep the same PC case and core components for multiple generations,” he adds. “Simply swap out the GPU when you need more power.”</p></p>                </section><section class="howto-block">                    <h3>2. Stop obsessing over the RTX 5090</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/dbzndm47rBL8XLW2725WxJ.jpg"                                        alt="Warbb Yuga"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/dbzndm47rBL8XLW2725WxJ.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Future)</div></figure>                    <p><p>I see a lot of PC building personalities tell you to shift the budget you spend heavily into the graphics card. That’s absolutely true, but a custom PC is a long-term project. “You don’t need a top-of-the-line graphics card like a 5090 to produce professional results,” Snijders commented. Nvidia supports all the creative software on its lower-end cards too, as well as all its DLSS 4.5 goodness for gaming too. The main difference is patience for creators and tweaking some fidelity settings for players.</p></p>                </section><section class="howto-block">                    <h3>3. Cable manage as you go (or pay the price later)</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/i3BQhRQky2pj4ePsYhn4xJ.jpg"                                        alt="Warbb Yuga"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/i3BQhRQky2pj4ePsYhn4xJ.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Future)</div></figure>                    <p><p>You can see how the Yuga’s cables are neatly hidden away by the 3D-printed artistry on show. For the rest of us that may not have a 3D printer to hand, don’t leave cable management for the end! Route those cables early, tie them up as you go, and always prioritize airflow and clearance for those wires.</p></p>                </section><section class="howto-block">                    <h3>4. Stop buying hardware blind</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/gUmA4twhd4p3i5kuT525qJ.jpg"                                        alt="Warbb Yuga"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/gUmA4twhd4p3i5kuT525qJ.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Future)</div></figure>                    <p><p>What is it that you actually want to do with your PC? Take a look at what makes the games you want to play and the software you want to use tick. For example, Cinema 4D’s live viewer relies on a single CPU core rather than a GPU. Note down the demands you have and build around them to ensure you don’t come across any nasty bottlenecks slowing down your pride and joy.</p></p>                </section><section class="howto-block">                    <h3>5. Walk away before you break something</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/6tsS7KXYGQQsSuokU3wJvJ.jpg"                                        alt="Warbb Yuga"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/6tsS7KXYGQQsSuokU3wJvJ.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Future)</div></figure>                    <p><p>This is the one I needed to hear from the get-go — losing my patience when a rogue header cable was not allowing my build to turn on. Unless you’ve got some Mensa level PC building skills built over years, chances are there will be some moments of trial and error. In those moments, grab a cuppa tea, take a deep breath, and track your steps back to find the problem rather than losing your temper (like I did).</p></p>                </section><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/cpus/nvidia-rtx-spark-geekbench-scores-just-leaked-should-apple-be-worried-about-the-fastest-windows-laptops-on-the-planet">Nvidia RTX Spark Geekbench scores just leaked — should Apple be worried about the fastest Windows laptops on the planet?</a></li><li><a href="https://www.tomsguide.com/computing/gpus/best-graphics-cards">Best graphics cards in 2026: I've tested every GPU to find the best bang for your buck</a></li><li><a href="https://www.tomsguide.com/computing/hardware/sk-hynix-warns-2027-will-be-worst-year-for-ram-prices-right-as-a-damning-report-reveals-something-that-will-add-fuel-to-the-price-fixing-lawsuit">SK Hynix warns 2027 will be 'worst year' for RAM prices — right as a damning report reveals something that will add fuel to the price-fixing lawsuit</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/gpus/5-beginner-pc-building-tips-from-the-mad-genius-who-built-a-usd34k-353-pound-desktop-with-not-one-but-two-rtx-5090s</link>
                                                                            <description>
                            <![CDATA[ I interviewed artist Robbin Snijders, creator of 'Yuga' — a $34,000, 353-pound PC with dual RTX 5090s — to get 5 tips for first-time PC builders. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">cWe2TPA3evkduTwj3Tc9Kh</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/EkM8QVa2VXeqE6d6qWH7uJ-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 14 Aug 2026 08:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[GPUs]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Computing Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jason England ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/v4fSq5U4uZUEtGY2BwNuJ6-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jason brings a decade of tech and gaming journalism experience to his role as a Managing Editor of Computing at Tom&#039;s Guide. He has previously written for Laptop Mag, Tom&#039;s Hardware, Kotaku, Stuff and BBC Science Focus. In his spare time, you&#039;ll find Jason looking for good dogs to pet or thinking about eating pizza if he isn&#039;t already.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/EkM8QVa2VXeqE6d6qWH7uJ-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Warbb Yuga]]></media:description>                                                            <media:text><![CDATA[Warbb Yuga]]></media:text>
                                <media:title type="plain"><![CDATA[Warbb Yuga]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/EkM8QVa2VXeqE6d6qWH7uJ-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>When I built my first PC last year, the sheer terror of plugging everything in correctly almost broke me. Mistakes were made and I’m definitely not going to have a personal expert making sure I don’t do something wrong like I did back then! </p><p>That’s something I learned when I built my second PC over the summer. There’s a whole bunch of conflicting advice on how to make building a breeze, so who can I turn to?</p><p>I didn't go to a standard YouTube tutorial. I went to Robbin Snijders (known by his artistic alter ego ‘warbb’) — the mad genius who just built <a href="https://yuga.warbb.store/" target="_blank">'Yuga,’</a> a 353-pound, $34,000 cube of pure technological terror powered by dual RTX 5090s.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/uZRH_P_qs_I" allowfullscreen></iframe></div></div><h2 id="meet-yuga">Meet Yuga</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="m4S2E8beUmRC76AshUQMvJ" name="Warbb Yuga" alt="Warbb Yuga" src="https://cdn.mos.cms.futurecdn.net/m4S2E8beUmRC76AshUQMvJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>This has been nearly a year in the making, and as you can see from the size of it, this is a beast. So big in fact, you need to remove doors and push it into places in a crate like it’s King Kong. </p><p>It is a <strong>32 x 32-inch cube that weighs 353 pounds</strong> — each element 3D printed to the most precise millimeter to fit together and tell this visual story of technology colliding with art. Honestly, I’d spend most of my time just looking at it, but let’s open the hood!</p><p>Inside, you’ve got <strong>two RTX 5090s</strong>, a high-end <strong>Asus ProArt motherboard</strong> to handle all that horsepower, and a <strong>5,500 watt power supply</strong> to keep it all alive…yep, you read that right. At full load, you’ll be using the power equivalent of seven microwave ovens or 55 standard 55-inch LED TVs running simultaneously.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="dbzndm47rBL8XLW2725WxJ" name="Warbb Yuga" alt="Warbb Yuga" src="https://cdn.mos.cms.futurecdn.net/dbzndm47rBL8XLW2725WxJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Keeping it cool is the largest Noctua fan I’ve ever seen at 200mm — something that I’m sure could keep me cool while I’m sleeping. In total, if you were to make this yourself with the components, the custom case and the design work, this would cost you roughly $34,000. </p><p>But how does it perform? We ran Maxon Cinema 4D, one of the most advanced 3D animation apps on the market, without a single hitch. Snijders showed me the file used to virtually build this machine, which contained over 300 layers and nothing slowed down.</p><p>Moving over to Cinebench, all that power came together to deliver a benchmark score that is roughly 3.5x faster than the fastest system we’ve ever tested at Tom’s Guide: the <a href="https://www.tomsguide.com/computing/macos/mac-studio-m3-ultra-3-reasons-to-buy-and-2-reasons-to-skip">M3 Ultra Mac Studio</a>. </p><h2 id="what-advice-can-we-learn-from-this-genius">What advice can we learn from this genius?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="8YCV8pY5fYBTiaeK4zmGrJ" name="Warbb Yuga" alt="Warbb Yuga" src="https://cdn.mos.cms.futurecdn.net/8YCV8pY5fYBTiaeK4zmGrJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>So before I start dreaming up elaborate heist plans to steal this system for myself, let’s be honest. The <em>vast </em>majority of you reading this will not get (or even need) a PC of this magnitude. But the artistry here does show off some key disciplines that you need if you want to build a tower of your own.</p><p>Because if one thing is becoming clear — in this challenging time of memory prices, going the DIY route is the best way to go for your wallet. So I spoke to Snijders about what advice he’d give to first-time builders that he used in crafting this masterpiece.</p><section class="howto-block">                    <h3>1. Build for the next generation, not just this one</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/wVZqaSDookuFJhHTW8b5qJ.jpg"                                        alt="Warbb Yuga"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/wVZqaSDookuFJhHTW8b5qJ.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Future)</div></figure>                    <p><p>In your choice of PC parts — the motherboard, the power supply, the case and more — keep upgradeability in mind," Snijders says. "One of the biggest advantages of building is the ease of turboboosting your system with the latest parts like a brand new CPU or GPU.“</p><p>"Keep the same PC case and core components for multiple generations,” he adds. “Simply swap out the GPU when you need more power.”</p></p>                </section><section class="howto-block">                    <h3>2. Stop obsessing over the RTX 5090</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/dbzndm47rBL8XLW2725WxJ.jpg"                                        alt="Warbb Yuga"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/dbzndm47rBL8XLW2725WxJ.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Future)</div></figure>                    <p><p>I see a lot of PC building personalities tell you to shift the budget you spend heavily into the graphics card. That’s absolutely true, but a custom PC is a long-term project. “You don’t need a top-of-the-line graphics card like a 5090 to produce professional results,” Snijders commented. Nvidia supports all the creative software on its lower-end cards too, as well as all its DLSS 4.5 goodness for gaming too. The main difference is patience for creators and tweaking some fidelity settings for players.</p></p>                </section><section class="howto-block">                    <h3>3. Cable manage as you go (or pay the price later)</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/i3BQhRQky2pj4ePsYhn4xJ.jpg"                                        alt="Warbb Yuga"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/i3BQhRQky2pj4ePsYhn4xJ.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Future)</div></figure>                    <p><p>You can see how the Yuga’s cables are neatly hidden away by the 3D-printed artistry on show. For the rest of us that may not have a 3D printer to hand, don’t leave cable management for the end! Route those cables early, tie them up as you go, and always prioritize airflow and clearance for those wires.</p></p>                </section><section class="howto-block">                    <h3>4. Stop buying hardware blind</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/gUmA4twhd4p3i5kuT525qJ.jpg"                                        alt="Warbb Yuga"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/gUmA4twhd4p3i5kuT525qJ.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Future)</div></figure>                    <p><p>What is it that you actually want to do with your PC? Take a look at what makes the games you want to play and the software you want to use tick. For example, Cinema 4D’s live viewer relies on a single CPU core rather than a GPU. Note down the demands you have and build around them to ensure you don’t come across any nasty bottlenecks slowing down your pride and joy.</p></p>                </section><section class="howto-block">                    <h3>5. Walk away before you break something</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/6tsS7KXYGQQsSuokU3wJvJ.jpg"                                        alt="Warbb Yuga"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/6tsS7KXYGQQsSuokU3wJvJ.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Future)</div></figure>                    <p><p>This is the one I needed to hear from the get-go — losing my patience when a rogue header cable was not allowing my build to turn on. Unless you’ve got some Mensa level PC building skills built over years, chances are there will be some moments of trial and error. In those moments, grab a cuppa tea, take a deep breath, and track your steps back to find the problem rather than losing your temper (like I did).</p></p>                </section><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/cpus/nvidia-rtx-spark-geekbench-scores-just-leaked-should-apple-be-worried-about-the-fastest-windows-laptops-on-the-planet">Nvidia RTX Spark Geekbench scores just leaked — should Apple be worried about the fastest Windows laptops on the planet?</a></li><li><a href="https://www.tomsguide.com/computing/gpus/best-graphics-cards">Best graphics cards in 2026: I've tested every GPU to find the best bang for your buck</a></li><li><a href="https://www.tomsguide.com/computing/hardware/sk-hynix-warns-2027-will-be-worst-year-for-ram-prices-right-as-a-damning-report-reveals-something-that-will-add-fuel-to-the-price-fixing-lawsuit">SK Hynix warns 2027 will be 'worst year' for RAM prices — right as a damning report reveals something that will add fuel to the price-fixing lawsuit</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Nvidia RTX Spark Geekbench scores just leaked — should Apple be worried about the fastest Windows laptops on the planet? ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Nvidia's ARM-based gaming laptops powered by the <a href="https://www.tomsguide.com/computing/cpus/nvidia-rtx-spark-is-here-and-no-its-not-called-n1x-everything-you-need-to-know-about-the-super-chip-thats-about-to-change-laptops-forever">RTX Spark</a> is around the corner and appear to be ready to launch thanks to new Geekbench listings.</p><p>The new ARM-based CPUs were first <a href="https://www.tomsguide.com/computing/i-spoke-to-nvidia-ceo-jensen-huang-about-rtx-spark-he-is-willing-to-work-on-an-rtx-gaming-handheld-n2x-and-n3x-are-already-planned-and-the-chip-is-more-like-r2d2-than-a-laptop-cpu">revealed at Computex</a> in May by CEO Jensen Huang. "Our focus is to reinvent the PC. Windows is of course improving, but the basic architecture of a PC has largely been the same now for about 40 years, and we want to reinvent it," Huang told Tom's Guide.</p><p>How that looks is starting with an Arm-based design over the conventional x86 architecture, but Nvidia does have experience in that realm. The company already makes Arm gaming chips that <a href="https://www.tomsguide.com/gaming/handheld-gaming/nintendo-switch-2-proves-one-thing-its-time-for-nvidia-to-make-a-pc-gaming-handheld">power the Nintendo Switch 2</a>. </p><p>The RTX Spark platform is starting out on a range of Windows gaming laptops and mini PCs with a focus on gaming and agentic AIs. It should have fairly low power consumption. </p><h2 id="geekbench-scores-revealed">Geekbench scores revealed</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="RV4PBZWvfe6YeWVFTejCzS" name="Nvidia" alt="Nvidia" src="https://cdn.mos.cms.futurecdn.net/RV4PBZWvfe6YeWVFTejCzS-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Two different Geekbench listings reveal results for the RTX Spark N1X processor in 20-core and 18-core configurations. </p><p>If we focus on the 20-core configuration, it returned surprising scores with a single-core of 2,593 and a multi-core score of 23,424. The multicore is fairly impressive, comparing favorably with Intel's i9-14900KS, which managed a score of 23,785 in the same test.</p><p>View the <a href="https://browser.geekbench.com/v7/cpu/117634" target="_blank">full results here</a>, though I will note that the final production scores might differ.</p><p>If you're unfamiliar, Geekbench measures how well the processor handles everyday tasks by running a bunch of simulated workloads from processing numbers to crunching numbers. </p><p>Single-core is all about how fast the CPU handles one task at a time, like editing a photo. Multi-core kicks in for multitasking like running several apps or rendering by using all the chip's "cores."</p><p>Here's how those numbers compare to Apple's M5, the newer Qualcomm Snapdragon X2, and Intel's Panther Lake chips.</p><div ><table><caption>Geekbench Scores</caption><thead><tr><th class="firstcol empty" ></th><th  ><p>Single core</p></th><th  ><p>Multicore</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Nvidia RTX Spark</p></td><td  ><p>2,593</p></td><td  ><p>23,424</p></td></tr><tr><td class="firstcol " ><p>Apple M5</p></td><td  ><p>4,288</p></td><td  ><p>17,926</p></td></tr><tr><td class="firstcol " ><p>Intel Core Ultra X9 388H</p></td><td  ><p>3,031 </p></td><td  ><p>17,283</p></td></tr><tr><td class="firstcol " ><p>Qualcomm Snapdragon X2 Elite (18-core)</p></td><td  ><p>3,838</p></td><td  ><p>20,301</p></td></tr></tbody></table></div><p>Surprisingly, the RTX Spark performs well against the M5 and Intel X9 in multicore. Moving up to the M5 Pro and Max gets you higher scores. The same goes for the higher-end Qualcomm Snapdragon X2 Extreme, which has recorded over 25,000. </p><p>Still, the RTX seems like it will compare favorably with most every chip on the market. </p><p>Where it seems to fail is in the single-core, where scores are significantly lower. It seems it might feel sluggish in those single tasks, but running multiple apps is where the RTX Spark might shine.</p><p>This is a pretty good indication of how the RTX Spark platform will handle CPU-heavy tasks. It doesn't tell us the whole picture, especially when it comes to gaming, but we do know the GPU will support DLSS 4.5.</p><p>RTX Spark laptops are supposed to arrive later this fall with Windows 11 out of the box. It should be compatible with most Windows games, and Nvidia is reportedly ensuring the chip will work with common anti-cheat and DRM software. </p><p>Nvidia has already confirmed that it will launch with laptops from Asus, MSI, Microsoft and more.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/cpus/nvidia-rtx-spark-is-here-and-no-its-not-called-n1x-everything-you-need-to-know-about-the-super-chip-thats-about-to-change-laptops-forever">Nvidia RTX Spark is here, and it's going to 'reinvent the PC' — here's everything you need to know about this all-new laptop chip</a></li><li><a href="https://www.tomsguide.com/gaming/handheld-gaming/intel-arc-g3-is-here-to-shake-up-handheld-gaming-and-amd-should-be-terrified-acer-predator-atlas-8-is-the-first-out-the-gate">Intel Arc G3 is here to shake up handheld gaming, and AMD should be terrified — Acer Predator Atlas 8, a new MSI Claw and more launching soon</a></li><li><a href="https://www.tomsguide.com/computing/cpus/intel-core-ultra-7-270k-plus-5-250k-plus-review">I tested the Intel Core Ultra 7 270K Plus and 5 250K Plus against AMD’s best gaming CPUs — this should be a mismatch, but the results shocked me</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/cpus/nvidia-rtx-spark-geekbench-scores-just-leaked-should-apple-be-worried-about-the-fastest-windows-laptops-on-the-planet</link>
                                                                            <description>
                            <![CDATA[ Newly revealed Geekbench scores reveal a powerful chip that should easily rival Apple and Intel offerings. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">rJRqhnunmvZZSmZjamX7VK</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/NC4Vevw7coKXAFTkqRDdYP-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 11 Aug 2026 19:33:18 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[CPUs]]></category>
                                                    <category><![CDATA[Gaming Laptops]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Computing Hardware]]></category>
                                                    <category><![CDATA[Laptops]]></category>
                                                                                                <author><![CDATA[ scott.younker@futurenet.com (Scott Younker) ]]></author>                    <dc:creator><![CDATA[ Scott Younker ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/RZsUpqcJ6Uj2q83oCUwNhQ-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Scott Younker is the West Coast Reporter at Tom’s Guide. He covers all the latest tech news, including phones, computing and more. He’s been involved in tech since 2011 covering everything from cameras and swimming pool equipment to the latest gaming consoles and smart TVs. He is on a seemingly never ending hunt to build the easiest to use home media system. &lt;/p&gt;&lt;p&gt;Before Tom’s Guide, Scott worked for publications like &lt;em&gt;Digital Trends, Outdoor Photographer, Dead Beats Panel&lt;/em&gt;, and in a brief detour, &lt;em&gt;America’s Funniest Home Videos&lt;/em&gt;. Yes, he has seen more pratfalls, silly pets and ridiculous home movie fails than is reasonably healthy. &lt;/p&gt;&lt;p&gt;When not writing about the latest devices or advances in chipsets, be sure to ask about Scott about disc golf and sustainability, or just if you’re being cheeky, ask about his noodle arm. If you truly want to get nerdy, bring up board games and his ongoing losing streak. &lt;/p&gt;&lt;p&gt;Scott joined Tom&#039;s Guide in 2024 as the West Coast Reporter. He graduated from the School of Journalism at the University of Oregon with a degree in magazine journalism and a minor in communications. While there he blogged or wrote for several magazines including the Fluxx, Ethos and the Oregon Commentator. He briefly wrote and managed a moderately successful blog focused on web comics. &lt;br&gt;Send secure tips on Signal: scyo1.55.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/NC4Vevw7coKXAFTkqRDdYP-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Nvidia RTX Spark]]></media:description>                                                            <media:text><![CDATA[Nvidia RTX Spark]]></media:text>
                                <media:title type="plain"><![CDATA[Nvidia RTX Spark]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/NC4Vevw7coKXAFTkqRDdYP-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Nvidia's ARM-based gaming laptops powered by the <a href="https://www.tomsguide.com/computing/cpus/nvidia-rtx-spark-is-here-and-no-its-not-called-n1x-everything-you-need-to-know-about-the-super-chip-thats-about-to-change-laptops-forever">RTX Spark</a> is around the corner and appear to be ready to launch thanks to new Geekbench listings.</p><p>The new ARM-based CPUs were first <a href="https://www.tomsguide.com/computing/i-spoke-to-nvidia-ceo-jensen-huang-about-rtx-spark-he-is-willing-to-work-on-an-rtx-gaming-handheld-n2x-and-n3x-are-already-planned-and-the-chip-is-more-like-r2d2-than-a-laptop-cpu">revealed at Computex</a> in May by CEO Jensen Huang. "Our focus is to reinvent the PC. Windows is of course improving, but the basic architecture of a PC has largely been the same now for about 40 years, and we want to reinvent it," Huang told Tom's Guide.</p><p>How that looks is starting with an Arm-based design over the conventional x86 architecture, but Nvidia does have experience in that realm. The company already makes Arm gaming chips that <a href="https://www.tomsguide.com/gaming/handheld-gaming/nintendo-switch-2-proves-one-thing-its-time-for-nvidia-to-make-a-pc-gaming-handheld">power the Nintendo Switch 2</a>. </p><p>The RTX Spark platform is starting out on a range of Windows gaming laptops and mini PCs with a focus on gaming and agentic AIs. It should have fairly low power consumption. </p><h2 id="geekbench-scores-revealed">Geekbench scores revealed</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="RV4PBZWvfe6YeWVFTejCzS" name="Nvidia" alt="Nvidia" src="https://cdn.mos.cms.futurecdn.net/RV4PBZWvfe6YeWVFTejCzS-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Two different Geekbench listings reveal results for the RTX Spark N1X processor in 20-core and 18-core configurations. </p><p>If we focus on the 20-core configuration, it returned surprising scores with a single-core of 2,593 and a multi-core score of 23,424. The multicore is fairly impressive, comparing favorably with Intel's i9-14900KS, which managed a score of 23,785 in the same test.</p><p>View the <a href="https://browser.geekbench.com/v7/cpu/117634" target="_blank">full results here</a>, though I will note that the final production scores might differ.</p><p>If you're unfamiliar, Geekbench measures how well the processor handles everyday tasks by running a bunch of simulated workloads from processing numbers to crunching numbers. </p><p>Single-core is all about how fast the CPU handles one task at a time, like editing a photo. Multi-core kicks in for multitasking like running several apps or rendering by using all the chip's "cores."</p><p>Here's how those numbers compare to Apple's M5, the newer Qualcomm Snapdragon X2, and Intel's Panther Lake chips.</p><div ><table><caption>Geekbench Scores</caption><thead><tr><th class="firstcol empty" ></th><th  ><p>Single core</p></th><th  ><p>Multicore</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Nvidia RTX Spark</p></td><td  ><p>2,593</p></td><td  ><p>23,424</p></td></tr><tr><td class="firstcol " ><p>Apple M5</p></td><td  ><p>4,288</p></td><td  ><p>17,926</p></td></tr><tr><td class="firstcol " ><p>Intel Core Ultra X9 388H</p></td><td  ><p>3,031 </p></td><td  ><p>17,283</p></td></tr><tr><td class="firstcol " ><p>Qualcomm Snapdragon X2 Elite (18-core)</p></td><td  ><p>3,838</p></td><td  ><p>20,301</p></td></tr></tbody></table></div><p>Surprisingly, the RTX Spark performs well against the M5 and Intel X9 in multicore. Moving up to the M5 Pro and Max gets you higher scores. The same goes for the higher-end Qualcomm Snapdragon X2 Extreme, which has recorded over 25,000. </p><p>Still, the RTX seems like it will compare favorably with most every chip on the market. </p><p>Where it seems to fail is in the single-core, where scores are significantly lower. It seems it might feel sluggish in those single tasks, but running multiple apps is where the RTX Spark might shine.</p><p>This is a pretty good indication of how the RTX Spark platform will handle CPU-heavy tasks. It doesn't tell us the whole picture, especially when it comes to gaming, but we do know the GPU will support DLSS 4.5.</p><p>RTX Spark laptops are supposed to arrive later this fall with Windows 11 out of the box. It should be compatible with most Windows games, and Nvidia is reportedly ensuring the chip will work with common anti-cheat and DRM software. </p><p>Nvidia has already confirmed that it will launch with laptops from Asus, MSI, Microsoft and more.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/cpus/nvidia-rtx-spark-is-here-and-no-its-not-called-n1x-everything-you-need-to-know-about-the-super-chip-thats-about-to-change-laptops-forever">Nvidia RTX Spark is here, and it's going to 'reinvent the PC' — here's everything you need to know about this all-new laptop chip</a></li><li><a href="https://www.tomsguide.com/gaming/handheld-gaming/intel-arc-g3-is-here-to-shake-up-handheld-gaming-and-amd-should-be-terrified-acer-predator-atlas-8-is-the-first-out-the-gate">Intel Arc G3 is here to shake up handheld gaming, and AMD should be terrified — Acer Predator Atlas 8, a new MSI Claw and more launching soon</a></li><li><a href="https://www.tomsguide.com/computing/cpus/intel-core-ultra-7-270k-plus-5-250k-plus-review">I tested the Intel Core Ultra 7 270K Plus and 5 250K Plus against AMD’s best gaming CPUs — this should be a mismatch, but the results shocked me</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ "DLSS 5 is fully controllable from the developer": Nvidia’s upscaler might be better than expected ]]></title>
                                                                                                <dc:content><![CDATA[ <p>To say that people weren’t impressed when <a href="https://www.tomsguide.com/computing/gpus/deciphering-dlss-5-pc-gaming-breakthrough-or-nvidias-ai-slop-era">Nvidia DLSS 5</a> was announced would be an understatement. Gamers and critics alike expressed concerns over heavy-handed “beauty filters” smoothing out character faces and AI overwriting developer art direction. The initial requirement of a second GPU for rendering also didn’t go over well.</p><p>At SIGGRAPH, Nvidia held a follow-up keynote that was practically built to address the concerns folks have with DLSS 5. Instead of focusing on how photo-realistic DLSS 5 could make graphics appear, the keynote centered around the amount of control artists will have over the technology.</p><p>Here’s a breakdown of what Nvidia discussed at SIGGRAPH and how DLSS 5 might not be as bad as we feared.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/vXDetI2TUWw" allowfullscreen></iframe></div></div><h2 id="granular-control">Granular control</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="YxnzjvFDDGGrmrSjc9iYRU" name="Nvidia DLSS 5 three models 2" alt="Nvidia DLSS 5" src="https://cdn.mos.cms.futurecdn.net/YxnzjvFDDGGrmrSjc9iYRU-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>As you might recall, the biggest complaint with DLSS 5 is how the graphics appeared to have an Instagram/TikTok filter slapped over them. A less charitable description would be an “AI slop” filter. Nvidia addressed this concern directly, saying that game artists would have full control over a game’s graphics.</p><p>Developers won’t be forced into all-or-nothing with AI. They’ll be able to mask out individual characters, faces, props, or background elements so DLSS 5 either ignores them or processes them with tailored settings. Structural and Tone Intensity sliders will give devs fine control over how things appear. There will also be three distinct AI models for developers to assign. </p><h2 id="no-ai-overwrites">No AI overwrites</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="mnvD4pGZ6ePcqrKZBC2UR5" name="Nvidia DLSS 5 granular controls" alt="DLSS 5" src="https://cdn.mos.cms.futurecdn.net/mnvD4pGZ6ePcqrKZBC2UR5-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Another concern is that the AI would hallucinate on low-poly geometry or rewrite hand-crafted visuals. DLSS 5 isn’t generating a game scene from scratch but relies strictly on internal game engine buffers to preserve the artist’s original intent.</p><p>Nvidia emphasized that traditional rasterization and ray tracing still build the entire frame first, defining geometry, lighting anchors, motion vectors, and surface normals. Nvidia framed DLSS 5 as a third category of AI rendering alongside upscaling reconstruction and frame generation. The engine creates the world while the model enriches complex lighting elements.</p><h2 id="latency">Latency</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="q7R5wTB9YVYfCsA6htPPrd" name="Nvidia DLSS 5 frames" alt="Nvidia DLSS 5" src="https://cdn.mos.cms.futurecdn.net/q7R5wTB9YVYfCsA6htPPrd-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Generative video models usually process frames in batches, which can introduce input lag. That’s obviously a non-starter for fast-paced games like CSGO 2.</p><p>Nvidia says that DLSS 5 processes the current frame using the game’s engine’s native motion vectors without looking ahead to future frames. By avoiding multi-frame batch processing, Nvidia’s goal is to eliminate both generative latency and temporal shimmering artifacts.</p><h2 id="one-gpu-needed-not-two">One GPU needed, not two</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2002px;"><p class="vanilla-image-block" style="padding-top:56.19%;"><img id="m5EFY2WowRnf9kJ5ELvfGg" name="Nvidia DLSS 5 one GPU" alt="DLSS 5" src="https://cdn.mos.cms.futurecdn.net/m5EFY2WowRnf9kJ5ELvfGg-1920-80.jpg" mos="" align="middle" fullscreen="" width="2002" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>When Nvidia first demoed DLSS 5, the computational overhead was so heavy that it reportedly required dual high-end GPUs just to run smoothly. Naturally, this isn’t feasible for most players, but Nvidia says you’ll be able to run DLSS 5 on a single GPU.</p><p>To that end, Nvidia revealed that they have distilled the massive generative model into a much smaller, single-step diffusion model. The updated implementation has been engineered to run on a single RTX GPU with efficient VRAM allocation instead of requiring multi-GPU rigs that only hardcore users own.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OdR22e"></div>                            </div>                            <script src="https://kwizly.com/embed/OdR22e.js" async></script><h2 id="outlook">Outlook</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="xWV7Xvua8aPb7TaLHKQ5Jj" name="Nvidia RTX 50 series GPU" alt="Nvidia RTX 50-series GPU held in hand with Nvidia logo on green background" src="https://cdn.mos.cms.futurecdn.net/xWV7Xvua8aPb7TaLHKQ5Jj-1920-80.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future / Tom's Guide)</span></figcaption></figure><p>I’ve championed Nvidia DLSS for years, but I was one of the folks who wasn’t enamored with that initial DLSS 5 reveal. Now, after SIGGRAPH, I'm less worried about this fall's upcoming update.</p><p>We’ll have to wait to see how the final version functions, but I’m glad that Nvidia has addressed all the major concerns. If we can get richer game graphics without the infamous AI look, then we’ll all be winners.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/gpus/what-is-nvidia-dlss-explaining-the-ai-tech-transforming-pc-gaming-and-why-its-getting-controversial">What is Nvidia DLSS? Explaining the AI tech transforming PC gaming — and why it’s getting controversial</a></li><li><a href="https://www.tomsguide.com/gaming/theyre-completely-wrong-nvidia-ceo-jensen-huang-responds-to-dlss-5-criticism">Nvidia's 'GPT moment' for graphics rejected by gamers; CEO Jensen Huang rushes to defend DLSS 5</a></li><li><a href="https://www.tomsguide.com/gaming/pc-gaming/deciphering-dlss-4-5-i-tested-nvidias-new-upscaler-and-figured-out-when-to-use-model-l-or-m">DLSS 4.5 is now live — I tested Nvidia’s upscaler to see which model you should actually use</a></li></ul><div class="vizualizer-embed"><div class="tg-df-widget-host" data-widget-config="?search=laptops&min_discount_ratio=0.95&widget_title=Top+Deals+Handpicked+by+Our+Editors&widget_subtitle=Discover+the+best+discounts+currently+available%2C+curated+daily+by+the+Tom%27s+Guide+Savings+Squad.&bg_color=transparent" data-vizualizer-embed="true"></div>    <script>    /**     * Tom's Guide Deals Finder - Vanilla JS Encapsulated Engine     */    (function() {      // --- Freyr Analytics Adapter ---      function initAnalytics() {        window.dataLayer = window.dataLayer || [];        window.googletag = window.googletag || {};        window.googletag.cmd = window.googletag.cmd || [];        window.hawk = window.hawk || { analytics: { freyr: [] } };        window.hawk.analytics = window.hawk.analytics || { freyr: [] };        window.hawk.analytics.freyr = window.hawk.analytics.freyr || [];        window.freyr = window.freyr || { cmd: [] };        const scriptSrc = 'https://freyr.futurecdn.net/freyr.js';        const hostname = typeof window !== 'undefined' ? window.location.hostname : '';        const isTestEnv = typeof window.navigator !== 'undefined' && (window.navigator.webdriver || window.navigator.userAgent.includes('Headless'));        const shouldSendRealAnalytics = !isTestEnv && hostname && hostname !== 'localhost' && hostname !== '127.0.0.1' && !hostname.includes('run.app');        if (shouldSendRealAnalytics && !document.querySelector(`script[src="${scriptSrc}"]`)) {          const script = document.createElement('script');          script.src = scriptSrc;          script.async = true;          document.head.appendChild(script);        }      }      function storeEventForDebug(name, data) {        if (!window.hawk || !window.hawk.analytics || !window.hawk.analytics.freyr) return;        window.hawk.analytics.freyr.push({ name, data });        try {          if (typeof window !== 'undefined' && window.localStorage) {            window.localStorage.setItem("hawk", JSON.stringify(window.hawk));          }        } catch (e) {          // Ignore storage issues        }        try {          window.dispatchEvent(new CustomEvent("hawk-analytics-update"));        } catch (e) {}      }      function sendToFreyr(eventName, data) {        if (typeof window === 'undefined') return;        window.freyr = window.freyr || { cmd: [] };        window.freyr.cmd.push(() => {          if (window.freyr && window.freyr.pushAndUpdate) {            window.freyr.pushAndUpdate(eventName, data);          }        });      }      function sendEvent(event, skip = false) {        try {          storeEventForDebug(event.name, event.data);          if (!skip) {            sendToFreyr(event.name, event.data);          }        } catch (e) {          // Ensure tracking errors don't surface to the user        }      }      function getCookie(name) {        try {          const match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));          return match ? match[2] : null;        } catch (e) {          return null;        }      }      function normalizeCurrency(symbol) {        const map = {          '£': 'GBP',          '$': 'USD',          'A$': 'AUD',          'CA$': 'CAD',          '€': 'EUR'        };        return map[symbol] || symbol;      }      function trackElementInteraction(props) {        sendEvent({          name: 'elementInteraction',          data: {            element: {              action: props.action || "click",              id: props.id || undefined,              class: props.class || undefined,              name: props.name || undefined,              text: props.text || undefined,              label: props.label || undefined,              container: props.container || undefined,              url: props.url || undefined,              articleId: props.articleId || undefined            }          }        });      }      function generateRevenueId(url, productName, merchantName, modelId) {        const str = `${window.location.href}|${productName}|${merchantName}|${modelId || ''}|${new Date().toDateString()}|tomsguide`;        let hash = 0;        for (let i = 0; i < str.length; i++) {          const char = str.charCodeAt(i);          hash = ((hash << 5) - hash) + char;          hash = hash & hash;        }        let numericStr = Math.abs(hash).toString();        while (numericStr.length < 19) {          numericStr += Math.floor(Math.random() * 10).toString();        }        return numericStr.substring(0, 19);      }      function rewriteAffiliateLink(url, territory, revenueId) {        if (!url) return url;        const t = (territory || 'gb').toLowerCase();        return url.replace(/hawk-custom-tracking/g, `tomsguide-${t}-${revenueId}`);      }      function trackHawkEvent(params) {        const { clickType, widgetId, productCategoryName, product, productsArray, zeroBasedProductIndexOrNull, totalDealsOrProducts, areaClicked, merchant, revenueId, isoCurrencyCode, queryName, widgetTypeName } = params;        const data = {          event: "hawkEvent",          category: "Affiliates",          affiliate: {            action: {              type: clickType,              id: widgetId,              event: clickType === "appeared" ? "viewed" : "Click from",              timestamp: Date.now()            },            component: {              flag: "Editor",              product: productCategoryName || "deals",              category: `Signal Deal Finder ${widgetTypeName || "Carousel"} widget`,              type: clickType === "appeared" ? "review" : "signal product",              label: queryName || (product ? (product.name || "") : ""),              index: zeroBasedProductIndexOrNull === null || zeroBasedProductIndexOrNull === undefined ? -1 : zeroBasedProductIndexOrNull,              linkCount: totalDealsOrProducts || 0,              blockLayout: "",              areaClicked: areaClicked || ""            }          },          products: productsArray || (product && merchant ? [            {              product: {                primary: {                  id: product.id || product.matchId || null,                  name: product.name,                  type: "deal",                  price: product.price,                  previousPrice: product.previousPrice || null,                  currency: isoCurrencyCode || "USD",                  preorder: false,                  labels: [],                  link: product.link,                  originalLink: product.originalLink || null,                  revenueId: revenueId || null,                  startTime: null,                  endTime: null,                  voucherCode: null,                  voucherAudience: null,                  voucherPercentageSaving: null,                  voucherMoneySaving: null,                  voucherType: null,                  offerExclusive: false,                  offerScope: null,                  globalId: product.globalId || null,                  inStock: product.inStock !== false,                  contractProvider: null,                  contractMinutes: null,                  contractTexts: null,                  contractData: null,                  contractLength: null,                  contractMonthlyPrice: null,                  contractCurrency: isoCurrencyCode || "USD"                }              },              merchant: {                id: merchant.id || null,                name: merchant.name,                url: merchant.url || null,                network: merchant.network || null              },              model: {                id: product.modelId || null,                brand: product.brand || null,                name: product.name,                parent: product.parent || null              }            }          ] : []),          reviews: [],          _clear: true,          "gtm.uniqueEventId": Date.now() % 10000        };        sendEvent({ name: 'hawkEvent', data });      }      function trackDealClick(params) {        trackHawkEvent({ ...params, clickType: "retailer", areaClicked: "Signal Product Card" });      }      function trackViewSimilarClick(params) {        trackHawkEvent({ ...params, clickType: "retailer", areaClicked: "Signal Product Card View Similar" });      }      function trackPriceComparisonClick(params) {        trackHawkEvent({ ...params, clickType: "retailer", areaClicked: "Signal Price Comparison" });      }      function trackReviewClick(params) {        trackHawkEvent({ ...params, clickType: "review", areaClicked: "Signal Product Card Review Link" });      }      function trackShare(params) {        trackHawkEvent({ ...params, clickType: "share", areaClicked: "Signal Product Card Share" });      }      function trackDealsAppeared(widgetId, deals, revenueId, currency, queryName, widgetTypeName) {         if (!deals || deals.length === 0) return;                  const productsArray = deals.slice(0, 50).map((deal) => {            let voucherPct = null;            let rawPrice = parseFloat(deal.rawPrice) || parseFloat(deal.price) || null;            let rawMsrp = parseFloat(deal.rawMsrp) || parseFloat(deal.msrp) || null;            if (rawMsrp > rawPrice && rawPrice > 0) {              voucherPct = Math.round((1 - (rawPrice / rawMsrp)) * 100);            }            let numId = null;            if (deal.externalProductId && !isNaN(parseInt(deal.externalProductId))) {              numId = parseInt(deal.externalProductId);            } else if (deal.id && !isNaN(parseInt(deal.id))) {              numId = parseInt(deal.id);            } else {              numId = deal.matchId || null;            }            return {              product: {                primary: {                  id: numId,                  name: deal.productName || deal.title || "",                  type: "deal",                  price: rawPrice,                  previousPrice: rawMsrp,                  currency: currency || 'USD',                  preorder: false,                  labels: deal.modelBrand || deal.brand ? [                     { type: "brand", value: deal.modelBrand || deal.brand }                  ] : [],                  link: deal.url,                  originalLink: deal.url,                  revenueId: revenueId || null,                  startTime: null,                  endTime: null,                  voucherCode: null,                  voucherAudience: null,                  voucherPercentageSaving: voucherPct,                  voucherMoneySaving: null,                  voucherType: null,                  offerExclusive: false,                  offerScope: null,                  globalId: deal.productKey || null,                  inStock: deal.inStock !== false,                  contractProvider: null,                  contractMinutes: null,                  contractTexts: null,                  contractData: null,                  contractLength: null,                  contractMonthlyPrice: null,                  contractCurrency: currency || 'USD'                }              },              merchant: {                id: deal.merchantId ? parseInt(deal.merchantId) : null,                name: deal.merchant || "Retailer",                url: deal.merchantUrl || null,                network: deal.merchantNetwork || null              },              model: {                id: deal.modelId ? parseInt(deal.modelId) : null,                brand: deal.modelBrand || deal.brand || null,                name: deal.productName || deal.title || "",                parent: deal.modelParent || null              }            };         });                  trackHawkEvent({             clickType: "appeared",             widgetId: widgetId,             productCategoryName: "deals",             zeroBasedProductIndexOrNull: null,             totalDealsOrProducts: deals.length,             productsArray: productsArray,             queryName: queryName,             widgetTypeName: widgetTypeName         });      }      // 1. Setup Shadow DOM Sandbox      const currentScript = document.currentScript;      let hostContainer = null;      let template = null;            if (currentScript) {        let prev = currentScript.previousElementSibling;        while (prev) {          if (prev.tagName === 'TEMPLATE' && prev.classList.contains('tg-df-widget-template')) {            template = prev;          } else if (prev.tagName === 'DIV' && prev.classList.contains('tg-df-widget-host') && !prev.hasAttribute('data-initialized')) {            hostContainer = prev;            break;          }          prev = prev.previousElementSibling;        }      }            // Fallbacks in case script is deferred      if (!hostContainer) {        const hosts = document.querySelectorAll('.tg-df-widget-host:not([data-initialized])');        if (hosts.length > 0) hostContainer = hosts[0];      }            // Safely embedded template for CMS environments      const rawTemplate = `  \x3Cstyle>    /* --- Shadow DOM Base Reset --- */    *, *::before, *::after {      box-sizing: border-box;    }    img, picture, svg, video {      max-width: 100%;      height: auto;      display: block;    }    /*       1. Scoped CSS for Tom's Guide Deals Widget       All classes are prefixed with \`tg-df-\` to prevent CMS style leakage.    */    .tg-df-container {      container-type: inline-size;      container-name: tg-df;      --tg-df-blue: #1F69FF;      --tg-df-blue-hover: #004d8c;      --tg-df-text: #222222;      --tg-df-text-muted: #555555;      --tg-df-bg: #ffffff;      --tg-df-bg-secondary: #f4f4f4;      --tg-df-border: #e2e8f0;      font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;      color: var(--tg-df-text);      background-color: transparent;       width: 100%;      max-width: 1200px;      margin: 0 auto;      padding-bottom: 24px;    }    .tg-df-container *, .tg-df-container *::before, .tg-df-container *::after {      margin: 0;      padding: 0;      box-sizing: border-box;    }    .tg-df-container img {      border: none;      margin: 0;      padding: 0;    }    .tg-df-container a {      text-decoration: none;      color: inherit;    }    /*       2. Search & Filter Bar    */    .tg-df-controls {      display: flex;      flex-direction: column;      align-items: center;      gap: 20px;      margin-bottom: 32px;      width: 100%;    }    .tg-df-top-bar {      display: flex;      width: 100%;      max-width: 760px;      gap: 12px;      align-items: center;    }    .tg-df-search-wrapper {      position: relative;      flex: 1;      width: 100%;      box-shadow: 0 8px 24px rgba(0,0,0,0.06);      border-radius: 40px;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      z-index: 100;    }    .tg-df-autocomplete-dropdown {      position: absolute;      top: calc(100% + 4px);      left: 0;      right: 0;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 12px;      box-shadow: 0 8px 32px rgba(0,0,0,0.12);      max-height: 300px;      overflow-y: auto;      z-index: 200;      display: none;    }    .tg-df-autocomplete-dropdown.active {      display: block;    }    .tg-df-autocomplete-item {      padding: 12px 24px;      cursor: pointer;      font-size: 14px;      color: var(--tg-df-text);      transition: background 0.1s ease;    }    .tg-df-autocomplete-item:hover {      background: var(--tg-df-bg-secondary);    }    .tg-df-search-input {      width: 100%;      padding: 16px 64px 16px 24px;      font-size: 16px;      border: 2px solid transparent;      border-radius: 40px;      outline: none;      transition: border-color 0.2s ease, box-shadow 0.2s ease;      color: var(--tg-df-text);      background: transparent;    }    .tg-df-search-input:focus {      border-color: transparent;      box-shadow: 0 0 0 3px rgba(0, 108, 196, 0.15);    }    .tg-df-search-input::placeholder {      color: #999999;    }        .tg-df-search-btn {      position: absolute;      right: 8px;      top: 50%;      transform: translateY(-50%);      width: 40px;      height: 40px;      border-radius: 50%;      background: #222;      border: none;      display: flex;      align-items: center;      justify-content: center;      cursor: pointer;      transition: background 0.2s ease;    }        .tg-df-search-btn:hover {      background: #000;    }    .tg-df-search-icon {      width: 16px;      height: 16px;      fill: #fff;    }    .tg-df-settings-wrapper {      position: relative;    }        .tg-df-settings-btn {      width: 48px;      height: 48px;      border-radius: 50%;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      box-shadow: 0 4px 12px rgba(0,0,0,0.04);      display: flex;      align-items: center;      justify-content: center;      cursor: pointer;      transition: all 0.2s ease;      color: var(--tg-df-text-muted);      flex-shrink: 0;    }    .tg-df-settings-btn:hover {      background: var(--tg-df-bg-secondary);      border-color: #0000ff;      color: var(--tg-df-text);    }    .tg-df-settings-btn svg {      width: 24px;      height: 24px;      fill: currentColor;    }    .tg-df-settings-dropdown {      position: absolute;      top: calc(100% + 8px);      right: 0;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 12px;      box-shadow: 0 8px 32px rgba(0,0,0,0.12);      width: 280px;      padding: 20px;      display: none;      z-index: 100;      flex-direction: column;      gap: 20px;    }    .tg-df-settings-dropdown.active {      display: flex;    }        .tg-df-settings-dropdown-backdrop {      display: none;      position: fixed;      inset: 0;      z-index: 99;    }        .tg-df-settings-dropdown-backdrop.active {      display: block;    }    .tg-df-setting-item {      display: flex;      flex-direction: column;      gap: 10px;    }    .tg-df-setting-label {      font-size: 11px;      font-weight: 700;      color: var(--tg-df-text-muted);      text-transform: uppercase;      letter-spacing: 0.5px;    }        .tg-df-region-select {        padding: 10px 12px;        border-radius: 8px;        border: 1px solid var(--tg-df-border);        font-size: 15px;        outline: none;        background: var(--tg-df-bg-secondary);        color: var(--tg-df-text);        cursor: pointer;        width: 100%;    }    .tg-df-toggle {        position: relative;        display: inline-block;        width: 44px;        height: 24px;        flex-shrink: 0;    }    .tg-df-toggle input {        opacity: 0;        width: 0;        height: 0;    }    .tg-df-slider {        position: absolute;        cursor: pointer;        top: 0; left: 0; right: 0; bottom: 0;        background-color: #ccc;        transition: .2s;        border-radius: 24px;    }    .tg-df-slider:before {        position: absolute;        content: "";        height: 18px;        width: 18px;        left: 3px;        bottom: 3px;        background-color: white;        transition: .2s;        border-radius: 50%;    }    .tg-df-toggle input:checked + .tg-df-slider {        background-color: #1F69FF;    }    .tg-df-toggle input:checked + .tg-df-slider:before {        transform: translateX(20px);    }    .tg-df-dl-row {        flex-direction: row;        align-items: center;        justify-content: space-between;    }    .tg-df-dl-row-text {        font-size: 14px;        font-weight: 600;        color: var(--tg-df-text);    }    .tg-df-dl-row-subtext {        font-size: 12px;        font-weight: 400;        line-height: 1.3;        color: var(--tg-df-text-muted);        margin-top: 4px;        display: block;    }    .tg-df-filters {      display: flex;      gap: 12px;      justify-content: center;      flex-wrap: wrap;    }    .tg-df-sort-wrapper {      position: relative;      display: flex;      align-items: center;    }        .tg-df-sort-icon {      position: absolute;      left: 14px;      width: 14px;      height: 14px;      fill: var(--tg-df-text-muted);      pointer-events: none;    }    .tg-df-sort-select, .tg-df-filter-select {      padding: 10px 36px 10px 38px;      font-size: 14px;      border: 1px solid var(--tg-df-border);      border-radius: 100px;      outline: none;      appearance: none;      background-color: var(--tg-df-bg-secondary);      background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 12 12'%3E%3Cpath fill='%23555555' d='M6 8L1 3h10z'/%3E%3C/svg%3E");      background-repeat: no-repeat;      background-position: right 14px center;      color: var(--tg-df-text);      cursor: pointer;      font-weight: 500;      transition: all 0.2s ease;    }        .tg-df-price-input::-webkit-outer-spin-button,    .tg-df-price-input::-webkit-inner-spin-button {      -webkit-appearance: none;      margin: 0;    }    .tg-df-price-input {      -moz-appearance: textfield;    }    .tg-df-sort-select:hover, .tg-df-filter-select:hover {      background-color: #e2e8f0;    }    .tg-df-multiselect-container {      position: relative;    }        .tg-df-multiselect-trigger {      display: block;      background: #fff;      user-select: none;      width: 100%;      overflow: hidden;      white-space: nowrap;      text-overflow: ellipsis;    }        .tg-df-multiselect-dropdown {      display: none;      position: absolute;      top: calc(100% + 4px);      left: 0;      width: 100%;      min-width: 220px;      max-height: 300px;      overflow-y: auto;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 8px;      box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);      z-index: 100;      padding: 8px 0;    }    .tg-df-multiselect-dropdown.active {      display: block;    }    .tg-df-ms-option {      padding: 8px 16px;      display: flex;      align-items: center;      gap: 8px;      cursor: pointer;      font-size: 14px;    }    .tg-df-ms-option:hover {      background-color: var(--tg-df-bg-secondary);    }        .tg-df-ms-option input {      cursor: pointer;      accent-color: #1f69ff;    }    .tg-df-sort-select:focus, .tg-df-filter-select:focus {      border-color: #0000ff;      box-shadow: 0 0 0 3px rgba(0, 0, 255, 0.2);      background-color: var(--tg-df-bg);    }    /*       3. Deal Grid Layout    */    .tg-df-grid.tg-df-grid-auto {      padding-top: 24px;    }    .tg-df-grid, .tg-df-grid.layout-grid {      display: grid;      grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));      gap: 10px;    }    .tg-df-grid.layout-row {      grid-template-columns: 1fr;      gap: 16px;    }        .tg-df-grid.layout-row .tg-df-card {      flex-direction: row;      align-items: stretch;      height: auto;      box-shadow: none;      border-bottom: 1px solid var(--tg-df-border);    }    .tg-df-grid.layout-row .tg-df-card:hover {      box-shadow: none;    }    .tg-df-grid.layout-row .tg-df-card-image-box {      width: 140px;      min-width: 140px;      aspect-ratio: 3/4;      border-right: none;      padding: 16px 16px 16px 32px;    }    .tg-df-grid.layout-row .tg-df-card-body {      padding: 16px;      justify-content: space-between;    }    .tg-df-grid.layout-row .tg-df-card-title {      font-size: 15px;      margin-bottom: 16px;    }    .tg-df-grid.layout-row .tg-df-card-stars { margin-bottom: 8px; }    .tg-df-grid.layout-row .tg-df-card-footer {      flex-direction: column;      align-items: flex-start;      gap: 0;    }    .tg-df-grid.layout-row .tg-df-card-merchant-pill {      margin-bottom: 4px;    }    .tg-df-grid.layout-row .tg-df-card-price-group {      margin-bottom: 8px;    }    .tg-df-grid.layout-row .tg-df-price-group {      width: auto;    }    .tg-df-grid.layout-row .tg-df-card-cta {      width: 100%;      max-width: 200px;      padding: 10px 24px;      font-size: 13px;      flex-shrink: 0;      text-align: center;      justify-content: center;    }    /*       4. Deal Card Design    */    .tg-df-card {      position: relative;      display: flex;      flex-direction: column;      background-color: #ffffff;      border-radius: 0;      overflow: hidden;      transition: transform 0.2s ease, box-shadow 0.2s ease;      text-decoration: none;      color: inherit;      height: 100%;      box-shadow: 0 0 16px rgba(0, 0, 0, 0.08);      border: 1px solid var(--tg-df-border);    }    .tg-df-card:hover {      box-shadow: 0 0 24px rgba(0, 0, 0, 0.12);    }    .tg-df-card-image-box {      width: 100%;      aspect-ratio: 3/4;      background-color: #f8f8f8;      display: flex;      align-items: center;      justify-content: center;      position: relative;      overflow: hidden;      padding: 32px;      flex: 0 0 auto;    }    .tg-df-card-image {      max-width: 100%;      max-height: 100%;      width: auto;      height: auto;      object-fit: contain;      mix-blend-mode: multiply; /* Helps white background images blend into secondary bg */      transition: transform 0.3s ease;    }    .tg-df-card:hover .tg-df-card-image {      transform: scale(1.05); /* Zoom in on hover */    }    .tg-df-card-discount-badge {      position: absolute;      top: 12px;      left: 12px;      background: #dc2626; /* Red */      color: #ffffff;      padding: 6px 8px;      font-size: 11px;      font-weight: 500;      text-transform: uppercase;      letter-spacing: 0.5px;      border-radius: 0;      z-index: 10;    }        .tg-df-card-merchant-pill {      display: block;      padding: 0;      font-size: 11px;      font-weight: 600;      text-transform: uppercase;      letter-spacing: 0.5px;      border-radius: 0;      color: var(--tg-df-text-muted);      margin-bottom: 8px;      white-space: nowrap;      overflow: hidden;      text-overflow: ellipsis;    }    .tg-df-card-body {      padding: 16px;      display: flex;      flex-direction: column;      flex-grow: 1;      min-width: 0;    }    .tg-df-card-badges {      display: flex;      flex-wrap: wrap;      gap: 6px;      margin-bottom: 8px;    }    .tg-df-tag {      display: inline-flex;      align-items: center;      padding: 4px 6px;      font-size: 11px;      font-weight: 700;      text-transform: uppercase;      border-radius: 4px;      gap: 4px;    }    .tg-df-tag-prime {      background-color: #00A8E1;      color: #fff;    }    .tg-df-tag-coupons {      background-color: #f1f5f9;      color: #334155;      border: 1px solid #cbd5e1;      cursor: pointer;      transition: background-color 0.2s;    }    .tg-df-tag-coupons:hover {      background-color: #e2e8f0;    }        .tg-df-tag-outline {      background-color: #f1f5f9;      color: #334155;      border: 1px solid #cbd5e1;      cursor: pointer;      transition: background-color 0.2s;    }    .tg-df-tag-outline:hover {      background-color: #e2e8f0;    }        @keyframes tg-df-spin {      0% { transform: rotate(0deg); }      100% { transform: rotate(360deg); }    }    .tg-df-coupon-spinner {      border: 2px solid #e2e8f0;      border-top: 2px solid #3b82f6;      border-radius: 50%;      width: 14px;      height: 14px;      animation: tg-df-spin 1s linear infinite;      margin: 4px 8px;      display: inline-block;    }        /* Vouchers Modal */    .tg-df-modal-backdrop {      position: fixed;      top: 0; left: 0; right: 0; bottom: 0;      background: rgba(0,0,0,0.5);      z-index: 10000;      display: flex;      align-items: center;      justify-content: center;      opacity: 0;      pointer-events: none;      transition: opacity 0.3s;    }    .tg-df-modal-backdrop.active {      opacity: 1;      pointer-events: auto;    }    .tg-df-modal {      background: #fff;      border-radius: 12px;      width: 90%;      max-width: 400px;      max-height: 80vh;      display: flex;      flex-direction: column;      box-shadow: 0 10px 40px rgba(0,0,0,0.2);      transform: translateY(20px);      transition: transform 0.3s;    }    .tg-df-modal-backdrop.active .tg-df-modal {      transform: translateY(0);    }    .tg-df-modal-header {      padding: 16px;      border-bottom: 1px solid #e2e8f0;      display: flex;      align-items: center;      justify-content: space-between;    }    .tg-df-modal-title {      font-size: 16px;      font-weight: 600;      margin: 0;    }    .tg-df-modal-close {      background: none;      border: none;      cursor: pointer;      padding: 4px;      color: #64748b;    }    .tg-df-modal-body {      padding: 16px;      overflow-y: auto;    }    .tg-df-voucher-item {      padding: 12px;      border: 1px dashed #cbd5e1;      border-radius: 8px;      margin-bottom: 10px;      background: #f8fafc;      display: flex;      align-items: center;      gap: 12px;      text-decoration: none;      color: inherit;      transition: background-color 0.2s, border-color 0.2s;    }    .tg-df-voucher-item:hover {      background: #f1f5f9;      border-color: #94a3b8;    }    .tg-df-voucher-item:last-child {      margin-bottom: 0;    }    .tg-df-voucher-logo {      width: 48px;      height: 48px;      object-fit: contain;      border-radius: 4px;      background: #fff;      border: 1px solid #e2e8f0;      flex-shrink: 0;    }    .tg-df-voucher-content {      flex: 1;      min-width: 0;    }    .tg-df-voucher-title {      font-size: 14px;      font-weight: 600;      margin: 0 0 4px 0;      line-height: 1.3;      color: #0f172a;    }    .tg-df-voucher-expiry {      font-size: 12px;      color: #64748b;      display: flex;      align-items: center;      gap: 4px;      margin-top: 6px;    }    .tg-df-voucher-code {      display: inline-flex;      align-items: center;      background: #f1f5f9;      border: 1px dashed #cbd5e1;      padding: 6px 10px;      font-family: monospace;      font-weight: 700;      font-size: 14px;      color: #0f172a;      border-radius: 4px;      margin-top: 8px;      cursor: pointer;      transition: all 0.2s ease;    }    .tg-df-voucher-code:hover {      background: #e2e8f0;      border-color: #94a3b8;    }    .tg-df-voucher-code.copied {      background: #ecfdf5;      border-color: #10b981;      color: #10b981;    }    .tg-df-voucher-cta {      display: inline-block;      margin-top: 8px;      font-size: 13px;      font-weight: 600;      color: #2563eb;      text-decoration: none;    }    .tg-df-card-title {      font-size: 15px;      font-weight: 400;      line-height: 1.4;      margin: 0 0 12px 0;      color: var(--tg-df-text);      display: -webkit-box;      -webkit-line-clamp: 2;      -webkit-box-orient: vertical;      overflow: hidden;    }    .tg-df-card-footer {      margin-top: auto;      display: flex;      flex-direction: column;      width: 100%;    }    .tg-df-card-price-group {      display: flex;      flex-direction: row;      align-items: center;      gap: 8px;      margin-bottom: 12px;    }    .tg-df-card-price {      font-size: 16px;      font-weight: 700;      color: #dc2626; /* Red price */      line-height: 1;    }        .tg-df-card-msrp {      font-size: 13px;      color: var(--tg-df-text-muted);      text-decoration: line-through;    }    .tg-df-container .tg-df-card-cta {      display: flex;      align-items: center;      justify-content: center;      width: 100%;      box-sizing: border-box;      background-color: #1f69ff;      color: #ffffff;      font-size: 12px;      font-weight: 700;      text-transform: uppercase;      letter-spacing: 0.5px;      padding: 12px 16px;      border-radius: 0;      border: none;      cursor: pointer;      transition: background-color 0.2s ease;    }    .tg-df-card:hover .tg-df-card-cta,    .tg-df-card-cta:hover {      background-color: #1555cc;    }    .tg-df-container .tg-df-card-cta.tg-df-cta-savings-squad {      background-color: #3c8d0d;    }    .tg-df-card:hover .tg-df-card-cta.tg-df-cta-savings-squad,    .tg-df-card-cta.tg-df-cta-savings-squad:hover {      background-color: #2b6509;    }    /*       5. State & Skeleton Styles    */    .tg-df-message {      grid-column: 1 / -1;      text-align: center;      padding: 48px 24px;      color: var(--tg-df-text-muted);      font-size: 16px;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 8px;    }    @keyframes tg-df-shimmer {      0% { background-position: -200% 0; }      100% { background-position: 200% 0; }    }    .tg-df-skeleton {      background: linear-gradient(90deg, var(--tg-df-bg-secondary) 25%, #e2e8f0 50%, var(--tg-df-bg-secondary) 75%);      background-size: 200% 100%;      animation: tg-df-shimmer 1.5s infinite;      border-radius: 4px;    }    .tg-df-skeleton-img {      width: 100%;      height: 100%;      position: absolute;      top: 0; left: 0;    }        .tg-df-skeleton-text {      height: 16px;      margin-bottom: 8px;      width: 100%;    }    .tg-df-skeleton-text.short { width: 40%; }    .tg-df-skeleton-text.title { height: 20px; margin-bottom: 16px; }    /* Editor Floating Bar & Elements */    .tg-df-editor-bar {      position: sticky;      top: 0;      z-index: 1000;      background: #111827;      color: #fff;      padding: 12px 16px;      border-radius: 8px;      margin-bottom: 16px;      display: flex;      align-items: center;      justify-content: space-between;      box-shadow: 0 4px 12px rgba(0,0,0,0.15);    }    .tg-df-editor-bar-text {      font-weight: 600;      font-size: 14px;    }    .tg-df-editor-copy-btn {      background: #10b981;      color: #fff;      padding: 6px 16px;      border: none;      border-radius: 4px;      font-weight: 600;      cursor: pointer;      display: flex;      align-items: center;      font-size: 13px;    }    .tg-df-editor-copy-btn:hover { background: #059669; }        .tg-df-deal-checkbox {      position: absolute;      top: 12px;      right: 12px;      z-index: 10;      width: 20px;      height: 20px;      cursor: pointer;      pointer-events: auto;    }    /*       6. Mobile List View (Stacks into a cleaner horizontal row/list)    */    @container tg-df (max-width: 599px) {      .tg-df-controls {        padding: 0 16px;      }            .tg-df-top-bar {        width: 100%;      }            .tg-df-settings-dropdown {        position: fixed;        top: auto;        bottom: 0;        left: 0;        right: 0;        width: 100%;        border-radius: 20px 20px 0 0;        padding: 24px;        box-shadow: 0 -8px 32px rgba(0,0,0,0.15);        z-index: 1000;        border: none;        border-top: 1px solid var(--tg-df-border);      }            .tg-df-settings-dropdown-backdrop.active {        background: rgba(0,0,0,0.4);      }            .tg-df-search-wrapper {        box-shadow: 0 0 16px rgba(0,0,0,0.08);      }            .tg-df-filters {        width: calc(100% + 32px);        margin: 0 -16px;        padding: 0 16px 4px 16px;        display: flex;        justify-content: flex-start;        gap: 8px;        flex-wrap: nowrap;        overflow-x: auto;        -webkit-overflow-scrolling: touch;        scrollbar-width: none;      }      .tg-df-filters::after {        content: "";        display: block;        flex: 0 0 8px;      }      .tg-df-filters::-webkit-scrollbar {        display: none;      }            .tg-df-sort-wrapper {        flex: 0 0 max(42%, 130px);        min-width: 0;      }      .tg-df-sort-wrapper.tg-df-price-range-wrapper {        flex: 0 0 auto;        min-width: max-content;      }            .tg-df-sort-select, .tg-df-filter-select {        width: 100%;        text-align: left;        padding: 10px 24px 10px 32px;        background-position: right 8px center;        text-overflow: ellipsis;        white-space: nowrap;        overflow: hidden;      }      .tg-df-sort-icon {        left: 10px;      }      .tg-df-grid:not(.layout-grid):not(.layout-row),      .tg-df-grid.layout-row {        grid-template-columns: 1fr;        gap: 16px;      }            .tg-df-grid.tg-df-grid-auto {        padding-top: 24px;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card,      .tg-df-grid.layout-row .tg-df-card {        flex-direction: row;        align-items: stretch;        height: auto;        box-shadow: none; /* simple line on mobile if preferred, or keep */        border-bottom: 1px solid var(--tg-df-border);      }      .tg-df-grid.tg-df-grid-auto .tg-df-card:hover,      .tg-df-grid.layout-row .tg-df-card:hover {        box-shadow: none;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card-image-box,      .tg-df-grid.layout-row .tg-df-card-image-box {        width: 120px;        min-width: 120px;        aspect-ratio: 3/4;        border-right: none;        padding: 12px;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card-body,      .tg-df-grid.layout-row .tg-df-card-body {        padding: 12px;        justify-content: space-between;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card-title,      .tg-df-grid.layout-row .tg-df-card-title {        font-size: 14px;        margin-bottom: 12px;        -webkit-line-clamp: 3;      }      /* Single column mobile grid override */      .tg-df-grid.layout-grid {        grid-template-columns: 1fr;        gap: 16px;      }      .tg-df-grid.layout-grid .tg-df-card-image-box {        padding: 12px;      }      .tg-df-grid.layout-grid .tg-df-card-body {        padding: 10px;      }      .tg-df-grid.layout-grid .tg-df-card-title {        font-size: 13px;        -webkit-line-clamp: 3;        margin-bottom: 8px;      }      .tg-df-grid.layout-grid .tg-df-card-price {        font-size: 14px;      }            .tg-df-card-footer {        flex-direction: column;        align-items: stretch;        gap: 0;        width: 100%;        min-width: 0;      }      .tg-df-card-merchant-pill {        margin-bottom: 4px;      }      .tg-df-card-price-group {        flex: 1 1 auto;        margin-bottom: 8px;      }      .tg-df-card-price {        font-size: 16px;      }      .tg-df-card-msrp {        display: block;       }      .tg-df-grid.layout-row .tg-df-card-cta,      .tg-df-container .tg-df-card-cta {        width: 100%;        max-width: none;        min-width: 0;        box-sizing: border-box;        padding: 8px 16px;        font-size: 12px;        flex: 0 0 auto;        text-align: center;        white-space: normal;        line-height: 1.2;      }    }    .tg-df-container.is-carousel {      min-height: 760px;      background-color: #E7F0FF;      padding: 0 0 24px 0;      border-radius: 24px;    }    .tg-df-container.is-carousel.hide-header-details {      min-height: 480px;    }    /*       7. Carousel View Mode    */    .tg-df-container .tg-df-carousel-host {      /* Layout is now handled by container wrapper */    }    .tg-df-container .tg-df-carousel-eyebrow {      color: #1F69FF;      font-weight: 700;      font-size: 14px;      text-transform: uppercase;      letter-spacing: 1px;      padding: 24px 16px 0 16px;      display: none;    }    .tg-df-container .tg-df-carousel-query-title {      color: #011535;      font-size: 28px;      font-weight: 600;      padding: 0 16px 24px 16px;      line-height: 1.2;      display: none;    }    .tg-df-container .tg-df-carousel-blue-box {      background-color: transparent;      border-radius: 0;      padding: 24px 24px 0 24px;      margin: 0;      color: #1F69FF;          position: relative;      overflow: hidden;    }    .tg-df-container .tg-df-carousel-bg-circle-1 {      display: none;    }    .tg-df-container .tg-df-carousel-bg-circle-2 {      display: none;    }    .tg-df-container .tg-df-carousel-bg-circle-3 {      display: none;    }    .tg-df-container .tg-df-carousel-box-content {      position: relative;      z-index: 10;    }    .tg-df-container .tg-df-carousel-box-eyebrow {      background-color: transparent;      color: #1F69FF;      font-weight: 700;      font-size: 14px;      text-transform: uppercase;      letter-spacing: 1px;      display: inline-block;      padding: 0;      border-radius: 0;    }    .tg-df-container .tg-df-carousel-box-title {      font-size: 28px;      font-weight: 600;      line-height: 1.2;      margin-top: 8px;      color: #1e293b;    }    .tg-df-container .tg-df-countdown-wrapper {      position: absolute;      top: 0;      right: 0;      display: flex;      flex-direction: column;      align-items: flex-end;      gap: 12px;      transform: scale(0.67);      transform-origin: top right;    }    .tg-df-container .tg-df-countdown-title {      font-size: 16px;      text-align: center;      width: 100%;      font-weight: 600;      color: #011535;      margin: 0;    }    .tg-df-container .tg-df-countdown-blocks {      display: flex;      gap: 16px;    }    .tg-df-container .tg-df-countdown-item {      display: flex;      flex-direction: column;      align-items: center;      gap: 4px;    }    .tg-df-container .tg-df-countdown-box {      width: 59px;      height: 59px;      background: #03FE9E;      border-radius: 15px;      display: flex;      align-items: center;      justify-content: center;    }    .tg-df-container .tg-df-countdown-num {      font-family: 'Inter', sans-serif;      font-weight: 700;      font-size: 20px;      line-height: normal;      color: #011535;    }    .tg-df-container .tg-df-countdown-label {      font-family: 'Inter', sans-serif;      font-weight: 500;      font-size: 16px;      line-height: normal;      color: #1e293b;      text-transform: uppercase;    }    .tg-df-container .tg-df-carousel-box-subtitle {      font-size: 16px;      margin-top: 8px;      font-weight: 300;      color: #1e293b;      line-height: 24px;    }    .tg-df-container .tg-df-carousel-roundels-wrapper {      position: relative;      margin-top: 24px;      margin-left: -24px;      margin-right: -24px;    }    .tg-df-container .tg-df-carousel-roundels {      display: flex;      gap: 16px;      overflow-x: auto;            scrollbar-width: none;      padding-top: 12px;      padding-bottom: 24px;      padding-left: 24px;      padding-right: 24px;      margin-left: 0;      margin-right: 0;    }        .tg-df-container .tg-df-carousel-scroll-left,    .tg-df-container .tg-df-carousel-scroll-right {      position: absolute;      top: 50%;      transform: translateY(-50%);      height: 36px;      width: 36px;      display: flex;      align-items: center;      justify-content: center;      border-radius: 50%;      background-color: #ffffff;      border: 1px solid #e2e8f0;      box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);      color: #1F69FF;      cursor: pointer;      transition: all 0.2s;      margin-top: -4px;      z-index: 20;    }    .tg-df-container .tg-df-carousel-scroll-left { left: 8px; }    .tg-df-container .tg-df-carousel-scroll-right { right: 8px; }    .tg-df-carousel-filters-outer .tg-df-carousel-scroll-left { left: 0px; }    .tg-df-carousel-filters-outer .tg-df-carousel-scroll-right { right: 0px; }    .tg-df-carousel-filters-outer { margin-left: -24px; margin-right: -24px; padding-left: 24px; padding-right: 24px; }    @container tg-df (max-width: 599px) { .tg-df-carousel-filters-outer { margin-left: -16px; margin-right: -16px; padding-left: 16px; padding-right: 16px; } }        .tg-df-container .tg-df-carousel-scroll-left:hover,    .tg-df-container .tg-df-carousel-scroll-right:hover {      background-color: #f8fafc;      border-color: #cbd5e1;    }        .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-left,    .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-right,    .tg-df-carousel-filters-outer .tg-df-carousel-scroll-left,    .tg-df-carousel-filters-outer .tg-df-carousel-scroll-right {      background-color: rgba(255, 255, 255, 0.4);      border: none;      box-shadow: none;      backdrop-filter: blur(4px);      -webkit-backdrop-filter: blur(4px);    }    .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-left { left: 0; }    .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-right { right: 0; }    .tg-df-grid-wrapper .tg-df-carousel-scroll-left { left: 0; }    .tg-df-grid-wrapper .tg-df-carousel-scroll-right { right: 0; }        .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-left:hover,    .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-right:hover {      background-color: rgba(255, 255, 255, 0.6);      border: none;    }    .tg-df-container .tg-df-carousel-roundels::-webkit-scrollbar {      display: none;    }    .tg-df-container .tg-df-carousel-roundels::after {      content: "";      flex: 0 0 32px;    }    .tg-df-container .tg-df-roundel {      display: flex;      flex-direction: column;      align-items: center;      gap: 8px;      cursor: pointer;      min-width: 120px;      flex-shrink: 0;    }    .tg-df-container .tg-df-roundel-img-box {      width: 120px;      height: 120px;      border-radius: 50%;      background: white;      display: flex;      align-items: center;      justify-content: center;      overflow: hidden;      box-shadow: 0px 3px 14px 0px rgba(30, 41, 59, 0.08);      transition: box-shadow 0.2s;    }    .tg-df-container .tg-df-roundel:hover .tg-df-roundel-img-box {      box-shadow: 0 0 0 2px #E7F0FF, 0 0 0 4px #1F69FF;    }    .tg-df-container .tg-df-roundel.active .tg-df-roundel-img-box {      box-shadow: 0 0 0 2px #E7F0FF, 0 0 0 4px #1F69FF;    }    .tg-df-container .tg-df-roundel:hover .tg-df-roundel-img-box img {      transform: scale(1.08);    }    .tg-df-container .tg-df-roundel-img-box img {      width: 100%;      height: 100%;      object-fit: contain;      padding: 10px;      box-sizing: border-box;      transition: transform 0.3s ease;    }    .tg-df-container .tg-df-roundel-label {      font-size: 13px;      font-weight: 400;      color: #1e293b;      text-align: center;      transition: font-weight 0.2s;    }    .tg-df-container .tg-df-roundel.active .tg-df-roundel-label {      font-weight: 700;    }    .tg-df-container .tg-df-carousel-filters-label {      font-size: 16px;      font-weight: 400;      color: #1e293b;      white-space: nowrap;      margin-right: 4px;    }    .tg-df-container .tg-df-carousel-filters-wrap {      display: flex;      align-items: center;      flex-wrap: nowrap;      gap: 8px;      margin-top: 8px;      overflow-x: auto;      scrollbar-width: none;      -webkit-overflow-scrolling: touch;      padding-bottom: 8px;      margin-left: -24px;      margin-right: -24px;      padding-left: 24px;      padding-right: 24px;    }    .tg-df-container .tg-df-carousel-filters-wrap::-webkit-scrollbar {      display: none;    }        .tg-df-container .tg-df-carousel-filter-btn img,    .tg-df-container .tg-df-carousel-filter-btn picture {      height: 20px;      width: 20px;      object-fit: contain;      object-position: center;      display: inline-flex;      align-items: center;      justify-content: center;      margin-right: 6px;    }    .tg-df-container .tg-df-carousel-filter-btn picture img {      margin-right: 0;      height: 100%;      width: 100%;    }    .tg-df-container .tg-df-carousel-filter-btn img.active-img,    .tg-df-container .tg-df-carousel-filter-btn picture:has(.active-img) {      display: none;    }    .tg-df-container .tg-df-carousel-filter-btn:hover img.inactive-img,    .tg-df-container .tg-df-carousel-filter-btn.active img.inactive-img,    .tg-df-container .tg-df-carousel-filter-btn:hover picture:has(.inactive-img),    .tg-df-container .tg-df-carousel-filter-btn.active picture:has(.inactive-img) {      display: none;    }    .tg-df-container .tg-df-carousel-filter-btn:hover img.active-img,    .tg-df-container .tg-df-carousel-filter-btn.active img.active-img,    .tg-df-container .tg-df-carousel-filter-btn:hover picture:has(.active-img),    .tg-df-container .tg-df-carousel-filter-btn.active picture:has(.active-img) {      display: inline-flex;    }    .tg-df-container .tg-df-carousel-filter-btn {      background: #ffffff;      border: 2px solid #1e293b;      color: #1e293b;      border-radius: 24px;      padding: 6px 16px;      font-size: 14px;      font-weight: 600;      cursor: pointer;      transition: all 0.2s;      flex-shrink: 0;      white-space: nowrap;      display: inline-flex;      align-items: center;      justify-content: center;      min-height: 36px;      box-sizing: border-box;    }    .tg-df-container .tg-df-carousel-filter-btn svg {      margin-right: 6px;    }    .tg-df-container .tg-df-carousel-filter-btn:hover {      background: #1e293b;      color: white;      border-color: #1e293b;    }    .tg-df-container .tg-df-carousel-filter-btn.active {      background: #1e293b;      color: white;      border-color: #1e293b;    }        .tg-df-grid.carousel-compact {      display: flex;      flex-wrap: nowrap;      overflow-x: auto;      gap: 16px;      padding: 16px 24px;      align-items: stretch;      scrollbar-width: none;    }    .tg-df-grid.carousel-compact::after {      content: "";      flex: 0 0 32px;    }    .tg-df-grid-wrapper {      position: relative;    }    .tg-df-grid.carousel-compact::-webkit-scrollbar {      display: none;    }    .tg-df-grid.carousel-compact .tg-df-load-more-card {      flex: 0 0 auto;      width: 100px;      border-radius: 15px;      box-shadow: 0 0 16px rgba(0,0,0,0.08);      border: 2px solid #1e293b;      background: white;      color: #1e293b;      display: flex;      flex-direction: column;      justify-content: center;      align-items: center;      font-weight: 600;      font-size: 14px;      cursor: pointer;      padding: 16px;      text-align: center;      transition: all 0.2s;    }    .tg-df-grid.carousel-compact .tg-df-load-more-card:hover {      background: #1e293b;      color: white;    }    .tg-df-grid.carousel-compact .tg-df-card {      flex: 0 0 auto;      width: 200px;      min-height: auto;      height: auto;      display: flex;      flex-direction: column;      border-radius: 15px;      border: none;      box-shadow: 0 0 16px rgba(0,0,0,0.08);      overflow: visible;    }    .tg-df-grid.carousel-compact .tg-df-card-image-box {      padding: 12px;      background-color: transparent;      border-radius: 15px 15px 0 0;      height: 130px;    }    .tg-df-grid.carousel-compact .tg-df-card-image {      mix-blend-mode: normal;    }    .tg-df-grid.carousel-compact .tg-df-card-discount-badge {      border-radius: 0;      top: 0px;      left: 0px;      padding: 4px 8px;      font-size: 11px;    }    .tg-df-grid.carousel-compact .tg-df-card-body {      padding: 8px 12px 12px 12px;    }    .tg-df-grid.carousel-compact .tg-df-card-title {      font-size: 14px;      font-weight: 400;      -webkit-line-clamp: 2;      margin-bottom: 8px;      color: #011535;    }    .tg-df-grid.carousel-compact .tg-df-card-body:not(:has(.tg-df-card-stars)):not(:has(.tg-df-tag-prime)):not(:has(.tg-df-coupon-wrapper:not([style*="none"]))) > .tg-df-card-title,    .tg-df-grid.carousel-compact .tg-df-card-body:not(:has(.tg-df-card-stars)):has(> .tg-df-card-title:first-child) > .tg-df-card-title {      -webkit-line-clamp: 3;    }    .tg-df-grid.carousel-compact .tg-df-card-cta {      border-radius: 5px;      padding: 8px 10px;      margin-top: 4px;      background-color: #1F69FF;    }    .tg-df-grid.carousel-compact .tg-df-card-price-group {      margin-bottom: 2px;    }    .tg-df-grid.carousel-compact .tg-df-card-merchant-pill {      margin-bottom: 2px;    }    @container tg-df (max-width: 599px) {      .tg-df-container .tg-df-carousel-blue-box-title {        font-size: 24px;      }      .tg-df-container .tg-df-countdown-title {        display: none;      }      .tg-df-container .tg-df-countdown-wrapper {        position: absolute;        top: 0;        right: 0;        align-items: flex-end;        transform: scale(0.45);        transform-origin: top right;      }      .tg-df-container .tg-df-roundel {        min-width: 88px;      }      .tg-df-container .tg-df-roundel-img-box {        width: 88px;        height: 88px;      }    }    /* REPLICA BLOCK STYLES */    .tg-df-grid.layout-replica-2 { grid-template-columns: repeat(2, 1fr) !important; gap: 20px; }    .tg-df-grid.layout-replica-1 { grid-template-columns: 1fr !important; gap: 20px; }        .tg-df-container .hawk-deal-widget-container { border-bottom: 1px solid #e5e7eb; display: flex; flex-direction: column; margin: 0; padding: 20px 0; box-sizing: border-box; font-family: inherit; }    .tg-df-container .hawk-deal-widget-wrap { display: flex; flex-direction: row; align-items: flex-start; width: 100%; gap: 24px; }    .tg-df-container .hawk-deal-widget-image-container { display: flex; flex-shrink: 0; justify-content: center; width: 160px; height: 160px; align-items: center; background: white; margin-bottom: 0px; }    .tg-df-container .hawk-deal-widget-title-product-title { color: #111827; font-size: 18px; font-weight: 700; line-height: 1.4; display: inline; }    .tg-df-container .hawk-deal-widget-title-price { font-size: 18px; font-weight: 700; line-height: 1.4; white-space: nowrap; color: #2563eb; }    .tg-df-container .hawk-deal-widget-title-price-now { font-weight: 700; }    .tg-df-container .hawk-deal-widget-title-retailer-price:hover { text-decoration: underline; }    .tg-df-container .hawk-deal-widget-title-retailer { font-size: 18px; font-weight: 700; line-height: 1.4; color: #2563eb; }    .tg-df-container .hawk-deal-widget-title-was-price { color: #dc2626; font-size: 16px; font-weight: 500; line-height: 1.4; text-decoration: line-through; white-space: nowrap; margin-left: 8px; margin-right: 8px; }    .tg-df-container .hawk-deal-widget-text-body-container { position: relative; width: 100%; box-sizing: border-box; }    .tg-df-container .hawk-deal-widget-text-body-main { font-size: 16px; width: 100%; margin-bottom: 12px; }    .tg-df-container .hawk-deal-widget-text-body-description { display: block; font-size: 15px; margin-top: 12px; color: #4b5563; line-height: 1.6; }    .tg-df-container .hawk-deal-widget-text-body-description p { margin: 0; line-height: 1.6; }    .tg-df-container .hawk-deal-widget-text-cta-container { display: flex; flex-direction: column; gap: 12px; width: 100%; flex: 1; min-width: 0; box-sizing: border-box; }    .tg-df-container .hawk-deal-widget-footer { display: flex; justify-content: flex-end; width: 100%; margin-top: auto; }    .tg-df-container .hawk-deal-widget-button-wrapper { display: flex; flex-direction: column; align-items: flex-end; justify-content: flex-end; width: 100%; }    .tg-df-container .hawk-deal-widget-preferred-partner-wrapper { display: flex; flex-direction: row; }        @container tg-df (min-width: 600px) {      .tg-df-mobile-only { display: none !important; }    }    @container tg-df (max-width: 599px) {      .tg-df-desktop-only { display: none !important; }      .tg-df-grid.layout-replica-2 { grid-template-columns: 1fr !important; }      .tg-df-grid.savings-squad-cards { grid-template-columns: 1fr !important; display: flex; flex-direction: column; }    }    .tg-df-grid.savings-squad-cards .tg-df-card-title {      -webkit-line-clamp: unset !important;      display: block !important;      overflow: visible !important;    }    @container tg-df (max-width: 500px) {      .tg-df-container .hawk-deal-widget-wrap { display: block; }      .tg-df-container .hawk-deal-widget-image-container { display: block; float: left; margin: 0 16px 8px 0; width: 120px; max-width: 120px; height: auto; align-items: normal; justify-content: normal; }      .tg-df-container .hawk-deal-widget-text-cta-container { display: block; text-align: left; }      .tg-df-container .hawk-deal-widget-footer { display: block; margin-top: 16px; clear: both; width: 100%; }      .tg-df-container .hawk-deal-widget-button-wrapper { display: block; width: 100%; }      .tg-df-container .hawk-deal-widget-button-wrapper .hawk-deal-widget-preferred-partner-wrapper { display: block; width: 100%; }      .tg-df-container .hawk-affiliate-link-deal-button { box-sizing: border-box !important; display: flex !important; max-width: none !important; width: 100% !important; margin: 0 !important; }    }        .tg-df-container .hawk-affiliate-link-deal-button {       align-items: center; background-color: #5aaf0b; box-sizing: border-box; color: #ffffff !important; display: flex; font-size: 14px; font-weight: 700; justify-content: center; letter-spacing: 0.5px; line-height: 1; min-width: 160px; padding: 14px 24px; text-align: center; text-decoration: none; text-transform: uppercase; width: 100%; word-break: normal; border-radius: 4px; border: 0; transition: background-color 0.2s;     }    .tg-df-container .hawk-affiliate-link-deal-button:hover { background-color: #4a9109; text-decoration: none; }    .tg-df-container .hawk-lazy-image-deal-widget { display: block; height: auto; margin: auto; max-height: 160px; max-width: 100%; mix-blend-mode: multiply; object-fit: contain; }    .tg-df-container .hawk-deal-widget-text-cta-container a { color: #2563eb; text-decoration: none; display: inline; }    .tg-df-container .hawk-deal-widget-text-cta-container a:hover { text-decoration: underline; }    .tg-df-container .hawk-deal-widget-text-cta-container a:has(.hawk-deal-widget-title-product-title) { color: #111827; }    .tg-df-container .hawk-deal-widget-text-cta-container a:hover .hawk-deal-widget-title-product-title,    .tg-df-container .hawk-deal-widget-text-cta-container a:hover .hawk-deal-widget-title-retailer-price { text-decoration: underline; }  \x3C/style>  \x3C!-- Widget Container --\x3E  \x3Cdiv class="tg-df-container" id="signal-deals-finder-root">    \x3C!-- Editor Floating Bar --\x3E    \x3Cdiv class="tg-df-editor-bar" id="tg-df-editor-bar" style="display:none;">      \x3Cdiv class="tg-df-editor-bar-text" style="display: flex; align-items: center;">        \x3Cspan id="tg-df-selected-count">0\x3C/span>\x26nbsp;Deals Selected        \x3Cbutton class="tg-df-editor-clear-btn" id="tg-df-editor-clear" type="button" style="margin-left: 12px; font-size: 13px; color: #9ca3af; background: none; border: none; cursor: pointer; text-decoration: underline;">Clear All\x3C/button>      \x3C/div>      \x3Cbutton class="tg-df-editor-copy-btn" id="tg-df-editor-copy" type="button">        \x3Csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-right: 6px;">\x3Crect x="9" y="9" width="13" height="13" rx="2" ry="2">\x3C/rect>\x3Cpath d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1">\x3C/path>\x3C/svg>        Copy to CMS      \x3C/button>    \x3C/div>    \x3Cdiv class="tg-df-carousel-host" id="tg-df-carousel-host" style="display: none;">      \x3Cdiv class="tg-df-carousel-eyebrow">DEAL FINDER\x3C/div>      \x3Cdiv class="tg-df-carousel-query-title" id="tg-df-carousel-title-label">Best Deals\x3C/div>            \x3Cdiv class="tg-df-carousel-blue-box">        \x3Cdiv class="tg-df-carousel-bg-circle-1" aria-hidden="true">\x26nbsp;\x3C/div>        \x3Cdiv class="tg-df-carousel-bg-circle-2" aria-hidden="true">\x26nbsp;\x3C/div>        \x3Cdiv class="tg-df-carousel-bg-circle-3" aria-hidden="true">\x26nbsp;\x3C/div>        \x3Cdiv class="tg-df-carousel-box-content">          \x3Cdiv class="tg-df-countdown-wrapper" id="tg-df-countdown-wrapper" style="display:none;">            \x3Cdiv class="tg-df-countdown-title" id="tg-df-countdown-title">Prime Day starts in\x3C/div>            \x3Cdiv class="tg-df-countdown-blocks">              \x3Cdiv class="tg-df-countdown-item">\x3Cdiv class="tg-df-countdown-box">\x3Cdiv class="tg-df-countdown-num" id="tg-df-cd-days">0\x3C/div>\x3C/div>\x3Cdiv class="tg-df-countdown-label">DAYS\x3C/div>\x3C/div>              \x3Cdiv class="tg-df-countdown-item">\x3Cdiv class="tg-df-countdown-box">\x3Cdiv class="tg-df-countdown-num" id="tg-df-cd-hrs">0\x3C/div>\x3C/div>\x3Cdiv class="tg-df-countdown-label">HRS\x3C/div>\x3C/div>              \x3Cdiv class="tg-df-countdown-item">\x3Cdiv class="tg-df-countdown-box">\x3Cdiv class="tg-df-countdown-num" id="tg-df-cd-min">0\x3C/div>\x3C/div>\x3Cdiv class="tg-df-countdown-label">MIN\x3C/div>\x3C/div>              \x3Cdiv class="tg-df-countdown-item">\x3Cdiv class="tg-df-countdown-box">\x3Cdiv class="tg-df-countdown-num" id="tg-df-cd-sec">0\x3C/div>\x3C/div>\x3Cdiv class="tg-df-countdown-label">SEC\x3C/div>\x3C/div>            \x3C/div>          \x3C/div>          \x3Cdiv class="tg-df-carousel-box-eyebrow">DEAL FINDER\x3C/div>          \x3Cdiv class="tg-df-carousel-box-title">Find Deals Fast\x3C/div>          \x3Cdiv class="tg-df-carousel-box-subtitle">The latest deals from the biggest retailers, all in one place\x3C/div>                    \x3Cdiv class="tg-df-carousel-roundels-wrapper">          \x3Cbutton class="tg-df-carousel-scroll-left" type="button" aria-label="Scroll left" style="display:none;" onclick="this.parentElement.querySelector('.tg-df-carousel-roundels').scrollBy({left: -200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m15 18-6-6 6-6">\x3C/path>\x3C/svg>\x3C/button>          \x3Cdiv class="tg-df-carousel-roundels">            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>          \x3C/div>          \x3Cbutton class="tg-df-carousel-scroll-right" type="button" aria-label="Scroll right" onclick="this.parentElement.querySelector('.tg-df-carousel-roundels').scrollBy({left: 200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m9 18 6-6-6-6">\x3C/path>\x3C/svg>\x3C/button>        \x3C/div>        \x3Cdiv class="tg-df-carousel-filters-outer" style="position: relative;">          \x3Cbutton class="tg-df-carousel-scroll-left" type="button" aria-label="Scroll left" style="display:none;" onclick="this.parentElement.querySelector('.tg-df-carousel-filters-wrap').scrollBy({left: -200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m15 18-6-6 6-6">\x3C/path>\x3C/svg>\x3C/button>          \x3Cdiv class="tg-df-carousel-filters-wrap">                      \x3Cbutton class="tg-df-carousel-filter-btn" data-d="0">All\x3C/button>                      \x3Cbutton class="tg-df-carousel-filter-btn" data-ot="amazon_lightning">              \x3Cimg src="https://cdn.mos.cms.futurecdn.net/HqAui7w97ft2NPqBtQ5r38-600-100.png" class="inactive-img" alt="" />\x3Cimg src="https://cdn.mos.cms.futurecdn.net/yWPQ5yyQRhUwVKzGwYbh38-600-100.png" class="active-img" alt="" /> Lightning deals\x3C/button>            \x3Cbutton class="tg-df-carousel-filter-btn" data-ot="amazon_prime">              \x3Cimg src="https://cdn.mos.cms.futurecdn.net/fwoVXvL79turN3Ph535m38-600-100.png" class="inactive-img" alt="" />\x3Cimg src="https://cdn.mos.cms.futurecdn.net/u75QjVpt3w2EsMimJiRo38-600-100.png" class="active-img" alt="" /> Prime deals\x3C/button>            \x3Cbutton class="tg-df-carousel-filter-btn" data-d="10">              \x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tag">\x3Cpath d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z">\x3C/path>\x3Ccircle cx="7.5" cy="7.5" r=".5" fill="currentColor">\x3C/circle>\x3C/svg>            Min 10% off\x3C/button>                      \x3Cbutton class="tg-df-carousel-filter-btn" data-d="15">              \x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tag">\x3Cpath d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z">\x3C/path>\x3Ccircle cx="7.5" cy="7.5" r=".5" fill="currentColor">\x3C/circle>\x3C/svg>            Min 15% off\x3C/button>                      \x3Cbutton class="tg-df-carousel-filter-btn" data-d="25">              \x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tag">\x3Cpath d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z">\x3C/path>\x3Ccircle cx="7.5" cy="7.5" r=".5" fill="currentColor">\x3C/circle>\x3C/svg>            Min 25% off\x3C/button>                      \x3Cbutton class="tg-df-carousel-filter-btn" data-pr="under50">              \x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-dollar-sign">\x3Cpath d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z">\x3C/path>\x3Cpath d="M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8">\x3C/path>\x3Cpath d="M12 18V6">\x3C/path>\x3C/svg>            Under $50\x3C/button>        \x3C/div>        \x3Cbutton class="tg-df-carousel-scroll-right" type="button" aria-label="Scroll right" style="display:none;" onclick="this.parentElement.querySelector('.tg-df-carousel-filters-wrap').scrollBy({left: 200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m9 18 6-6-6-6">\x3C/path>\x3C/svg>\x3C/button>      \x3C/div>    \x3C/div>    \x3C/div>      \x3C!-- Search & Filter Controls --\x3E    \x3Cdiv class="tg-df-controls" id="tg-df-controls" style="display:flex;">      \x3Cdiv class="tg-df-top-bar">        \x3Cdiv class="tg-df-search-wrapper">          \x3Cinput type="text" class="tg-df-search-input" placeholder="Search for deals, products, or brands...">          \x3Cbutton type="button" class="tg-df-search-btn" aria-label="Search">              \x3Csvg class="tg-df-search-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">                \x3Cpath d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"/>              \x3C/svg>          \x3C/button>          \x3Cdiv class="tg-df-autocomplete-dropdown" id="tg-df-autocomplete">\x3C/div>        \x3C/div>                \x3Cdiv class="tg-df-settings-wrapper">          \x3Cbutton type="button" class="tg-df-settings-btn" aria-label="Settings" id="tg-df-settings-toggle">            \x3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="20" height="20">                \x3Cpath d="M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.06-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.73 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.06.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .43-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.49-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z"/>            \x3C/svg>          \x3C/button>          \x3Cdiv class="tg-df-settings-dropdown-backdrop" id="tg-df-settings-backdrop">\x3C/div>          \x3Cdiv class="tg-df-settings-dropdown" id="tg-df-settings-panel">            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">Search Region\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-region-select">                \x3Coption value="auto">🌍 Auto-detect\x3C/option>                \x3Coption value="US">🇺🇸 United States (US)\x3C/option>                \x3Coption value="GB">🇬🇧 United Kingdom (UK)\x3C/option>                \x3Coption value="CA">🇨🇦 Canada (CA)\x3C/option>                \x3Coption value="AU">🇦🇺 Australia (AU)\x3C/option>                \x3Coption value="DE">🇩🇪 Germany (DE)\x3C/option>                \x3Coption value="FR">🇫🇷 France (FR)\x3C/option>                \x3Coption value="IT">🇮🇹 Italy (IT)\x3C/option>              \x3C/select>            \x3C/div>            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">Retailer\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-retailer-select">                \x3Coption value="">All Retailers\x3C/option>                \x3Coption value="Amazon">Amazon\x3C/option>                \x3Coption value="Walmart">Walmart\x3C/option>                \x3Coption value="Best Buy">Best Buy\x3C/option>                \x3Coption value="Target">Target\x3C/option>                \x3Coption value="John Lewis">John Lewis\x3C/option>                \x3Coption value="Currys">Currys\x3C/option>                \x3Coption value="Argos">Argos\x3C/option>              \x3C/select>            \x3C/div>            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">Offer Type\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-offer-type-select">                \x3Coption value="">All Offers\x3C/option>                \x3Coption value="amazon_prime">Amazon Prime\x3C/option>                \x3Coption value="recommended_promo">Recommended Promo\x3C/option>                \x3Coption value="amazon_lightning">Amazon Lightning Deal\x3C/option>              \x3C/select>            \x3C/div>            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">Result Count\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-rows-select">                \x3Coption value="3">3 Items\x3C/option>                \x3Coption value="4">4 Items\x3C/option>                \x3Coption value="6">6 Items\x3C/option>                \x3Coption value="12" selected>12 Items\x3C/option>                \x3Coption value="24">24 Items\x3C/option>                \x3Coption value="48">48 Items\x3C/option>              \x3C/select>            \x3C/div>            \x3Cdiv class="tg-df-setting-item tg-df-dl-row">              \x3Cdiv>                \x3Cspan class="tg-df-dl-row-text">Deal Mode\x3C/span>                \x3Cspan class="tg-df-dl-row-subtext">Only show products with active offers or previous prices (was_price)\x3C/span>              \x3C/div>              \x3Clabel class="tg-df-toggle">                \x3Cinput type="checkbox" id="tg-df-deal-mode">                \x3Cspan class="tg-df-slider">\x3C/span>              \x3C/label>            \x3C/div>            \x3Cdiv class="tg-df-setting-item tg-df-dl-row">              \x3Cdiv>                \x3Cspan class="tg-df-dl-row-text">Editor Mode\x3C/span>                \x3Cspan class="tg-df-dl-row-subtext">Enable multi-select to copy deals to CMS\x3C/span>              \x3C/div>              \x3Clabel class="tg-df-toggle">                \x3Cinput type="checkbox" id="tg-df-editor-mode">                \x3Cspan class="tg-df-slider">\x3C/span>              \x3C/label>            \x3C/div>            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">View Mode\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-view-mode-select">                \x3Coption value="auto">Auto Collection\x3C/option>                \x3Coption value="carousel">Carousel\x3C/option>                \x3Coption value="savings_squad">Savings Squad\x3C/option>                \x3Coption value="grid">Grid (Columns)\x3C/option>                \x3Coption value="row">Row (List)\x3C/option>              \x3C/select>            \x3C/div>          \x3C/div>        \x3C/div>      \x3C/div>      \x3Cdiv class="tg-df-filters">        \x3Cdiv class="tg-df-sort-wrapper" id="tg-df-category-filter-wrapper" style="display: none;">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">            \x3Cpath d="M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z"/>          \x3C/svg>          \x3Cselect class="tg-df-filter-select" id="tg-df-category-filter" aria-label="Category">            \x3Coption value="all">All Categories\x3C/option>          \x3C/select>        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper tg-df-multiselect-container" id="tg-df-brand-filter-wrapper" style="display:none;">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">            \x3Cpath d="M4.25 5.61C6.27 8.2 10 13 10 13v6c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-6s3.72-4.8 5.74-7.39A.998.998 0 0 0 18.95 4H5.04c-.83 0-1.3.95-.79 1.61z"/>          \x3C/svg>          \x3Cdiv class="tg-df-filter-select tg-df-multiselect-trigger" id="tg-df-brand-trigger" tabindex="0">            Any Brand          \x3C/div>          \x3Cdiv class="tg-df-multiselect-dropdown" id="tg-df-brand-dropdown">            \x3C!-- Populated via script --\x3E          \x3C/div>        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">            \x3Cpath d="M9 3L5 6.99h3V14h2V6.99h3L9 3zm7 14.01V10h-2v7.01h-3L15 21l4-3.99h-3z"/>          \x3C/svg>          \x3Cselect class="tg-df-sort-select" aria-label="Sort Deals">            \x3Coption value="date_desc">Newest First\x3C/option>            \x3Coption value="best_match">Sort by: Match\x3C/option>            \x3Coption value="price_asc">Price Low to High\x3C/option>            \x3Coption value="price_desc">Price High to Low\x3C/option>            \x3Coption value="discount_desc">Biggest Discount\x3C/option>          \x3C/select>        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper tg-df-price-range-wrapper" id="tg-df-custom-price-wrapper" style="display: flex; align-items:center; justify-content:center; padding: 10px 20px; gap: 8px; border: 1px solid var(--tg-df-border); border-radius: 100px; background-color: var(--tg-df-bg);">          \x3Cspan style="font-size:14px; font-weight:500; color:var(--tg-df-text-primary);">Price\x3C/span>          \x3Cinput type="number" class="tg-df-price-input" id="tg-df-custom-price-min" placeholder="Min" style="width: 48px; background: transparent; border: none; color: var(--tg-df-text-primary); outline: none; font-size: 14px; text-align: center; padding: 0;">          \x3Cspan style="color:var(--tg-df-text-muted)">-\x3C/span>          \x3Cinput type="number" class="tg-df-price-input" id="tg-df-custom-price-max" placeholder="Max" style="width: 48px; background: transparent; border: none; color: var(--tg-df-text-primary); outline: none; font-size: 14px; text-align: center; padding: 0;">        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper" id="tg-df-legacy-price-wrapper">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">            \x3Cpath d="M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58.55 0 1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41 0-.55-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7z"/>          \x3C/svg>          \x3Cselect class="tg-df-filter-select" id="tg-df-price-filter" aria-label="Filter Prices">            \x3Coption value="all">All Prices\x3C/option>            \x3Coption value="under50">Under $50\x3C/option>            \x3Coption value="50_100">$50 - $100\x3C/option>            \x3Coption value="100_200">$100 - $200\x3C/option>            \x3Coption value="200_500">$200 - $500\x3C/option>            \x3Coption value="over500">Over $500\x3C/option>          \x3C/select>        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper" id="tg-df-discount-filter-wrapper">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">            \x3Cpath d="M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58.55 0 1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41 0-.55-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7z"/>          \x3C/svg>          \x3Cselect class="tg-df-filter-select" id="tg-df-discount-filter" aria-label="Discount Amount">            \x3Coption value="all">Any discount\x3C/option>            \x3Coption value="5">Min 5%\x3C/option>            \x3Coption value="10">Min 10%\x3C/option>            \x3Coption value="15">Min 15%\x3C/option>            \x3Coption value="20">Min 20%\x3C/option>            \x3Coption value="25">Min 25%\x3C/option>            \x3Coption value="30">Min 30%\x3C/option>            \x3Coption value="40">Min 40%\x3C/option>            \x3Coption value="50">Min 50%\x3C/option>            \x3Coption value="60">Min 60%\x3C/option>            \x3Coption value="70">Min 70%\x3C/option>          \x3C/select>        \x3C/div>      \x3C/div>    \x3C/div>    \x3C!-- Deals Grid Wrapper --\x3E    \x3Cdiv class="tg-df-grid-wrapper tg-df-carousel-cards-wrapper" id="tg-df-grid-wrapper">      \x3Cbutton class="tg-df-carousel-scroll-left" type="button" aria-label="Scroll left" style="display:none;" onclick="this.parentElement.querySelector('#tg-df-grid').scrollBy({left: -200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m15 18-6-6 6-6">\x3C/path>\x3C/svg>\x3C/button>      \x3Cdiv class="tg-df-grid" id="tg-df-grid">        \x3C!-- Content populated by JavaScript --\x3E      \x3C/div>      \x3Cbutton class="tg-df-carousel-scroll-right" type="button" aria-label="Scroll right" style="display:none;" onclick="this.parentElement.querySelector('#tg-df-grid').scrollBy({left: 200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m9 18 6-6-6-6">\x3C/path>\x3C/svg>\x3C/button>    \x3C/div>        \x3C!-- Vouchers Modal --\x3E    \x3Cdiv class="tg-df-modal-backdrop" id="tg-df-vouchers-modal">      \x3Cdiv class="tg-df-modal">        \x3Cdiv class="tg-df-modal-header">          \x3Ch3 class="tg-df-modal-title" id="tg-df-vouchers-title">Available Coupons & Deals\x3C/h3>          \x3Cbutton class="tg-df-modal-close" id="tg-df-vouchers-close">            \x3Csvg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">              \x3Cline x1="18" y1="6" x2="6" y2="18">\x3C/line>              \x3Cline x1="6" y1="6" x2="18" y2="18">\x3C/line>            \x3C/svg>          \x3C/button>        \x3C/div>        \x3Cdiv class="tg-df-modal-body" id="tg-df-vouchers-content">          \x3C!-- Vouchers injected here --\x3E        \x3C/div>      \x3C/div>    \x3C/div>  \x3C/div>`;      if (!template) {        template = document.createElement('template');        template.innerHTML = rawTemplate;      }      let shadowRoot = null;      if (hostContainer && template) {        hostContainer.setAttribute('data-initialized', 'true');        shadowRoot = hostContainer.attachShadow({ mode: 'open' });        shadowRoot.appendChild(template.content.cloneNode(true));      }      class DealsFinderWidget {        constructor(config) {          this.rootNode = config.rootNode || document;          this.hostContainer = config.hostContainer || null;          this.rootId = config.rootId || 'signal-deals-finder-root';          this.root = this.rootNode.querySelector('#' + this.rootId);          if (!this.root) return;          this.widgetId = (window.crypto && window.crypto.randomUUID) ? window.crypto.randomUUID() : 'widget-' + Date.now() + '-' + Math.random().toString(36).slice(2);          this.grid = this.root.querySelector('#tg-df-grid');          this.tagsContainer = this.root.querySelector('#tg-df-tags-container');          this.categoryFilter = this.root.querySelector('#tg-df-category-filter');          this.categoryFilterWrapper = this.root.querySelector('#tg-df-category-filter-wrapper');          this.searchInput = this.root.querySelector('.tg-df-search-input');          this.autocompleteDropdown = this.root.querySelector('#tg-df-autocomplete');          this.sortSelect = this.root.querySelector('.tg-df-sort-select');          this.searchBtn = this.root.querySelector('.tg-df-search-btn');                    this.settingsToggle = this.root.querySelector('#tg-df-settings-toggle');          this.settingsPanel = this.root.querySelector('#tg-df-settings-panel');          this.settingsBackdrop = this.root.querySelector('#tg-df-settings-backdrop');          this.regionSelect = this.root.querySelector('#tg-df-region-select');          this.retailerSelect = this.root.querySelector('#tg-df-retailer-select');          this.offerTypeSelect = this.root.querySelector('#tg-df-offer-type-select');          this.viewModeSelect = this.root.querySelector('#tg-df-view-mode-select');          this.rowsSelect = this.root.querySelector('#tg-df-rows-select');          this.dealModeToggle = this.root.querySelector('#tg-df-deal-mode');          this.editorModeToggle = this.root.querySelector('#tg-df-editor-mode');          this.priceFilter = this.root.querySelector('#tg-df-price-filter');          this.discountFilter = this.root.querySelector('#tg-df-discount-filter');                    this.editorBar = this.root.querySelector('#tg-df-editor-bar');          this.editorSelectedCount = this.root.querySelector('#tg-df-selected-count');          this.editorCopyBtn = this.root.querySelector('#tg-df-editor-copy');          this.editorClearBtn = this.root.querySelector('#tg-df-editor-clear');                    this.apiUrl = 'https://search-api.fie.future.net.uk/widget.php';          this.deals = [];          this.displayLimit = 12;          this.airedaleArticles = null;          this.airedaleTags = [];          this.airedaleTagCounts = {};          this.activeDealTag = null;          this.selectedBrands = [];          this.currentQuery = '';          this.editorMode = this.hostContainer ? this.hostContainer.hasAttribute('data-editor-mode') : false;          this.viewModeOverride = this.hostContainer ? this.hostContainer.getAttribute('data-view-mode') : null;          this.selectedDeals = new Map();                    this.brandFilterWrapper = this.root.querySelector('#tg-df-brand-filter-wrapper');          this.brandTrigger = this.root.querySelector('#tg-df-brand-trigger');          this.brandDropdown = this.root.querySelector('#tg-df-brand-dropdown');                    this.customPriceWrapper = this.root.querySelector('#tg-df-custom-price-wrapper');          this.customPriceMin = this.root.querySelector('#tg-df-custom-price-min');          this.customPriceMax = this.root.querySelector('#tg-df-custom-price-max');          this.legacyPriceWrapper = this.root.querySelector('#tg-df-legacy-price-wrapper');          this.discountFilterWrapper = this.root.querySelector('#tg-df-discount-filter-wrapper');          this.initResizeObserver();          this.init();            if (['carousel', 'carousel-compact', 'auto', 'grid', 'row'].includes(this.getViewMode())) { this.loadCarouselSpreadsheet(); }        }        getViewMode() {          if (this.viewModeOverride && (!this.editorMode || !this.viewModeSelect)) {            return this.viewModeOverride;          }          return (this.viewModeSelect && this.viewModeSelect.value) ? this.viewModeSelect.value : (this.viewModeOverride || 'auto');        }        applyLayoutMode() {          if (!this.grid) return;          const mode = this.getViewMode();          this.grid.classList.remove('layout-row', 'layout-grid', 'tg-df-grid-auto', 'carousel-compact', 'layout-replica-1', 'layout-replica-2');                    const carouselHost = this.root.querySelector('#tg-df-carousel-host');          const controlsDiv = this.root.querySelector('#tg-df-controls');          if (mode === 'carousel' || mode === 'auto' || mode === 'grid' || mode === 'row') {             if (mode === 'carousel') this.grid.classList.add('carousel-compact');             if (carouselHost) carouselHost.style.display = 'block';             if (controlsDiv) controlsDiv.style.display = 'none';             if (this.root.classList.contains('tg-df-container') && mode === 'carousel') {               this.root.classList.add('is-carousel');             } else if (this.root.classList.contains('tg-df-container')) {               this.root.classList.remove('is-carousel');             }          } else {             if (carouselHost) carouselHost.style.display = 'none';             if (controlsDiv) controlsDiv.style.display = 'flex';             if (this.root.classList.contains('tg-df-container')) {               this.root.classList.remove('is-carousel');             }          }          if (mode === 'grid') {            this.grid.classList.add('layout-grid');          } else if (mode === 'row') {            this.grid.classList.add('layout-row');          } else if (mode === 'savings_squad') {            this.grid.classList.add('tg-df-grid-auto', 'savings-squad-cards');          } else if (mode !== 'carousel') {            this.grid.classList.add('tg-df-grid-auto');          }                    const settingsWrapper = this.root.querySelector('.tg-df-settings-wrapper');          if (settingsWrapper) {            settingsWrapper.style.display = mode === 'auto' ? 'none' : 'block';          }          if (this.customPriceWrapper) {             this.customPriceWrapper.style.display = mode === 'auto' ? 'flex' : 'none';          }          if (this.legacyPriceWrapper) {             this.legacyPriceWrapper.style.display = mode === 'auto' ? 'none' : 'flex';          }          if (this.discountFilterWrapper) {             this.discountFilterWrapper.style.display = mode === 'auto' ? 'none' : 'flex';          }        }        initResizeObserver() {          try {            if (window.parent === window) return;          } catch (e) {            // cross origin frame check threw          }          const emitHeight = () => {            try {              const height = document.documentElement.scrollHeight || document.body.scrollHeight;              const msg = { type: 'embed-size', height: height };              if (window.parent && window.parent !== window) {                window.parent.postMessage(msg, '*');                window.parent.postMessage(JSON.stringify({ ...msg, sentinel: 'amp' }), '*');              }            } catch (e) {}          };                    if (window.ResizeObserver) {            try {              const ro = new ResizeObserver(() => emitHeight());              ro.observe(document.body);              if (this.root) ro.observe(this.root);            } catch(e){ console.warn(e); }          }          window.addEventListener('resize', emitHeight);          setTimeout(emitHeight, 300);        }        initCountdown() {          this.cdWrapper = this.root.querySelector('#tg-df-countdown-wrapper');                    let searchSource = window.location.search;          if (this.hostContainer && this.hostContainer.hasAttribute('data-widget-config')) {            searchSource = this.hostContainer.getAttribute('data-widget-config');          } else if (typeof window !== 'undefined' && window.__WIDGET_CONFIG__) {            searchSource = window.__WIDGET_CONFIG__;          }          const params = new URLSearchParams(searchSource);          this.showCountdown = params.get('show_countdown') === 'true';          const showHeaderDetails = params.get('show_header_details') !== 'false';          const eyebrow = this.root.querySelector('.tg-df-carousel-box-eyebrow');          const title = this.root.querySelector('.tg-df-carousel-box-title');          const subtitle = this.root.querySelector('.tg-df-carousel-box-subtitle');          if (!showHeaderDetails) {            let containerElement = this.root.classList.contains('tg-df-container') ? this.root : this.root.querySelector('.tg-df-container');            if (containerElement) containerElement.classList.add('hide-header-details');            if (eyebrow) eyebrow.style.display = 'none';            if (title) title.style.display = 'none';            if (subtitle) subtitle.style.display = 'none';          }          if (!this.cdWrapper) return;          this.cdTitle = this.root.querySelector('#tg-df-countdown-title');          this.cdDays = this.root.querySelector('#tg-df-cd-days');          this.cdHrs = this.root.querySelector('#tg-df-cd-hrs');          this.cdMin = this.root.querySelector('#tg-df-cd-min');          this.cdSec = this.root.querySelector('#tg-df-cd-sec');          this.updateCountdown();          this.cdInterval = setInterval(() => this.updateCountdown(), 1000);        }        updateCountdown() {          if (!this.cdWrapper) return;          if (!this.showCountdown) {            this.cdWrapper.style.display = 'none';            return;          }          const area = this.getAreaCode();          let offset = '-04:00';          if (['DE', 'FR', 'IT', 'ES', 'NL'].includes(area)) {             offset = '+02:00';          } else if (['GB', 'IE', 'UK'].includes(area)) {             offset = '+01:00';          }          const startTime = new Date('2026-06-23T00:00:00' + offset).getTime();          const endTime = new Date('2026-06-26T00:00:00' + offset).getTime();          const now = Date.now();          let targetTime = 0;          if (now < startTime) {             targetTime = startTime;             if (this.cdTitle) this.cdTitle.textContent = 'Prime Day starts in';             this.cdWrapper.style.display = 'flex';          } else if (now < endTime) {             targetTime = endTime;             if (this.cdTitle) this.cdTitle.textContent = 'Prime Day ends in';             this.cdWrapper.style.display = 'flex';          } else {             this.cdWrapper.style.display = 'none';             if (this.cdInterval) clearInterval(this.cdInterval);             return;          }          const diff = Math.max(0, targetTime - now);          const d = Math.floor(diff / (1000 * 60 * 60 * 24));          const h = Math.floor((diff / (1000 * 60 * 60)) % 24);          const m = Math.floor((diff / 1000 / 60) % 60);          const s = Math.floor((diff / 1000) % 60);          if (this.cdDays) this.cdDays.textContent = d;          if (this.cdHrs) this.cdHrs.textContent = h;          if (this.cdMin) this.cdMin.textContent = m;          if (this.cdSec) this.cdSec.textContent = s;        }        init() {          this.initCountdown();          try {            initAnalytics();          } catch (e) {            console.warn('Deals Widget Analytics Error:', e);          }                    this.bindEvents();                    let initialQuery = '';                    let searchSource = window.location.search;          if (this.hostContainer && this.hostContainer.hasAttribute('data-widget-config')) {            searchSource = this.hostContainer.getAttribute('data-widget-config');          } else if (typeof window !== 'undefined' && window.__WIDGET_CONFIG__) {            searchSource = window.__WIDGET_CONFIG__;          }          const params = new URLSearchParams(searchSource);          let initialViewMode = params.get('view_mode');          if (!params.has('search') && !params.has('q') && !params.has('query') && initialViewMode !== 'savings_squad') {             initialQuery = 'Everything';             if (this.discountFilter && !params.has('min_discount_ratio')) {               this.discountFilter.value = '5';             }          }          const website = params.get('website') || 'tomsguide';          this.website = website;          if (website === 'techradar') {            const squadHeader = this.root.querySelector('.tg-df-savings-squad-header');            if (squadHeader) {               const pic = squadHeader.querySelector('picture');               if (pic) pic.style.display = 'none';            }            const style = document.createElement('style');            style.innerHTML = `              .tg-df-container .hawk-affiliate-link-deal-button, .tg-df-container .tg-df-card-cta { background-color: #5DAF08 !important; }              .tg-df-container .hawk-affiliate-link-deal-button:hover, .tg-df-container .tg-df-card-cta:hover { background-color: #4a8c06 !important; }            `;            this.root.appendChild(style);          }                    if (this.regionSelect) {            this.regionSelect.value = params.get('region') || 'auto';            this.updatePriceDropdownCurrency();          }                    if (this.retailerSelect && params.has('retailer')) {            this.retailerSelect.value = params.get('retailer');          }                    if (params.has('brands')) {            const b = params.get('brands');            if (b) {              this.selectedBrands = b.split(',');            }          }                    if (this.offerTypeSelect && params.has('offer_type')) {            this.offerTypeSelect.value = params.get('offer_type');          }          if (params.has('bg_color')) {            const bg = params.get('bg_color');            if (bg === 'white') {              this.root.style.setProperty('background-color', '#ffffff', 'important');            } else if (bg === 'transparent') {              this.root.style.setProperty('background-color', 'transparent', 'important');            } else if (bg === 'light_blue') {              this.root.style.setProperty('background-color', '#E7F0FF', 'important');            }          } else {             this.root.style.removeProperty('background-color');          }                    if (params.has('view_mode')) {            if (this.viewModeSelect) {              this.viewModeSelect.value = params.get('view_mode');            } else {              this.viewModeOverride = params.get('view_mode');            }          }          if (this.rowsSelect && params.has('rows')) {            this.rowsSelect.value = params.get('rows');          }          if (params.has('price')) {            const priceVal = params.get('price');            if (this.priceFilter) {               // Try assigning it directly to select. If it's not present implicitly ignores               this.priceFilter.value = priceVal;            }            if (priceVal.includes('_')) {               const parts = priceVal.split('_');               if (this.customPriceMin && parts[0]) this.customPriceMin.value = parts[0];               if (this.customPriceMax && parts[1]) this.customPriceMax.value = parts[1];            }          }          if (this.discountFilter && params.has('min_discount_ratio')) {            // Need to convert back from ratio (e.g. 0.8) to select value (e.g. "20")            const ratioStr = params.get('min_discount_ratio');            const ratioFloat = parseFloat(ratioStr);            if (!isNaN(ratioFloat)) {               const percentage = Math.round((1 - ratioFloat) * 100);               this.discountFilter.value = percentage.toString();            }          }          if (this.sortSelect) {            this.sortSelect.value = params.get('sort') || 'discount_desc';          }          if (this.dealModeToggle && params.has('deal_mode')) {            this.dealModeToggle.checked = params.get('deal_mode') === 'true' || params.get('deal_mode') === '1';          }                    // Re-apply layout after params have updated control values          this.applyLayoutMode();                    if (params.get('search')) {            initialQuery = params.get('search');          } else if (params.get('q')) {            initialQuery = params.get('q');          } else if (params.get('query')) {            initialQuery = params.get('query');          }                    this.currentQuery = initialQuery;          if (this.searchInput) {            this.searchInput.value = this.currentQuery;          }                    if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {            this.fetchDeals(this.currentQuery);          } else {            this.render();          }        }        updatePriceDropdownCurrency() {          if (!this.priceFilter || !this.regionSelect) return;          const currencySymbols = {            'US': '$',            'GB': '£',            'CA': '$CA',            'AU': '$AU',            'DE': '€',            'FR': '€',            'IT': '€',          };          const area = this.getAreaCode();          const cur = currencySymbols[area || 'US'] || '$';                    const options = this.priceFilter.options;          for (let i = 0; i < options.length; i++) {            const opt = options[i];            if (opt.value === 'all') {              opt.innerText = 'All Prices';            } else if (opt.value === 'under50') {              opt.innerText = `Under ${cur}50`;            } else if (opt.value === '50_100') {              opt.innerText = `${cur}50 - ${cur}100`;            } else if (opt.value === '100_200') {              opt.innerText = `${cur}100 - ${cur}200`;            } else if (opt.value === '200_500') {              opt.innerText = `${cur}200 - ${cur}500`;            } else if (opt.value === 'over500') {              opt.innerText = `Over ${cur}500`;            }          }        }        populateBrandDropdown(values) {          if (!this.brandDropdown || !this.brandFilterWrapper) return;          this.brandFilterWrapper.style.display = 'flex'; // show the wrapper                    let html = '';          const allChecked = this.selectedBrands.length === 0 ? 'checked' : '';          const _div = '<' + '/div>';          const _span = '<' + '/span>';          html += `\x3Cdiv class="tg-df-ms-option">\x3Cinput type="checkbox" value="" ${allChecked} class="tg-df-brand-chk"> Any Brand${_div}`;                    values.forEach(v => {             if (!v.formatted_value || v.formatted_value === 'Any Brand') return;             const isChecked = this.selectedBrands.includes(v.formatted_value) ? 'checked' : '';             html += `\x3Cdiv class="tg-df-ms-option">\x3Cinput type="checkbox" value="${this.escapeHTML(v.formatted_value)}" ${isChecked} class="tg-df-brand-chk"> ${this.escapeHTML(v.formatted_value)} \x3Cspan style="color:var(--tg-df-text-muted);font-size:12px">(${v.count || 0})${_span}${_div}`;          });                    this.brandDropdown.innerHTML = html;                    // Re-bind listeners          const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');          chks.forEach(chk => {            chk.addEventListener('change', (e) => {              const val = e.target.value;              if (val === '') {                this.selectedBrands = [];              } else {                if (e.target.checked) {                   if (!this.selectedBrands.includes(val)) this.selectedBrands.push(val);                } else {                   this.selectedBrands = this.selectedBrands.filter(b => b !== val);                }              }                            if (this.selectedBrands.length === 0) {                 this.brandTrigger.innerText = 'Any Brand';              } else if (this.selectedBrands.length === 1) {                 this.brandTrigger.innerText = this.selectedBrands[0];              } else {                 this.brandTrigger.innerText = `${this.selectedBrands.length} Brands selected`;              }                            // Only call API if changed from UI interactions              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                 this.updateURLParams();                 this.fetchDeals(this.currentQuery);              }            });          });                    // Update button text on load          if (this.selectedBrands.length === 0) {             this.brandTrigger.innerText = 'Any Brand';          } else if (this.selectedBrands.length === 1) {             this.brandTrigger.innerText = this.selectedBrands[0];          } else {             this.brandTrigger.innerText = `${this.selectedBrands.length} Brands selected`;          }        }        updateURLParams() {          const url = new URL(window.location);          if (this.currentQuery && this.currentQuery !== 'Gaming laptops') {            url.searchParams.set('q', this.currentQuery);          } else {            url.searchParams.delete('q');            url.searchParams.delete('search');            url.searchParams.delete('query');          }                    if (this.regionSelect && this.regionSelect.value !== 'auto') {            url.searchParams.set('region', this.regionSelect.value);          } else {            url.searchParams.delete('region');          }                    if (this.retailerSelect && this.retailerSelect.value) {            url.searchParams.set('retailer', this.retailerSelect.value);          } else {            url.searchParams.delete('retailer');          }                    if (this.selectedBrands && this.selectedBrands.length > 0) {            url.searchParams.set('brands', this.selectedBrands.join(','));          } else {            url.searchParams.delete('brands');          }                    if (this.offerTypeSelect && this.offerTypeSelect.value) {            url.searchParams.set('offer_type', this.offerTypeSelect.value);          } else {            url.searchParams.delete('offer_type');          }                    if (this.viewModeSelect && this.viewModeSelect.value !== 'auto') {            url.searchParams.set('view_mode', this.viewModeSelect.value);          } else {            url.searchParams.delete('view_mode');          }                    if (this.rowsSelect && this.rowsSelect.value !== '12') {            url.searchParams.set('rows', this.rowsSelect.value);          } else {            url.searchParams.delete('rows');          }                    const min = this.customPriceMin ? this.customPriceMin.value : '';          const max = this.customPriceMax ? this.customPriceMax.value : '';          if (min || max) {             url.searchParams.set('price', `${min}_${max}`);          } else if (this.priceFilter && this.priceFilter.value !== 'all') {            url.searchParams.set('price', this.priceFilter.value);          } else {            url.searchParams.delete('price');          }                    if (this.discountFilter && this.discountFilter.value !== 'all' && this.discountFilter.value !== '0') {            const v = parseInt(this.discountFilter.value);            if (!isNaN(v) && v > 0) {               const ratio = (100 - v) / 100;               url.searchParams.set('min_discount_ratio', ratio.toString());            }          } else {            url.searchParams.delete('min_discount_ratio');          }                    if (this.sortSelect && this.sortSelect.value !== 'discount_desc') {            url.searchParams.set('sort', this.sortSelect.value);          } else {            url.searchParams.delete('sort');          }                    if (this.dealModeToggle && this.dealModeToggle.checked) {            url.searchParams.set('deal_mode', 'true');          } else {            url.searchParams.delete('deal_mode');          }                    window.history.replaceState({}, '', url);        }        bindEvents() {          const roundels = this.root.querySelectorAll('.tg-df-carousel-cat.original-hardcoded');          roundels.forEach(r => {             r.addEventListener('click', () => {                const q = r.getAttribute('data-query');                const pr = r.getAttribute('data-pr');                if (typeof trackHawkEvent !== 'undefined') {                     trackHawkEvent({                         clickType: "CC",                         widgetId: this.widgetId,                         productCategoryName: "deals",                         zeroBasedProductIndexOrNull: null,                         totalDealsOrProducts: null,                         areaClicked: "Category Roundel",                         revenueId: this.revenueId,                         isoCurrencyCode: typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD',                         queryName: q,                         widgetTypeName: this.widgetTypeName                     });                 }                this.currentQuery = q;                const label = this.root.querySelector('#tg-df-carousel-title-label');                if (label) label.textContent = 'Best ' + q;                if (this.priceFilter) this.priceFilter.value = pr || 'all';                if (this.discountFilter) this.discountFilter.value = '5';                if (this.searchInput) this.searchInput.value = q;                                roundels.forEach(ro => ro.classList.remove('active'));                r.classList.add('active');                this.fetchDeals(this.currentQuery);             });          });          const discBtns = this.root.querySelectorAll('.tg-df-carousel-filter-btn');          discBtns.forEach(b => {             b.addEventListener('click', () => {                const d = b.getAttribute('data-d');                const pr = b.getAttribute('data-pr');                const ot = b.getAttribute('data-ot');                let label = b.innerText ? b.innerText.trim() : '';                let filterType = 'unknown';                let filterVal = 'unknown';                if (d !== null) { filterType = 'discount'; filterVal = d; }                else if (pr !== null) { filterType = 'price'; filterVal = pr; }                else if (ot !== null) { filterType = 'offertype'; filterVal = ot; }                if (typeof trackElementInteraction === 'function') trackElementInteraction({ id: `filter-${filterType}-${filterVal}`, name: 'Filter Button', label: label });                                if (d !== null) {                   if (this.discountFilter) this.discountFilter.value = this.discountFilter.value === d ? '0' : d;                } else if (pr !== null) {                   if (this.priceFilter) this.priceFilter.value = this.priceFilter.value === pr ? 'all' : pr;                } else if (ot !== null) {                   if (this.offerTypeSelect) this.offerTypeSelect.value = this.offerTypeSelect.value === ot ? 'all' : ot;                } else {                   if (this.discountFilter) this.discountFilter.value = '0';                   if (this.priceFilter) this.priceFilter.value = 'all';                   if (this.offerTypeSelect) this.offerTypeSelect.value = 'all';                }                if (d === null && pr === null && ot === null && b.getAttribute("data-type") !== "custom") {                   discBtns.forEach(ro => ro.classList.remove('active'));                   b.classList.add('active');                } else if (b.getAttribute("data-type") !== "custom") {                   // Only operate on hardcoded buttons (those without data-type)                   discBtns.forEach(ro => {                      if (!ro.getAttribute('data-d') && !ro.getAttribute('data-pr') && !ro.getAttribute('data-ot') && ro.getAttribute('data-type') !== 'custom') ro.classList.remove('active');                   });                                      let makeActive = true;                   if (d !== null) {                       if (b.classList.contains('active')) makeActive = false;                       discBtns.forEach(ro => { if (ro.getAttribute('data-d') !== null && ro.getAttribute('data-type') !== 'custom') ro.classList.remove('active') });                   } else if (pr !== null) {                       if (b.classList.contains('active')) makeActive = false;                       discBtns.forEach(ro => { if (ro.getAttribute('data-pr') !== null && ro.getAttribute('data-type') !== 'custom') ro.classList.remove('active') });                   } else if (ot !== null) {                       if (b.classList.contains('active')) makeActive = false;                       discBtns.forEach(ro => { if (ro.getAttribute('data-ot') !== null && ro.getAttribute('data-type') !== 'custom') ro.classList.remove('active') });                   }                                      if (makeActive) b.classList.add('active');                                      // Check if anything is active, if not activate "All"                   let anyActive = false;                   discBtns.forEach(ro => { if (ro.classList.contains('active') && ro.getAttribute('data-type') !== 'custom') anyActive = true; });                   if (!anyActive) {                       discBtns.forEach(ro => { if (!ro.getAttribute('data-d') && !ro.getAttribute('data-pr') && !ro.getAttribute('data-ot') && ro.getAttribute('data-type') !== 'custom') ro.classList.add('active'); });                   }                }                                this.fetchDeals(this.currentQuery);             });          });          if (this.brandTrigger && this.brandDropdown) {            this.brandTrigger.addEventListener('click', () => {              this.brandDropdown.classList.toggle('active');            });            document.addEventListener('click', (e) => {              if (this.brandFilterWrapper && !e.composedPath().includes(this.brandFilterWrapper)) {                this.brandDropdown.classList.remove('active');              }            });          }          let debounceTimer;          if(this.searchInput) {            this.searchInput.addEventListener('input', (e) => {              clearTimeout(debounceTimer);              const query = e.target.value.trim();              this.currentQuery = query;              if (this.getViewMode() === 'savings_squad' && this.autocompleteDropdown && this.airedaleTags && query.length > 0) {                 const matches = this.airedaleTags.filter(t => t.toLowerCase().includes(query.toLowerCase()) && t.toLowerCase() !== query.toLowerCase()).slice(0, 5);                 if (matches.length > 0) {                    this.autocompleteDropdown.innerHTML = matches.map(m => `\x3Cdiv class="tg-df-autocomplete-item" data-tag="${this.escapeHTML(m)}">${this.escapeHTML(m)}<` + `/div>`).join('');                    this.autocompleteDropdown.classList.add('active');                 } else {                    this.autocompleteDropdown.classList.remove('active');                 }              } else if (this.autocompleteDropdown) {                 this.autocompleteDropdown.classList.remove('active');              }              debounceTimer = setTimeout(() => {                this.updateURLParams();                if (query.length > 2) {                  this.fetchDeals(query);                } else if (query.length === 0) {                  this.deals = [];                  this.render();                }              }, 400);            });            this.searchInput.addEventListener('keypress', (e) => {              if (e.key === 'Enter') {                if (this.autocompleteDropdown) this.autocompleteDropdown.classList.remove('active');                clearTimeout(debounceTimer);                const query = e.target.value.trim();                this.currentQuery = query;                this.activeDealTag = null;                trackElementInteraction({ id: 'search-submit', name: 'Ask', label: 'Ask (main search)', text: query });                this.updateURLParams();                if (query.length > 2 || (this.getViewMode() === 'savings_squad')) {                   this.fetchDeals(query);                }              }            });          }          if (this.autocompleteDropdown) {             this.autocompleteDropdown.addEventListener('click', (e) => {                const item = e.target.closest('.tg-df-autocomplete-item');                if (item) {                   const tag = item.getAttribute('data-tag');                   this.currentQuery = tag;                   if (this.searchInput) this.searchInput.value = tag;                   this.activeDealTag = tag;                   this.autocompleteDropdown.classList.remove('active');                   this.updateURLParams();                   this.fetchDeals(tag);                }             });             document.addEventListener('click', (e) => {               if (this.autocompleteDropdown && this.searchInput && !e.composedPath().includes(this.searchInput) && !e.composedPath().includes(this.autocompleteDropdown)) {                 this.autocompleteDropdown.classList.remove('active');               }             });          }          if (this.searchBtn) {            this.searchBtn.addEventListener('click', () => {              if (this.autocompleteDropdown) this.autocompleteDropdown.classList.remove('active');              clearTimeout(debounceTimer);              const query = this.searchInput.value.trim();              trackElementInteraction({ id: 'search-submit', name: 'Ask', label: 'Ask (main search)', text: query });              this.activeDealTag = null;              this.currentQuery = query;              this.updateURLParams();              if (query.length > 2 || (this.getViewMode() === 'savings_squad')) {                 this.fetchDeals(query);              }            });          }          if(this.sortSelect) this.sortSelect.addEventListener('change', () => {            trackElementInteraction({ id: `sort-option-${this.sortSelect.value}`, name: 'Sort', label: `Sort: ${this.sortSelect.options[this.sortSelect.selectedIndex].text}` });            this.updateURLParams();            if (this.deals.length > 0) {              this.sortData();              this.render();            }          });                    const priceFilter = this.root.querySelector('#tg-df-price-filter');          if (priceFilter) {            this.priceFilter = priceFilter;            this.priceFilter.addEventListener('change', () => {              trackElementInteraction({ id: `filter-price-${this.priceFilter.value}`, name: 'Price', label: this.priceFilter.options[this.priceFilter.selectedIndex].text });              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              } else {                this.render();              }            });          }          const updateCustomPrice = () => {             this.updateURLParams();             if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);             } else {                this.render();             }          };          if (this.customPriceMin) {             this.customPriceMin.addEventListener('change', updateCustomPrice);             this.customPriceMin.addEventListener('keypress', (e) => {                if (e.key === 'Enter') updateCustomPrice();             });          }          if (this.customPriceMax) {             this.customPriceMax.addEventListener('change', updateCustomPrice);             this.customPriceMax.addEventListener('keypress', (e) => {                if (e.key === 'Enter') updateCustomPrice();             });          }          const discountFilter = this.root.querySelector('#tg-df-discount-filter');          if (discountFilter) {            this.discountFilter = discountFilter;            this.discountFilter.addEventListener('change', () => {              trackElementInteraction({ id: `filter-discount-${this.discountFilter.value}`, name: 'Discount', label: this.discountFilter.options[this.discountFilter.selectedIndex].text });              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              } else {                this.render();              }            });          }          if (this.categoryFilter) {            this.categoryFilter.addEventListener('change', (e) => {               const val = e.target.value === 'all' ? null : e.target.value;               this.activeDealTag = val;               this.fetchSavingsSquad();            });          }                    if (this.settingsToggle) {            this.settingsToggle.addEventListener('click', () => {              const o = this.settingsPanel.classList.toggle('active');              this.settingsBackdrop.classList.toggle('active');              if (o) trackElementInteraction({ id: 'filter-open', name: 'Filters', label: 'Open filters' });            });          }                    if (this.settingsBackdrop) {            this.settingsBackdrop.addEventListener('click', () => {              this.settingsPanel.classList.remove('active');              this.settingsBackdrop.classList.remove('active');            });          }                    if (this.regionSelect) {            this.regionSelect.addEventListener('change', () => {              trackElementInteraction({ id: `filter-region-${this.regionSelect.value}`, name: 'Region', label: this.regionSelect.options[this.regionSelect.selectedIndex].text });              this.updateURLParams();              this.updatePriceDropdownCurrency();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              }            });          }                    if (this.retailerSelect) {            this.retailerSelect.addEventListener('change', () => {              trackElementInteraction({ id: `filter-merchant-${this.retailerSelect.value}`, name: 'Retailer', label: this.retailerSelect.options[this.retailerSelect.selectedIndex].text });              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              }            });          }                    if (this.offerTypeSelect) {            this.offerTypeSelect.addEventListener('change', () => {              trackElementInteraction({ id: `filter-offertype-${this.offerTypeSelect.value}`, name: 'Offer Type', label: this.offerTypeSelect.options[this.offerTypeSelect.selectedIndex].text });              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              }            });          }                    if (this.viewModeSelect) {            this._prevViewMode = this.viewModeSelect.value;            this.viewModeSelect.addEventListener('change', () => {              trackElementInteraction({ id: `filter-viewmode-${this.viewModeSelect.value}`, name: 'View Mode', label: this.viewModeSelect.options[this.viewModeSelect.selectedIndex].text });                            // Reset all active toggles and filters to prevent config carry-over              this.selectedBrands = [];              if (this.brandTrigger) this.brandTrigger.innerText = 'Select Brands';              if (this.brandDropdown) {                const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');                chks.forEach(chk => { chk.checked = false; });              }              if (this.priceFilter) this.priceFilter.value = 'all';              if (this.customPriceMin) this.customPriceMin.value = '';              if (this.customPriceMax) this.customPriceMax.value = '';              if (this.sortSelect) this.sortSelect.value = this.viewModeSelect.value === 'savings_squad' ? 'date_desc' : 'discount_desc';              if (this.discountFilter) this.discountFilter.value = '0';              if (this.retailerSelect) this.retailerSelect.value = '';              if (this.offerTypeSelect) this.offerTypeSelect.value = '';              if (this.rowsSelect) this.rowsSelect.value = '12';              if (this.categoryFilter) this.categoryFilter.value = 'all';              this.activeDealTag = null;              this.updateURLParams();              this.applyLayoutMode();                            if (this.getViewMode() === 'savings_squad' || this._prevViewMode === 'savings_squad') {                this.fetchDeals(this.currentQuery);              } else {                this.render();              }              this._prevViewMode = this.viewModeSelect.value;            });          }                    if (this.rowsSelect) {            this.rowsSelect.addEventListener('change', () => {              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              }            });          }                    if (this.dealModeToggle) {            this.dealModeToggle.addEventListener('change', () => {              this.updateURLParams();              this.render();            });          }          if (this.editorModeToggle) {             this.editorModeToggle.addEventListener('change', (e) => {                this.editorMode = e.target.checked;                this.render();                this.updateFloatingCopyBar();             });          }          if (this.editorCopyBtn) {             this.editorCopyBtn.addEventListener('click', () => {                this.copySelectedDealsToCMS();             });          }          if (this.editorClearBtn) {             this.editorClearBtn.addEventListener('click', () => {                this.selectedDeals.clear();                this.render();                this.updateFloatingCopyBar();             });          }          if (this.grid) {            this.grid.addEventListener('change', (e) => {               if (e.target.classList.contains('tg-df-deal-checkbox')) {                  const dealId = e.target.getAttribute('data-id');                  if (e.target.checked) {                     const dealObj = this.deals.find(d => d.id === dealId);                     if (dealObj) this.selectedDeals.set(dealId, dealObj);                  } else {                     this.selectedDeals.delete(dealId);                  }                  this.updateFloatingCopyBar();               }            });            this.grid.addEventListener('click', (e) => {              const dealCard = e.target.closest('[data-action="deal-click"]');              const similarCard = e.target.closest('[data-action="view-similar-click"]');              const cardLink = dealCard || similarCard;              if (cardLink) {                const productName = cardLink.getAttribute('data-product-name');                const merchantName = cardLink.getAttribute('data-merchant-name');                const productId = cardLink.getAttribute('data-analytics-id');                const price = parseFloat(cardLink.getAttribute('data-price')) || null;                const prevPriceStr = cardLink.getAttribute('data-previous-price');                const previousPrice = prevPriceStr ? parseFloat(prevPriceStr) : null;                const originalLink = cardLink.getAttribute('data-original-link');                const rewrittenLink = cardLink.getAttribute('href');                const revenueId = cardLink.getAttribute('data-revenue-id');                const index = parseInt(cardLink.getAttribute('data-index'), 10) || 0;                const inStock = cardLink.getAttribute('data-in-stock') === 'true';                const totalText = cardLink.getAttribute('data-total');                const totalDeals = parseInt(totalText, 10) || 0;                const productCategoryName = 'deals';                const trackingParams = {                  widgetId: this.widgetId,                  productCategoryName: productCategoryName,                  product: {                    modelId: cardLink.getAttribute('data-model-id') || null,                    matchId: cardLink.getAttribute('data-match-id') || null,                    brand: cardLink.getAttribute('data-model-brand') || null,                    parent: cardLink.getAttribute('data-model-parent') || null,                    name: productName,                    price: price,                    previousPrice: previousPrice,                    link: rewrittenLink,                    originalLink: originalLink,                    inStock: inStock                  },                  zeroBasedProductIndexOrNull: index,                  totalDealsOrProducts: totalDeals,                   merchant: {                    id: cardLink.getAttribute('data-merchant-id') || null,                    network: cardLink.getAttribute('data-merchant-network') || null,                    url: cardLink.getAttribute('data-merchant-url') || null,                    name: merchantName                  },                  revenueId: revenueId,                  widgetTypeName: this.widgetTypeName,                  isoCurrencyCode: normalizeCurrency(this.escapeHTML(cardLink.getAttribute('data-currency') || '$'))                };                if (dealCard) {                  trackDealClick(trackingParams);                } else {                  trackViewSimilarClick(trackingParams);                }              }              const couponsBtn = e.target.closest('[data-action="coupons-click"]');              if (couponsBtn) {                trackElementInteraction({                  id: 'product-card-show-coupons',                  name: 'Coupons',                  label: `Product card coupons: ${couponsBtn.getAttribute('data-merchant')}`                });              }            });          }          this.setupScrollListeners();        }        setupScrollListeners() {          const containers = [             this.root.querySelector('.tg-df-carousel-roundels'),             this.root.querySelector('.tg-df-carousel-filters-wrap'),             this.root.querySelector('#tg-df-grid')          ];                    containers.forEach(container => {             if (!container) return;                          const checkScroll = () => {                if (!container.parentElement) return;                const leftBtn = container.parentElement.querySelector('.tg-df-carousel-scroll-left');                const rightBtn = container.parentElement.querySelector('.tg-df-carousel-scroll-right');                                if (leftBtn) {                   if (container.scrollLeft <= 5) leftBtn.style.display = 'none';                   else leftBtn.style.display = 'flex';                }                                if (rightBtn) {                   if (container.scrollWidth <= container.clientWidth) {                       rightBtn.style.display = 'none';                   } else if (container.scrollLeft >= container.scrollWidth - container.clientWidth - 5) {                       rightBtn.style.display = 'none';                   } else {                       rightBtn.style.display = 'flex';                   }                }             };                          container.addEventListener('scroll', checkScroll);             checkScroll();                          window.addEventListener('resize', checkScroll);                          const observer = new MutationObserver(checkScroll);             observer.observe(container, { childList: true, subtree: true, characterData: false });          });        }        get widgetTypeName() {          const mode = this.viewModeSelect ? this.viewModeSelect.value : (this.viewModeOverride || 'auto');          switch(mode) {              case 'carousel': return 'Carousel';              case 'savings_squad': return 'Savings Squad';              case 'grid': return 'Grid';              case 'row': return 'Row';              default: return 'Auto Collection';          }        }        getRowsLimit() {          if (this.rowsSelect && this.rowsSelect.value) return parseInt(this.rowsSelect.value, 10);          let configSource = window.location.search;          if (this.hostContainer && this.hostContainer.hasAttribute('data-widget-config')) {             configSource = this.hostContainer.getAttribute('data-widget-config');          } else if (typeof window !== 'undefined' && window.__WIDGET_CONFIG__) {             configSource = window.__WIDGET_CONFIG__;          }          const params = new URLSearchParams(configSource);          if (params.has('rows')) return parseInt(params.get('rows'), 10) || 12;          return 12;        }        getAreaCode() {          if (this.regionSelect && this.regionSelect.value) {            if (this.regionSelect.value === 'auto') return null;            return this.regionSelect.value;          }          let area = null;          try {            const locale = window.navigator.language || window.navigator.userLanguage;            if (locale && locale.includes('-')) {              area = locale.split('-')[1].toUpperCase();            } else if (locale && locale.length === 2) {              if (locale.toUpperCase() === 'EN') { area = 'US'; }              else { area = locale.toUpperCase(); }            }          } catch (e) { /* Ignore */ }                    // Map to known valid options or fallback to US          const valid = ['US', 'GB', 'CA', 'AU', 'DE', 'FR', 'IT'];          if (area === 'UK') area = 'GB';          if (valid.includes(area)) {             return area;          }          return 'US';        }                async loadCarouselSpreadsheet() {          try {              const parseCSVRow = (str) => {                  let result = [], cur = '', inQuotes = false;                  for (let i = 0; i < str.length; i++) {                      let char = str[i];                      if (inQuotes) {                          if (char === '"') {                              if (str[i + 1] === '"') { cur += '"'; i++; }                              else { inQuotes = false; }                          } else { cur += char; }                      } else {                          if (char === '"') { inQuotes = true; }                          else if (char === ',') { result.push(cur); cur = ''; }                          else { cur += char; }                      }                  }                  result.push(cur); return result;              };              const parseCSV = (str) => {                  const rows = []; let curRow = '', inQuotes = false;                  for (let i = 0; i < str.length; i++) {                      let char = str[i];                      if (char === '"') inQuotes = !inQuotes;                      if ((char === '\n' || char === '\r') && !inQuotes) {                          if (char === '\r' && str[i+1] === '\n') i++;                          if (curRow) rows.push(parseCSVRow(curRow));                          curRow = '';                      } else { curRow += char; }                  }                  if (curRow) rows.push(parseCSVRow(curRow));                  return rows;              };              const preloadedCSV = decodeURIComponent(escape(atob("LCwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNQ0KUm91bmRlbCB0ZXh0LEFsbCxUVnMsRm9vdHdlYXIsQXBwYXJlbCxNYXR0cmVzZXMsQXBwbGlhbmNlcyxXZWFyYWJsZSB0ZWNoLEhlYWRwaG9uZXMsU21hcnQgSG9tZSxTcGVha2VycyxMYXB0b3BzLFRhYmxldHMsQ29tcHV0aW5nLFBob25lcyxHYW1pbmcsTGVnbw0KUm91bmRlbCBpbWFnZSxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Byb2R1Y3RzL2Nhcm91c2VsL2FpLnBuZyxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Byb2R1Y3RzL2Nhcm91c2VsL3R2cy5wbmcsaHR0cHM6Ly9pbWFnZXMuZmllLmZ1dHVyZWNkbi5uZXQvcHJvZHVjdHMvN2IzYTIyNGIwNzk2M2M2MjdiNmI5MDliZDc4MzM4MzZlMDJmZjgxOS5qcGcud2VicCxodHRwczovL2ltYWdlcy5maWUuZnV0dXJlY2RuLm5ldC9wcm9kdWN0cy84NGRhYzVkNDhlZDJkNDQ4NTU5ZWJhNjdhY2U4MzE0Y2M2N2NjZDk0LmpwZy53ZWJwLGh0dHBzOi8vd3d3LnRvbXNndWlkZS5jb20vcHJvZHVjdHMvY2Fyb3VzZWwvbWF0dHJlc3Nlcy5wbmcsaHR0cHM6Ly9pbWFnZXMuZmllLmZ1dHVyZWNkbi5uZXQvcHJvZHVjdHMvNzY4ZTk3Y2ViMDcxODAxZmFlMjA5MTBkMDgyMGIxNmY3NDdhZjkzOS5qcGcud2VicCxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Byb2R1Y3RzL2Nhcm91c2VsL3dlbGxuZXNzLnBuZyxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Byb2R1Y3RzL2Nhcm91c2VsL2hlYWRwaG9uZXMuanBnLGh0dHBzOi8vaW1hZ2VzLmZpZS5mdXR1cmVjZG4ubmV0L3Byb2R1Y3RzLzg5NTM1YmVlYmUyMGRiYmQ0YTM0NmQ2ZDZiZGZlOTFkOGE4ODRhMjEuanBnLndlYnAsaHR0cHM6Ly93d3cudG9tc2d1aWRlLmNvbS9wcm9kdWN0cy9jYXJvdXNlbC9hdWRpby5qcGcsaHR0cHM6Ly93d3cudG9tc2d1aWRlLmNvbS9wcm9kdWN0cy9jYXJvdXNlbC9sYXB0b3BzLmpwZyxodHRwczovL2ltYWdlcy5maWUuZnV0dXJlY2RuLm5ldC9wcm9kdWN0cy8yMzk3NTY0ZWQ3YTVmZjk0N2U5YjZiMzBlNTRmNDc0OTRiODQxZjg5LmpwZy53ZWJwLGh0dHBzOi8vd3d3LnRvbXNndWlkZS5jb20vcHJvZHVjdHMvY2Fyb3VzZWwvY29tcHV0aW5nLmpwZyxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Byb2R1Y3RzL2Nhcm91c2VsL3Bob25lcy5wbmcsaHR0cHM6Ly93d3cudG9tc2d1aWRlLmNvbS9wcm9kdWN0cy9jYXJvdXNlbC9nYW1pbmcucG5nLGh0dHBzOi8vaW1hZ2VzLmZpZS5mdXR1cmVjZG4ubmV0L3Byb2R1Y3RzLzRmNmM2MjFjYWMwYmMxYTg1ZDU5M2UzNTk0YmE1YjM0OWVmZmQyOTIuanBnLndlYnANClNlYXJjaCBRdWVyeSxFdmVyeXRoaW5nLFRlbGV2aXNpb25zLCJTbmVha2VycywgcnVubmluZyBzaG9lcywgc2FuZGFscyIsQ2xvdGhpbmcsTWF0dHJlc3NlcyxIb21lIEFwcGxpYW5jZXMsV2VhcmFibGVzICYgRml0bmVzcyBUZWNoLEhlYWRwaG9uZXMsSG9tZSBUZWNoLFNwZWFrZXJzLExhcHRvcHMsVGFibGV0cyxDb21wdXRpbmcsUGhvbmVzLEdhbWluZyxDb25zdHJ1Y3Rpb24gVG95cw0KRGlzY291bnQgQW1vdW50LG1pbiA1JSxtaW4gMTAlLG1pbiA1JSxtaW4gNSUsbWluIDUlLG1pbiA1JSxtaW4gNSUsbWluIDUlLG1pbiA1JSxtaW4gNSUsbWluIDUlLG1pbiA1JSxtaW4gNSUsbWluIDUlLG1pbiA1JSxtaW4gNSUNClByaWNlIFJhbmdlLCwsLCxtaW4gJDQwMCwsLCxtaW4gJDI1LCxtaW4gJDMwMCwsLG1pbiAkMTAwLCwNCkJyYW5kIFNlbGVjdGlvbiwsLCwsLCwsLCwsLCwsLCwNCkZpbHRlciBidXR0b25zLCwsLCwsLCwsLCwsLCwsLA0KMSxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMNCjIsQW1hem9uIGRlYWxzLFVuZGVyICQxMDAwLDUwJSBvZmYsQWRpZGFzLEFtYXpvbiBkZWFscyxBbWF6b24gZGVhbHMsNTAlIG9mZixBbWF6b24gZGVhbHMsQW1hem9uIGRlYWxzLEFtYXpvbiBkZWFscyxBbWF6b24gZGVhbHMsQW1hem9uIGRlYWxzLEFtYXpvbiBkZWFscyxBbWF6b24gZGVhbHMsQW1hem9uIGRlYWxzLEFtYXpvbiBkZWFscw0KMyxPdmVyICQ0MDAsVW5kZXIgJDUwMCxIb2thLE5pa2UsU2FhdHZhLE5pbmphLDQwJSBvZmYsSkxhYiwsSkJMLERlbGwsLEFzdXMsQXBwbGUsQ29uc29sZXMsU3RhciBXYXJzDQo0LFVuZGVyICQxMDAwLDUwJSBvZmYsU2tlY2hlcnMsVW5kZXIgQXJtb3VyLEhlbGl4LFNoYXJrLEdhcm1pbixBbmtlciBTb3VuZGNvcmUsUmluZyxTb25vcyxBcHBsZSxBcHBsZSxUUC1saW5rLFNhbXN1bmcsQWNjZXNzb3JpZXMsVW5kZXIgJDI1DQo1LFVuZGVyICQ1MDAsTEcsQXNpY3MsQ29sdW1iaWEsRHJlYW1DbG91ZCxLZXVyaWcsQXBwbGUsU29ueSxHb3ZlZSxUcmliaXQsTGVub3ZvLFNhbXN1bmcsRWVybyxHb29nbGUsR2FtZXMsVW5kZXIgJDUwDQo2LDUwJSBvZmYsU2Ftc3VuZyxOaWtlLFBhdGFnb25pYSxOZWN0YXIsRGUnTG9uZ2hpLEFtYXpmaXQsQXBwbGUsS2FzYSBzbWFydCxTb255LEFsaWVud2FyZSxUQ0wsTmV0Z2VhcixNb3Rvcm9sYSxOaW50ZW5kbyxCb3RhbmljYWxzDQo3LEFtYXpvbixIaXNlbnNlLE5ldyBCYWxhbmNlLEFyYyd0ZXJ5eCxUZW1wdXItcGVkaWMsRHlzb24sRml0Yml0LEJlYXRzLFBoaWxpcHMgSHVlLEFua2VyLEFjZXIsT25lUGx1cyxEZWxsLE9uZVBsdXMsU29ueSxEaXNuZXkNCjgsQXBwbGUsVENMLEFkaWRhcyxDYXJoYXJ0dCxCZWFyLEJpc3NlbGwsU2Ftc3VuZyxFYXJmdW4sQmxpbmssQmVhdHMsTVNJLE1pY3Jvc29mdCxBY2VyLE5vdGhpbmcsWGJveCxNYXJ2ZWwNCjksLFNvbnksU2F1Y29ueSxUaGUgTm9ydGggRmFjZSxTaWVuYSxOdXRyaWJ1bGxldCxPdXJhLFNhbXN1bmcsR29vZ2xlIE5lc3QgLE1hcnNoYWxsLFNhbXN1bmcsTGVub3ZvLExlbm92bywsLFBva2Vtb24NCjEwLCxSb2t1LEJpcmtlbnN0b2NrLENSWiBZb2dhLFdpbmtCZWRzLEJsYWNrIGFuZCBEZWNrZXIsUmluZ2Nvbm4sQ01GLEV1ZnksU2Ftc3VuZyxNaWNyb3NvZnQsUmVNYXJrYWJsZSxBbGllbndhcmUsLCwNCjExLCwsQnJvb2tzLFRoZSBHeW0gUGVvcGxlLEJyb29rbHluIGJlZGRpbmcsTmVzcHJlc3NvLCwxTW9yZSxBcmxvLCxSYXplciwsQ29yc2FpciwsLA0KMTIsLCxDcm9jcywsRWlnaHQgU2xlZXAsQ3Vpc2luYXJ0LCxKQkwsLCwsLEhQLCwsDQpOb3RlcywsLCwsLCwsLCwsLCwsLCwNCiwsIlByaW9yaXRpc2UgYmlnZ2VzdCAlLyQgZGlzY291bnQsIFR2cyB3aXRoIH41MCUgb2ZmIGhhdmUgYmVlbiB0aGUgbW9zdCBwb3B1bGFyIGV2ZW4gaWYgdGhleSBhcmUgc3RpbGwgZXhwZW5zaXZlIiwiTm8gcGF0dGVybiB0byBwcmljaW5nL2Rpc2NvdW50LCByZWFkZXJzIG1haW5seSBzaG9wIGJ5IGJyYW5kL3JlY29nbmlzYWJsZSBzaG9lcyIsIk5vIHBhdHRlcm4gdG8gcHJpY2luZy9kaXNjb3VudCwgcmVhZGVycyBtYWlubHkgc2hvcCBieSBicmFuZCIsIkEgbGFiZWwgd2lsbCBkZWZpbml0ZWx5IGhlbHAgaGVyZSBlLmcuIGJlc3QgZm9yIHNpZGUgc2xlZXBlciwgYmVzdCBtZW1vcnkgZm9hbSIsIkFwcGxpYW5jZXMgaXMgYSBiaWcgY2F0ZWdvcnksIGlzIGl0IHBvc3NpYmxlIHRvIHNwbGl0IGludG8ga2l0Y2hlbiBhcHBsaWFuY2VzLCBmbG9vcmNhcmUsIGFpciBoZWFsdGgvY29vbGluZz8gT3Igc2ltaWxhciIsIkZvY3VzIG9uIHZhbHVlIGZvciBtb25leSwgR2FybWlucyB3aXRoIH41MCUgb2ZmIGhhdmUgYmVlbiBwb3B1bGFyIGV2ZW4gdGhvdWdoIHRoZXkgYXJlIHN0aWxsICQ1MDAiLCwsLCxJbmNsdWRlIEtpbmRsZXMsSSB3b3VsZCBpbmNsdWRlIHdpZmkgcm91dGVycyBoZXJlIGluc3RlYWQgb2Ygc21hcnQgaG9tZSxDYW4gd2Ugc3VyZmFjZSBwaG9uZSBwcm92aWRlciBkZWFscz8gVC1tb2JpbGUgYW5kIHZlcml6b24gd291bGQgbWFrZSBhIGxvdCBtb3JlIG1vbmV5IHRoYW4gQW1hem9uLCwNCiwsaGF2aW5nIGEgJ2Jlc3QgZm9yJyBsYWJlbCB3b3VsZCBiZSBoZWxwZnVsIGUuZy4gYmVzdCBmb3IgYnJpZ2h0IHJvb20sQ2FuIHdlIHN0b3Aga2lkcyBzaG9lcyBmcm9tIHB1bGxpbmcgdGhyb3VnaD8sIldpbGwgdGhpcyBpbmNsdWRlIGFjY2Vzc29yaWVzIGUuZy4gY2FwcywgYmFncywgaWYgc28gbWFrZSBzdXJlIHRoZXNlIGFyZSBtaXhlZCB0aHJvdWdob3V0IGNsb3RoaW5nIGRlYWxzIixXaWxsIHRoaXMgaW5jbHVkZSB0b3BwZXJzIGFuZCBwaWxsb3dzPyBTZWVpbmcgbW9yZSBtb21lbnR1bSB3aXRoIHRoaXMgY2F0ZWdvcnkgcmVjZW50bHkgc28gYSBiZWRkaW5nIHRhYiBtaWdodCB3b3JrLCwiTmVlZCB0byBtYWtlIHN1cmUgYmFuZHMsIHNjcmVlbiBwcm90ZWN0b3JzIGV0Yy4gZG9uJ3QgcHVsbCBpbnRvIGhlcmUiLCwsLCwsLCwsDQosLCJQcmlvcml0aXNlIDY1JycgYW5kIDU1JyBpbmNoIFRWcywgdGhlbiBiaWdnZXIgc2NyZWVucyBiZWZvcmUgdGhlIHNtYWxsZXIgc2l6ZXMiLCwsUXVlZW4gaXMgdGhlIG1vc3QgcG9wdWxhciBzaXplIGluIHRoZSBVUyAtIHByaW9yaXRpc2UgZGVhbHMgZm9yIHRoaXMgc2l6ZSwsLCwsLCwsLCwsDQosLCwsLCwsLCwsLCwsLCwsDQpDYXRlZ29yaWVzIHRvIGNvbnNpZGVyLCxQcm9kdWN0cyBpbmNsdWRlZCwsLCwsLCwsLCwsLCwsDQpVbmRlciAkNTA/LCxBaXIgdGFncywsLCwsLCwsLCwsLCwsDQosLFBvcnRhYmxlIGNoYXJnZXJzL3dpcmVsZXNzIGNoYXJnZXJzLCwsLCwsLCwsLCwsLCwNCiwsIldhdGVyIGJvdHRsZXMgKHN0YW5sZXlzLCBPd2FsYSwgSHlkcm8gZmxhc2ssIFlldGkpIiwsLCwsLCwsLCwsLCwsDQosLEhhbmQgaGVsZCBmYW5zLCwsLCwsLCwsLCwsLCwNCiwsLCwsLCwsLCwsLCwsLCwNCmhvbWUgb2ZmaWNlLCxvZmZpY2UgY2hhaXJzLCwsLCwsLCwsLCwsLCwNCiwsc3RhbmRpbmcgZGVza3MsLCwsLCwsLCwsLCwsLA0KLCxtb25pdG9ycywsLCwsLCwsLCwsLCwsDQosLEtleWJvYXJkcywsLCwsLCwsLCwsLCwsDQosLGRvY2tpbmcgc3RhdGlvbiwsLCwsLCwsLCwsLCwsDQosLCwsLCwsLCwsLCwsLCwsDQpHYW1pbmcsLENvbnNvbGVzLCwsLCwsLCwsLCwsLCwNCiwsQWNjZXNzb3JpZXMsLCwsLCwsLCwsLCwsLA0KLCxHYW1lcywsLCwsLCwsLCwsLCwsDQosLENvdWxkIGluY2x1ZGUgTGVnbz8sLCwsLCwsLCwsLCwsLA==")));              const text = preloadedCSV;              const parsed = parseCSV(text);                            const rowsByName = {};              let filterStart = -1;              parsed.forEach((rc, i) => {                 if (rc && rc.length > 0 && rc[0]) rowsByName[rc[0]] = rc;                 if (rc && rc.length > 0 && rc[0] === 'Filter buttons') filterStart = i;              });                            const cols = [];              if(rowsByName['Roundel text']) {                const headerRow = rowsByName['Roundel text'];                for(let col = 1; col < headerRow.length; col++) {                   let label = headerRow[col];                   if (!label) continue;                                      let q = rowsByName['Search Query'] && rowsByName['Search Query'][col] ? rowsByName['Search Query'][col] : '';                   let img = rowsByName['Roundel image'] && rowsByName['Roundel image'][col] ? rowsByName['Roundel image'][col] : '';                   let ds = rowsByName['Discount Amount'] && rowsByName['Discount Amount'][col] ? rowsByName['Discount Amount'][col] : '';                   let pr = rowsByName['Price Range'] && rowsByName['Price Range'][col] ? rowsByName['Price Range'][col] : '';                   let rt = rowsByName['Retailer'] && rowsByName['Retailer'][col] ? rowsByName['Retailer'][col] : '';                   let ot = rowsByName['Offer Type'] && rowsByName['Offer Type'][col] ? rowsByName['Offer Type'][col] : '';                                      let filters = [];                   if(filterStart > 0) {                     for(let r = filterStart + 1; r < parsed.length; r++) {                         if(!parsed[r] || parsed[r][0] === 'Notes' || parsed[r][0] === 'Categories to consider') break;                         let f = parsed[r][col];                         if(f) filters.push(f);                     }                   }                   cols.push({ label, img, q, ds, pr, rt, ot, filters });                }              }              this.carouselData = cols;              if (this.carouselData && this.carouselData.length > 0) {                 const isMatched = this.carouselData.some(c => c.q === this.currentQuery || c.label === this.currentQuery);                 if (!isMatched) {                    const first = this.carouselData[0];                    this.currentQuery = first.q || first.label;                    if (this.priceFilter) this.priceFilter.value = 'all';                    if (this.customPriceMin) this.customPriceMin.value = '';                    if (this.customPriceMax) this.customPriceMax.value = '';                    let dPr = first.pr || 'all';                    if (typeof dPr === 'string' && dPr !== 'all') {                       let prLower = dPr.toLowerCase();                       if (prLower.includes('min') || prLower.includes('over')) {                          let m = dPr.match(/(\d+)/);                          if (m && this.customPriceMin) this.customPriceMin.value = m[1];                       } else if (prLower.includes('max') || prLower.includes('under')) {                          let m = dPr.match(/(\d+)/);                          if (m && this.customPriceMax) this.customPriceMax.value = m[1];                       }                    }                    let dAm = '0';                    if(first.ds && typeof first.ds === 'string') {                       let m = first.ds.match(/(\d+)/);                       if(m) dAm = m[1];                    }                    if (this.discountFilter) this.discountFilter.value = dAm;                    if (this.offerTypeSelect) this.offerTypeSelect.value = first.ot || '';                    if (this.retailerSelect) this.retailerSelect.value = first.rt || '';                    this.selectedBrands = [];                    if (this.brandDropdown) {                        const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');                        chks.forEach(chk => chk.checked = false);                    }                    if (this.searchInput) this.searchInput.value = this.currentQuery;                 }              }              this.renderCarouselUI();          } catch(e){ console.warn(e); }        }                renderCarouselUI() {           const roundelWrapper = this.root.querySelector('.tg-df-carousel-roundels');           if(!roundelWrapper || !this.carouselData) return;                      let html = '';           this.carouselData.forEach(r => {              const q = r.q || r.label;              const isActive = (this.currentQuery === q || this.currentQuery === r.label) ? 'active' : '';              const imgHtml = r.img ? `\x3Cimg src="${r.img}" alt="${r.label}" />` : `\x3Csvg width="32" height="32" fill="#1F69FF" viewBox="0 0 24 24">\x3Cpath d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"/>\x3C/svg>`;              html += `                \x3Cdiv class="tg-df-roundel tg-df-carousel-cat ${isActive}" data-label="${this.escapeHTML(r.label)}">                  \x3Cdiv class="tg-df-roundel-img-box">${imgHtml}\x3C/div>                  \x3Cspan class="tg-df-roundel-label">${this.escapeHTML(r.label)}\x3C/span>                \x3C/div>              `;           });           roundelWrapper.innerHTML = html;                      // Rebind clicks           const roundels = this.root.querySelectorAll('.tg-df-carousel-cat');           roundels.forEach(rNode => {             rNode.addEventListener('click', () => {                const r = this.carouselData.find(c => c.label === rNode.getAttribute('data-label'));                 if(!r) return;                                  if (typeof trackHawkEvent !== 'undefined') {                     trackHawkEvent({                         clickType: "CC",                         widgetId: this.widgetId,                         productCategoryName: "deals",                         zeroBasedProductIndexOrNull: null,                         totalDealsOrProducts: null,                         areaClicked: "Category Roundel",                         revenueId: this.revenueId,                         isoCurrencyCode: typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD',                         queryName: r.label,                         widgetTypeName: this.widgetTypeName                     });                 }                this.currentQuery = r.q || r.label;                const labelTitle = this.root.querySelector('#tg-df-carousel-title-label');                if (labelTitle) labelTitle.textContent = 'Best ' + this.currentQuery;                if (this.priceFilter) this.priceFilter.value = 'all';                if (this.customPriceMin) this.customPriceMin.value = '';                if (this.customPriceMax) this.customPriceMax.value = '';                let dPr = r.pr || 'all';                if (typeof dPr === 'string' && dPr !== 'all') {                   let prLower = dPr.toLowerCase();                   if (prLower.includes('min') || prLower.includes('over')) {                      let m = dPr.match(/(\d+)/);                      if (m && this.customPriceMin) this.customPriceMin.value = m[1];                   } else if (prLower.includes('max') || prLower.includes('under')) {                      let m = dPr.match(/(\d+)/);                      if (m && this.customPriceMax) this.customPriceMax.value = m[1];                   }                }                                let discountAmount = '0';                if(r.ds && typeof r.ds === 'string') {                   let m = r.ds.match(/(\d+)/);                   if(m) discountAmount = m[1];                }                if (this.discountFilter) this.discountFilter.value = discountAmount;                if (this.offerTypeSelect) this.offerTypeSelect.value = r.ot || '';                if (this.retailerSelect) this.retailerSelect.value = r.rt || '';                                // Clear brands                    this.selectedBrands = [];                    if (this.brandDropdown) {                    const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');                    chks.forEach(chk => chk.checked = false);                }                                if (this.searchInput) this.searchInput.value = this.currentQuery;                                roundels.forEach(ro => ro.classList.remove('active'));                if (rNode) rNode.classList.add('active');                                this.renderCarouselFilters(r);                this.fetchDeals(this.currentQuery);             });           });                      // Auto-highlight active           const activeR = this.carouselData.find(c => c.q === this.currentQuery || c.label === this.currentQuery);           if(activeR) this.renderCarouselFilters(activeR);        }                renderCarouselFilters(r) {           const filtersWrap = this.root.querySelector('.tg-df-carousel-filters-wrap');           if(!filtersWrap) return;                      let html = `\x3Cbutton class="tg-df-carousel-filter-btn" data-type="all">All\x3C/button>`;                      r.filters.forEach(f => {              let fL = f.toLowerCase();              let icon = '';              let logic = `data-type="custom" data-v="${this.escapeHTML(f)}"`;              if (fL === 'amazon deals' || fL === 'prime deals') {                 html += `\x3Cbutton class="tg-df-carousel-filter-btn" ${logic}>\x3Cimg src="https://cdn.mos.cms.futurecdn.net/fwoVXvL79turN3Ph535m38-600-100.png" class="inactive-img" alt="" />\x3Cimg src="https://cdn.mos.cms.futurecdn.net/u75QjVpt3w2EsMimJiRo38-600-100.png" class="active-img" alt="" /> Prime deals\x3C/button>`;              } else if (fL === 'lightning deals') {                 html += `\x3Cbutton class="tg-df-carousel-filter-btn" ${logic}>\x3Cimg src="https://cdn.mos.cms.futurecdn.net/HqAui7w97ft2NPqBtQ5r38-600-100.png" class="inactive-img" alt="" />\x3Cimg src="https://cdn.mos.cms.futurecdn.net/yWPQ5yyQRhUwVKzGwYbh38-600-100.png" class="active-img" alt="" /> Lightning deals\x3C/button>`;              } else {                 if (fL.includes('lightning')) {                    icon = `\x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-zap">\x3Cpolygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2">\x3C/polygon>\x3C/svg>`;                 } else if (fL.includes('% off')) {                    icon = `\x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tag">\x3Cpath d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z">\x3C/path>\x3Ccircle cx="7.5" cy="7.5" r=".5" fill="currentColor">\x3C/circle>\x3C/svg>`;                 } else if (fL.includes('under') || fL.includes('min ')) {                    icon = `\x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-dollar-sign">\x3Cpath d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z">\x3C/path>\x3Cpath d="M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8">\x3C/path>\x3Cpath d="M12 18V6">\x3C/path>\x3C/svg>`;                 }                 html += `\x3Cbutton class="tg-df-carousel-filter-btn" ${logic}>${icon} ${this.escapeHTML(f)}\x3C/button>`;              }           });                      filtersWrap.innerHTML = html;                      const btns = filtersWrap.querySelectorAll('button');           btns.forEach(b => {             b.addEventListener('click', () => {                const type = b.getAttribute('data-type');                if (type === 'custom') {                   const v = b.getAttribute('data-v');                   if (typeof trackElementInteraction === 'function') trackElementInteraction({ id: `filter-custom-${(v||'').toLowerCase().replace(/[^a-z0-9]+/g, '-')}`, name: 'Custom Filter', label: v });                }                if (type === 'all') {                   if (typeof trackElementInteraction === 'function') trackElementInteraction({ id: 'filter-clear-all', name: 'Clear all', label: 'Clear all filters' });                   // reset everything                   btns.forEach(btn => btn.classList.remove('active'));                   b.classList.add('active');                                      // Reset prices                   if (this.priceFilter) this.priceFilter.value = 'all';                   if (this.customPriceMin) this.customPriceMin.value = '';                   if (this.customPriceMax) this.customPriceMax.value = '';                   let dPr = r.pr || 'all';                   if (typeof dPr === 'string' && dPr !== 'all') {                      let prLower = dPr.toLowerCase();                      if (prLower.includes('min') || prLower.includes('over')) {                         let m = dPr.match(/(\d+)/);                         if (m && this.customPriceMin) this.customPriceMin.value = m[1];                      } else if (prLower.includes('max') || prLower.includes('under')) {                         let m = dPr.match(/(\d+)/);                         if (m && this.customPriceMax) this.customPriceMax.value = m[1];                      }                   }                                      let discountAmount = '0';                   if(r.ds && typeof r.ds === 'string') {                      let m = r.ds.match(/(\d+)/);                      if(m) discountAmount = m[1];                   }                   if (this.discountFilter) this.discountFilter.value = discountAmount;                   if (this.offerTypeSelect) this.offerTypeSelect.value = r.ot || '';                   if (this.retailerSelect) this.retailerSelect.value = r.rt || '';                   this.selectedBrands = [];                   if (this.brandDropdown) {                     const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');                     chks.forEach(chk => chk.checked = false);                   }                } else {                   const v = b.getAttribute('data-v');                   const fL = v.toLowerCase();                                      let mapRet = ['amazon', 'walmart', 'best buy', 'target', 'john lewis', 'currys', 'argos'];                   const getCategory = (s) => {                      if (s === 'lightning deals' || s === 'amazon deals' || s === 'prime deals') return 'offer';                      if (s.includes('% off')) return 'discount';                      if (s.includes('under') || s.includes('over') || s.includes('min') || s.includes('max')) return 'price';                      if (mapRet.includes(s)) return 'retailer';                      return 'brand';                   };                   const cat = getCategory(fL);                   const wasActive = b.classList.contains('active');                   if (cat !== 'brand') {                      btns.forEach(btn => {                          if (btn === b) return;                          if (btn.getAttribute('data-type') === 'all') return;                          const bV = btn.getAttribute('data-v');                          if (!bV) return;                          if (getCategory(bV.toLowerCase()) === cat) btn.classList.remove('active');                      });                   }                   if (wasActive) b.classList.remove('active');                   else b.classList.add('active');                   let anyActive = Array.from(btns).some(btn => btn !== btns[0] && btn.classList.contains('active'));                   if (!anyActive) {                       btns[0].click();                       return;                   } else {                       btns[0].classList.remove('active');                   }                                      if (this.priceFilter) this.priceFilter.value = 'all';                   if (this.customPriceMin) this.customPriceMin.value = '';                   if (this.customPriceMax) this.customPriceMax.value = '';                   let dPr = r.pr || 'all';                   if (typeof dPr === 'string' && dPr !== 'all') {                      let prLower = dPr.toLowerCase();                      if (prLower.includes('min') || prLower.includes('over')) {                         let m = dPr.match(/(\d+)/);                         if (m && this.customPriceMin) this.customPriceMin.value = m[1];                      } else if (prLower.includes('max') || prLower.includes('under')) {                         let m = dPr.match(/(\d+)/);                         if (m && this.customPriceMax) this.customPriceMax.value = m[1];                      }                   }                                      let discountAmount = '0';                   if(r.ds && typeof r.ds === 'string') {                      let m = r.ds.match(/(\d+)/);                      if(m) discountAmount = m[1];                   }                   if (this.discountFilter) this.discountFilter.value = discountAmount;                   if (this.offerTypeSelect) this.offerTypeSelect.value = r.ot || '';                   if (this.retailerSelect) this.retailerSelect.value = r.rt || '';                   this.selectedBrands = [];                   btns.forEach(btn => {                       if (!btn.classList.contains('active') || btn.getAttribute('data-type') === 'all') return;                       const vv = btn.getAttribute('data-v');                       const vl = vv.toLowerCase();                                              if (vl === 'lightning deals') {                          if (this.offerTypeSelect) this.offerTypeSelect.value = 'amazon_lightning';                       } else if (vl === 'amazon deals' || vl === 'prime deals') {                          if (this.offerTypeSelect) this.offerTypeSelect.value = 'amazon_prime';                       } else if (vl.includes('% off')) {                          let m = vl.match(/(\d+)%/);                          if (m && this.discountFilter) this.discountFilter.value = m[1];                       } else if (vl.includes('under') || vl.includes('max')) {                          let m = vl.match(/(\d+)/);                          if (m && this.customPriceMax) this.customPriceMax.value = m[1];                       } else if (vl.includes('min') || vl.includes('over')) {                          let m = vl.match(/(\d+)/);                          if (m && this.customPriceMin) this.customPriceMin.value = m[1];                       } else {                          let foundR = mapRet.find(x => x === vl);                          if (foundR) {                             let realR = ['Amazon', 'Walmart', 'Best Buy', 'Target', 'John Lewis', 'Currys', 'Argos'].find(x => x.toLowerCase() === vl);                             if (this.retailerSelect) this.retailerSelect.value = realR;                          } else {                             this.selectedBrands.push(vv);                          }                       }                   });                                      if (this.brandDropdown) {                       const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');                       chks.forEach(c => c.checked = this.selectedBrands.includes(c.value));                   }                                      if (r.pr && typeof r.pr === 'string') {                       let prL = r.pr.toLowerCase();                       if (prL.includes('under $')) {                           let m = prL.match(/under \$(\d+)/i);                           if (m && this.customPriceMax && !this.customPriceMax.value) this.customPriceMax.value = m[1];                       }                   }                }                                this.fetchDeals(this.currentQuery);             });           });                      // default to highlighting first           btns[0].classList.add('active');        }async fetchDeals(query, append = false) {          if (!append) {             this.showLoading();             this.deals = [];             this.displayLimit = this.getRowsLimit();          } else {             this.displayLimit += this.getRowsLimit();          }                    try {            if (this.getViewMode() === 'savings_squad') {               await this.fetchSavingsSquad(append);            } else {               if (this.isBroadQuery(query)) {                 await this.fetchAdviserDeals(query, append);               } else {                 await this.fetchHawkDeals(query, append);                 if (this.deals.length === 0) {                   await this.fetchAdviserDeals(query, append);                 }               }            }          } catch (error) {            console.warn("[Tom's Guide Widget] Fetch error:", error);            this.showError();          }        }        async fetchSavingsSquad() {          let topArticles = this.airedaleArticles;          if (!topArticles) {            const airedaleUrl = `https://airedale.futurecdn.net/feeds/feed_1776420579726.json?site=tomsguide&articleType=deals&limit=50`;            let res;            try {               res = await fetch(airedaleUrl);            } catch(e) {               try { res = await fetch(`https://airedale.futurecdn.net/feeds/feed_1776420579726.json?site=tomsguide&articleType=deals&limit=50`); } catch (err) { console.warn("Fallback fetch failed", err); return; }            }            if (!res.ok) throw new Error('Airedale API Error');            const articles = await res.json();            topArticles = Array.isArray(articles) ? articles.slice(0, 50) : ((articles.data && Array.isArray(articles.data)) ? articles.data.slice(0, 50) : []);            this.airedaleArticles = topArticles;                        let tagCounts = {};            topArticles.forEach((a) => {              let articleTags = new Set();              if (a.articlecategory && Array.isArray(a.articlecategory)) {                 a.articlecategory.forEach((t) => articleTags.add(t));              }              articleTags.forEach(t => {                 tagCounts[t] = (tagCounts[t] || 0) + 1;              });            });                        this.airedaleTags = Object.keys(tagCounts).sort((a, b) => tagCounts[b] - tagCounts[a]);            this.airedaleTagCounts = tagCounts;          }                    let targetArticles = topArticles;          if (this.activeDealTag) {             const cleanTag = this.activeDealTag.toLowerCase().replace(/&/g, '').replace(/[^a-z0-9]+/g, '-').replace(/-+/g, '-').replace(/^-|-$/g, '');             const encodedTag = encodeURIComponent(cleanTag);             const url = `https://airedale.futurecdn.net/feeds/feed_1776420579726.json?site=tomsguide&articleType=deals&limit=50&articleCategoryHandle=${encodedTag}`;             try {                const res = await fetch(url);                if (res.ok) {                   const articles = await res.json();                   targetArticles = Array.isArray(articles) ? articles.slice(0, 50) : ((articles.data && Array.isArray(articles.data)) ? articles.data.slice(0, 50) : []);                }             } catch(e) {                console.warn("Failed to fetch by activeDealTag", e);             }          }          let extractedDeals = [];          let dynamicBrandsCounts = {};                    targetArticles.forEach((article) => {             if (!article.articlepage) return;                          let pageData = [];             try {                pageData = JSON.parse(article.articlepage[0]);             } catch(e){ console.warn(e); }                          const savingsSquad = pageData.filter((p) => p.type === 'deal' || p.type === 'featured-product');                          savingsSquad.forEach((block, idx) => {                const data = block.data || {};                const isFeatured = block.type === 'featured-product';                                const link = data.link || {};                const priceObj = data.price || {};                const image = data.image || {};                                if (data.brand) {                   data.brand = data.brand.replace(/^\d+\.\s*/, '').trim();                   dynamicBrandsCounts[data.brand] = (dynamicBrandsCounts[data.brand] || 0) + 1;                }                const externalUrl = isFeatured ? data.url : (link.href || null);                let summaryTitle = isFeatured ? (data.name || data.brand) : (data.productName || link.label || article.articlename);                let description = isFeatured ? (data.strapline || '') : (data.text || '');                                if (!isFeatured && !data.productName && data.text) {                   const brSplit = data.text.split(new RegExp('\x3Cbr\\s*\\/?\\x3E', 'i'));                   if (brSplit.length > 1) {                     summaryTitle = brSplit[0].replace(/<[^>]+>/g, '').trim();                     description = brSplit.slice(1).join(' ').replace(/<br\s*\/?>/gi, ' ').replace(/<\/?(p|div)[^>]*>/gi, ' ').replace(/<[^>]+>/g, '').replace(/\s+/g, ' ').trim();                   } else {                     const match = data.text.match(/\x3Cstrong>(.*?)<\/strong>/);                     if (match) {                       summaryTitle = match[1].replace(/<[^>]+>/g, '').trim();                       if (summaryTitle.endsWith(':')) summaryTitle = summaryTitle.slice(0, -1);                     }                   }                }                                let imageUrl = isFeatured ? image.mos : (image.src || null);                if (imageUrl && imageUrl.startsWith('//')) imageUrl = 'https:' + imageUrl;                                description = description.replace(/<br\s*\/?>/gi, ' ').replace(/<\/?(p|div)[^>]*>/gi, ' ').replace(/<[^>]+>/g, '').replace(/\s+/g, ' ').replace(/View Deal$/i, '').trim();                                let merchantName = data.retailer || '';                if (!merchantName && externalUrl) {                   try {                     merchantName = new URL(externalUrl).hostname.replace('www.', '').split('.')[0];                     merchantName = merchantName.charAt(0).toUpperCase() + merchantName.slice(1);                   }catch(e){ console.warn(e); }                }                if (!merchantName) merchantName = 'Retailer';                const q = (this.currentQuery || '').toLowerCase();                const activeTagLogic = (this.activeDealTag || '').toLowerCase();                if (q.length > 2 && q !== activeTagLogic) {                   const searchTarget = `${summaryTitle || ''} ${description || ''}`.toLowerCase();                   if (!searchTarget.includes(q)) return;                }                let rawPrice = 0;                let rawMsrp = 0;                let currencyStr = '$';                if (isFeatured) {                   rawPrice = typeof data.salePrice === 'number' && data.salePrice > 0 ? data.salePrice : (typeof data.price === 'number' ? data.price : 0);                   rawMsrp = typeof data.salePrice === 'number' && typeof data.price === 'number' && data.price > data.salePrice ? data.price : 0;                   currencyStr = data.currency === 'GBP' ? '£' : '$';                } else {                   rawPrice = priceObj.amount ? parseFloat(priceObj.amount) : 0;                   rawMsrp = priceObj.amountWas ? parseFloat(priceObj.amountWas) : 0;                   currencyStr = priceObj.currency === 'GBP' ? '£' : '$';                }                                let savingAmt = 0;                let savingLabel = '';                if (rawPrice > 0 && rawMsrp > rawPrice) {                   savingAmt = parseFloat((rawMsrp - rawPrice).toFixed(2));                   savingLabel = `Save ${currencyStr}${savingAmt}`;                }                                // Apply Brand filter                if (this.selectedBrands && this.selectedBrands.length > 0) {                   const itemBrand = (data.brand || '').toLowerCase();                   const hasMatch = this.selectedBrands.some(sb => sb.toLowerCase() === itemBrand);                   if (!hasMatch) return;                }                // Apply Price filter                let priceFilterVal = null;                const min = this.customPriceMin ? this.customPriceMin.value : '';                const max = this.customPriceMax ? this.customPriceMax.value : '';                if (min || max) {                   priceFilterVal = `${min}_${max}`;                } else if (this.priceFilter && this.priceFilter.value !== 'all') {                   priceFilterVal = this.priceFilter.value;                }                if (priceFilterVal && rawPrice > 0) {                   if (priceFilterVal === 'under50' && rawPrice >= 50) return;                   if (priceFilterVal === 'over50' && rawPrice <= 50) return;                   if (priceFilterVal === 'over30' && rawPrice <= 30) return;                   if (priceFilterVal === 'over500' && rawPrice <= 500) return;                   if (priceFilterVal.includes('_')) {                      const parts = priceFilterVal.split('_');                      const min = parseFloat(parts[0]);                      const max = parseFloat(parts[1]);                      if (!isNaN(min) && rawPrice < min) return;                      if (!isNaN(max) && rawPrice > max) return;                   }                }                // Apply Discount filter                if (this.discountFilter && this.discountFilter.value !== 'all' && this.discountFilter.value !== '0') {                   const requiredDiscount = parseInt(this.discountFilter.value);                   if (!isNaN(requiredDiscount) && requiredDiscount > 0) {                      if (!rawMsrp || rawMsrp <= rawPrice) return;                      const ratio = Math.round((1 - (rawPrice / rawMsrp)) * 100);                      if (ratio < requiredDiscount) return;                   }                }                                extractedDeals.push({                   id: `airedale-${article.id || Math.random()}-${idx}`,                   url: externalUrl,                   image: imageUrl,                   fallbackImage: imageUrl,                   title: summaryTitle,                   brand: data.brand || '',                   productName: data.productName || '',                   merchant: merchantName,                   rawPrice: rawPrice,                   rawMsrp: rawMsrp,                   price: rawPrice > 0 ? rawPrice.toString() : '',                   msrp: rawMsrp > 0 ? rawMsrp.toString() : '',                   currency: currencyStr,                   isCheckPrice: !rawPrice,                   savingLabel: savingLabel,                   savingType: rawMsrp > rawPrice ? 'amount' : 'none',                   isPrime: false,                   starRating: null,                   description: description,                   text: data.text || ''                });             });          });                    const airedaleBrandsList = Object.keys(dynamicBrandsCounts).map(b => ({              formatted_value: b,              count: dynamicBrandsCounts[b]          })).sort((a,b) => b.count - a.count);                    if (this.getViewMode() === 'savings_squad') {             this.populateBrandDropdown(airedaleBrandsList.slice(0, 15));             if (this.brandFilterWrapper) {                if (airedaleBrandsList.length === 0) {                    this.brandFilterWrapper.style.display = 'none';                } else {                    this.brandFilterWrapper.style.display = 'flex';                }             }          }                    this.deals = extractedDeals;          this.sortData();          this.render();          if (typeof trackDealsAppeared !== 'undefined') {             trackDealsAppeared(this.widgetId, this.deals, this.revenueId, typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD', this.currentQuery, this.widgetTypeName);          }        }        isBroadQuery(query) {          const q = query.toLowerCase();          const intentModifiers = ['deals', 'best', 'sale', 'under', 'cheap', 'offers', 'discount'];          return intentModifiers.some(term => q.includes(term));        }        async fetchHawkDeals(query, append = false) {          const url = new URL(this.apiUrl);          url.searchParams.append('model_name', query);          const areaCode = this.getAreaCode();          if (areaCode) {            url.searchParams.append('area', areaCode);          }                    if (append && this.deals.length > 0) {            url.searchParams.append('offset', this.deals.length.toString());          }                    if (this.retailerSelect && this.retailerSelect.value) {            url.searchParams.append('filter_merchant_name', this.retailerSelect.value);          }                    if (this.selectedBrands && this.selectedBrands.length > 0) {            url.searchParams.append('filter_label[text_brand]', this.selectedBrands.join(','));          }                    let priceVal = null;          const min = this.customPriceMin ? this.customPriceMin.value : '';          const max = this.customPriceMax ? this.customPriceMax.value : '';          if (min || max) {             priceVal = `${min}_${max}`;          } else if (this.priceFilter && this.priceFilter.value !== 'all') {             priceVal = this.priceFilter.value;          }          if (priceVal) {            if (priceVal === 'under50') {              url.searchParams.append('filter_max_price', '50');            } else if (priceVal === 'over50') {              url.searchParams.append('filter_min_price', '50');            } else if (priceVal === 'over30') {              url.searchParams.append('filter_min_price', '30');            } else if (priceVal === 'over500') {              url.searchParams.append('filter_min_price', '500');            } else if (priceVal.includes('_')) {              const parts = priceVal.split('_');              if (parts[0]) url.searchParams.append('filter_min_price', parts[0]);              if (parts[1]) url.searchParams.append('filter_max_price', parts[1]);            }          }                    if (this.discountFilter && this.discountFilter.value !== 'all' && this.discountFilter.value !== '0') {            const v = parseInt(this.discountFilter.value);            if (!isNaN(v) && v > 0) {              const ratio = (100 - v) / 100;              url.searchParams.append('min_discount_ratio', ratio.toString());            }          }                    if (this.offerTypeSelect && this.offerTypeSelect.value) {            url.searchParams.append('offer', this.offerTypeSelect.value);          }                    url.searchParams.append('filter_product_types', 'deals');                    url.searchParams.append('rows', this.getRowsLimit().toString());          let response;          try {             response = await fetch(url.toString());          } catch(e) {             if (window.location.protocol === 'file:') {                console.warn("[Tom's Guide Widget] fetch from file:// blocked by local CORS policy, falling back to Adviser mock.");                await this.fetchAdviserDeals(query);                return;             }             console.warn("Hawk fetch failed", e);             this.deals = [];             this.render();             return;          }          if (!response.ok) {            throw new Error('Hawk API Response Error');          }          const rawData = await response.json();          // Safely locate data array from potentially wrapped response          let offers = [];          let modelInfoArray = [];                    let brandFilterData = null;          if (rawData && rawData.widget && rawData.widget.data && Array.isArray(rawData.widget.data.filters)) {             brandFilterData = rawData.widget.data.filters.find(f => f.type === 'label_text_brand');          } else if (rawData && rawData.data && Array.isArray(rawData.data.filters)) {             brandFilterData = rawData.data.filters.find(f => f.type === 'label_text_brand');          }          if (brandFilterData && Array.isArray(brandFilterData.values) && brandFilterData.values.length > 0) {             this.populateBrandDropdown(brandFilterData.values);          } else {             if (this.brandFilterWrapper && this.selectedBrands.length === 0) {                this.brandFilterWrapper.style.display = 'none';             }          }                    if (rawData && rawData.widget && rawData.widget.data) {            if (Array.isArray(rawData.widget.data.offers)) offers = rawData.widget.data.offers;            if (rawData.widget.data.model_info && typeof rawData.widget.data.model_info === 'object') {              modelInfoArray = Array.isArray(rawData.widget.data.model_info) ? rawData.widget.data.model_info : Object.values(rawData.widget.data.model_info);            }          } else if (rawData && rawData.data) {            if (Array.isArray(rawData.data.offers)) offers = rawData.data.offers;            if (rawData.data.model_info && typeof rawData.data.model_info === 'object') {              modelInfoArray = Array.isArray(rawData.data.model_info) ? rawData.data.model_info : Object.values(rawData.data.model_info);            }          } else {            if (Array.isArray(rawData)) offers = rawData;            else if (rawData && Array.isArray(rawData.offers)) offers = rawData.offers;            else if (rawData && rawData.offers && Array.isArray(rawData.offers.offer)) offers = rawData.offers.offer;            else if (rawData && rawData.offers) offers = [].concat(rawData.offers);                        if (rawData && rawData.model_info && typeof rawData.model_info === 'object') {              modelInfoArray = Array.isArray(rawData.model_info) ? rawData.model_info : Object.values(rawData.model_info);            }          }          let modelDetails = {};          modelInfoArray.forEach(m => {            const mId = m.model_id || m.id;            if (mId) {              modelDetails[mId] = {                score: m.score != null ? parseFloat(m.score) : null,                brand: m.brand || null,                parent: (m.parents && Array.isArray(m.parents) && m.parents.length > 0) ? m.parents[0].name : null              };            }          });          offers.forEach(item => {            let data = { ...item };            const mId = data.model_id;            if (mId && modelDetails[mId]) {              data.review_score = modelDetails[mId].score;              data.model_brand = modelDetails[mId].brand;              data.model_parent = modelDetails[mId].parent;            } else {              data.review_score = null;            }                        let itemOffers = [];            if (Array.isArray(item.offers)) itemOffers = item.offers;            else if (Array.isArray(item.offer)) itemOffers = item.offer;            else if (item.offers && typeof item.offers === 'object') itemOffers = [item.offers];            else if (item.offer && typeof item.offer === 'object') itemOffers = [item.offer];            if (itemOffers.length > 0) {              itemOffers.forEach(subItem => {                let subData = { ...item, ...subItem };                const subId = subData.model_id;                if (subId && modelDetails[subId]) {                  subData.review_score = modelDetails[subId].score;                  subData.model_brand = modelDetails[subId].brand;                  subData.model_parent = modelDetails[subId].parent;                } else if (data.review_score != null) {                  subData.review_score = data.review_score;                }                if (subData.merchant && typeof subData.merchant === 'object') {                  subData.merchant_name = subData.merchant.name;                }                this.deals.push(this.extractDealData(subData));              });              return;            }                        if (item.merchant && typeof item.merchant === 'object') {              data.merchant_name = item.merchant.name;            }                        this.deals.push(this.extractDealData(data));          });                    this.sortData();          this.render();          if (typeof trackDealsAppeared !== 'undefined') {             trackDealsAppeared(this.widgetId, this.deals, this.revenueId, typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD', this.currentQuery, this.widgetTypeName);          }        }        async fetchAdviserDeals(query) {          // ======================================================================          // TODO: ADVISER API REPLACEMENT          // The code below simulates the Adviser API response using mock data.          // Once the real endpoint is ready, remove getAdviserMockData() and           // perform an actual fetch() request similar to fetchHawkDeals().          // Example:          // const area = this.getAreaCode();          // let apiUrl = `https://your-adviser-api.com/search?q=${query}&area=${area}`;          // if (this.priceFilter && this.priceFilter.value !== 'all') {          //   const val = this.priceFilter.value;          //   if (val === 'under50') apiUrl += '&filter_max_price=50';          //   else if (val === '50_100') apiUrl += '&filter_max_price=100';          //   else if (val === '100_200') apiUrl += '&filter_max_price=200';          //   else if (val === '200_500') apiUrl += '&filter_max_price=500';          // }          // const res = await fetch(apiUrl);          // const rawData = await res.json();          // ======================================================================          // Simulating network latency          await new Promise(resolve => setTimeout(resolve, 400));                    const rawData = this.getAdviserMockData();          let offers = [];                    if (rawData && rawData.data && rawData.data.Get && Array.isArray(rawData.data.Get.Deal)) {            offers = rawData.data.Get.Deal;          }                    // Basic client-side filtering for the mock if we want it to react to the query          const q = query.toLowerCase();          const selectedRetailer = (this.retailerSelect && this.retailerSelect.value) ? this.retailerSelect.value.toLowerCase() : null;                    offers.forEach(item => {            const dataObj = item;                        // Apply retailer filter            const itemRetailer = (dataObj.dataRetailer || '').toLowerCase();            if (selectedRetailer && itemRetailer !== selectedRetailer && !itemRetailer.includes(selectedRetailer)) {              return;            }                        // Apply mock price filter            let price = dataObj.dataDiscountedPrice || 0;            if (typeof price === 'string') {              price = parseFloat(price.replace(/[^0-9.]/g, ''));            }            let priceVal = null;            const min = this.customPriceMin ? this.customPriceMin.value : '';            const max = this.customPriceMax ? this.customPriceMax.value : '';            if (min || max) {               priceVal = `${min}_${max}`;            } else if (this.priceFilter && this.priceFilter.value !== 'all') {               priceVal = this.priceFilter.value;            }            if (priceVal) {              if (priceVal === 'under50' && price >= 50) return;              if (priceVal === 'over50' && price <= 50) return;              if (priceVal === 'over30' && price <= 30) return;              if (priceVal === 'over500' && price <= 500) return;              if (priceVal.includes('_')) {                 const parts = priceVal.split('_');                 if (parts[0] && price < parseFloat(parts[0])) return;                 if (parts[1] && price > parseFloat(parts[1])) return;              }            }                        // Map Adviser schema to our widget's expected schema            const mappedData = {              url: dataObj.linkHREF || dataObj.dataLink || '#',              image: dataObj.imageURL || (dataObj.image && dataObj.image.src) || '',              title: dataObj.dataProduct || (dataObj.product && dataObj.product.name) || 'Product Deal',              merchant: dataObj.dataRetailer || 'Retailer',              price: dataObj.dataDiscountedPrice || 0,              currency: dataObj.dataCurrency === 'USD' ? '$' : (dataObj.dataCurrency || '$'),              msrp: dataObj.dataOriginalPrice || null            };                        const titleLow = mappedData.title.toLowerCase();            const merchLow = mappedData.merchant.toLowerCase();                        // Smarter mock filtering            let isMatch = false;            if (q === '' || this.isBroadQuery(q)) {              isMatch = true;            } else if (titleLow.includes(q) || merchLow.includes(q)) {              isMatch = true;            } else if ((q.includes('laptop') || q.includes('mac') || q.includes('pc')) && (titleLow.includes('macbook') || titleLow.includes('laptop'))) {              isMatch = true;            } else if ((q.includes('tv') || q.includes('television')) && (titleLow.includes('tv') || titleLow.includes('oled') || titleLow.includes('qled'))) {              isMatch = true;            } else if ((q.includes('phone') || q.includes('smartphone')) && (titleLow.includes('galaxy') || titleLow.includes('phone'))) {              isMatch = true;            } else if ((q.match(/watch|fitness|run|shoe/)) && (titleLow.includes('forerunner') || titleLow.includes('saucony') || titleLow.includes('watch'))) {              isMatch = true;            }                        if (isMatch) {               this.deals.push(this.extractDealData(mappedData));            }          });                    let rowLimit = this.getRowsLimit();          // Intentionally omitting the slice here to allow "Load More" to work if the API returns more                    this.sortData();          this.render();          if (typeof trackDealsAppeared !== 'undefined') {             trackDealsAppeared(this.widgetId, this.deals, this.revenueId, typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD', this.currentQuery, this.widgetTypeName);          }        }        getAdviserMockData() {          return {            "data": {              "Get": {                "Deal": [                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 300,                    "dataOriginalPrice": 399,                    "dataProduct": "Samsung Galaxy A36",                    "dataRetailer": "Samsung",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/MqDYsukV3JBG54te6dEs7j.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 14,                    "dataOriginalPrice": 24,                    "dataProduct": "Blink Mini",                    "dataRetailer": "Amazon",                    "imageURL": "http://cdn.mos.cms.futurecdn.net/3JurmAjHsDa5tPdaHAwEV8.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 59,                    "dataOriginalPrice": 99,                    "dataProduct": "Ring Video Doorbell",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/rAh4uR7AsAsALCCLTXnLNJ.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 10,                    "dataOriginalPrice": 599,                    "dataProduct": "MacBook Neo",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/Lg4Dvg68j9SbB5CPNrTEpH.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 749,                    "dataOriginalPrice": 849,                    "dataProduct": "65\\\" Fire TV Omni 4K QLED TV",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/SG34ZWodUkLTxJvMTbjPYR.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 71,                    "dataOriginalPrice": 160,                    "dataProduct": "Saucony Hurricane 24",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/vxf7UD5T2Am7guVzFoFcZ4.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 649,                    "dataOriginalPrice": 749,                    "dataProduct": "Garmin Forerunner 970",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/3GKnEu7CdhtxPMfnPCMCiA.png"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 1049,                    "dataOriginalPrice": 1499,                    "dataProduct": "LG 48\\\" C4 4K OLED TV",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/imvwZV9zoMD6fn9Afuge35.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 1499,                    "dataOriginalPrice": 2199,                    "dataProduct": "Samsung 49\\\" Odyssey Neo G9 4K Gaming Monitor",                    "dataRetailer": "Amazon",                    "imageURL": "http://cdn.mos.cms.futurecdn.net/XWDEJ5dUAE2nhK8k3Jk7k7.png"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 299,                    "dataOriginalPrice": 699,                    "dataProduct": "EGOHOME Black Memory Foam Mattress (queen)",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/hMUemtAejNETLVYxNrktzm.jpg"                  }                ]              }            }          };        }        decodeHTML(html) {          if (!html) return '';          const txt = document.createElement("textarea");          txt.innerHTML = String(html);          return txt.value;        }        extractDealData(item) {          const priceRawStr = String(item.price || item.current_price || '0');          const msrpRawStr = String(item.was_price || item.msrp || item.original_price || '0');          const rawPrice = parseFloat(priceRawStr.replace(/[^\d.]/g, '')) || 0;          const rawMsrp = parseFloat(msrpRawStr.replace(/[^\d.]/g, '')) || 0;          const isCheckPrice = rawPrice === 0 || priceRawStr === '0.00' || priceRawStr === '0';                    let originalImageUrl = item.image || item.image_url || item.product_image || '';          let imageUrl = originalImageUrl;          if ((!imageUrl || isCheckPrice) && item.model_image_url) {             imageUrl = item.model_image_url;             originalImageUrl = imageUrl;          } else if ((!imageUrl || isCheckPrice) && item.model_image) {             imageUrl = item.model_image;             originalImageUrl = imageUrl;          }                    if (imageUrl) {            imageUrl = imageUrl.replace(/-(\d+)-(\d+)(\.[a-z.]+)$/i, '$3');          }                    let fallbackImage = '';          if (originalImageUrl && originalImageUrl !== imageUrl) {             fallbackImage = originalImageUrl;          } else if (item.model_image && item.model_image !== imageUrl) {             fallbackImage = item.model_image;          } else if (item.model_image_url && item.model_image_url !== imageUrl) {             fallbackImage = item.model_image_url;          }                    const rawCurrency = item.currency || item.currency_symbol || '$';                    let savingLabel = item.percentage_saving_label || '';          if (!savingLabel && rawMsrp > rawPrice && rawPrice > 0) {            const pct = Math.round(((rawMsrp - rawPrice) / rawMsrp) * 100);            if (pct > 0) {              savingLabel = `${pct}% OFF`;            }          }                    const isPrime = item.shipping && item.shipping.prime === true;                    let scoreRaw = (item.review_score !== undefined && item.review_score !== null && item.review_score > 0) ? parseFloat(item.review_score) : null;          let starRating = 0;          if (scoreRaw !== null) {            starRating = Math.round((scoreRaw > 10 ? scoreRaw / 20 : scoreRaw / 2) * 2) / 2;          }                    return {            id: item.offer_id || item.link || item.url || item.offer_link || Math.random().toString(),            url: item.link || item.url || item.offer_link || '#',            image: imageUrl,            fallbackImage: fallbackImage,            title: item.name || item.title || item.model_name || item.product_name || 'Unknown Product',            brand: item.brand || '',            productName: item.model_name || item.product_name || item.name || '',            merchant: item.merchant_name || item.merchant || item.retailer || 'Retailer',            price: item.price !== undefined ? String(item.price) : '0.00',            currency: this.decodeHTML(rawCurrency),            msrp: item.was_price || item.msrp || item.original_price || null,            rawPrice: rawPrice,            rawMsrp: rawMsrp,            hasWasPrice: (item.was_price !== undefined && item.was_price !== null),            isCheckPrice: isCheckPrice,            savingLabel: savingLabel,            isPrime: isPrime,            starRating: starRating > 0 ? starRating : null,            modelId: item.model_id || '',            productKey: item.product_key || '',            merchantId: (item.merchant && typeof item.merchant === 'object') ? item.merchant.id || '' : '',            matchId: item.match_id || '',            merchantNetwork: (item.merchant && typeof item.merchant === 'object') ? item.merchant.an || '' : '',            merchantUrl: (item.merchant && typeof item.merchant === 'object') ? item.merchant.url || '' : '',            modelBrand: item.model_brand || item.brand || '',            modelParent: item.model_parent || ''          };        }        sortData() {          const sortVal = this.sortSelect ? this.sortSelect.value : (this.getViewMode() === 'savings_squad' ? 'date_desc' : 'discount_desc');          if (sortVal === 'price_asc') {            this.deals.sort((a, b) => a.rawPrice - b.rawPrice);          } else if (sortVal === 'price_desc') {            this.deals.sort((a, b) => b.rawPrice - a.rawPrice);          } else if (sortVal === 'discount_desc') {            this.deals.sort((a, b) => {              const aDiscount = a.rawMsrp > a.rawPrice ? (a.rawMsrp - a.rawPrice) : 0;              const bDiscount = b.rawMsrp > b.rawPrice ? (b.rawMsrp - b.rawPrice) : 0;              return bDiscount - aDiscount;            });          } else if (sortVal === 'date_desc') {             this.deals.sort((a, b) => {                let dateA = 0;                let dateB = 0;                if (a && a.modifiedDate) {                   const valA = Array.isArray(a.modifiedDate) ? a.modifiedDate[0] : a.modifiedDate;                   dateA = new Date(valA).getTime();                   if (isNaN(dateA)) dateA = 0;                }                if (b && b.modifiedDate) {                   const valB = Array.isArray(b.modifiedDate) ? b.modifiedDate[0] : b.modifiedDate;                   dateB = new Date(valB).getTime();                   if (isNaN(dateB)) dateB = 0;                }                return dateB - dateA;             });          }        }        getFilteredDeals() {          let filteredDeals = [...this.deals];                    if (this.dealModeToggle && this.dealModeToggle.checked) {            filteredDeals = filteredDeals.filter(d => d.hasWasPrice || (d.msrp && d.rawMsrp > d.rawPrice));          }                    return filteredDeals;        }        showLoading() {          const _div = '<' + '/div>';          const skeletonCardHtml = `            \x3Cdiv class="tg-df-card">              \x3Cdiv class="tg-df-card-image-box">                \x3Cdiv class="tg-df-skeleton tg-df-skeleton-img">${_div}              ${_div}              \x3Cdiv class="tg-df-card-body">                \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short">${_div}                \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text title">${_div}                \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text title">${_div}                \x3Cdiv class="tg-df-card-footer mt-auto">                  \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="height:24px;">${_div}                  \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text" style="height:44px; margin-top:8px;">${_div}                ${_div}              ${_div}            ${_div}`;          this.grid.innerHTML = Array(4).fill(skeletonCardHtml).join('');        }        showError() {          const _div = '<' + '/div>';          this.grid.innerHTML = `\x3Cdiv class="tg-df-message">            An error occurred while finding deals. Please check your connection and try again.          ${_div}`;        }        escapeHTML(str) {          if (!str) return '';          return String(str).replace(/[&<>'"]/g, tag => ({              '&': '&', '<': '<', '>': '>', "'": ''', '"': '"'          }[tag] || tag));        }                bindCouponButtons() {          const btns = this.root.querySelectorAll('.tg-df-tag-coupons');          btns.forEach(btn => {            btn.addEventListener('click', (e) => {              e.preventDefault();              e.stopPropagation();              const merchant = btn.getAttribute('data-merchant');              this.openVouchersModal(merchant);            });          });                    const closeBtn = this.root.querySelector('#tg-df-vouchers-close');          const backdrop = this.root.querySelector('#tg-df-vouchers-modal');          if (closeBtn) {            closeBtn.onclick = () => this.closeVouchersModal();          }          if (backdrop) {            backdrop.onclick = (e) => {              if (e.target === backdrop) this.closeVouchersModal();            };          }        }                closeVouchersModal() {          const backdrop = this.root.querySelector('#tg-df-vouchers-modal');          if (backdrop) backdrop.classList.remove('active');        }                async checkMerchantsCouponsBulk(merchants) {          if (!merchants || merchants.length === 0) return {};          const controller = new AbortController();          const timeoutId = setTimeout(() => controller.abort(), 4000);          try {            const area = this.getAreaCode();            const url = new URL('https://search-api.fie.future.net.uk/widget.php');            url.searchParams.append('model_name', 'Everything');            url.searchParams.append('language', 'en-GB');            if (area) url.searchParams.append('area', area);            url.searchParams.append('combine_product_types', '1');            url.searchParams.append('filter_merchant_name', merchants.join(','));            url.searchParams.append('all_filters', 'false');            url.searchParams.append('exclude_unlabelled', 'false');            url.searchParams.append('include_specs', 'false');            url.searchParams.append('sort', 'voucher');            url.searchParams.append('distinct_merchants', 'natural');            url.searchParams.append('filter_product_types', 'vouchers,offer_deals,newsletter');            url.searchParams.append('rows', '120');            url.searchParams.append('origin', 'widgets-clientside');                        let res; try { res = await fetch(url.toString(), { signal: controller.signal }); } catch (e) { return {}; }            clearTimeout(timeoutId);            if (!res.ok) return {};            const data = await res.json();                        let offers = [];            if (data && data.widget && data.widget.data && Array.isArray(data.widget.data.offers)) {              offers = data.widget.data.offers;            } else if (data && data.data && Array.isArray(data.data.offers)) {              offers = data.data.offers;            } else if (Array.isArray(data)) {              offers = data;            } else if (data && Array.isArray(data.offers)) {              offers = data.offers;            } else if (data && data.offers && Array.isArray(data.offers.offer)) {              offers = data.offers.offer;            } else if (data && Array.isArray(data.data)) {              offers = data.data;            }                        const foundMerchants = new Set();            offers.forEach(o => {              let mName = o.merchant_name || o.merchant || o.retailer;              if (mName && typeof mName === 'object') mName = mName.name;              if (mName) foundMerchants.add(String(mName).toLowerCase());            });            const resultMap = {};            merchants.forEach(m => {              if (m) resultMap[m] = foundMerchants.has(String(m).toLowerCase());            });            return resultMap;          } catch (e) {            return {};          }        }                async openVouchersModal(merchantName) {          const backdrop = this.root.querySelector('#tg-df-vouchers-modal');          const title = this.root.querySelector('#tg-df-vouchers-title');          const content = this.root.querySelector('#tg-df-vouchers-content');                    if (!backdrop || !content) return;                    // HACK: Hide closing tags          const _div = '<' + '/div>';          const _span = '<' + '/span>';          const _a = '<' + '/a>';          const _h4 = '<' + '/h4>';          const _svg = '<' + '/svg>';          const _circle = '<' + '/circle>';          const _polyline = '<' + '/polyline>';          const _rect = '<' + '/rect>';          const _path = '<' + '/path>';                    title.innerText = `${merchantName} Coupons & Deals`;          content.innerHTML = `\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text">${_div}                               \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text">${_div}`;          backdrop.classList.add('active');                    try {            const area = this.getAreaCode();            const url = new URL('https://search-api.fie.future.net.uk/widget.php');            url.searchParams.append('model_name', 'Everything');            url.searchParams.append('language', 'en-GB');            if (area) url.searchParams.append('area', area);            url.searchParams.append('combine_product_types', '1');            url.searchParams.append('filter_merchant_name', merchantName);            url.searchParams.append('all_filters', 'false');            url.searchParams.append('exclude_unlabelled', 'false');            url.searchParams.append('include_specs', 'false');            url.searchParams.append('sort', 'voucher');            url.searchParams.append('distinct_merchants', 'natural');            url.searchParams.append('filter_product_types', 'vouchers,offer_deals,newsletter');            url.searchParams.append('rows', '50');            url.searchParams.append('origin', 'widgets-clientside');                        const res = await fetch(url.toString());            if (!res.ok) throw new Error('API Error');            const data = await res.json();                        let offers = [];            if (data && data.widget && data.widget.data && Array.isArray(data.widget.data.offers)) {              offers = data.widget.data.offers;            } else if (data && data.data && Array.isArray(data.data.offers)) {              offers = data.data.offers;            } else if (Array.isArray(data)) {              offers = data;            } else if (data && Array.isArray(data.offers)) {              offers = data.offers;            } else if (data && data.offers && Array.isArray(data.offers.offer)) {              offers = data.offers.offer;            } else if (data && Array.isArray(data.data)) {              offers = data.data;            }                        if (offers.length === 0) {              content.innerHTML = `\x3Cdiv class="tg-df-message">No vouchers currently available for ${this.escapeHTML(merchantName)}.${_div}`;              return;            }                        content.innerHTML = offers.map((v, idx) => {              let offerObj = v;              if (v.offers && v.offers.offer) {                offerObj = Array.isArray(v.offers.offer) ? v.offers.offer[0] : v.offers.offer;              } else if (v.offer) {                offerObj = Array.isArray(v.offer) ? v.offer[0] : v.offer;              }              let logoUrl = v.logo_url || offerObj.logo_url || '';              if (!logoUrl && v.merchant) {                if (Array.isArray(v.merchant) && v.merchant.length > 0) logoUrl = v.merchant[0].logo_url || '';                else logoUrl = v.merchant.logo_url || '';              }                            const offerName = offerObj.name || offerObj.title || v.name || v.title || 'Special Offer';              const endTime = offerObj.end_time || v.end_time || '';              const linkUrl = offerObj.link || offerObj.url || v.link || v.url || '#';                            let foundVoucherCode = '';              const findVoucherCode = (obj) => {                if (!obj || typeof obj !== 'object') return;                if (obj.type === 'voucher_code' && obj.display_value) {                  foundVoucherCode = obj.display_value;                  return;                }                if (Array.isArray(obj)) {                  for (const item of obj) {                    findVoucherCode(item);                    if (foundVoucherCode) return;                  }                } else {                  for (const k in obj) {                    if (Object.prototype.hasOwnProperty.call(obj, k)) {                      findVoucherCode(obj[k]);                      if (foundVoucherCode) return;                    }                  }                }              };              findVoucherCode(offerObj);              if (!foundVoucherCode) findVoucherCode(v);                            const voucherCode = foundVoucherCode || offerObj.voucher_code || v.voucher_code || '';              const codeHtml = voucherCode ? `\x3Cspan class="tg-df-voucher-code" data-action="copy-code" data-code="${this.escapeHTML(voucherCode)}" title="Copy to clipboard">                \x3Cspan class="tg-df-voucher-code-text">${this.escapeHTML(voucherCode)}${_span}                \x3Csvg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-left:6px;flex-shrink:0;" class="tg-df-voucher-copy-icon">                  \x3Crect x="9" y="9" width="13" height="13" rx="2" ry="2">${_rect}                  \x3Cpath d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1">${_path}                ${_svg}              ${_span}` : '';                            const logoHtml = logoUrl                 ? `\x3Cimg src="${this.escapeHTML(logoUrl)}" alt="${this.escapeHTML(offerName)}" class="tg-df-voucher-logo" />`                 : `\x3Cdiv class="tg-df-voucher-logo" style="background:#e2e8f0;">${_div}`;                            let expiryHtml = '';              if (endTime) {                let dStr = endTime;                if (!isNaN(dStr) && String(dStr).length === 10) dStr = Number(dStr) * 1000;                const d = new Date(dStr);                if (!isNaN(d.getTime())) {                  const options = { year: 'numeric', month: 'short', day: 'numeric' };                  expiryHtml = `                    \x3Cdiv class="tg-df-voucher-expiry">                      \x3Csvg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">                        \x3Ccircle cx="12" cy="12" r="10">${_circle}                        \x3Cpolyline points="12 6 12 12 16 14">${_polyline}                      ${_svg}                      Expires ${d.toLocaleDateString(undefined, options)}                    ${_div}`;                }              }              const revenueIdVal = generateRevenueId(linkUrl, offerName, merchantName, null);              const rewrittenLinkUrl = rewriteAffiliateLink(linkUrl, area, revenueIdVal);              return `                \x3Ca href="${this.escapeHTML(rewrittenLinkUrl)}" target="_blank" rel="noopener nofollow" class="tg-df-voucher-item"                  data-action="voucher-click"                  data-product-name="${this.escapeHTML(offerName)}"                  data-merchant-name="${this.escapeHTML(merchantName)}"                  data-analytics-id="${this.escapeHTML(offerObj.offer_id || offerObj.id || v.id || '')}"                  data-price=""                  data-previous-price=""                  data-original-link="${this.escapeHTML(linkUrl)}"                  data-revenue-id="${revenueIdVal}"                  data-index="${idx}"                  data-total="${offers.length}"                  data-in-stock="true"                  data-currency="USD"                  data-model-id="${this.escapeHTML(offerObj.model_id || v.model_id || offerObj.id || v.id || '')}"                  data-merchant-id="${this.escapeHTML(offerObj.merchant_id || offerObj.merchant?.id || '')}"                >                  ${logoHtml}                  \x3Cdiv class="tg-df-voucher-content">                    \x3Ch4 class="tg-df-voucher-title">${this.escapeHTML(offerName)}${_h4}                    ${codeHtml}                    ${expiryHtml}                  ${_div}                ${_a}              `;            }).join('');                        // Attach copy functionality            const copyBtns = content.querySelectorAll('[data-action="copy-code"]');            copyBtns.forEach(btn => {              btn.addEventListener('click', async (e) => {                e.preventDefault();                e.stopPropagation();                                const code = btn.getAttribute('data-code');                if (!code) return;                                try {                  const copyToClipboard = async (text) => {                     if (window.navigator.clipboard && window.isSecureContext) {                        try { await window.navigator.clipboard.writeText(text); return; } catch (e) {}                     }                     const textArea = document.createElement("textarea");                     textArea.value = text;                     textArea.style.position = "fixed";                     document.body.appendChild(textArea);                     textArea.focus();                     textArea.select();                     document.execCommand('copy');                     textArea.remove();                  };                  await copyToClipboard(code);                                    // Visual feedback                  btn.classList.add('copied');                  const textSpan = btn.querySelector('.tg-df-voucher-code-text');                  const iconSvg = btn.querySelector('.tg-df-voucher-copy-icon');                                    const origText = textSpan.innerText;                  const origIcon = iconSvg.innerHTML;                                    textSpan.innerText = 'Copied!';                  iconSvg.innerHTML = `\x3Cpolyline points="20 6 9 17 4 12">${_polyline}`;                                    setTimeout(() => {                    if (btn) {                      btn.classList.remove('copied');                      if (textSpan) textSpan.innerText = origText;                      if (iconSvg) iconSvg.innerHTML = origIcon;                    }                  }, 2000);                                    trackElementInteraction({                    id: 'voucher-code-copy',                    name: 'Copy Voucher Code',                    label: `Copied ${code} for ${merchantName}`                  });                } catch (err) {                  console.warn('Failed to copy text: ', err);                }              });            });            // Attach voucher click tracking            const voucherBtns = content.querySelectorAll('[data-action="voucher-click"]');            voucherBtns.forEach(btn => {              btn.addEventListener('click', (e) => {                if (e.target.closest('[data-action="copy-code"]')) return;                                const productName = btn.getAttribute('data-product-name');                const merchantNameAttr = btn.getAttribute('data-merchant-name');                const productId = btn.getAttribute('data-analytics-id');                const price = parseFloat(btn.getAttribute('data-price')) || null;                const prevPriceStr = btn.getAttribute('data-previous-price');                const previousPrice = prevPriceStr ? parseFloat(prevPriceStr) : null;                const originalLink = btn.getAttribute('data-original-link');                const rewrittenLink = btn.getAttribute('href');                const revenueId = btn.getAttribute('data-revenue-id');                const index = parseInt(btn.getAttribute('data-index'), 10) || 0;                const inStock = btn.getAttribute('data-in-stock') === 'true';                const totalText = btn.getAttribute('data-total');                const totalDeals = parseInt(totalText, 10) || 0;                const productCategoryName = 'deals';                const trackingParams = {                  widgetId: this.widgetId,                  productCategoryName: productCategoryName,                  product: {                    modelId: btn.getAttribute('data-model-id') || null,                    matchId: btn.getAttribute('data-match-id') || null,                    brand: btn.getAttribute('data-model-brand') || null,                    parent: btn.getAttribute('data-model-parent') || null,                    name: productName,                    price: price,                    previousPrice: previousPrice,                    link: rewrittenLink,                    originalLink: originalLink,                    inStock: inStock                  },                  zeroBasedProductIndexOrNull: index,                  totalDealsOrProducts: totalDeals,                   merchant: {                    id: btn.getAttribute('data-merchant-id') || null,                    network: btn.getAttribute('data-merchant-network') || null,                    url: btn.getAttribute('data-merchant-url') || null,                    name: merchantNameAttr                  },                  revenueId: revenueId,                  widgetTypeName: this.widgetTypeName,                  isoCurrencyCode: btn.getAttribute('data-currency') || 'USD'                };                if (typeof trackDealClick === 'function') {                  trackDealClick(trackingParams);                }              });            });                                  } catch (e) {            console.warn(e);            content.innerHTML = `\x3Cdiv class="tg-df-message">Failed to load vouchers.${_div}`;          }        }        render() {          try {            if (this.getViewMode() === 'savings_squad' && this.airedaleTags.length > 0) {              if (this.categoryFilterWrapper) {                 this.categoryFilterWrapper.style.display = 'flex';              }              if (this.categoryFilter) {                 const _option = '<' + '/option>';                 let optionsHtml = `\x3Coption value="all">All Categories${_option}`;                 this.airedaleTags.forEach(tag => {                    const isSelected = this.activeDealTag === tag ? 'selected' : '';                    optionsHtml += `\x3Coption value="${this.escapeHTML(tag)}" ${isSelected}>${this.escapeHTML(tag)} (${this.airedaleTagCounts[tag] || 0})${_option}`;                 });                 this.categoryFilter.innerHTML = optionsHtml;                 this.categoryFilter.value = this.activeDealTag || 'all';              }            } else {               if (this.categoryFilterWrapper) {                  this.categoryFilterWrapper.style.display = 'none';               }            }            const displayDeals = this.getFilteredDeals();          // HACK: Hide closing tags from the CMS HTML sanitizer so it doesn't strip them during in-page injection          const _div = '<' + '/div>';          const _span = '<' + '/span>';          const _a = '<' + '/a>';          const _h3 = '<' + '/h3>';          const _p = '<' + '/p>';          const _strong = '<' + '/strong>';          const _sup = '<' + '/sup>';          const _button = '<' + '/button>';          if (displayDeals.length === 0) {            if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {              if (this.deals.length > 0) {                 this.grid.innerHTML = `\x3Cdiv class="tg-df-message">                  No deals match your selected filters.                ${_div}`;              } else if (this.getViewMode() === 'savings_squad' && this.currentQuery.length <= 2) {                 // Do not show "no exact matches" if query is empty for savings_squad                 this.grid.innerHTML = '';              } else {                 this.grid.innerHTML = `\x3Cdiv class="tg-df-message">                  No exact matches found for "\x3Cstrong>${this.escapeHTML(this.currentQuery)}${_strong}". Try adjusting your search term.                ${_div}`;              }            } else {              this.grid.innerHTML = `\x3Cdiv class="tg-df-message">                Search product or category names to discover the best deals from across the web.              ${_div}`;            }            return;          }          let dealsHtml = displayDeals.slice(0, this.displayLimit).map((deal, index) => {            try {               const currencySym = this.escapeHTML(deal.currency);               const isoCurrencyCode = normalizeCurrency(currencySym);               const escapedPrice = this.escapeHTML(deal.price);               const escapedMsrp = this.escapeHTML(deal.msrp);               const areaCode = this.getAreaCode();                              const revenueId = generateRevenueId(deal.url, deal.title, deal.merchant, null);               const originalLink = deal.url;               const rewrittenLink = rewriteAffiliateLink(deal.url, areaCode, revenueId);                        const productCategoryName = 'deals';            const dataAttr = `              data-action="${deal.isCheckPrice ? 'view-similar-click' : 'deal-click'}"              data-analytics-id="${this.escapeHTML(deal.externalProductId || deal.id || '')}"              data-product-name="${this.escapeHTML(deal.title)}"              data-merchant-name="${this.escapeHTML(deal.merchant)}"              data-price="${deal.rawPrice || ''}"              data-previous-price="${deal.rawMsrp || ''}"              data-original-link="${this.escapeHTML(originalLink)}"              data-revenue-id="${revenueId}"              data-index="${index}"              data-total="${displayDeals.length}"              data-in-stock="${deal.inStock !== false}"              data-currency="${this.escapeHTML(isoCurrencyCode)}"              data-model-id="${this.escapeHTML(deal.modelId || '')}"              data-product-key="${this.escapeHTML(deal.productKey || '')}"              data-merchant-id="${this.escapeHTML(deal.merchantId || '')}"            `;                        let priceGroupHtml = '';            let isSavingsSquadMode = this.getViewMode() === 'savings_squad';            let ctaText = 'View Deal';            let formattedPrice = '';            let msrpHtml = '';                        if (deal.isCheckPrice) {              ctaText = isSavingsSquadMode ? 'View Deal' : 'Check Price';              if (isSavingsSquadMode) {                priceGroupHtml = `                  \x3Cdiv class="tg-df-card-merchant-wrapper">                    \x3Cspan class="tg-df-card-merchant-pill" title="${this.escapeHTML(deal.merchant)}">${this.escapeHTML(deal.merchant)}${_span}                  ${_div}                  \x3Cdiv class="tg-df-card-price-group">                  ${_div}                `;              } else {                priceGroupHtml = `                  \x3Cdiv class="tg-df-card-merchant-wrapper">                    \x3Cspan class="tg-df-card-merchant-pill" title="${this.escapeHTML(deal.merchant)}">${this.escapeHTML(deal.merchant)}${_span}                  ${_div}                  \x3Cdiv class="tg-df-card-price-group">                    \x3Cspan class="tg-df-card-price" style="font-size: 15px; font-weight: 500; font-style: italic;">See price at retailer${_span}                  ${_div}                `;              }            } else {              // Format Price              formattedPrice = escapedPrice.includes(currencySym)                 ? escapedPrice                 : `${currencySym}${escapedPrice}`;                              // Format MSRP              msrpHtml = deal.msrp && deal.rawMsrp > deal.rawPrice                ? `\x3Cspan class="tg-df-card-msrp">${escapedMsrp.includes(currencySym) ? escapedMsrp : currencySym + escapedMsrp}${_span}`                : '';                              priceGroupHtml = `                \x3Cdiv class="tg-df-card-merchant-wrapper">                  \x3Cspan class="tg-df-card-merchant-pill" title="${this.escapeHTML(deal.merchant)}">${this.escapeHTML(deal.merchant)}${_span}                ${_div}                \x3Cdiv class="tg-df-card-price-group">                  ${isSavingsSquadMode ? '' : `                  \x3Cspan class="tg-df-card-price">${formattedPrice}${_span}                  ${msrpHtml}                  `}                ${_div}              `;            }                        const discountBadgeHtml = deal.savingLabel && !deal.isCheckPrice              ? `\x3Cspan class="tg-df-card-discount-badge">${this.escapeHTML(deal.savingLabel)}${_span}`              : '';                          // HACK for CMS            const _button = '<' + '/button>';            const _svg = '<' + '/svg>';            const _path = '<' + '/path>';            const _rect = '<' + '/rect>';            const _circle = '<' + '/circle>';            const _polyline = '<' + '/polyline>';            const _line = '<' + '/line>';                        let badgesHtml = '';            const primeBadge = deal.isPrime ? `              \x3Cspan class="tg-df-tag tg-df-tag-prime">                \x3Csvg width="12" height="12" viewBox="0 0 24 24" fill="currentColor">                  \x3Cpath d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z">${_path}                ${_svg} Prime              ${_span}            ` : '';                        const couponsBadge = deal.merchant && deal.merchant.toLowerCase().includes('amazon') ? '' : `              \x3Cdiv class="tg-df-coupon-wrapper" data-merchant="${this.escapeHTML(deal.merchant)}" style="display:inline-flex; align-items:center;">                \x3Cdiv class="tg-df-coupon-spinner">${_div}                \x3Cbutton type="button" class="tg-df-tag tg-df-tag-coupons" data-action="coupons-click" data-merchant="${this.escapeHTML(deal.merchant)}" style="display:none;">                  \x3Csvg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">                    \x3Cpath d="M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z">${_path}                    \x3Cline x1="7" y1="7" x2="7.01" y2="7">${_line}                  ${_svg} Coupons                ${_button}              ${_div}            `;                        // Note: We always add coupons badge if there's a chance, but to allow 3-line titles we check wrapper display state            badgesHtml = `              \x3Cdiv class="tg-df-card-badges">                ${primeBadge}                ${couponsBadge}              ${_div}            `;            const _linearGradient = '<' + '/linearGradient>';            const _polygon = '<' + '/polygon>';            const _stop = '<' + '/stop>';            const _defs = '<' + '/defs>';                        let starHtml = '';            if (deal.starRating) {              let rating = deal.starRating;                            if (rating > 0) {                const fullStars = Math.floor(rating);                const halfStar = (rating - fullStars) >= 0.5 ? 1 : 0;                const emptyStars = Math.max(0, 5 - fullStars - halfStar);                const blue = '#1f69ff'; // Tom's guide brand color from VIEW DEAL button                const gray = '#cbd5e1';                                const starSvgFull = `\x3Csvg width="14" height="14" viewBox="0 0 24 24" fill="${blue}" stroke="${blue}" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpolygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26">${_polygon}${_svg}`;                                const gradId = 'half_grad_' + Math.floor(Math.random()*1000000);                const starSvgHalf = `\x3Csvg width="14" height="14" viewBox="0 0 24 24" stroke="${blue}" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">\x3Cdefs>\x3ClinearGradient id="${gradId}" x1="0" x2="1" y1="0" y2="0">\x3Cstop offset="50%" stop-color="${blue}">${_stop}\x3Cstop offset="50%" stop-color="transparent">${_stop}${_linearGradient}${_defs}                  \x3Cpolygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26" fill="url(#${gradId})">${_polygon}${_svg}`;                                  const starSvgEmpty = `\x3Csvg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="${gray}" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpolygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26">${_polygon}${_svg}`;                                let stars = [];                for (let i=0; i<fullStars; i++) stars.push(starSvgFull);                if (halfStar) stars.push(starSvgHalf);                for (let i=0; i<emptyStars; i++) stars.push(starSvgEmpty);                                starHtml = `\x3Cdiv class="tg-df-card-stars" style="display:flex;align-items:center;margin-bottom:8px;font-size:13px;font-weight:600;color:var(--tg-df-text-muted);">                  \x3Cspan style="margin-right:6px;">Tom's Guide:${_span}                  \x3Cdiv style="display:flex;gap:2px;">                    ${stars.join('')}                  ${_div}                ${_div}`;              }            }            let htmlOutput = '';            if (isSavingsSquadMode) {              htmlOutput += `              \x3Cdiv class="hawk-deal-widget-container tg-df-mobile-only" data-collapsible="true">                ${this.editorMode ? `\x3Cinput type="checkbox" class="tg-df-deal-checkbox" data-id="${this.escapeHTML(deal.id)}" ${this.selectedDeals.has(deal.id) ? 'checked' : ''} style="margin-bottom: 10px;">` : ''}                \x3Cdiv class="hawk-deal-widget-wrap">                  \x3Cdiv class="hawk-deal-widget-image-container">                    \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" rel="sponsored noopener" target="_blank" class="hawk-affiliate-link-deal-widget" ${dataAttr}>                      \x3Cimg ${deal.image ? `src="${this.escapeHTML(deal.image)}"` : ''} alt="${this.escapeHTML(deal.title)}" class="hawk-lazy-image-deal-widget" loading="lazy" width="140" height="160" onerror="${deal.fallbackImage ? `if(!this.dataset.fb) { this.dataset.fb='1'; this.src='${this.escapeHTML(deal.fallbackImage)}'; } else { this.style.opacity='0'; }` : `this.style.opacity='0';`}">                    ${_a}                  ${_div}                  \x3Cdiv class="hawk-deal-widget-text-cta-container">                    \x3Cdiv class="hawk-deal-widget-text-body-container">                      \x3Cdiv class="hawk-deal-widget-text-body-main">                        \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" class="hawk-affiliate-link-container" rel="sponsored noopener" target="_blank" ${dataAttr}>                          ${deal.isCheckPrice ? `                            \x3Cspan class="hawk-deal-widget-title-product-title">${this.escapeHTML(deal.title)}${_span}                          ` : `                            \x3Cspan class="hawk-deal-widget-title-product-title">${deal.brand ? this.escapeHTML(deal.brand) + ' ' : ''}${this.escapeHTML(deal.productName || deal.title || '')}:${_span}                          `}                        ${_a}                        ${!deal.isCheckPrice && deal.rawMsrp && deal.rawMsrp > deal.rawPrice ? `                          \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" class="hawk-affiliate-link-container" rel="sponsored noopener" target="_blank" ${dataAttr}>                            \x3Cspan class="hawk-deal-widget-title-was-price">was ${currencySym}${escapedMsrp}${_span}                          ${_a}                        ` : ''}                        \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" class="hawk-affiliate-link-container" rel="sponsored noopener" target="_blank" ${dataAttr}>                          \x3Cspan class="hawk-deal-widget-title-retailer-price">                            ${!deal.isCheckPrice ? `                              \x3Cspan class="hawk-deal-widget-title-price">now ${formattedPrice}${_span}                              \x3Cspan class="hawk-deal-widget-title-retailer"> at ${this.escapeHTML(deal.merchant)}${_span}                            ` : `                              \x3Cspan class="hawk-deal-widget-title-price">See price at ${this.escapeHTML(deal.merchant)}${_span}                            `}                          ${_span}                        ${_a}                        ${deal.description ? `\x3Cdiv class="hawk-deal-widget-text-body-description">\x3Cp>${this.escapeHTML(deal.description)}${_p}${_div}` : ''}                      ${_div}                    ${_div}                    \x3Cdiv class="hawk-deal-widget-footer">                      \x3Cdiv class="hawk-deal-widget-button-wrapper">                        \x3Cdiv class="hawk-deal-widget-preferred-partner-wrapper">                          \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" class="hawk-affiliate-link-deal-button" rel="sponsored noopener" target="_blank" ${dataAttr}>                            \x3Cspan>${deal.isCheckPrice ? 'Check Price' : 'View Deal'}${_span}                          ${_a}                        ${_div}                      ${_div}                    ${_div}                  ${_div}                ${_div}              ${_div}              `;            }            htmlOutput += `              \x3Cdiv class="tg-df-card ${isSavingsSquadMode ? 'tg-df-desktop-only' : ''}">                ${this.editorMode ? `\x3Cinput type="checkbox" class="tg-df-deal-checkbox" data-id="${this.escapeHTML(deal.id)}" ${this.selectedDeals.has(deal.id) ? 'checked' : ''}>` : ''}                \x3Cdiv class="tg-df-card-image-box">                  ${discountBadgeHtml}                  \x3Ca href="${this.escapeHTML(rewrittenLink)}" ${dataAttr} target="_blank" rel="noopener nofollow" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;">                    \x3Cimg ${deal.image ? `src="${this.escapeHTML(deal.image)}"` : ''} alt="${this.escapeHTML(deal.title)}" class="tg-df-card-image" loading="lazy" onerror="${deal.fallbackImage ? `if(!this.dataset.fb) { this.dataset.fb='1'; this.src='${this.escapeHTML(deal.fallbackImage)}'; } else { this.style.opacity='0'; }` : `this.style.opacity='0';`}">                  ${_a}                ${_div}                \x3Cdiv class="tg-df-card-body">                  ${starHtml}                  ${badgesHtml}                  \x3Ch3 class="tg-df-card-title tg-df-custom-savings-squad-title" title="${this.escapeHTML(deal.title)}">                    \x3Ca href="${this.escapeHTML(rewrittenLink)}" disable-tracking="true" target="_blank" rel="noopener nofollow" style="text-decoration: none; color: inherit;">                      ${isSavingsSquadMode                         ? (deal.isCheckPrice                             ? (deal.title && deal.title.includes(':')                                 ? `\x3Cstrong>${this.escapeHTML(deal.title.substring(0, deal.title.indexOf(':') + 1))}${_strong}\x3Cspan style="color: #1f69ff; font-weight: normal;">${this.escapeHTML(deal.title.substring(deal.title.indexOf(':') + 1))}${_span}`                                : this.escapeHTML(deal.title)                              )                             : `\x3Cstrong>${deal.brand ? this.escapeHTML(deal.brand) + ' ' : ''}${this.escapeHTML(deal.productName || deal.title || '')}:${_strong} ${deal.rawMsrp && deal.rawMsrp > deal.rawPrice ? `\x3Cspan style="color: #d0021b; text-decoration: line-through; font-weight: normal; margin-right: 4px;">was ${currencySym}${escapedMsrp}${_span} ` : ''}\x3Cspan style="color: #1f69ff; font-weight: normal;">now ${formattedPrice} at ${this.escapeHTML(deal.merchant)}${_span}`                          )                        : this.escapeHTML(deal.title)                      }                    ${_a}                  ${_h3}                  ${deal.description ? `\x3Cp style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 12px; line-height: 1.4;">${this.escapeHTML(deal.description)}${_p}` : ''}                  \x3Cdiv class="tg-df-card-footer">                    ${priceGroupHtml}                    \x3Ca href="${this.escapeHTML(rewrittenLink)}" ${dataAttr} target="_blank" rel="noopener nofollow" class="tg-df-card-cta ${isSavingsSquadMode ? 'tg-df-cta-savings-squad' : ''}" style="text-decoration: none;">${ctaText}${_a}                  ${_div}                ${_div}              ${_div}            `;                        return htmlOutput;            } catch (e) {               console.log("Error rendering deal in map for index", index, typeof deal === 'object' ? JSON.stringify(deal) : deal, "MSG:", e.message);               return '';            }          }).join('');                    if (displayDeals.length > this.displayLimit || ((this.getViewMode() === 'carousel' || this.getViewMode() === 'auto') && displayDeals.length > 0 && displayDeals.length % ((this.rowsSelect && this.rowsSelect.value) ? parseInt(this.rowsSelect.value, 10) : 12) === 0)) {            if (this.getViewMode() === 'carousel') {               dealsHtml += `                 \x3Cbutton type="button" class="tg-df-load-more-card tg-df-load-more">                   \x3Csvg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-bottom: 8px;">\x3Cpath d="M5 12h14">\x3C/path>\x3Cpath d="m12 5 7 7-7 7">\x3C/path>\x3C/svg>                   Load More                 ${_button}               `;            } else {               dealsHtml += `                 \x3Cdiv style="width: 100%; display: flex; justify-content: center; margin-top: 16px; grid-column: 1 / -1;">                   \x3Cbutton type="button" class="tg-df-tag-outline tg-df-load-more" style="padding: 8px 24px; border-radius: 100px; font-weight: 600; font-size: 14px; cursor: pointer; display: flex; align-items: center;">Load More${_button}                 ${_div}               `;            }          }                    this.grid.innerHTML = dealsHtml;          // Inject JSON-LD          try {            let targetNode = this.hostContainer || document.head;            let jsonLdScript = targetNode.querySelector('#tg-df-json-ld-' + this.widgetId);            if (!jsonLdScript) {                jsonLdScript = document.createElement('script');                jsonLdScript.type = 'application/ld+json';                jsonLdScript.id = 'tg-df-json-ld-' + this.widgetId;                targetNode.appendChild(jsonLdScript);            }            const jsonLdData = {              "@context": "https://schema.org",              "@type": "ItemList",              "itemListElement": displayDeals.slice(0, this.displayLimit).map((deal, index) => {                 let isoCurrency = "USD";                 if (deal.currency === '£') isoCurrency = "GBP";                 else if (deal.currency === '€') isoCurrency = "EUR";                 else if (deal.currency === 'A$') isoCurrency = "AUD";                 else if (deal.currency === 'CA$') isoCurrency = "CAD";                 const areaCode = typeof this.getAreaCode === 'function' ? this.getAreaCode() : 'US';                 const revenueId = typeof generateRevenueId === 'function' ? generateRevenueId(deal.url, deal.title, deal.merchant, null) : '';                 const rewrittenLink = typeof rewriteAffiliateLink === 'function' ? rewriteAffiliateLink(deal.url, areaCode, revenueId) : deal.url;                 return {                   "@type": "ListItem",                   "position": index + 1,                   "item": {                     "@type": "Product",                     "name": deal.title,                     "image": deal.image || "",                     "description": deal.description || "",                     "brand": {                       "@type": "Brand",                       "name": deal.brand || ""                     },                     "offers": {                       "@type": "Offer",                       "priceCurrency": isoCurrency,                       "price": deal.rawPrice || 0,                       "url": rewrittenLink,                       "seller": {                         "@type": "Organization",                         "name": deal.merchant || ""                       }                     }                   }                 };              }).filter(item => item.item.name)            };            jsonLdScript.textContent = JSON.stringify(jsonLdData);          } catch(e) { console.warn("JSON-LD generation failed", e); }                    let gridWrapper = this.grid.parentElement;          if (gridWrapper && gridWrapper.classList.contains('tg-df-grid-wrapper')) {             let rightChevron = gridWrapper.querySelector('.tg-df-carousel-scroll-right');             let leftChevron = gridWrapper.querySelector('.tg-df-carousel-scroll-left');             if (this.getViewMode() === 'carousel') {                 // The observer set up in setupScrollListeners handles visibility.                 if (rightChevron) rightChevron.style.display = 'flex';                 if (leftChevron) leftChevron.style.display = 'none'; // reset correctly             } else {                 if (rightChevron) rightChevron.style.display = 'none';                 if (leftChevron) leftChevron.style.display = 'none';             }          }                    const loadMoreBtn = this.grid.querySelector('.tg-df-load-more');          if (loadMoreBtn) {            loadMoreBtn.addEventListener('click', async () => {              if (typeof trackElementInteraction === 'function') {                trackElementInteraction({ id: 'load-more', name: 'Load more', label: 'Load More Results' });              }              if (displayDeals.length <= this.displayLimit) {                 loadMoreBtn.innerHTML = `                  <svg class="tg-df-spinner" style="width: 16px; height: 16px; display: inline-block; vertical-align: middle; margin-right: 8px;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M12 2v4m0 12v4M4.93 4.93l2.83 2.83m8.48 8.48l2.83 2.83M2 12h4m12 0h4M4.93 19.07l2.83-2.83m8.48-8.48l2.83-2.83"/></svg>                  Loading...                 `;                 loadMoreBtn.disabled = true;                 await this.fetchDeals(this.currentQuery, true);              } else {                 this.displayLimit += this.getRowsLimit();                 this.render();              }            });          }                      this.bindCouponButtons();            this.checkAndUpdateCoupons();                        // Allow hawklinks.js to discover and rewrite our widget links             // by appending the .article-body class and manually triggering processArticle.            let container = this.root.classList.contains('tg-df-container') ? this.root : this.root.querySelector('.tg-df-container');            if (container && !container.classList.contains('article-body')) {               container.classList.add('article-body');            }            setTimeout(() => {               if (this.grid && !this.grid.classList.contains('article-body')) this.grid.classList.add('article-body');               document.dispatchEvent(new CustomEvent('processArticle', { detail: { element: this.root } }));            }, 50);          } catch(e) {            console.warn("Widget render error", e);          }        }                async checkAndUpdateCoupons() {          const wrappers = Array.from(this.root.querySelectorAll('.tg-df-coupon-wrapper'));          if (wrappers.length === 0) return;                    const merchants = [...new Set(wrappers.map(w => w.getAttribute('data-merchant')).filter(Boolean))];          if (merchants.length === 0) return;          const couponResultsMap = await this.checkMerchantsCouponsBulk(merchants);                    for (const merchant of merchants) {            const hasCoupons = !!couponResultsMap[merchant];            const merchantWrappers = wrappers.filter(w => w.getAttribute('data-merchant') === merchant);            merchantWrappers.forEach(wrapper => {              const spinner = wrapper.querySelector('.tg-df-coupon-spinner');              const btn = wrapper.querySelector('.tg-df-tag-coupons');                            if (spinner) spinner.style.display = 'none';                            if (hasCoupons && btn) {                btn.style.display = 'inline-flex';              } else if (!hasCoupons) {                wrapper.style.display = 'none';              }            });          }        }        updateFloatingCopyBar() {          if (!this.editorBar || !this.editorSelectedCount) return;          if (this.editorMode && this.selectedDeals.size > 0) {            this.editorBar.style.display = 'flex';            this.editorSelectedCount.innerText = this.selectedDeals.size;          } else {            this.editorBar.style.display = 'none';          }        }        async copySelectedDealsToCMS() {           function htmlToSlate(htmlString) {              if (!htmlString) return [{ type: 'paragraph', children: [{ text: '' }] }];              let doc;              if (typeof window !== 'undefined' && window.DOMParser) {                 doc = new DOMParser().parseFromString(htmlString, 'text/html');              } else {                 doc = document.implementation.createHTMLDocument('');                 doc.body.innerHTML = htmlString;              }                            function parseNode(node, marks = {}) {                  if (node.nodeType === 3) {                      const text = node.textContent;                      if (!text) return null;                      return { text: text, ...marks };                  }                  if (node.nodeType === 1) {                      const tagName = node.tagName.toLowerCase();                      if (tagName === 'br') {                          return { type: 'line-break', children: [{ text: '' }] };                      }                      if (tagName === 'p') {                          let children = Array.from(node.childNodes).map(child => parseNode(child, marks)).flat().filter(Boolean);                          if (children.length === 0) children.push({ text: "" });                          return { type: 'paragraph', children };                      }                      if (tagName === 'strong' || tagName === 'b') {                          const newMarks = { ...marks, bold: true };                          return Array.from(node.childNodes).map(child => parseNode(child, newMarks)).flat().filter(Boolean);                      }                      if (tagName === 'em' || tagName === 'i') {                          const newMarks = { ...marks, italic: true };                          return Array.from(node.childNodes).map(child => parseNode(child, newMarks)).flat().filter(Boolean);                      }                      if (tagName === 'a') {                          const href = node.getAttribute('href') || '';                          let children = Array.from(node.childNodes).map(child => parseNode(child, marks)).flat().filter(Boolean);                          if (children.length === 0) children.push({ text: "" });                          return {                              type: 'link',                              url: href,                              isNoFollow: (node.getAttribute('rel') || '').includes('nofollow'),                              isSponsored: (node.getAttribute('rel') || '').includes('sponsored'),                              isOpenNewTab: node.getAttribute('target') === '_blank',                              isPreventDataRewrite: false,                              children: children                          };                      }                      return Array.from(node.childNodes).map(child => parseNode(child, marks)).flat().filter(Boolean);                  }                  return null;              }                            let blocksArray = [];              let currentParagraphChildren = [];              function flushParagraph() {                  if (currentParagraphChildren.length > 0) {                      blocksArray.push({ type: 'paragraph', children: currentParagraphChildren });                      currentParagraphChildren = [];                  }              }              Array.from(doc.body.childNodes).forEach(node => {                  const parsed = parseNode(node, {});                  const parsedItems = Array.isArray(parsed) ? parsed : (parsed ? [parsed] : []);                  parsedItems.forEach(item => {                      if (item.type === 'paragraph') {                          flushParagraph();                          blocksArray.push(item);                      } else {                          currentParagraphChildren.push(item);                      }                  });              });              flushParagraph();              if (blocksArray.length === 0) {                  blocksArray = [{ type: 'paragraph', children: [{ text: '' }] }];              }              return blocksArray;           }           const blocks = [];                      this.editorCopyBtn.innerHTML = '\x3Cspan class="tg-df-coupon-spinner" style="display:inline-block; margin-right:8px; border-top-color:#fff;">' + '<' + '/span> Copying...';           for (const deal of Array.from(this.selectedDeals.values())) {              const url = deal.url;              const merchant = deal.merchant;              const title = deal.title;              const image = deal.image;              const currentPrice = deal.currency + deal.rawPrice;              const wasPrice = deal.hasWasPrice && deal.rawMsrp > deal.rawPrice ? deal.currency + deal.rawMsrp : '';                            let couponsChildren = [];              try {                  const area = this.getAreaCode();                  const apiUrl = new URL('https://search-api.fie.future.net.uk/widget.php');                  apiUrl.searchParams.append('model_name', 'Everything');                  apiUrl.searchParams.append('language', 'en-GB');                  apiUrl.searchParams.append('area', area);                  apiUrl.searchParams.append('combine_product_types', '1');                  apiUrl.searchParams.append('filter_merchant_name', merchant);                  apiUrl.searchParams.append('all_filters', 'false');                  apiUrl.searchParams.append('exclude_unlabelled', 'false');                  apiUrl.searchParams.append('include_specs', 'false');                  apiUrl.searchParams.append('sort', 'voucher');                  apiUrl.searchParams.append('distinct_merchants', 'natural');                  apiUrl.searchParams.append('filter_product_types', 'vouchers,offer_deals,newsletter');                  apiUrl.searchParams.append('rows', '3');                  apiUrl.searchParams.append('origin', 'widgets-clientside');                                    let res; try { res = await fetch(apiUrl.toString()); } catch (e) { return; }                  if (res.ok) {                      const data = await res.json();                      let offers = [];                      if (data && data.widget && data.widget.data && Array.isArray(data.widget.data.offers)) {                        offers = data.widget.data.offers;                      } else if (data && data.data && Array.isArray(data.data.offers)) {                        offers = data.data.offers;                      }                                            if (offers.length > 0) {                          couponsChildren.push({ text: "Also check out these coupons: ", bold: true });                          offers.slice(0, 3).forEach((offer, idx) => {                              const actualOffer = offer.offer || offer;                              const offerName = actualOffer.name || actualOffer.title || offer.model_name || offer.title || offer.name || 'Coupon';                              const linkUrl = actualOffer.link || actualOffer.url || actualOffer.offer_link || '#';                              couponsChildren.push({ type: "line-break", children: [{ text: "" }] });                              couponsChildren.push({ text: "🎟️ " });                              couponsChildren.push({                                  type: "link",                                  url: linkUrl,                                  isNoFollow: true,                                  isSponsored: false,                                  isOpenNewTab: true,                                  isPreventDataRewrite: false,                                  children: [{ text: offerName, bold: true }]                              });                          });                      }                  }              } catch (err) {                  console.warn('Failed to fetch coupons for', merchant, err);              }              let descriptionValue = [];              if (deal.text) {                 descriptionValue = htmlToSlate(deal.text);              } else {                 const dealDescriptions = [                   `Don't miss out on this fantastic deal for the ${title}. It is currently available at ${merchant} for a highly competitive price.`,                   `We've spotted an excellent price drop on the ${title}. Grab it now at ${merchant} before it's gone.`,                   `The ${title} is currently seeing a generous discount over at ${merchant}. This is a perfect time to buy if you've been holding out.`,                   `If you're in the market for the ${title}, ${merchant} has just the deal for you.`,                   `Score the ${title} for less at ${merchant} right now. This is a rare chance to save big.`,                   `Upgrade your setup with the ${title}, now available at a stellar price via ${merchant}.`                 ];                 const randomDescription = dealDescriptions[Math.floor(Math.random() * dealDescriptions.length)];                 descriptionValue = [                    { type: "paragraph", children: [{ text: randomDescription }] }                 ];              }                            if (couponsChildren.length > 0) {                 let lastBlock = descriptionValue[descriptionValue.length - 1];                 if (lastBlock && lastBlock.type === 'paragraph') {                     lastBlock.children.push({ type: "line-break", children: [{ text: "" }] });                     lastBlock.children.push({ type: "line-break", children: [{ text: "" }] });                     lastBlock.children.push({ text: "Also check out these coupons: ", bold: true });                     lastBlock.children.push({ type: "line-break", children: [{ text: "" }] });                     lastBlock.children = lastBlock.children.concat(couponsChildren);                 } else {                     descriptionValue.push({                         type: "paragraph",                         children: [                             { type: "line-break", children: [{ text: "" }] },                             { type: "line-break", children: [{ text: "" }] },                             { text: "Also check out these coupons: ", bold: true },                             { type: "line-break", children: [{ text: "" }] },                             ...couponsChildren                         ]                     });                 }              }              function normalizeCurrencyToISO(symbol) {                const map = { '£': 'GBP', '$': 'USD', 'A$': 'AUD', 'CA$': 'CAD', '€': 'EUR' };                return map[symbol] || symbol;              }              const isoCurrency = normalizeCurrencyToISO(deal.currency);              blocks.push({                 id: (window.crypto && window.crypto.randomUUID) ? window.crypto.randomUUID() : 'cms-' + Date.now() + Math.random(),                 blockTypeName: "deal",                 excludeFrom: [],                 collapsible: false,                 props: {                    description: {                       value: descriptionValue,                       touched: false,                       validationMessage: ""                    },                    image: {                       value: {                          credit: [{ type: "paragraph", children: [{ text: merchant }] }],                          dateCreated: Date.now(),                          dateModified: Date.now(),                          distribution: [],                          fileSize: 0,                          height: 1000,                          id: deal.id,                          imageRights: "",                          src: image,                          name: title + ".jpg",                          tags: [],                          width: 1000                       },                       touched: false,                       validationMessage: ""                    },                    showDealButton: { value: true, touched: false, validationMessage: "" },                    isPreferredPartner: { value: false, touched: false, validationMessage: "" },                    linkHref: { value: url, touched: false, validationMessage: "" },                    linkLabel: { value: "", touched: false, validationMessage: "" },                    linkIsNoFollow: { value: true, touched: false, validationMessage: "" },                    linkIsSponsored: { value: false, touched: false, validationMessage: "" },                    linkIsOpenNewWindow: { value: true, touched: false, validationMessage: "" },                    customPromoFlags: { value: [], touched: false, validationMessage: "" },                    showStarDeal: { value: false, touched: false, validationMessage: "" },                    savingType: { value: "none", touched: false, validationMessage: "" },                    starDealPromoFlag: { value: "", touched: false, validationMessage: "" },                    showEditorsChoice: { value: false, touched: false, validationMessage: "" },                    editorsChoiceTitle: { value: "", touched: false, validationMessage: "" },                    hawkPriceCurrency: { value: { value: isoCurrency, label: isoCurrency }, touched: false, validationMessage: "" },                    hawkPrice: { value: deal.hasWasPrice ? String(deal.rawMsrp) : String(deal.rawPrice), touched: false, validationMessage: "" },                    hawkSalePrice: { value: String(deal.rawPrice), touched: false, validationMessage: "" },                    lastCheckedPriceDate: { value: "", touched: false, validationMessage: "" },                    hawkModel: { touched: false, validationMessage: "" },                    productId: { value: "", touched: false, validationMessage: "" },                    voucherId: { value: "", touched: false, validationMessage: "" },                    brand: { value: deal.brand || merchant, touched: false, validationMessage: "" },                    productName: { value: title, touched: false, validationMessage: "" },                    label: { value: "", touched: false, validationMessage: "" },                    retailer: { value: merchant, touched: false, validationMessage: "" },                    priceCheckError: false                 },                 failedFetchError: ""              });           }           const payload = {              type: "articleBuilderPages",              data: blocks           };           const jsonStr = JSON.stringify(payload);                      if (navigator.clipboard && navigator.clipboard.writeText) {              navigator.clipboard.writeText(jsonStr).then(() => {                 this.editorCopyBtn.innerHTML = 'Copied!';                 setTimeout(() => {                    this.editorCopyBtn.innerHTML = '\x3Csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-right: 6px;">\x3Crect x="9" y="9" width="13" height="13" rx="2" ry="2"><' + '/rect>\x3Cpath d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"><' + '/path><' + '/svg> Copy to CMS';                 }, 2000);              }).catch(err => {                 console.warn('Failed to copy text: ', err);                 alert('Failed to copy deals to clipboard. See console.');              });           } else {              // Fallback              const textArea = document.createElement("textarea");              textArea.value = jsonStr;              document.body.appendChild(textArea);              textArea.focus();              textArea.select();              try {                 document.execCommand('copy');                 this.editorCopyBtn.innerHTML = 'Copied!';                 setTimeout(() => {                    this.editorCopyBtn.innerHTML = '\x3Csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-right: 6px;">\x3Crect x="9" y="9" width="13" height="13" rx="2" ry="2"><' + '/rect>\x3Cpath d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"><' + '/path><' + '/svg> Copy to CMS';                 }, 2000);              } catch (err) {                 console.warn('Fallback: Oops, unable to copy', err);                 alert('Fallback: Failed to copy deals to clipboard.');              }              document.body.removeChild(textArea);           }        }      }      // Initialize the Widget      if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', () => new DealsFinderWidget({ rootId: 'signal-deals-finder-root', rootNode: shadowRoot, hostContainer: hostContainer }));      } else {        new DealsFinderWidget({ rootId: 'signal-deals-finder-root', rootNode: shadowRoot, hostContainer: hostContainer });      }    })();  </script></div> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/dlss-5-is-fully-controllable-from-the-developer-nvidias-upscaler-might-be-better-than-expected</link>
                                                                            <description>
                            <![CDATA[ The original DLSS 5 announcement was controversial, but Nvidia has now addressed many of the key concerns. Here’s how DLSS 5 will maintain artistic intent for games. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">PGEiQUbugQ2LRUsFgAYq5j</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/PJS2JJLoZ3qWusm2ZFjrAW-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 22 Jul 2026 16:11:40 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[PC Gaming]]></category>
                                                    <category><![CDATA[Gaming]]></category>
                                                                                                <author><![CDATA[ tony.polanco@futurenet.com (Tony Polanco) ]]></author>                    <dc:creator><![CDATA[ Tony Polanco ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/atzRNqFt5wYgEUPBDahWsD-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/PJS2JJLoZ3qWusm2ZFjrAW-1920-80.jpg">
                                                            <media:credit><![CDATA[Nvidia]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Nvidia DLSS 5]]></media:description>                                                            <media:text><![CDATA[Nvidia DLSS 5]]></media:text>
                                <media:title type="plain"><![CDATA[Nvidia DLSS 5]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/PJS2JJLoZ3qWusm2ZFjrAW-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>To say that people weren’t impressed when <a href="https://www.tomsguide.com/computing/gpus/deciphering-dlss-5-pc-gaming-breakthrough-or-nvidias-ai-slop-era">Nvidia DLSS 5</a> was announced would be an understatement. Gamers and critics alike expressed concerns over heavy-handed “beauty filters” smoothing out character faces and AI overwriting developer art direction. The initial requirement of a second GPU for rendering also didn’t go over well.</p><p>At SIGGRAPH, Nvidia held a follow-up keynote that was practically built to address the concerns folks have with DLSS 5. Instead of focusing on how photo-realistic DLSS 5 could make graphics appear, the keynote centered around the amount of control artists will have over the technology.</p><p>Here’s a breakdown of what Nvidia discussed at SIGGRAPH and how DLSS 5 might not be as bad as we feared.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/vXDetI2TUWw" allowfullscreen></iframe></div></div><h2 id="granular-control">Granular control</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="YxnzjvFDDGGrmrSjc9iYRU" name="Nvidia DLSS 5 three models 2" alt="Nvidia DLSS 5" src="https://cdn.mos.cms.futurecdn.net/YxnzjvFDDGGrmrSjc9iYRU-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>As you might recall, the biggest complaint with DLSS 5 is how the graphics appeared to have an Instagram/TikTok filter slapped over them. A less charitable description would be an “AI slop” filter. Nvidia addressed this concern directly, saying that game artists would have full control over a game’s graphics.</p><p>Developers won’t be forced into all-or-nothing with AI. They’ll be able to mask out individual characters, faces, props, or background elements so DLSS 5 either ignores them or processes them with tailored settings. Structural and Tone Intensity sliders will give devs fine control over how things appear. There will also be three distinct AI models for developers to assign. </p><h2 id="no-ai-overwrites">No AI overwrites</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="mnvD4pGZ6ePcqrKZBC2UR5" name="Nvidia DLSS 5 granular controls" alt="DLSS 5" src="https://cdn.mos.cms.futurecdn.net/mnvD4pGZ6ePcqrKZBC2UR5-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Another concern is that the AI would hallucinate on low-poly geometry or rewrite hand-crafted visuals. DLSS 5 isn’t generating a game scene from scratch but relies strictly on internal game engine buffers to preserve the artist’s original intent.</p><p>Nvidia emphasized that traditional rasterization and ray tracing still build the entire frame first, defining geometry, lighting anchors, motion vectors, and surface normals. Nvidia framed DLSS 5 as a third category of AI rendering alongside upscaling reconstruction and frame generation. The engine creates the world while the model enriches complex lighting elements.</p><h2 id="latency">Latency</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="q7R5wTB9YVYfCsA6htPPrd" name="Nvidia DLSS 5 frames" alt="Nvidia DLSS 5" src="https://cdn.mos.cms.futurecdn.net/q7R5wTB9YVYfCsA6htPPrd-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Generative video models usually process frames in batches, which can introduce input lag. That’s obviously a non-starter for fast-paced games like CSGO 2.</p><p>Nvidia says that DLSS 5 processes the current frame using the game’s engine’s native motion vectors without looking ahead to future frames. By avoiding multi-frame batch processing, Nvidia’s goal is to eliminate both generative latency and temporal shimmering artifacts.</p><h2 id="one-gpu-needed-not-two">One GPU needed, not two</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2002px;"><p class="vanilla-image-block" style="padding-top:56.19%;"><img id="m5EFY2WowRnf9kJ5ELvfGg" name="Nvidia DLSS 5 one GPU" alt="DLSS 5" src="https://cdn.mos.cms.futurecdn.net/m5EFY2WowRnf9kJ5ELvfGg-1920-80.jpg" mos="" align="middle" fullscreen="" width="2002" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>When Nvidia first demoed DLSS 5, the computational overhead was so heavy that it reportedly required dual high-end GPUs just to run smoothly. Naturally, this isn’t feasible for most players, but Nvidia says you’ll be able to run DLSS 5 on a single GPU.</p><p>To that end, Nvidia revealed that they have distilled the massive generative model into a much smaller, single-step diffusion model. The updated implementation has been engineered to run on a single RTX GPU with efficient VRAM allocation instead of requiring multi-GPU rigs that only hardcore users own.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OdR22e"></div>                            </div>                            <script src="https://kwizly.com/embed/OdR22e.js" async></script><h2 id="outlook">Outlook</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="xWV7Xvua8aPb7TaLHKQ5Jj" name="Nvidia RTX 50 series GPU" alt="Nvidia RTX 50-series GPU held in hand with Nvidia logo on green background" src="https://cdn.mos.cms.futurecdn.net/xWV7Xvua8aPb7TaLHKQ5Jj-1920-80.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future / Tom's Guide)</span></figcaption></figure><p>I’ve championed Nvidia DLSS for years, but I was one of the folks who wasn’t enamored with that initial DLSS 5 reveal. Now, after SIGGRAPH, I'm less worried about this fall's upcoming update.</p><p>We’ll have to wait to see how the final version functions, but I’m glad that Nvidia has addressed all the major concerns. If we can get richer game graphics without the infamous AI look, then we’ll all be winners.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/gpus/what-is-nvidia-dlss-explaining-the-ai-tech-transforming-pc-gaming-and-why-its-getting-controversial">What is Nvidia DLSS? Explaining the AI tech transforming PC gaming — and why it’s getting controversial</a></li><li><a href="https://www.tomsguide.com/gaming/theyre-completely-wrong-nvidia-ceo-jensen-huang-responds-to-dlss-5-criticism">Nvidia's 'GPT moment' for graphics rejected by gamers; CEO Jensen Huang rushes to defend DLSS 5</a></li><li><a href="https://www.tomsguide.com/gaming/pc-gaming/deciphering-dlss-4-5-i-tested-nvidias-new-upscaler-and-figured-out-when-to-use-model-l-or-m">DLSS 4.5 is now live — I tested Nvidia’s upscaler to see which model you should actually use</a></li></ul><div class="vizualizer-embed"><div class="tg-df-widget-host" data-widget-config="?search=laptops&min_discount_ratio=0.95&widget_title=Top+Deals+Handpicked+by+Our+Editors&widget_subtitle=Discover+the+best+discounts+currently+available%2C+curated+daily+by+the+Tom%27s+Guide+Savings+Squad.&bg_color=transparent" data-vizualizer-embed="true"></div>    <script>    /**     * Tom's Guide Deals Finder - Vanilla JS Encapsulated Engine     */    (function() {      // --- Freyr Analytics Adapter ---      function initAnalytics() {        window.dataLayer = window.dataLayer || [];        window.googletag = window.googletag || {};        window.googletag.cmd = window.googletag.cmd || [];        window.hawk = window.hawk || { analytics: { freyr: [] } };        window.hawk.analytics = window.hawk.analytics || { freyr: [] };        window.hawk.analytics.freyr = window.hawk.analytics.freyr || [];        window.freyr = window.freyr || { cmd: [] };        const scriptSrc = 'https://freyr.futurecdn.net/freyr.js';        const hostname = typeof window !== 'undefined' ? window.location.hostname : '';        const isTestEnv = typeof window.navigator !== 'undefined' && (window.navigator.webdriver || window.navigator.userAgent.includes('Headless'));        const shouldSendRealAnalytics = !isTestEnv && hostname && hostname !== 'localhost' && hostname !== '127.0.0.1' && !hostname.includes('run.app');        if (shouldSendRealAnalytics && !document.querySelector(`script[src="${scriptSrc}"]`)) {          const script = document.createElement('script');          script.src = scriptSrc;          script.async = true;          document.head.appendChild(script);        }      }      function storeEventForDebug(name, data) {        if (!window.hawk || !window.hawk.analytics || !window.hawk.analytics.freyr) return;        window.hawk.analytics.freyr.push({ name, data });        try {          if (typeof window !== 'undefined' && window.localStorage) {            window.localStorage.setItem("hawk", JSON.stringify(window.hawk));          }        } catch (e) {          // Ignore storage issues        }        try {          window.dispatchEvent(new CustomEvent("hawk-analytics-update"));        } catch (e) {}      }      function sendToFreyr(eventName, data) {        if (typeof window === 'undefined') return;        window.freyr = window.freyr || { cmd: [] };        window.freyr.cmd.push(() => {          if (window.freyr && window.freyr.pushAndUpdate) {            window.freyr.pushAndUpdate(eventName, data);          }        });      }      function sendEvent(event, skip = false) {        try {          storeEventForDebug(event.name, event.data);          if (!skip) {            sendToFreyr(event.name, event.data);          }        } catch (e) {          // Ensure tracking errors don't surface to the user        }      }      function getCookie(name) {        try {          const match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));          return match ? match[2] : null;        } catch (e) {          return null;        }      }      function normalizeCurrency(symbol) {        const map = {          '£': 'GBP',          '$': 'USD',          'A$': 'AUD',          'CA$': 'CAD',          '€': 'EUR'        };        return map[symbol] || symbol;      }      function trackElementInteraction(props) {        sendEvent({          name: 'elementInteraction',          data: {            element: {              action: props.action || "click",              id: props.id || undefined,              class: props.class || undefined,              name: props.name || undefined,              text: props.text || undefined,              label: props.label || undefined,              container: props.container || undefined,              url: props.url || undefined,              articleId: props.articleId || undefined            }          }        });      }      function generateRevenueId(url, productName, merchantName, modelId) {        const str = `${window.location.href}|${productName}|${merchantName}|${modelId || ''}|${new Date().toDateString()}|tomsguide`;        let hash = 0;        for (let i = 0; i < str.length; i++) {          const char = str.charCodeAt(i);          hash = ((hash << 5) - hash) + char;          hash = hash & hash;        }        let numericStr = Math.abs(hash).toString();        while (numericStr.length < 19) {          numericStr += Math.floor(Math.random() * 10).toString();        }        return numericStr.substring(0, 19);      }      function rewriteAffiliateLink(url, territory, revenueId) {        if (!url) return url;        const t = (territory || 'gb').toLowerCase();        return url.replace(/hawk-custom-tracking/g, `tomsguide-${t}-${revenueId}`);      }      function trackHawkEvent(params) {        const { clickType, widgetId, productCategoryName, product, productsArray, zeroBasedProductIndexOrNull, totalDealsOrProducts, areaClicked, merchant, revenueId, isoCurrencyCode, queryName, widgetTypeName } = params;        const data = {          event: "hawkEvent",          category: "Affiliates",          affiliate: {            action: {              type: clickType,              id: widgetId,              event: clickType === "appeared" ? "viewed" : "Click from",              timestamp: Date.now()            },            component: {              flag: "Editor",              product: productCategoryName || "deals",              category: `Signal Deal Finder ${widgetTypeName || "Carousel"} widget`,              type: clickType === "appeared" ? "review" : "signal product",              label: queryName || (product ? (product.name || "") : ""),              index: zeroBasedProductIndexOrNull === null || zeroBasedProductIndexOrNull === undefined ? -1 : zeroBasedProductIndexOrNull,              linkCount: totalDealsOrProducts || 0,              blockLayout: "",              areaClicked: areaClicked || ""            }          },          products: productsArray || (product && merchant ? [            {              product: {                primary: {                  id: product.id || product.matchId || null,                  name: product.name,                  type: "deal",                  price: product.price,                  previousPrice: product.previousPrice || null,                  currency: isoCurrencyCode || "USD",                  preorder: false,                  labels: [],                  link: product.link,                  originalLink: product.originalLink || null,                  revenueId: revenueId || null,                  startTime: null,                  endTime: null,                  voucherCode: null,                  voucherAudience: null,                  voucherPercentageSaving: null,                  voucherMoneySaving: null,                  voucherType: null,                  offerExclusive: false,                  offerScope: null,                  globalId: product.globalId || null,                  inStock: product.inStock !== false,                  contractProvider: null,                  contractMinutes: null,                  contractTexts: null,                  contractData: null,                  contractLength: null,                  contractMonthlyPrice: null,                  contractCurrency: isoCurrencyCode || "USD"                }              },              merchant: {                id: merchant.id || null,                name: merchant.name,                url: merchant.url || null,                network: merchant.network || null              },              model: {                id: product.modelId || null,                brand: product.brand || null,                name: product.name,                parent: product.parent || null              }            }          ] : []),          reviews: [],          _clear: true,          "gtm.uniqueEventId": Date.now() % 10000        };        sendEvent({ name: 'hawkEvent', data });      }      function trackDealClick(params) {        trackHawkEvent({ ...params, clickType: "retailer", areaClicked: "Signal Product Card" });      }      function trackViewSimilarClick(params) {        trackHawkEvent({ ...params, clickType: "retailer", areaClicked: "Signal Product Card View Similar" });      }      function trackPriceComparisonClick(params) {        trackHawkEvent({ ...params, clickType: "retailer", areaClicked: "Signal Price Comparison" });      }      function trackReviewClick(params) {        trackHawkEvent({ ...params, clickType: "review", areaClicked: "Signal Product Card Review Link" });      }      function trackShare(params) {        trackHawkEvent({ ...params, clickType: "share", areaClicked: "Signal Product Card Share" });      }      function trackDealsAppeared(widgetId, deals, revenueId, currency, queryName, widgetTypeName) {         if (!deals || deals.length === 0) return;                  const productsArray = deals.slice(0, 50).map((deal) => {            let voucherPct = null;            let rawPrice = parseFloat(deal.rawPrice) || parseFloat(deal.price) || null;            let rawMsrp = parseFloat(deal.rawMsrp) || parseFloat(deal.msrp) || null;            if (rawMsrp > rawPrice && rawPrice > 0) {              voucherPct = Math.round((1 - (rawPrice / rawMsrp)) * 100);            }            let numId = null;            if (deal.externalProductId && !isNaN(parseInt(deal.externalProductId))) {              numId = parseInt(deal.externalProductId);            } else if (deal.id && !isNaN(parseInt(deal.id))) {              numId = parseInt(deal.id);            } else {              numId = deal.matchId || null;            }            return {              product: {                primary: {                  id: numId,                  name: deal.productName || deal.title || "",                  type: "deal",                  price: rawPrice,                  previousPrice: rawMsrp,                  currency: currency || 'USD',                  preorder: false,                  labels: deal.modelBrand || deal.brand ? [                     { type: "brand", value: deal.modelBrand || deal.brand }                  ] : [],                  link: deal.url,                  originalLink: deal.url,                  revenueId: revenueId || null,                  startTime: null,                  endTime: null,                  voucherCode: null,                  voucherAudience: null,                  voucherPercentageSaving: voucherPct,                  voucherMoneySaving: null,                  voucherType: null,                  offerExclusive: false,                  offerScope: null,                  globalId: deal.productKey || null,                  inStock: deal.inStock !== false,                  contractProvider: null,                  contractMinutes: null,                  contractTexts: null,                  contractData: null,                  contractLength: null,                  contractMonthlyPrice: null,                  contractCurrency: currency || 'USD'                }              },              merchant: {                id: deal.merchantId ? parseInt(deal.merchantId) : null,                name: deal.merchant || "Retailer",                url: deal.merchantUrl || null,                network: deal.merchantNetwork || null              },              model: {                id: deal.modelId ? parseInt(deal.modelId) : null,                brand: deal.modelBrand || deal.brand || null,                name: deal.productName || deal.title || "",                parent: deal.modelParent || null              }            };         });                  trackHawkEvent({             clickType: "appeared",             widgetId: widgetId,             productCategoryName: "deals",             zeroBasedProductIndexOrNull: null,             totalDealsOrProducts: deals.length,             productsArray: productsArray,             queryName: queryName,             widgetTypeName: widgetTypeName         });      }      // 1. Setup Shadow DOM Sandbox      const currentScript = document.currentScript;      let hostContainer = null;      let template = null;            if (currentScript) {        let prev = currentScript.previousElementSibling;        while (prev) {          if (prev.tagName === 'TEMPLATE' && prev.classList.contains('tg-df-widget-template')) {            template = prev;          } else if (prev.tagName === 'DIV' && prev.classList.contains('tg-df-widget-host') && !prev.hasAttribute('data-initialized')) {            hostContainer = prev;            break;          }          prev = prev.previousElementSibling;        }      }            // Fallbacks in case script is deferred      if (!hostContainer) {        const hosts = document.querySelectorAll('.tg-df-widget-host:not([data-initialized])');        if (hosts.length > 0) hostContainer = hosts[0];      }            // Safely embedded template for CMS environments      const rawTemplate = `  \x3Cstyle>    /* --- Shadow DOM Base Reset --- */    *, *::before, *::after {      box-sizing: border-box;    }    img, picture, svg, video {      max-width: 100%;      height: auto;      display: block;    }    /*       1. Scoped CSS for Tom's Guide Deals Widget       All classes are prefixed with \`tg-df-\` to prevent CMS style leakage.    */    .tg-df-container {      container-type: inline-size;      container-name: tg-df;      --tg-df-blue: #1F69FF;      --tg-df-blue-hover: #004d8c;      --tg-df-text: #222222;      --tg-df-text-muted: #555555;      --tg-df-bg: #ffffff;      --tg-df-bg-secondary: #f4f4f4;      --tg-df-border: #e2e8f0;      font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;      color: var(--tg-df-text);      background-color: transparent;       width: 100%;      max-width: 1200px;      margin: 0 auto;      padding-bottom: 24px;    }    .tg-df-container *, .tg-df-container *::before, .tg-df-container *::after {      margin: 0;      padding: 0;      box-sizing: border-box;    }    .tg-df-container img {      border: none;      margin: 0;      padding: 0;    }    .tg-df-container a {      text-decoration: none;      color: inherit;    }    /*       2. Search & Filter Bar    */    .tg-df-controls {      display: flex;      flex-direction: column;      align-items: center;      gap: 20px;      margin-bottom: 32px;      width: 100%;    }    .tg-df-top-bar {      display: flex;      width: 100%;      max-width: 760px;      gap: 12px;      align-items: center;    }    .tg-df-search-wrapper {      position: relative;      flex: 1;      width: 100%;      box-shadow: 0 8px 24px rgba(0,0,0,0.06);      border-radius: 40px;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      z-index: 100;    }    .tg-df-autocomplete-dropdown {      position: absolute;      top: calc(100% + 4px);      left: 0;      right: 0;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 12px;      box-shadow: 0 8px 32px rgba(0,0,0,0.12);      max-height: 300px;      overflow-y: auto;      z-index: 200;      display: none;    }    .tg-df-autocomplete-dropdown.active {      display: block;    }    .tg-df-autocomplete-item {      padding: 12px 24px;      cursor: pointer;      font-size: 14px;      color: var(--tg-df-text);      transition: background 0.1s ease;    }    .tg-df-autocomplete-item:hover {      background: var(--tg-df-bg-secondary);    }    .tg-df-search-input {      width: 100%;      padding: 16px 64px 16px 24px;      font-size: 16px;      border: 2px solid transparent;      border-radius: 40px;      outline: none;      transition: border-color 0.2s ease, box-shadow 0.2s ease;      color: var(--tg-df-text);      background: transparent;    }    .tg-df-search-input:focus {      border-color: transparent;      box-shadow: 0 0 0 3px rgba(0, 108, 196, 0.15);    }    .tg-df-search-input::placeholder {      color: #999999;    }        .tg-df-search-btn {      position: absolute;      right: 8px;      top: 50%;      transform: translateY(-50%);      width: 40px;      height: 40px;      border-radius: 50%;      background: #222;      border: none;      display: flex;      align-items: center;      justify-content: center;      cursor: pointer;      transition: background 0.2s ease;    }        .tg-df-search-btn:hover {      background: #000;    }    .tg-df-search-icon {      width: 16px;      height: 16px;      fill: #fff;    }    .tg-df-settings-wrapper {      position: relative;    }        .tg-df-settings-btn {      width: 48px;      height: 48px;      border-radius: 50%;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      box-shadow: 0 4px 12px rgba(0,0,0,0.04);      display: flex;      align-items: center;      justify-content: center;      cursor: pointer;      transition: all 0.2s ease;      color: var(--tg-df-text-muted);      flex-shrink: 0;    }    .tg-df-settings-btn:hover {      background: var(--tg-df-bg-secondary);      border-color: #0000ff;      color: var(--tg-df-text);    }    .tg-df-settings-btn svg {      width: 24px;      height: 24px;      fill: currentColor;    }    .tg-df-settings-dropdown {      position: absolute;      top: calc(100% + 8px);      right: 0;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 12px;      box-shadow: 0 8px 32px rgba(0,0,0,0.12);      width: 280px;      padding: 20px;      display: none;      z-index: 100;      flex-direction: column;      gap: 20px;    }    .tg-df-settings-dropdown.active {      display: flex;    }        .tg-df-settings-dropdown-backdrop {      display: none;      position: fixed;      inset: 0;      z-index: 99;    }        .tg-df-settings-dropdown-backdrop.active {      display: block;    }    .tg-df-setting-item {      display: flex;      flex-direction: column;      gap: 10px;    }    .tg-df-setting-label {      font-size: 11px;      font-weight: 700;      color: var(--tg-df-text-muted);      text-transform: uppercase;      letter-spacing: 0.5px;    }        .tg-df-region-select {        padding: 10px 12px;        border-radius: 8px;        border: 1px solid var(--tg-df-border);        font-size: 15px;        outline: none;        background: var(--tg-df-bg-secondary);        color: var(--tg-df-text);        cursor: pointer;        width: 100%;    }    .tg-df-toggle {        position: relative;        display: inline-block;        width: 44px;        height: 24px;        flex-shrink: 0;    }    .tg-df-toggle input {        opacity: 0;        width: 0;        height: 0;    }    .tg-df-slider {        position: absolute;        cursor: pointer;        top: 0; left: 0; right: 0; bottom: 0;        background-color: #ccc;        transition: .2s;        border-radius: 24px;    }    .tg-df-slider:before {        position: absolute;        content: "";        height: 18px;        width: 18px;        left: 3px;        bottom: 3px;        background-color: white;        transition: .2s;        border-radius: 50%;    }    .tg-df-toggle input:checked + .tg-df-slider {        background-color: #1F69FF;    }    .tg-df-toggle input:checked + .tg-df-slider:before {        transform: translateX(20px);    }    .tg-df-dl-row {        flex-direction: row;        align-items: center;        justify-content: space-between;    }    .tg-df-dl-row-text {        font-size: 14px;        font-weight: 600;        color: var(--tg-df-text);    }    .tg-df-dl-row-subtext {        font-size: 12px;        font-weight: 400;        line-height: 1.3;        color: var(--tg-df-text-muted);        margin-top: 4px;        display: block;    }    .tg-df-filters {      display: flex;      gap: 12px;      justify-content: center;      flex-wrap: wrap;    }    .tg-df-sort-wrapper {      position: relative;      display: flex;      align-items: center;    }        .tg-df-sort-icon {      position: absolute;      left: 14px;      width: 14px;      height: 14px;      fill: var(--tg-df-text-muted);      pointer-events: none;    }    .tg-df-sort-select, .tg-df-filter-select {      padding: 10px 36px 10px 38px;      font-size: 14px;      border: 1px solid var(--tg-df-border);      border-radius: 100px;      outline: none;      appearance: none;      background-color: var(--tg-df-bg-secondary);      background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 12 12'%3E%3Cpath fill='%23555555' d='M6 8L1 3h10z'/%3E%3C/svg%3E");      background-repeat: no-repeat;      background-position: right 14px center;      color: var(--tg-df-text);      cursor: pointer;      font-weight: 500;      transition: all 0.2s ease;    }        .tg-df-price-input::-webkit-outer-spin-button,    .tg-df-price-input::-webkit-inner-spin-button {      -webkit-appearance: none;      margin: 0;    }    .tg-df-price-input {      -moz-appearance: textfield;    }    .tg-df-sort-select:hover, .tg-df-filter-select:hover {      background-color: #e2e8f0;    }    .tg-df-multiselect-container {      position: relative;    }        .tg-df-multiselect-trigger {      display: block;      background: #fff;      user-select: none;      width: 100%;      overflow: hidden;      white-space: nowrap;      text-overflow: ellipsis;    }        .tg-df-multiselect-dropdown {      display: none;      position: absolute;      top: calc(100% + 4px);      left: 0;      width: 100%;      min-width: 220px;      max-height: 300px;      overflow-y: auto;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 8px;      box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);      z-index: 100;      padding: 8px 0;    }    .tg-df-multiselect-dropdown.active {      display: block;    }    .tg-df-ms-option {      padding: 8px 16px;      display: flex;      align-items: center;      gap: 8px;      cursor: pointer;      font-size: 14px;    }    .tg-df-ms-option:hover {      background-color: var(--tg-df-bg-secondary);    }        .tg-df-ms-option input {      cursor: pointer;      accent-color: #1f69ff;    }    .tg-df-sort-select:focus, .tg-df-filter-select:focus {      border-color: #0000ff;      box-shadow: 0 0 0 3px rgba(0, 0, 255, 0.2);      background-color: var(--tg-df-bg);    }    /*       3. Deal Grid Layout    */    .tg-df-grid.tg-df-grid-auto {      padding-top: 24px;    }    .tg-df-grid, .tg-df-grid.layout-grid {      display: grid;      grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));      gap: 10px;    }    .tg-df-grid.layout-row {      grid-template-columns: 1fr;      gap: 16px;    }        .tg-df-grid.layout-row .tg-df-card {      flex-direction: row;      align-items: stretch;      height: auto;      box-shadow: none;      border-bottom: 1px solid var(--tg-df-border);    }    .tg-df-grid.layout-row .tg-df-card:hover {      box-shadow: none;    }    .tg-df-grid.layout-row .tg-df-card-image-box {      width: 140px;      min-width: 140px;      aspect-ratio: 3/4;      border-right: none;      padding: 16px 16px 16px 32px;    }    .tg-df-grid.layout-row .tg-df-card-body {      padding: 16px;      justify-content: space-between;    }    .tg-df-grid.layout-row .tg-df-card-title {      font-size: 15px;      margin-bottom: 16px;    }    .tg-df-grid.layout-row .tg-df-card-stars { margin-bottom: 8px; }    .tg-df-grid.layout-row .tg-df-card-footer {      flex-direction: column;      align-items: flex-start;      gap: 0;    }    .tg-df-grid.layout-row .tg-df-card-merchant-pill {      margin-bottom: 4px;    }    .tg-df-grid.layout-row .tg-df-card-price-group {      margin-bottom: 8px;    }    .tg-df-grid.layout-row .tg-df-price-group {      width: auto;    }    .tg-df-grid.layout-row .tg-df-card-cta {      width: 100%;      max-width: 200px;      padding: 10px 24px;      font-size: 13px;      flex-shrink: 0;      text-align: center;      justify-content: center;    }    /*       4. Deal Card Design    */    .tg-df-card {      position: relative;      display: flex;      flex-direction: column;      background-color: #ffffff;      border-radius: 0;      overflow: hidden;      transition: transform 0.2s ease, box-shadow 0.2s ease;      text-decoration: none;      color: inherit;      height: 100%;      box-shadow: 0 0 16px rgba(0, 0, 0, 0.08);      border: 1px solid var(--tg-df-border);    }    .tg-df-card:hover {      box-shadow: 0 0 24px rgba(0, 0, 0, 0.12);    }    .tg-df-card-image-box {      width: 100%;      aspect-ratio: 3/4;      background-color: #f8f8f8;      display: flex;      align-items: center;      justify-content: center;      position: relative;      overflow: hidden;      padding: 32px;      flex: 0 0 auto;    }    .tg-df-card-image {      max-width: 100%;      max-height: 100%;      width: auto;      height: auto;      object-fit: contain;      mix-blend-mode: multiply; /* Helps white background images blend into secondary bg */      transition: transform 0.3s ease;    }    .tg-df-card:hover .tg-df-card-image {      transform: scale(1.05); /* Zoom in on hover */    }    .tg-df-card-discount-badge {      position: absolute;      top: 12px;      left: 12px;      background: #dc2626; /* Red */      color: #ffffff;      padding: 6px 8px;      font-size: 11px;      font-weight: 500;      text-transform: uppercase;      letter-spacing: 0.5px;      border-radius: 0;      z-index: 10;    }        .tg-df-card-merchant-pill {      display: block;      padding: 0;      font-size: 11px;      font-weight: 600;      text-transform: uppercase;      letter-spacing: 0.5px;      border-radius: 0;      color: var(--tg-df-text-muted);      margin-bottom: 8px;      white-space: nowrap;      overflow: hidden;      text-overflow: ellipsis;    }    .tg-df-card-body {      padding: 16px;      display: flex;      flex-direction: column;      flex-grow: 1;      min-width: 0;    }    .tg-df-card-badges {      display: flex;      flex-wrap: wrap;      gap: 6px;      margin-bottom: 8px;    }    .tg-df-tag {      display: inline-flex;      align-items: center;      padding: 4px 6px;      font-size: 11px;      font-weight: 700;      text-transform: uppercase;      border-radius: 4px;      gap: 4px;    }    .tg-df-tag-prime {      background-color: #00A8E1;      color: #fff;    }    .tg-df-tag-coupons {      background-color: #f1f5f9;      color: #334155;      border: 1px solid #cbd5e1;      cursor: pointer;      transition: background-color 0.2s;    }    .tg-df-tag-coupons:hover {      background-color: #e2e8f0;    }        .tg-df-tag-outline {      background-color: #f1f5f9;      color: #334155;      border: 1px solid #cbd5e1;      cursor: pointer;      transition: background-color 0.2s;    }    .tg-df-tag-outline:hover {      background-color: #e2e8f0;    }        @keyframes tg-df-spin {      0% { transform: rotate(0deg); }      100% { transform: rotate(360deg); }    }    .tg-df-coupon-spinner {      border: 2px solid #e2e8f0;      border-top: 2px solid #3b82f6;      border-radius: 50%;      width: 14px;      height: 14px;      animation: tg-df-spin 1s linear infinite;      margin: 4px 8px;      display: inline-block;    }        /* Vouchers Modal */    .tg-df-modal-backdrop {      position: fixed;      top: 0; left: 0; right: 0; bottom: 0;      background: rgba(0,0,0,0.5);      z-index: 10000;      display: flex;      align-items: center;      justify-content: center;      opacity: 0;      pointer-events: none;      transition: opacity 0.3s;    }    .tg-df-modal-backdrop.active {      opacity: 1;      pointer-events: auto;    }    .tg-df-modal {      background: #fff;      border-radius: 12px;      width: 90%;      max-width: 400px;      max-height: 80vh;      display: flex;      flex-direction: column;      box-shadow: 0 10px 40px rgba(0,0,0,0.2);      transform: translateY(20px);      transition: transform 0.3s;    }    .tg-df-modal-backdrop.active .tg-df-modal {      transform: translateY(0);    }    .tg-df-modal-header {      padding: 16px;      border-bottom: 1px solid #e2e8f0;      display: flex;      align-items: center;      justify-content: space-between;    }    .tg-df-modal-title {      font-size: 16px;      font-weight: 600;      margin: 0;    }    .tg-df-modal-close {      background: none;      border: none;      cursor: pointer;      padding: 4px;      color: #64748b;    }    .tg-df-modal-body {      padding: 16px;      overflow-y: auto;    }    .tg-df-voucher-item {      padding: 12px;      border: 1px dashed #cbd5e1;      border-radius: 8px;      margin-bottom: 10px;      background: #f8fafc;      display: flex;      align-items: center;      gap: 12px;      text-decoration: none;      color: inherit;      transition: background-color 0.2s, border-color 0.2s;    }    .tg-df-voucher-item:hover {      background: #f1f5f9;      border-color: #94a3b8;    }    .tg-df-voucher-item:last-child {      margin-bottom: 0;    }    .tg-df-voucher-logo {      width: 48px;      height: 48px;      object-fit: contain;      border-radius: 4px;      background: #fff;      border: 1px solid #e2e8f0;      flex-shrink: 0;    }    .tg-df-voucher-content {      flex: 1;      min-width: 0;    }    .tg-df-voucher-title {      font-size: 14px;      font-weight: 600;      margin: 0 0 4px 0;      line-height: 1.3;      color: #0f172a;    }    .tg-df-voucher-expiry {      font-size: 12px;      color: #64748b;      display: flex;      align-items: center;      gap: 4px;      margin-top: 6px;    }    .tg-df-voucher-code {      display: inline-flex;      align-items: center;      background: #f1f5f9;      border: 1px dashed #cbd5e1;      padding: 6px 10px;      font-family: monospace;      font-weight: 700;      font-size: 14px;      color: #0f172a;      border-radius: 4px;      margin-top: 8px;      cursor: pointer;      transition: all 0.2s ease;    }    .tg-df-voucher-code:hover {      background: #e2e8f0;      border-color: #94a3b8;    }    .tg-df-voucher-code.copied {      background: #ecfdf5;      border-color: #10b981;      color: #10b981;    }    .tg-df-voucher-cta {      display: inline-block;      margin-top: 8px;      font-size: 13px;      font-weight: 600;      color: #2563eb;      text-decoration: none;    }    .tg-df-card-title {      font-size: 15px;      font-weight: 400;      line-height: 1.4;      margin: 0 0 12px 0;      color: var(--tg-df-text);      display: -webkit-box;      -webkit-line-clamp: 2;      -webkit-box-orient: vertical;      overflow: hidden;    }    .tg-df-card-footer {      margin-top: auto;      display: flex;      flex-direction: column;      width: 100%;    }    .tg-df-card-price-group {      display: flex;      flex-direction: row;      align-items: center;      gap: 8px;      margin-bottom: 12px;    }    .tg-df-card-price {      font-size: 16px;      font-weight: 700;      color: #dc2626; /* Red price */      line-height: 1;    }        .tg-df-card-msrp {      font-size: 13px;      color: var(--tg-df-text-muted);      text-decoration: line-through;    }    .tg-df-container .tg-df-card-cta {      display: flex;      align-items: center;      justify-content: center;      width: 100%;      box-sizing: border-box;      background-color: #1f69ff;      color: #ffffff;      font-size: 12px;      font-weight: 700;      text-transform: uppercase;      letter-spacing: 0.5px;      padding: 12px 16px;      border-radius: 0;      border: none;      cursor: pointer;      transition: background-color 0.2s ease;    }    .tg-df-card:hover .tg-df-card-cta,    .tg-df-card-cta:hover {      background-color: #1555cc;    }    .tg-df-container .tg-df-card-cta.tg-df-cta-savings-squad {      background-color: #3c8d0d;    }    .tg-df-card:hover .tg-df-card-cta.tg-df-cta-savings-squad,    .tg-df-card-cta.tg-df-cta-savings-squad:hover {      background-color: #2b6509;    }    /*       5. State & Skeleton Styles    */    .tg-df-message {      grid-column: 1 / -1;      text-align: center;      padding: 48px 24px;      color: var(--tg-df-text-muted);      font-size: 16px;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 8px;    }    @keyframes tg-df-shimmer {      0% { background-position: -200% 0; }      100% { background-position: 200% 0; }    }    .tg-df-skeleton {      background: linear-gradient(90deg, var(--tg-df-bg-secondary) 25%, #e2e8f0 50%, var(--tg-df-bg-secondary) 75%);      background-size: 200% 100%;      animation: tg-df-shimmer 1.5s infinite;      border-radius: 4px;    }    .tg-df-skeleton-img {      width: 100%;      height: 100%;      position: absolute;      top: 0; left: 0;    }        .tg-df-skeleton-text {      height: 16px;      margin-bottom: 8px;      width: 100%;    }    .tg-df-skeleton-text.short { width: 40%; }    .tg-df-skeleton-text.title { height: 20px; margin-bottom: 16px; }    /* Editor Floating Bar & Elements */    .tg-df-editor-bar {      position: sticky;      top: 0;      z-index: 1000;      background: #111827;      color: #fff;      padding: 12px 16px;      border-radius: 8px;      margin-bottom: 16px;      display: flex;      align-items: center;      justify-content: space-between;      box-shadow: 0 4px 12px rgba(0,0,0,0.15);    }    .tg-df-editor-bar-text {      font-weight: 600;      font-size: 14px;    }    .tg-df-editor-copy-btn {      background: #10b981;      color: #fff;      padding: 6px 16px;      border: none;      border-radius: 4px;      font-weight: 600;      cursor: pointer;      display: flex;      align-items: center;      font-size: 13px;    }    .tg-df-editor-copy-btn:hover { background: #059669; }        .tg-df-deal-checkbox {      position: absolute;      top: 12px;      right: 12px;      z-index: 10;      width: 20px;      height: 20px;      cursor: pointer;      pointer-events: auto;    }    /*       6. Mobile List View (Stacks into a cleaner horizontal row/list)    */    @container tg-df (max-width: 599px) {      .tg-df-controls {        padding: 0 16px;      }            .tg-df-top-bar {        width: 100%;      }            .tg-df-settings-dropdown {        position: fixed;        top: auto;        bottom: 0;        left: 0;        right: 0;        width: 100%;        border-radius: 20px 20px 0 0;        padding: 24px;        box-shadow: 0 -8px 32px rgba(0,0,0,0.15);        z-index: 1000;        border: none;        border-top: 1px solid var(--tg-df-border);      }            .tg-df-settings-dropdown-backdrop.active {        background: rgba(0,0,0,0.4);      }            .tg-df-search-wrapper {        box-shadow: 0 0 16px rgba(0,0,0,0.08);      }            .tg-df-filters {        width: calc(100% + 32px);        margin: 0 -16px;        padding: 0 16px 4px 16px;        display: flex;        justify-content: flex-start;        gap: 8px;        flex-wrap: nowrap;        overflow-x: auto;        -webkit-overflow-scrolling: touch;        scrollbar-width: none;      }      .tg-df-filters::after {        content: "";        display: block;        flex: 0 0 8px;      }      .tg-df-filters::-webkit-scrollbar {        display: none;      }            .tg-df-sort-wrapper {        flex: 0 0 max(42%, 130px);        min-width: 0;      }      .tg-df-sort-wrapper.tg-df-price-range-wrapper {        flex: 0 0 auto;        min-width: max-content;      }            .tg-df-sort-select, .tg-df-filter-select {        width: 100%;        text-align: left;        padding: 10px 24px 10px 32px;        background-position: right 8px center;        text-overflow: ellipsis;        white-space: nowrap;        overflow: hidden;      }      .tg-df-sort-icon {        left: 10px;      }      .tg-df-grid:not(.layout-grid):not(.layout-row),      .tg-df-grid.layout-row {        grid-template-columns: 1fr;        gap: 16px;      }            .tg-df-grid.tg-df-grid-auto {        padding-top: 24px;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card,      .tg-df-grid.layout-row .tg-df-card {        flex-direction: row;        align-items: stretch;        height: auto;        box-shadow: none; /* simple line on mobile if preferred, or keep */        border-bottom: 1px solid var(--tg-df-border);      }      .tg-df-grid.tg-df-grid-auto .tg-df-card:hover,      .tg-df-grid.layout-row .tg-df-card:hover {        box-shadow: none;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card-image-box,      .tg-df-grid.layout-row .tg-df-card-image-box {        width: 120px;        min-width: 120px;        aspect-ratio: 3/4;        border-right: none;        padding: 12px;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card-body,      .tg-df-grid.layout-row .tg-df-card-body {        padding: 12px;        justify-content: space-between;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card-title,      .tg-df-grid.layout-row .tg-df-card-title {        font-size: 14px;        margin-bottom: 12px;        -webkit-line-clamp: 3;      }      /* Single column mobile grid override */      .tg-df-grid.layout-grid {        grid-template-columns: 1fr;        gap: 16px;      }      .tg-df-grid.layout-grid .tg-df-card-image-box {        padding: 12px;      }      .tg-df-grid.layout-grid .tg-df-card-body {        padding: 10px;      }      .tg-df-grid.layout-grid .tg-df-card-title {        font-size: 13px;        -webkit-line-clamp: 3;        margin-bottom: 8px;      }      .tg-df-grid.layout-grid .tg-df-card-price {        font-size: 14px;      }            .tg-df-card-footer {        flex-direction: column;        align-items: stretch;        gap: 0;        width: 100%;        min-width: 0;      }      .tg-df-card-merchant-pill {        margin-bottom: 4px;      }      .tg-df-card-price-group {        flex: 1 1 auto;        margin-bottom: 8px;      }      .tg-df-card-price {        font-size: 16px;      }      .tg-df-card-msrp {        display: block;       }      .tg-df-grid.layout-row .tg-df-card-cta,      .tg-df-container .tg-df-card-cta {        width: 100%;        max-width: none;        min-width: 0;        box-sizing: border-box;        padding: 8px 16px;        font-size: 12px;        flex: 0 0 auto;        text-align: center;        white-space: normal;        line-height: 1.2;      }    }    .tg-df-container.is-carousel {      min-height: 760px;      background-color: #E7F0FF;      padding: 0 0 24px 0;      border-radius: 24px;    }    .tg-df-container.is-carousel.hide-header-details {      min-height: 480px;    }    /*       7. Carousel View Mode    */    .tg-df-container .tg-df-carousel-host {      /* Layout is now handled by container wrapper */    }    .tg-df-container .tg-df-carousel-eyebrow {      color: #1F69FF;      font-weight: 700;      font-size: 14px;      text-transform: uppercase;      letter-spacing: 1px;      padding: 24px 16px 0 16px;      display: none;    }    .tg-df-container .tg-df-carousel-query-title {      color: #011535;      font-size: 28px;      font-weight: 600;      padding: 0 16px 24px 16px;      line-height: 1.2;      display: none;    }    .tg-df-container .tg-df-carousel-blue-box {      background-color: transparent;      border-radius: 0;      padding: 24px 24px 0 24px;      margin: 0;      color: #1F69FF;          position: relative;      overflow: hidden;    }    .tg-df-container .tg-df-carousel-bg-circle-1 {      display: none;    }    .tg-df-container .tg-df-carousel-bg-circle-2 {      display: none;    }    .tg-df-container .tg-df-carousel-bg-circle-3 {      display: none;    }    .tg-df-container .tg-df-carousel-box-content {      position: relative;      z-index: 10;    }    .tg-df-container .tg-df-carousel-box-eyebrow {      background-color: transparent;      color: #1F69FF;      font-weight: 700;      font-size: 14px;      text-transform: uppercase;      letter-spacing: 1px;      display: inline-block;      padding: 0;      border-radius: 0;    }    .tg-df-container .tg-df-carousel-box-title {      font-size: 28px;      font-weight: 600;      line-height: 1.2;      margin-top: 8px;      color: #1e293b;    }    .tg-df-container .tg-df-countdown-wrapper {      position: absolute;      top: 0;      right: 0;      display: flex;      flex-direction: column;      align-items: flex-end;      gap: 12px;      transform: scale(0.67);      transform-origin: top right;    }    .tg-df-container .tg-df-countdown-title {      font-size: 16px;      text-align: center;      width: 100%;      font-weight: 600;      color: #011535;      margin: 0;    }    .tg-df-container .tg-df-countdown-blocks {      display: flex;      gap: 16px;    }    .tg-df-container .tg-df-countdown-item {      display: flex;      flex-direction: column;      align-items: center;      gap: 4px;    }    .tg-df-container .tg-df-countdown-box {      width: 59px;      height: 59px;      background: #03FE9E;      border-radius: 15px;      display: flex;      align-items: center;      justify-content: center;    }    .tg-df-container .tg-df-countdown-num {      font-family: 'Inter', sans-serif;      font-weight: 700;      font-size: 20px;      line-height: normal;      color: #011535;    }    .tg-df-container .tg-df-countdown-label {      font-family: 'Inter', sans-serif;      font-weight: 500;      font-size: 16px;      line-height: normal;      color: #1e293b;      text-transform: uppercase;    }    .tg-df-container .tg-df-carousel-box-subtitle {      font-size: 16px;      margin-top: 8px;      font-weight: 300;      color: #1e293b;      line-height: 24px;    }    .tg-df-container .tg-df-carousel-roundels-wrapper {      position: relative;      margin-top: 24px;      margin-left: -24px;      margin-right: -24px;    }    .tg-df-container .tg-df-carousel-roundels {      display: flex;      gap: 16px;      overflow-x: auto;            scrollbar-width: none;      padding-top: 12px;      padding-bottom: 24px;      padding-left: 24px;      padding-right: 24px;      margin-left: 0;      margin-right: 0;    }        .tg-df-container .tg-df-carousel-scroll-left,    .tg-df-container .tg-df-carousel-scroll-right {      position: absolute;      top: 50%;      transform: translateY(-50%);      height: 36px;      width: 36px;      display: flex;      align-items: center;      justify-content: center;      border-radius: 50%;      background-color: #ffffff;      border: 1px solid #e2e8f0;      box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);      color: #1F69FF;      cursor: pointer;      transition: all 0.2s;      margin-top: -4px;      z-index: 20;    }    .tg-df-container .tg-df-carousel-scroll-left { left: 8px; }    .tg-df-container .tg-df-carousel-scroll-right { right: 8px; }    .tg-df-carousel-filters-outer .tg-df-carousel-scroll-left { left: 0px; }    .tg-df-carousel-filters-outer .tg-df-carousel-scroll-right { right: 0px; }    .tg-df-carousel-filters-outer { margin-left: -24px; margin-right: -24px; padding-left: 24px; padding-right: 24px; }    @container tg-df (max-width: 599px) { .tg-df-carousel-filters-outer { margin-left: -16px; margin-right: -16px; padding-left: 16px; padding-right: 16px; } }        .tg-df-container .tg-df-carousel-scroll-left:hover,    .tg-df-container .tg-df-carousel-scroll-right:hover {      background-color: #f8fafc;      border-color: #cbd5e1;    }        .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-left,    .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-right,    .tg-df-carousel-filters-outer .tg-df-carousel-scroll-left,    .tg-df-carousel-filters-outer .tg-df-carousel-scroll-right {      background-color: rgba(255, 255, 255, 0.4);      border: none;      box-shadow: none;      backdrop-filter: blur(4px);      -webkit-backdrop-filter: blur(4px);    }    .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-left { left: 0; }    .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-right { right: 0; }    .tg-df-grid-wrapper .tg-df-carousel-scroll-left { left: 0; }    .tg-df-grid-wrapper .tg-df-carousel-scroll-right { right: 0; }        .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-left:hover,    .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-right:hover {      background-color: rgba(255, 255, 255, 0.6);      border: none;    }    .tg-df-container .tg-df-carousel-roundels::-webkit-scrollbar {      display: none;    }    .tg-df-container .tg-df-carousel-roundels::after {      content: "";      flex: 0 0 32px;    }    .tg-df-container .tg-df-roundel {      display: flex;      flex-direction: column;      align-items: center;      gap: 8px;      cursor: pointer;      min-width: 120px;      flex-shrink: 0;    }    .tg-df-container .tg-df-roundel-img-box {      width: 120px;      height: 120px;      border-radius: 50%;      background: white;      display: flex;      align-items: center;      justify-content: center;      overflow: hidden;      box-shadow: 0px 3px 14px 0px rgba(30, 41, 59, 0.08);      transition: box-shadow 0.2s;    }    .tg-df-container .tg-df-roundel:hover .tg-df-roundel-img-box {      box-shadow: 0 0 0 2px #E7F0FF, 0 0 0 4px #1F69FF;    }    .tg-df-container .tg-df-roundel.active .tg-df-roundel-img-box {      box-shadow: 0 0 0 2px #E7F0FF, 0 0 0 4px #1F69FF;    }    .tg-df-container .tg-df-roundel:hover .tg-df-roundel-img-box img {      transform: scale(1.08);    }    .tg-df-container .tg-df-roundel-img-box img {      width: 100%;      height: 100%;      object-fit: contain;      padding: 10px;      box-sizing: border-box;      transition: transform 0.3s ease;    }    .tg-df-container .tg-df-roundel-label {      font-size: 13px;      font-weight: 400;      color: #1e293b;      text-align: center;      transition: font-weight 0.2s;    }    .tg-df-container .tg-df-roundel.active .tg-df-roundel-label {      font-weight: 700;    }    .tg-df-container .tg-df-carousel-filters-label {      font-size: 16px;      font-weight: 400;      color: #1e293b;      white-space: nowrap;      margin-right: 4px;    }    .tg-df-container .tg-df-carousel-filters-wrap {      display: flex;      align-items: center;      flex-wrap: nowrap;      gap: 8px;      margin-top: 8px;      overflow-x: auto;      scrollbar-width: none;      -webkit-overflow-scrolling: touch;      padding-bottom: 8px;      margin-left: -24px;      margin-right: -24px;      padding-left: 24px;      padding-right: 24px;    }    .tg-df-container .tg-df-carousel-filters-wrap::-webkit-scrollbar {      display: none;    }        .tg-df-container .tg-df-carousel-filter-btn img,    .tg-df-container .tg-df-carousel-filter-btn picture {      height: 20px;      width: 20px;      object-fit: contain;      object-position: center;      display: inline-flex;      align-items: center;      justify-content: center;      margin-right: 6px;    }    .tg-df-container .tg-df-carousel-filter-btn picture img {      margin-right: 0;      height: 100%;      width: 100%;    }    .tg-df-container .tg-df-carousel-filter-btn img.active-img,    .tg-df-container .tg-df-carousel-filter-btn picture:has(.active-img) {      display: none;    }    .tg-df-container .tg-df-carousel-filter-btn:hover img.inactive-img,    .tg-df-container .tg-df-carousel-filter-btn.active img.inactive-img,    .tg-df-container .tg-df-carousel-filter-btn:hover picture:has(.inactive-img),    .tg-df-container .tg-df-carousel-filter-btn.active picture:has(.inactive-img) {      display: none;    }    .tg-df-container .tg-df-carousel-filter-btn:hover img.active-img,    .tg-df-container .tg-df-carousel-filter-btn.active img.active-img,    .tg-df-container .tg-df-carousel-filter-btn:hover picture:has(.active-img),    .tg-df-container .tg-df-carousel-filter-btn.active picture:has(.active-img) {      display: inline-flex;    }    .tg-df-container .tg-df-carousel-filter-btn {      background: #ffffff;      border: 2px solid #1e293b;      color: #1e293b;      border-radius: 24px;      padding: 6px 16px;      font-size: 14px;      font-weight: 600;      cursor: pointer;      transition: all 0.2s;      flex-shrink: 0;      white-space: nowrap;      display: inline-flex;      align-items: center;      justify-content: center;      min-height: 36px;      box-sizing: border-box;    }    .tg-df-container .tg-df-carousel-filter-btn svg {      margin-right: 6px;    }    .tg-df-container .tg-df-carousel-filter-btn:hover {      background: #1e293b;      color: white;      border-color: #1e293b;    }    .tg-df-container .tg-df-carousel-filter-btn.active {      background: #1e293b;      color: white;      border-color: #1e293b;    }        .tg-df-grid.carousel-compact {      display: flex;      flex-wrap: nowrap;      overflow-x: auto;      gap: 16px;      padding: 16px 24px;      align-items: stretch;      scrollbar-width: none;    }    .tg-df-grid.carousel-compact::after {      content: "";      flex: 0 0 32px;    }    .tg-df-grid-wrapper {      position: relative;    }    .tg-df-grid.carousel-compact::-webkit-scrollbar {      display: none;    }    .tg-df-grid.carousel-compact .tg-df-load-more-card {      flex: 0 0 auto;      width: 100px;      border-radius: 15px;      box-shadow: 0 0 16px rgba(0,0,0,0.08);      border: 2px solid #1e293b;      background: white;      color: #1e293b;      display: flex;      flex-direction: column;      justify-content: center;      align-items: center;      font-weight: 600;      font-size: 14px;      cursor: pointer;      padding: 16px;      text-align: center;      transition: all 0.2s;    }    .tg-df-grid.carousel-compact .tg-df-load-more-card:hover {      background: #1e293b;      color: white;    }    .tg-df-grid.carousel-compact .tg-df-card {      flex: 0 0 auto;      width: 200px;      min-height: auto;      height: auto;      display: flex;      flex-direction: column;      border-radius: 15px;      border: none;      box-shadow: 0 0 16px rgba(0,0,0,0.08);      overflow: visible;    }    .tg-df-grid.carousel-compact .tg-df-card-image-box {      padding: 12px;      background-color: transparent;      border-radius: 15px 15px 0 0;      height: 130px;    }    .tg-df-grid.carousel-compact .tg-df-card-image {      mix-blend-mode: normal;    }    .tg-df-grid.carousel-compact .tg-df-card-discount-badge {      border-radius: 0;      top: 0px;      left: 0px;      padding: 4px 8px;      font-size: 11px;    }    .tg-df-grid.carousel-compact .tg-df-card-body {      padding: 8px 12px 12px 12px;    }    .tg-df-grid.carousel-compact .tg-df-card-title {      font-size: 14px;      font-weight: 400;      -webkit-line-clamp: 2;      margin-bottom: 8px;      color: #011535;    }    .tg-df-grid.carousel-compact .tg-df-card-body:not(:has(.tg-df-card-stars)):not(:has(.tg-df-tag-prime)):not(:has(.tg-df-coupon-wrapper:not([style*="none"]))) > .tg-df-card-title,    .tg-df-grid.carousel-compact .tg-df-card-body:not(:has(.tg-df-card-stars)):has(> .tg-df-card-title:first-child) > .tg-df-card-title {      -webkit-line-clamp: 3;    }    .tg-df-grid.carousel-compact .tg-df-card-cta {      border-radius: 5px;      padding: 8px 10px;      margin-top: 4px;      background-color: #1F69FF;    }    .tg-df-grid.carousel-compact .tg-df-card-price-group {      margin-bottom: 2px;    }    .tg-df-grid.carousel-compact .tg-df-card-merchant-pill {      margin-bottom: 2px;    }    @container tg-df (max-width: 599px) {      .tg-df-container .tg-df-carousel-blue-box-title {        font-size: 24px;      }      .tg-df-container .tg-df-countdown-title {        display: none;      }      .tg-df-container .tg-df-countdown-wrapper {        position: absolute;        top: 0;        right: 0;        align-items: flex-end;        transform: scale(0.45);        transform-origin: top right;      }      .tg-df-container .tg-df-roundel {        min-width: 88px;      }      .tg-df-container .tg-df-roundel-img-box {        width: 88px;        height: 88px;      }    }    /* REPLICA BLOCK STYLES */    .tg-df-grid.layout-replica-2 { grid-template-columns: repeat(2, 1fr) !important; gap: 20px; }    .tg-df-grid.layout-replica-1 { grid-template-columns: 1fr !important; gap: 20px; }        .tg-df-container .hawk-deal-widget-container { border-bottom: 1px solid #e5e7eb; display: flex; flex-direction: column; margin: 0; padding: 20px 0; box-sizing: border-box; font-family: inherit; }    .tg-df-container .hawk-deal-widget-wrap { display: flex; flex-direction: row; align-items: flex-start; width: 100%; gap: 24px; }    .tg-df-container .hawk-deal-widget-image-container { display: flex; flex-shrink: 0; justify-content: center; width: 160px; height: 160px; align-items: center; background: white; margin-bottom: 0px; }    .tg-df-container .hawk-deal-widget-title-product-title { color: #111827; font-size: 18px; font-weight: 700; line-height: 1.4; display: inline; }    .tg-df-container .hawk-deal-widget-title-price { font-size: 18px; font-weight: 700; line-height: 1.4; white-space: nowrap; color: #2563eb; }    .tg-df-container .hawk-deal-widget-title-price-now { font-weight: 700; }    .tg-df-container .hawk-deal-widget-title-retailer-price:hover { text-decoration: underline; }    .tg-df-container .hawk-deal-widget-title-retailer { font-size: 18px; font-weight: 700; line-height: 1.4; color: #2563eb; }    .tg-df-container .hawk-deal-widget-title-was-price { color: #dc2626; font-size: 16px; font-weight: 500; line-height: 1.4; text-decoration: line-through; white-space: nowrap; margin-left: 8px; margin-right: 8px; }    .tg-df-container .hawk-deal-widget-text-body-container { position: relative; width: 100%; box-sizing: border-box; }    .tg-df-container .hawk-deal-widget-text-body-main { font-size: 16px; width: 100%; margin-bottom: 12px; }    .tg-df-container .hawk-deal-widget-text-body-description { display: block; font-size: 15px; margin-top: 12px; color: #4b5563; line-height: 1.6; }    .tg-df-container .hawk-deal-widget-text-body-description p { margin: 0; line-height: 1.6; }    .tg-df-container .hawk-deal-widget-text-cta-container { display: flex; flex-direction: column; gap: 12px; width: 100%; flex: 1; min-width: 0; box-sizing: border-box; }    .tg-df-container .hawk-deal-widget-footer { display: flex; justify-content: flex-end; width: 100%; margin-top: auto; }    .tg-df-container .hawk-deal-widget-button-wrapper { display: flex; flex-direction: column; align-items: flex-end; justify-content: flex-end; width: 100%; }    .tg-df-container .hawk-deal-widget-preferred-partner-wrapper { display: flex; flex-direction: row; }        @container tg-df (min-width: 600px) {      .tg-df-mobile-only { display: none !important; }    }    @container tg-df (max-width: 599px) {      .tg-df-desktop-only { display: none !important; }      .tg-df-grid.layout-replica-2 { grid-template-columns: 1fr !important; }      .tg-df-grid.savings-squad-cards { grid-template-columns: 1fr !important; display: flex; flex-direction: column; }    }    .tg-df-grid.savings-squad-cards .tg-df-card-title {      -webkit-line-clamp: unset !important;      display: block !important;      overflow: visible !important;    }    @container tg-df (max-width: 500px) {      .tg-df-container .hawk-deal-widget-wrap { display: block; }      .tg-df-container .hawk-deal-widget-image-container { display: block; float: left; margin: 0 16px 8px 0; width: 120px; max-width: 120px; height: auto; align-items: normal; justify-content: normal; }      .tg-df-container .hawk-deal-widget-text-cta-container { display: block; text-align: left; }      .tg-df-container .hawk-deal-widget-footer { display: block; margin-top: 16px; clear: both; width: 100%; }      .tg-df-container .hawk-deal-widget-button-wrapper { display: block; width: 100%; }      .tg-df-container .hawk-deal-widget-button-wrapper .hawk-deal-widget-preferred-partner-wrapper { display: block; width: 100%; }      .tg-df-container .hawk-affiliate-link-deal-button { box-sizing: border-box !important; display: flex !important; max-width: none !important; width: 100% !important; margin: 0 !important; }    }        .tg-df-container .hawk-affiliate-link-deal-button {       align-items: center; background-color: #5aaf0b; box-sizing: border-box; color: #ffffff !important; display: flex; font-size: 14px; font-weight: 700; justify-content: center; letter-spacing: 0.5px; line-height: 1; min-width: 160px; padding: 14px 24px; text-align: center; text-decoration: none; text-transform: uppercase; width: 100%; word-break: normal; border-radius: 4px; border: 0; transition: background-color 0.2s;     }    .tg-df-container .hawk-affiliate-link-deal-button:hover { background-color: #4a9109; text-decoration: none; }    .tg-df-container .hawk-lazy-image-deal-widget { display: block; height: auto; margin: auto; max-height: 160px; max-width: 100%; mix-blend-mode: multiply; object-fit: contain; }    .tg-df-container .hawk-deal-widget-text-cta-container a { color: #2563eb; text-decoration: none; display: inline; }    .tg-df-container .hawk-deal-widget-text-cta-container a:hover { text-decoration: underline; }    .tg-df-container .hawk-deal-widget-text-cta-container a:has(.hawk-deal-widget-title-product-title) { color: #111827; }    .tg-df-container .hawk-deal-widget-text-cta-container a:hover .hawk-deal-widget-title-product-title,    .tg-df-container .hawk-deal-widget-text-cta-container a:hover .hawk-deal-widget-title-retailer-price { text-decoration: underline; }  \x3C/style>  \x3C!-- Widget Container --\x3E  \x3Cdiv class="tg-df-container" id="signal-deals-finder-root">    \x3C!-- Editor Floating Bar --\x3E    \x3Cdiv class="tg-df-editor-bar" id="tg-df-editor-bar" style="display:none;">      \x3Cdiv class="tg-df-editor-bar-text" style="display: flex; align-items: center;">        \x3Cspan id="tg-df-selected-count">0\x3C/span>\x26nbsp;Deals Selected        \x3Cbutton class="tg-df-editor-clear-btn" id="tg-df-editor-clear" type="button" style="margin-left: 12px; font-size: 13px; color: #9ca3af; background: none; border: none; cursor: pointer; text-decoration: underline;">Clear All\x3C/button>      \x3C/div>      \x3Cbutton class="tg-df-editor-copy-btn" id="tg-df-editor-copy" type="button">        \x3Csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-right: 6px;">\x3Crect x="9" y="9" width="13" height="13" rx="2" ry="2">\x3C/rect>\x3Cpath d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1">\x3C/path>\x3C/svg>        Copy to CMS      \x3C/button>    \x3C/div>    \x3Cdiv class="tg-df-carousel-host" id="tg-df-carousel-host" style="display: none;">      \x3Cdiv class="tg-df-carousel-eyebrow">DEAL FINDER\x3C/div>      \x3Cdiv class="tg-df-carousel-query-title" id="tg-df-carousel-title-label">Best Deals\x3C/div>            \x3Cdiv class="tg-df-carousel-blue-box">        \x3Cdiv class="tg-df-carousel-bg-circle-1" aria-hidden="true">\x26nbsp;\x3C/div>        \x3Cdiv class="tg-df-carousel-bg-circle-2" aria-hidden="true">\x26nbsp;\x3C/div>        \x3Cdiv class="tg-df-carousel-bg-circle-3" aria-hidden="true">\x26nbsp;\x3C/div>        \x3Cdiv class="tg-df-carousel-box-content">          \x3Cdiv class="tg-df-countdown-wrapper" id="tg-df-countdown-wrapper" style="display:none;">            \x3Cdiv class="tg-df-countdown-title" id="tg-df-countdown-title">Prime Day starts in\x3C/div>            \x3Cdiv class="tg-df-countdown-blocks">              \x3Cdiv class="tg-df-countdown-item">\x3Cdiv class="tg-df-countdown-box">\x3Cdiv class="tg-df-countdown-num" id="tg-df-cd-days">0\x3C/div>\x3C/div>\x3Cdiv class="tg-df-countdown-label">DAYS\x3C/div>\x3C/div>              \x3Cdiv class="tg-df-countdown-item">\x3Cdiv class="tg-df-countdown-box">\x3Cdiv class="tg-df-countdown-num" id="tg-df-cd-hrs">0\x3C/div>\x3C/div>\x3Cdiv class="tg-df-countdown-label">HRS\x3C/div>\x3C/div>              \x3Cdiv class="tg-df-countdown-item">\x3Cdiv class="tg-df-countdown-box">\x3Cdiv class="tg-df-countdown-num" id="tg-df-cd-min">0\x3C/div>\x3C/div>\x3Cdiv class="tg-df-countdown-label">MIN\x3C/div>\x3C/div>              \x3Cdiv class="tg-df-countdown-item">\x3Cdiv class="tg-df-countdown-box">\x3Cdiv class="tg-df-countdown-num" id="tg-df-cd-sec">0\x3C/div>\x3C/div>\x3Cdiv class="tg-df-countdown-label">SEC\x3C/div>\x3C/div>            \x3C/div>          \x3C/div>          \x3Cdiv class="tg-df-carousel-box-eyebrow">DEAL FINDER\x3C/div>          \x3Cdiv class="tg-df-carousel-box-title">Find Deals Fast\x3C/div>          \x3Cdiv class="tg-df-carousel-box-subtitle">The latest deals from the biggest retailers, all in one place\x3C/div>                    \x3Cdiv class="tg-df-carousel-roundels-wrapper">          \x3Cbutton class="tg-df-carousel-scroll-left" type="button" aria-label="Scroll left" style="display:none;" onclick="this.parentElement.querySelector('.tg-df-carousel-roundels').scrollBy({left: -200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m15 18-6-6 6-6">\x3C/path>\x3C/svg>\x3C/button>          \x3Cdiv class="tg-df-carousel-roundels">            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>          \x3C/div>          \x3Cbutton class="tg-df-carousel-scroll-right" type="button" aria-label="Scroll right" onclick="this.parentElement.querySelector('.tg-df-carousel-roundels').scrollBy({left: 200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m9 18 6-6-6-6">\x3C/path>\x3C/svg>\x3C/button>        \x3C/div>        \x3Cdiv class="tg-df-carousel-filters-outer" style="position: relative;">          \x3Cbutton class="tg-df-carousel-scroll-left" type="button" aria-label="Scroll left" style="display:none;" onclick="this.parentElement.querySelector('.tg-df-carousel-filters-wrap').scrollBy({left: -200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m15 18-6-6 6-6">\x3C/path>\x3C/svg>\x3C/button>          \x3Cdiv class="tg-df-carousel-filters-wrap">                      \x3Cbutton class="tg-df-carousel-filter-btn" data-d="0">All\x3C/button>                      \x3Cbutton class="tg-df-carousel-filter-btn" data-ot="amazon_lightning">              \x3Cimg src="https://cdn.mos.cms.futurecdn.net/HqAui7w97ft2NPqBtQ5r38-600-100.png" class="inactive-img" alt="" />\x3Cimg src="https://cdn.mos.cms.futurecdn.net/yWPQ5yyQRhUwVKzGwYbh38-600-100.png" class="active-img" alt="" /> Lightning deals\x3C/button>            \x3Cbutton class="tg-df-carousel-filter-btn" data-ot="amazon_prime">              \x3Cimg src="https://cdn.mos.cms.futurecdn.net/fwoVXvL79turN3Ph535m38-600-100.png" class="inactive-img" alt="" />\x3Cimg src="https://cdn.mos.cms.futurecdn.net/u75QjVpt3w2EsMimJiRo38-600-100.png" class="active-img" alt="" /> Prime deals\x3C/button>            \x3Cbutton class="tg-df-carousel-filter-btn" data-d="10">              \x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tag">\x3Cpath d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z">\x3C/path>\x3Ccircle cx="7.5" cy="7.5" r=".5" fill="currentColor">\x3C/circle>\x3C/svg>            Min 10% off\x3C/button>                      \x3Cbutton class="tg-df-carousel-filter-btn" data-d="15">              \x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tag">\x3Cpath d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z">\x3C/path>\x3Ccircle cx="7.5" cy="7.5" r=".5" fill="currentColor">\x3C/circle>\x3C/svg>            Min 15% off\x3C/button>                      \x3Cbutton class="tg-df-carousel-filter-btn" data-d="25">              \x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tag">\x3Cpath d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z">\x3C/path>\x3Ccircle cx="7.5" cy="7.5" r=".5" fill="currentColor">\x3C/circle>\x3C/svg>            Min 25% off\x3C/button>                      \x3Cbutton class="tg-df-carousel-filter-btn" data-pr="under50">              \x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-dollar-sign">\x3Cpath d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z">\x3C/path>\x3Cpath d="M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8">\x3C/path>\x3Cpath d="M12 18V6">\x3C/path>\x3C/svg>            Under $50\x3C/button>        \x3C/div>        \x3Cbutton class="tg-df-carousel-scroll-right" type="button" aria-label="Scroll right" style="display:none;" onclick="this.parentElement.querySelector('.tg-df-carousel-filters-wrap').scrollBy({left: 200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m9 18 6-6-6-6">\x3C/path>\x3C/svg>\x3C/button>      \x3C/div>    \x3C/div>    \x3C/div>      \x3C!-- Search & Filter Controls --\x3E    \x3Cdiv class="tg-df-controls" id="tg-df-controls" style="display:flex;">      \x3Cdiv class="tg-df-top-bar">        \x3Cdiv class="tg-df-search-wrapper">          \x3Cinput type="text" class="tg-df-search-input" placeholder="Search for deals, products, or brands...">          \x3Cbutton type="button" class="tg-df-search-btn" aria-label="Search">              \x3Csvg class="tg-df-search-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">                \x3Cpath d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"/>              \x3C/svg>          \x3C/button>          \x3Cdiv class="tg-df-autocomplete-dropdown" id="tg-df-autocomplete">\x3C/div>        \x3C/div>                \x3Cdiv class="tg-df-settings-wrapper">          \x3Cbutton type="button" class="tg-df-settings-btn" aria-label="Settings" id="tg-df-settings-toggle">            \x3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="20" height="20">                \x3Cpath d="M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.06-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.73 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.06.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .43-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.49-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z"/>            \x3C/svg>          \x3C/button>          \x3Cdiv class="tg-df-settings-dropdown-backdrop" id="tg-df-settings-backdrop">\x3C/div>          \x3Cdiv class="tg-df-settings-dropdown" id="tg-df-settings-panel">            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">Search Region\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-region-select">                \x3Coption value="auto">🌍 Auto-detect\x3C/option>                \x3Coption value="US">🇺🇸 United States (US)\x3C/option>                \x3Coption value="GB">🇬🇧 United Kingdom (UK)\x3C/option>                \x3Coption value="CA">🇨🇦 Canada (CA)\x3C/option>                \x3Coption value="AU">🇦🇺 Australia (AU)\x3C/option>                \x3Coption value="DE">🇩🇪 Germany (DE)\x3C/option>                \x3Coption value="FR">🇫🇷 France (FR)\x3C/option>                \x3Coption value="IT">🇮🇹 Italy (IT)\x3C/option>              \x3C/select>            \x3C/div>            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">Retailer\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-retailer-select">                \x3Coption value="">All Retailers\x3C/option>                \x3Coption value="Amazon">Amazon\x3C/option>                \x3Coption value="Walmart">Walmart\x3C/option>                \x3Coption value="Best Buy">Best Buy\x3C/option>                \x3Coption value="Target">Target\x3C/option>                \x3Coption value="John Lewis">John Lewis\x3C/option>                \x3Coption value="Currys">Currys\x3C/option>                \x3Coption value="Argos">Argos\x3C/option>              \x3C/select>            \x3C/div>            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">Offer Type\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-offer-type-select">                \x3Coption value="">All Offers\x3C/option>                \x3Coption value="amazon_prime">Amazon Prime\x3C/option>                \x3Coption value="recommended_promo">Recommended Promo\x3C/option>                \x3Coption value="amazon_lightning">Amazon Lightning Deal\x3C/option>              \x3C/select>            \x3C/div>            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">Result Count\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-rows-select">                \x3Coption value="3">3 Items\x3C/option>                \x3Coption value="4">4 Items\x3C/option>                \x3Coption value="6">6 Items\x3C/option>                \x3Coption value="12" selected>12 Items\x3C/option>                \x3Coption value="24">24 Items\x3C/option>                \x3Coption value="48">48 Items\x3C/option>              \x3C/select>            \x3C/div>            \x3Cdiv class="tg-df-setting-item tg-df-dl-row">              \x3Cdiv>                \x3Cspan class="tg-df-dl-row-text">Deal Mode\x3C/span>                \x3Cspan class="tg-df-dl-row-subtext">Only show products with active offers or previous prices (was_price)\x3C/span>              \x3C/div>              \x3Clabel class="tg-df-toggle">                \x3Cinput type="checkbox" id="tg-df-deal-mode">                \x3Cspan class="tg-df-slider">\x3C/span>              \x3C/label>            \x3C/div>            \x3Cdiv class="tg-df-setting-item tg-df-dl-row">              \x3Cdiv>                \x3Cspan class="tg-df-dl-row-text">Editor Mode\x3C/span>                \x3Cspan class="tg-df-dl-row-subtext">Enable multi-select to copy deals to CMS\x3C/span>              \x3C/div>              \x3Clabel class="tg-df-toggle">                \x3Cinput type="checkbox" id="tg-df-editor-mode">                \x3Cspan class="tg-df-slider">\x3C/span>              \x3C/label>            \x3C/div>            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">View Mode\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-view-mode-select">                \x3Coption value="auto">Auto Collection\x3C/option>                \x3Coption value="carousel">Carousel\x3C/option>                \x3Coption value="savings_squad">Savings Squad\x3C/option>                \x3Coption value="grid">Grid (Columns)\x3C/option>                \x3Coption value="row">Row (List)\x3C/option>              \x3C/select>            \x3C/div>          \x3C/div>        \x3C/div>      \x3C/div>      \x3Cdiv class="tg-df-filters">        \x3Cdiv class="tg-df-sort-wrapper" id="tg-df-category-filter-wrapper" style="display: none;">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">            \x3Cpath d="M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z"/>          \x3C/svg>          \x3Cselect class="tg-df-filter-select" id="tg-df-category-filter" aria-label="Category">            \x3Coption value="all">All Categories\x3C/option>          \x3C/select>        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper tg-df-multiselect-container" id="tg-df-brand-filter-wrapper" style="display:none;">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">            \x3Cpath d="M4.25 5.61C6.27 8.2 10 13 10 13v6c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-6s3.72-4.8 5.74-7.39A.998.998 0 0 0 18.95 4H5.04c-.83 0-1.3.95-.79 1.61z"/>          \x3C/svg>          \x3Cdiv class="tg-df-filter-select tg-df-multiselect-trigger" id="tg-df-brand-trigger" tabindex="0">            Any Brand          \x3C/div>          \x3Cdiv class="tg-df-multiselect-dropdown" id="tg-df-brand-dropdown">            \x3C!-- Populated via script --\x3E          \x3C/div>        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">            \x3Cpath d="M9 3L5 6.99h3V14h2V6.99h3L9 3zm7 14.01V10h-2v7.01h-3L15 21l4-3.99h-3z"/>          \x3C/svg>          \x3Cselect class="tg-df-sort-select" aria-label="Sort Deals">            \x3Coption value="date_desc">Newest First\x3C/option>            \x3Coption value="best_match">Sort by: Match\x3C/option>            \x3Coption value="price_asc">Price Low to High\x3C/option>            \x3Coption value="price_desc">Price High to Low\x3C/option>            \x3Coption value="discount_desc">Biggest Discount\x3C/option>          \x3C/select>        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper tg-df-price-range-wrapper" id="tg-df-custom-price-wrapper" style="display: flex; align-items:center; justify-content:center; padding: 10px 20px; gap: 8px; border: 1px solid var(--tg-df-border); border-radius: 100px; background-color: var(--tg-df-bg);">          \x3Cspan style="font-size:14px; font-weight:500; color:var(--tg-df-text-primary);">Price\x3C/span>          \x3Cinput type="number" class="tg-df-price-input" id="tg-df-custom-price-min" placeholder="Min" style="width: 48px; background: transparent; border: none; color: var(--tg-df-text-primary); outline: none; font-size: 14px; text-align: center; padding: 0;">          \x3Cspan style="color:var(--tg-df-text-muted)">-\x3C/span>          \x3Cinput type="number" class="tg-df-price-input" id="tg-df-custom-price-max" placeholder="Max" style="width: 48px; background: transparent; border: none; color: var(--tg-df-text-primary); outline: none; font-size: 14px; text-align: center; padding: 0;">        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper" id="tg-df-legacy-price-wrapper">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">            \x3Cpath d="M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58.55 0 1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41 0-.55-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7z"/>          \x3C/svg>          \x3Cselect class="tg-df-filter-select" id="tg-df-price-filter" aria-label="Filter Prices">            \x3Coption value="all">All Prices\x3C/option>            \x3Coption value="under50">Under $50\x3C/option>            \x3Coption value="50_100">$50 - $100\x3C/option>            \x3Coption value="100_200">$100 - $200\x3C/option>            \x3Coption value="200_500">$200 - $500\x3C/option>            \x3Coption value="over500">Over $500\x3C/option>          \x3C/select>        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper" id="tg-df-discount-filter-wrapper">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">            \x3Cpath d="M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58.55 0 1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41 0-.55-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7z"/>          \x3C/svg>          \x3Cselect class="tg-df-filter-select" id="tg-df-discount-filter" aria-label="Discount Amount">            \x3Coption value="all">Any discount\x3C/option>            \x3Coption value="5">Min 5%\x3C/option>            \x3Coption value="10">Min 10%\x3C/option>            \x3Coption value="15">Min 15%\x3C/option>            \x3Coption value="20">Min 20%\x3C/option>            \x3Coption value="25">Min 25%\x3C/option>            \x3Coption value="30">Min 30%\x3C/option>            \x3Coption value="40">Min 40%\x3C/option>            \x3Coption value="50">Min 50%\x3C/option>            \x3Coption value="60">Min 60%\x3C/option>            \x3Coption value="70">Min 70%\x3C/option>          \x3C/select>        \x3C/div>      \x3C/div>    \x3C/div>    \x3C!-- Deals Grid Wrapper --\x3E    \x3Cdiv class="tg-df-grid-wrapper tg-df-carousel-cards-wrapper" id="tg-df-grid-wrapper">      \x3Cbutton class="tg-df-carousel-scroll-left" type="button" aria-label="Scroll left" style="display:none;" onclick="this.parentElement.querySelector('#tg-df-grid').scrollBy({left: -200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m15 18-6-6 6-6">\x3C/path>\x3C/svg>\x3C/button>      \x3Cdiv class="tg-df-grid" id="tg-df-grid">        \x3C!-- Content populated by JavaScript --\x3E      \x3C/div>      \x3Cbutton class="tg-df-carousel-scroll-right" type="button" aria-label="Scroll right" style="display:none;" onclick="this.parentElement.querySelector('#tg-df-grid').scrollBy({left: 200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m9 18 6-6-6-6">\x3C/path>\x3C/svg>\x3C/button>    \x3C/div>        \x3C!-- Vouchers Modal --\x3E    \x3Cdiv class="tg-df-modal-backdrop" id="tg-df-vouchers-modal">      \x3Cdiv class="tg-df-modal">        \x3Cdiv class="tg-df-modal-header">          \x3Ch3 class="tg-df-modal-title" id="tg-df-vouchers-title">Available Coupons & Deals\x3C/h3>          \x3Cbutton class="tg-df-modal-close" id="tg-df-vouchers-close">            \x3Csvg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">              \x3Cline x1="18" y1="6" x2="6" y2="18">\x3C/line>              \x3Cline x1="6" y1="6" x2="18" y2="18">\x3C/line>            \x3C/svg>          \x3C/button>        \x3C/div>        \x3Cdiv class="tg-df-modal-body" id="tg-df-vouchers-content">          \x3C!-- Vouchers injected here --\x3E        \x3C/div>      \x3C/div>    \x3C/div>  \x3C/div>`;      if (!template) {        template = document.createElement('template');        template.innerHTML = rawTemplate;      }      let shadowRoot = null;      if (hostContainer && template) {        hostContainer.setAttribute('data-initialized', 'true');        shadowRoot = hostContainer.attachShadow({ mode: 'open' });        shadowRoot.appendChild(template.content.cloneNode(true));      }      class DealsFinderWidget {        constructor(config) {          this.rootNode = config.rootNode || document;          this.hostContainer = config.hostContainer || null;          this.rootId = config.rootId || 'signal-deals-finder-root';          this.root = this.rootNode.querySelector('#' + this.rootId);          if (!this.root) return;          this.widgetId = (window.crypto && window.crypto.randomUUID) ? window.crypto.randomUUID() : 'widget-' + Date.now() + '-' + Math.random().toString(36).slice(2);          this.grid = this.root.querySelector('#tg-df-grid');          this.tagsContainer = this.root.querySelector('#tg-df-tags-container');          this.categoryFilter = this.root.querySelector('#tg-df-category-filter');          this.categoryFilterWrapper = this.root.querySelector('#tg-df-category-filter-wrapper');          this.searchInput = this.root.querySelector('.tg-df-search-input');          this.autocompleteDropdown = this.root.querySelector('#tg-df-autocomplete');          this.sortSelect = this.root.querySelector('.tg-df-sort-select');          this.searchBtn = this.root.querySelector('.tg-df-search-btn');                    this.settingsToggle = this.root.querySelector('#tg-df-settings-toggle');          this.settingsPanel = this.root.querySelector('#tg-df-settings-panel');          this.settingsBackdrop = this.root.querySelector('#tg-df-settings-backdrop');          this.regionSelect = this.root.querySelector('#tg-df-region-select');          this.retailerSelect = this.root.querySelector('#tg-df-retailer-select');          this.offerTypeSelect = this.root.querySelector('#tg-df-offer-type-select');          this.viewModeSelect = this.root.querySelector('#tg-df-view-mode-select');          this.rowsSelect = this.root.querySelector('#tg-df-rows-select');          this.dealModeToggle = this.root.querySelector('#tg-df-deal-mode');          this.editorModeToggle = this.root.querySelector('#tg-df-editor-mode');          this.priceFilter = this.root.querySelector('#tg-df-price-filter');          this.discountFilter = this.root.querySelector('#tg-df-discount-filter');                    this.editorBar = this.root.querySelector('#tg-df-editor-bar');          this.editorSelectedCount = this.root.querySelector('#tg-df-selected-count');          this.editorCopyBtn = this.root.querySelector('#tg-df-editor-copy');          this.editorClearBtn = this.root.querySelector('#tg-df-editor-clear');                    this.apiUrl = 'https://search-api.fie.future.net.uk/widget.php';          this.deals = [];          this.displayLimit = 12;          this.airedaleArticles = null;          this.airedaleTags = [];          this.airedaleTagCounts = {};          this.activeDealTag = null;          this.selectedBrands = [];          this.currentQuery = '';          this.editorMode = this.hostContainer ? this.hostContainer.hasAttribute('data-editor-mode') : false;          this.viewModeOverride = this.hostContainer ? this.hostContainer.getAttribute('data-view-mode') : null;          this.selectedDeals = new Map();                    this.brandFilterWrapper = this.root.querySelector('#tg-df-brand-filter-wrapper');          this.brandTrigger = this.root.querySelector('#tg-df-brand-trigger');          this.brandDropdown = this.root.querySelector('#tg-df-brand-dropdown');                    this.customPriceWrapper = this.root.querySelector('#tg-df-custom-price-wrapper');          this.customPriceMin = this.root.querySelector('#tg-df-custom-price-min');          this.customPriceMax = this.root.querySelector('#tg-df-custom-price-max');          this.legacyPriceWrapper = this.root.querySelector('#tg-df-legacy-price-wrapper');          this.discountFilterWrapper = this.root.querySelector('#tg-df-discount-filter-wrapper');          this.initResizeObserver();          this.init();            if (['carousel', 'carousel-compact', 'auto', 'grid', 'row'].includes(this.getViewMode())) { this.loadCarouselSpreadsheet(); }        }        getViewMode() {          if (this.viewModeOverride && (!this.editorMode || !this.viewModeSelect)) {            return this.viewModeOverride;          }          return (this.viewModeSelect && this.viewModeSelect.value) ? this.viewModeSelect.value : (this.viewModeOverride || 'auto');        }        applyLayoutMode() {          if (!this.grid) return;          const mode = this.getViewMode();          this.grid.classList.remove('layout-row', 'layout-grid', 'tg-df-grid-auto', 'carousel-compact', 'layout-replica-1', 'layout-replica-2');                    const carouselHost = this.root.querySelector('#tg-df-carousel-host');          const controlsDiv = this.root.querySelector('#tg-df-controls');          if (mode === 'carousel' || mode === 'auto' || mode === 'grid' || mode === 'row') {             if (mode === 'carousel') this.grid.classList.add('carousel-compact');             if (carouselHost) carouselHost.style.display = 'block';             if (controlsDiv) controlsDiv.style.display = 'none';             if (this.root.classList.contains('tg-df-container') && mode === 'carousel') {               this.root.classList.add('is-carousel');             } else if (this.root.classList.contains('tg-df-container')) {               this.root.classList.remove('is-carousel');             }          } else {             if (carouselHost) carouselHost.style.display = 'none';             if (controlsDiv) controlsDiv.style.display = 'flex';             if (this.root.classList.contains('tg-df-container')) {               this.root.classList.remove('is-carousel');             }          }          if (mode === 'grid') {            this.grid.classList.add('layout-grid');          } else if (mode === 'row') {            this.grid.classList.add('layout-row');          } else if (mode === 'savings_squad') {            this.grid.classList.add('tg-df-grid-auto', 'savings-squad-cards');          } else if (mode !== 'carousel') {            this.grid.classList.add('tg-df-grid-auto');          }                    const settingsWrapper = this.root.querySelector('.tg-df-settings-wrapper');          if (settingsWrapper) {            settingsWrapper.style.display = mode === 'auto' ? 'none' : 'block';          }          if (this.customPriceWrapper) {             this.customPriceWrapper.style.display = mode === 'auto' ? 'flex' : 'none';          }          if (this.legacyPriceWrapper) {             this.legacyPriceWrapper.style.display = mode === 'auto' ? 'none' : 'flex';          }          if (this.discountFilterWrapper) {             this.discountFilterWrapper.style.display = mode === 'auto' ? 'none' : 'flex';          }        }        initResizeObserver() {          try {            if (window.parent === window) return;          } catch (e) {            // cross origin frame check threw          }          const emitHeight = () => {            try {              const height = document.documentElement.scrollHeight || document.body.scrollHeight;              const msg = { type: 'embed-size', height: height };              if (window.parent && window.parent !== window) {                window.parent.postMessage(msg, '*');                window.parent.postMessage(JSON.stringify({ ...msg, sentinel: 'amp' }), '*');              }            } catch (e) {}          };                    if (window.ResizeObserver) {            try {              const ro = new ResizeObserver(() => emitHeight());              ro.observe(document.body);              if (this.root) ro.observe(this.root);            } catch(e){ console.warn(e); }          }          window.addEventListener('resize', emitHeight);          setTimeout(emitHeight, 300);        }        initCountdown() {          this.cdWrapper = this.root.querySelector('#tg-df-countdown-wrapper');                    let searchSource = window.location.search;          if (this.hostContainer && this.hostContainer.hasAttribute('data-widget-config')) {            searchSource = this.hostContainer.getAttribute('data-widget-config');          } else if (typeof window !== 'undefined' && window.__WIDGET_CONFIG__) {            searchSource = window.__WIDGET_CONFIG__;          }          const params = new URLSearchParams(searchSource);          this.showCountdown = params.get('show_countdown') === 'true';          const showHeaderDetails = params.get('show_header_details') !== 'false';          const eyebrow = this.root.querySelector('.tg-df-carousel-box-eyebrow');          const title = this.root.querySelector('.tg-df-carousel-box-title');          const subtitle = this.root.querySelector('.tg-df-carousel-box-subtitle');          if (!showHeaderDetails) {            let containerElement = this.root.classList.contains('tg-df-container') ? this.root : this.root.querySelector('.tg-df-container');            if (containerElement) containerElement.classList.add('hide-header-details');            if (eyebrow) eyebrow.style.display = 'none';            if (title) title.style.display = 'none';            if (subtitle) subtitle.style.display = 'none';          }          if (!this.cdWrapper) return;          this.cdTitle = this.root.querySelector('#tg-df-countdown-title');          this.cdDays = this.root.querySelector('#tg-df-cd-days');          this.cdHrs = this.root.querySelector('#tg-df-cd-hrs');          this.cdMin = this.root.querySelector('#tg-df-cd-min');          this.cdSec = this.root.querySelector('#tg-df-cd-sec');          this.updateCountdown();          this.cdInterval = setInterval(() => this.updateCountdown(), 1000);        }        updateCountdown() {          if (!this.cdWrapper) return;          if (!this.showCountdown) {            this.cdWrapper.style.display = 'none';            return;          }          const area = this.getAreaCode();          let offset = '-04:00';          if (['DE', 'FR', 'IT', 'ES', 'NL'].includes(area)) {             offset = '+02:00';          } else if (['GB', 'IE', 'UK'].includes(area)) {             offset = '+01:00';          }          const startTime = new Date('2026-06-23T00:00:00' + offset).getTime();          const endTime = new Date('2026-06-26T00:00:00' + offset).getTime();          const now = Date.now();          let targetTime = 0;          if (now < startTime) {             targetTime = startTime;             if (this.cdTitle) this.cdTitle.textContent = 'Prime Day starts in';             this.cdWrapper.style.display = 'flex';          } else if (now < endTime) {             targetTime = endTime;             if (this.cdTitle) this.cdTitle.textContent = 'Prime Day ends in';             this.cdWrapper.style.display = 'flex';          } else {             this.cdWrapper.style.display = 'none';             if (this.cdInterval) clearInterval(this.cdInterval);             return;          }          const diff = Math.max(0, targetTime - now);          const d = Math.floor(diff / (1000 * 60 * 60 * 24));          const h = Math.floor((diff / (1000 * 60 * 60)) % 24);          const m = Math.floor((diff / 1000 / 60) % 60);          const s = Math.floor((diff / 1000) % 60);          if (this.cdDays) this.cdDays.textContent = d;          if (this.cdHrs) this.cdHrs.textContent = h;          if (this.cdMin) this.cdMin.textContent = m;          if (this.cdSec) this.cdSec.textContent = s;        }        init() {          this.initCountdown();          try {            initAnalytics();          } catch (e) {            console.warn('Deals Widget Analytics Error:', e);          }                    this.bindEvents();                    let initialQuery = '';                    let searchSource = window.location.search;          if (this.hostContainer && this.hostContainer.hasAttribute('data-widget-config')) {            searchSource = this.hostContainer.getAttribute('data-widget-config');          } else if (typeof window !== 'undefined' && window.__WIDGET_CONFIG__) {            searchSource = window.__WIDGET_CONFIG__;          }          const params = new URLSearchParams(searchSource);          let initialViewMode = params.get('view_mode');          if (!params.has('search') && !params.has('q') && !params.has('query') && initialViewMode !== 'savings_squad') {             initialQuery = 'Everything';             if (this.discountFilter && !params.has('min_discount_ratio')) {               this.discountFilter.value = '5';             }          }          const website = params.get('website') || 'tomsguide';          this.website = website;          if (website === 'techradar') {            const squadHeader = this.root.querySelector('.tg-df-savings-squad-header');            if (squadHeader) {               const pic = squadHeader.querySelector('picture');               if (pic) pic.style.display = 'none';            }            const style = document.createElement('style');            style.innerHTML = `              .tg-df-container .hawk-affiliate-link-deal-button, .tg-df-container .tg-df-card-cta { background-color: #5DAF08 !important; }              .tg-df-container .hawk-affiliate-link-deal-button:hover, .tg-df-container .tg-df-card-cta:hover { background-color: #4a8c06 !important; }            `;            this.root.appendChild(style);          }                    if (this.regionSelect) {            this.regionSelect.value = params.get('region') || 'auto';            this.updatePriceDropdownCurrency();          }                    if (this.retailerSelect && params.has('retailer')) {            this.retailerSelect.value = params.get('retailer');          }                    if (params.has('brands')) {            const b = params.get('brands');            if (b) {              this.selectedBrands = b.split(',');            }          }                    if (this.offerTypeSelect && params.has('offer_type')) {            this.offerTypeSelect.value = params.get('offer_type');          }          if (params.has('bg_color')) {            const bg = params.get('bg_color');            if (bg === 'white') {              this.root.style.setProperty('background-color', '#ffffff', 'important');            } else if (bg === 'transparent') {              this.root.style.setProperty('background-color', 'transparent', 'important');            } else if (bg === 'light_blue') {              this.root.style.setProperty('background-color', '#E7F0FF', 'important');            }          } else {             this.root.style.removeProperty('background-color');          }                    if (params.has('view_mode')) {            if (this.viewModeSelect) {              this.viewModeSelect.value = params.get('view_mode');            } else {              this.viewModeOverride = params.get('view_mode');            }          }          if (this.rowsSelect && params.has('rows')) {            this.rowsSelect.value = params.get('rows');          }          if (params.has('price')) {            const priceVal = params.get('price');            if (this.priceFilter) {               // Try assigning it directly to select. If it's not present implicitly ignores               this.priceFilter.value = priceVal;            }            if (priceVal.includes('_')) {               const parts = priceVal.split('_');               if (this.customPriceMin && parts[0]) this.customPriceMin.value = parts[0];               if (this.customPriceMax && parts[1]) this.customPriceMax.value = parts[1];            }          }          if (this.discountFilter && params.has('min_discount_ratio')) {            // Need to convert back from ratio (e.g. 0.8) to select value (e.g. "20")            const ratioStr = params.get('min_discount_ratio');            const ratioFloat = parseFloat(ratioStr);            if (!isNaN(ratioFloat)) {               const percentage = Math.round((1 - ratioFloat) * 100);               this.discountFilter.value = percentage.toString();            }          }          if (this.sortSelect) {            this.sortSelect.value = params.get('sort') || 'discount_desc';          }          if (this.dealModeToggle && params.has('deal_mode')) {            this.dealModeToggle.checked = params.get('deal_mode') === 'true' || params.get('deal_mode') === '1';          }                    // Re-apply layout after params have updated control values          this.applyLayoutMode();                    if (params.get('search')) {            initialQuery = params.get('search');          } else if (params.get('q')) {            initialQuery = params.get('q');          } else if (params.get('query')) {            initialQuery = params.get('query');          }                    this.currentQuery = initialQuery;          if (this.searchInput) {            this.searchInput.value = this.currentQuery;          }                    if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {            this.fetchDeals(this.currentQuery);          } else {            this.render();          }        }        updatePriceDropdownCurrency() {          if (!this.priceFilter || !this.regionSelect) return;          const currencySymbols = {            'US': '$',            'GB': '£',            'CA': '$CA',            'AU': '$AU',            'DE': '€',            'FR': '€',            'IT': '€',          };          const area = this.getAreaCode();          const cur = currencySymbols[area || 'US'] || '$';                    const options = this.priceFilter.options;          for (let i = 0; i < options.length; i++) {            const opt = options[i];            if (opt.value === 'all') {              opt.innerText = 'All Prices';            } else if (opt.value === 'under50') {              opt.innerText = `Under ${cur}50`;            } else if (opt.value === '50_100') {              opt.innerText = `${cur}50 - ${cur}100`;            } else if (opt.value === '100_200') {              opt.innerText = `${cur}100 - ${cur}200`;            } else if (opt.value === '200_500') {              opt.innerText = `${cur}200 - ${cur}500`;            } else if (opt.value === 'over500') {              opt.innerText = `Over ${cur}500`;            }          }        }        populateBrandDropdown(values) {          if (!this.brandDropdown || !this.brandFilterWrapper) return;          this.brandFilterWrapper.style.display = 'flex'; // show the wrapper                    let html = '';          const allChecked = this.selectedBrands.length === 0 ? 'checked' : '';          const _div = '<' + '/div>';          const _span = '<' + '/span>';          html += `\x3Cdiv class="tg-df-ms-option">\x3Cinput type="checkbox" value="" ${allChecked} class="tg-df-brand-chk"> Any Brand${_div}`;                    values.forEach(v => {             if (!v.formatted_value || v.formatted_value === 'Any Brand') return;             const isChecked = this.selectedBrands.includes(v.formatted_value) ? 'checked' : '';             html += `\x3Cdiv class="tg-df-ms-option">\x3Cinput type="checkbox" value="${this.escapeHTML(v.formatted_value)}" ${isChecked} class="tg-df-brand-chk"> ${this.escapeHTML(v.formatted_value)} \x3Cspan style="color:var(--tg-df-text-muted);font-size:12px">(${v.count || 0})${_span}${_div}`;          });                    this.brandDropdown.innerHTML = html;                    // Re-bind listeners          const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');          chks.forEach(chk => {            chk.addEventListener('change', (e) => {              const val = e.target.value;              if (val === '') {                this.selectedBrands = [];              } else {                if (e.target.checked) {                   if (!this.selectedBrands.includes(val)) this.selectedBrands.push(val);                } else {                   this.selectedBrands = this.selectedBrands.filter(b => b !== val);                }              }                            if (this.selectedBrands.length === 0) {                 this.brandTrigger.innerText = 'Any Brand';              } else if (this.selectedBrands.length === 1) {                 this.brandTrigger.innerText = this.selectedBrands[0];              } else {                 this.brandTrigger.innerText = `${this.selectedBrands.length} Brands selected`;              }                            // Only call API if changed from UI interactions              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                 this.updateURLParams();                 this.fetchDeals(this.currentQuery);              }            });          });                    // Update button text on load          if (this.selectedBrands.length === 0) {             this.brandTrigger.innerText = 'Any Brand';          } else if (this.selectedBrands.length === 1) {             this.brandTrigger.innerText = this.selectedBrands[0];          } else {             this.brandTrigger.innerText = `${this.selectedBrands.length} Brands selected`;          }        }        updateURLParams() {          const url = new URL(window.location);          if (this.currentQuery && this.currentQuery !== 'Gaming laptops') {            url.searchParams.set('q', this.currentQuery);          } else {            url.searchParams.delete('q');            url.searchParams.delete('search');            url.searchParams.delete('query');          }                    if (this.regionSelect && this.regionSelect.value !== 'auto') {            url.searchParams.set('region', this.regionSelect.value);          } else {            url.searchParams.delete('region');          }                    if (this.retailerSelect && this.retailerSelect.value) {            url.searchParams.set('retailer', this.retailerSelect.value);          } else {            url.searchParams.delete('retailer');          }                    if (this.selectedBrands && this.selectedBrands.length > 0) {            url.searchParams.set('brands', this.selectedBrands.join(','));          } else {            url.searchParams.delete('brands');          }                    if (this.offerTypeSelect && this.offerTypeSelect.value) {            url.searchParams.set('offer_type', this.offerTypeSelect.value);          } else {            url.searchParams.delete('offer_type');          }                    if (this.viewModeSelect && this.viewModeSelect.value !== 'auto') {            url.searchParams.set('view_mode', this.viewModeSelect.value);          } else {            url.searchParams.delete('view_mode');          }                    if (this.rowsSelect && this.rowsSelect.value !== '12') {            url.searchParams.set('rows', this.rowsSelect.value);          } else {            url.searchParams.delete('rows');          }                    const min = this.customPriceMin ? this.customPriceMin.value : '';          const max = this.customPriceMax ? this.customPriceMax.value : '';          if (min || max) {             url.searchParams.set('price', `${min}_${max}`);          } else if (this.priceFilter && this.priceFilter.value !== 'all') {            url.searchParams.set('price', this.priceFilter.value);          } else {            url.searchParams.delete('price');          }                    if (this.discountFilter && this.discountFilter.value !== 'all' && this.discountFilter.value !== '0') {            const v = parseInt(this.discountFilter.value);            if (!isNaN(v) && v > 0) {               const ratio = (100 - v) / 100;               url.searchParams.set('min_discount_ratio', ratio.toString());            }          } else {            url.searchParams.delete('min_discount_ratio');          }                    if (this.sortSelect && this.sortSelect.value !== 'discount_desc') {            url.searchParams.set('sort', this.sortSelect.value);          } else {            url.searchParams.delete('sort');          }                    if (this.dealModeToggle && this.dealModeToggle.checked) {            url.searchParams.set('deal_mode', 'true');          } else {            url.searchParams.delete('deal_mode');          }                    window.history.replaceState({}, '', url);        }        bindEvents() {          const roundels = this.root.querySelectorAll('.tg-df-carousel-cat.original-hardcoded');          roundels.forEach(r => {             r.addEventListener('click', () => {                const q = r.getAttribute('data-query');                const pr = r.getAttribute('data-pr');                if (typeof trackHawkEvent !== 'undefined') {                     trackHawkEvent({                         clickType: "CC",                         widgetId: this.widgetId,                         productCategoryName: "deals",                         zeroBasedProductIndexOrNull: null,                         totalDealsOrProducts: null,                         areaClicked: "Category Roundel",                         revenueId: this.revenueId,                         isoCurrencyCode: typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD',                         queryName: q,                         widgetTypeName: this.widgetTypeName                     });                 }                this.currentQuery = q;                const label = this.root.querySelector('#tg-df-carousel-title-label');                if (label) label.textContent = 'Best ' + q;                if (this.priceFilter) this.priceFilter.value = pr || 'all';                if (this.discountFilter) this.discountFilter.value = '5';                if (this.searchInput) this.searchInput.value = q;                                roundels.forEach(ro => ro.classList.remove('active'));                r.classList.add('active');                this.fetchDeals(this.currentQuery);             });          });          const discBtns = this.root.querySelectorAll('.tg-df-carousel-filter-btn');          discBtns.forEach(b => {             b.addEventListener('click', () => {                const d = b.getAttribute('data-d');                const pr = b.getAttribute('data-pr');                const ot = b.getAttribute('data-ot');                let label = b.innerText ? b.innerText.trim() : '';                let filterType = 'unknown';                let filterVal = 'unknown';                if (d !== null) { filterType = 'discount'; filterVal = d; }                else if (pr !== null) { filterType = 'price'; filterVal = pr; }                else if (ot !== null) { filterType = 'offertype'; filterVal = ot; }                if (typeof trackElementInteraction === 'function') trackElementInteraction({ id: `filter-${filterType}-${filterVal}`, name: 'Filter Button', label: label });                                if (d !== null) {                   if (this.discountFilter) this.discountFilter.value = this.discountFilter.value === d ? '0' : d;                } else if (pr !== null) {                   if (this.priceFilter) this.priceFilter.value = this.priceFilter.value === pr ? 'all' : pr;                } else if (ot !== null) {                   if (this.offerTypeSelect) this.offerTypeSelect.value = this.offerTypeSelect.value === ot ? 'all' : ot;                } else {                   if (this.discountFilter) this.discountFilter.value = '0';                   if (this.priceFilter) this.priceFilter.value = 'all';                   if (this.offerTypeSelect) this.offerTypeSelect.value = 'all';                }                if (d === null && pr === null && ot === null && b.getAttribute("data-type") !== "custom") {                   discBtns.forEach(ro => ro.classList.remove('active'));                   b.classList.add('active');                } else if (b.getAttribute("data-type") !== "custom") {                   // Only operate on hardcoded buttons (those without data-type)                   discBtns.forEach(ro => {                      if (!ro.getAttribute('data-d') && !ro.getAttribute('data-pr') && !ro.getAttribute('data-ot') && ro.getAttribute('data-type') !== 'custom') ro.classList.remove('active');                   });                                      let makeActive = true;                   if (d !== null) {                       if (b.classList.contains('active')) makeActive = false;                       discBtns.forEach(ro => { if (ro.getAttribute('data-d') !== null && ro.getAttribute('data-type') !== 'custom') ro.classList.remove('active') });                   } else if (pr !== null) {                       if (b.classList.contains('active')) makeActive = false;                       discBtns.forEach(ro => { if (ro.getAttribute('data-pr') !== null && ro.getAttribute('data-type') !== 'custom') ro.classList.remove('active') });                   } else if (ot !== null) {                       if (b.classList.contains('active')) makeActive = false;                       discBtns.forEach(ro => { if (ro.getAttribute('data-ot') !== null && ro.getAttribute('data-type') !== 'custom') ro.classList.remove('active') });                   }                                      if (makeActive) b.classList.add('active');                                      // Check if anything is active, if not activate "All"                   let anyActive = false;                   discBtns.forEach(ro => { if (ro.classList.contains('active') && ro.getAttribute('data-type') !== 'custom') anyActive = true; });                   if (!anyActive) {                       discBtns.forEach(ro => { if (!ro.getAttribute('data-d') && !ro.getAttribute('data-pr') && !ro.getAttribute('data-ot') && ro.getAttribute('data-type') !== 'custom') ro.classList.add('active'); });                   }                }                                this.fetchDeals(this.currentQuery);             });          });          if (this.brandTrigger && this.brandDropdown) {            this.brandTrigger.addEventListener('click', () => {              this.brandDropdown.classList.toggle('active');            });            document.addEventListener('click', (e) => {              if (this.brandFilterWrapper && !e.composedPath().includes(this.brandFilterWrapper)) {                this.brandDropdown.classList.remove('active');              }            });          }          let debounceTimer;          if(this.searchInput) {            this.searchInput.addEventListener('input', (e) => {              clearTimeout(debounceTimer);              const query = e.target.value.trim();              this.currentQuery = query;              if (this.getViewMode() === 'savings_squad' && this.autocompleteDropdown && this.airedaleTags && query.length > 0) {                 const matches = this.airedaleTags.filter(t => t.toLowerCase().includes(query.toLowerCase()) && t.toLowerCase() !== query.toLowerCase()).slice(0, 5);                 if (matches.length > 0) {                    this.autocompleteDropdown.innerHTML = matches.map(m => `\x3Cdiv class="tg-df-autocomplete-item" data-tag="${this.escapeHTML(m)}">${this.escapeHTML(m)}<` + `/div>`).join('');                    this.autocompleteDropdown.classList.add('active');                 } else {                    this.autocompleteDropdown.classList.remove('active');                 }              } else if (this.autocompleteDropdown) {                 this.autocompleteDropdown.classList.remove('active');              }              debounceTimer = setTimeout(() => {                this.updateURLParams();                if (query.length > 2) {                  this.fetchDeals(query);                } else if (query.length === 0) {                  this.deals = [];                  this.render();                }              }, 400);            });            this.searchInput.addEventListener('keypress', (e) => {              if (e.key === 'Enter') {                if (this.autocompleteDropdown) this.autocompleteDropdown.classList.remove('active');                clearTimeout(debounceTimer);                const query = e.target.value.trim();                this.currentQuery = query;                this.activeDealTag = null;                trackElementInteraction({ id: 'search-submit', name: 'Ask', label: 'Ask (main search)', text: query });                this.updateURLParams();                if (query.length > 2 || (this.getViewMode() === 'savings_squad')) {                   this.fetchDeals(query);                }              }            });          }          if (this.autocompleteDropdown) {             this.autocompleteDropdown.addEventListener('click', (e) => {                const item = e.target.closest('.tg-df-autocomplete-item');                if (item) {                   const tag = item.getAttribute('data-tag');                   this.currentQuery = tag;                   if (this.searchInput) this.searchInput.value = tag;                   this.activeDealTag = tag;                   this.autocompleteDropdown.classList.remove('active');                   this.updateURLParams();                   this.fetchDeals(tag);                }             });             document.addEventListener('click', (e) => {               if (this.autocompleteDropdown && this.searchInput && !e.composedPath().includes(this.searchInput) && !e.composedPath().includes(this.autocompleteDropdown)) {                 this.autocompleteDropdown.classList.remove('active');               }             });          }          if (this.searchBtn) {            this.searchBtn.addEventListener('click', () => {              if (this.autocompleteDropdown) this.autocompleteDropdown.classList.remove('active');              clearTimeout(debounceTimer);              const query = this.searchInput.value.trim();              trackElementInteraction({ id: 'search-submit', name: 'Ask', label: 'Ask (main search)', text: query });              this.activeDealTag = null;              this.currentQuery = query;              this.updateURLParams();              if (query.length > 2 || (this.getViewMode() === 'savings_squad')) {                 this.fetchDeals(query);              }            });          }          if(this.sortSelect) this.sortSelect.addEventListener('change', () => {            trackElementInteraction({ id: `sort-option-${this.sortSelect.value}`, name: 'Sort', label: `Sort: ${this.sortSelect.options[this.sortSelect.selectedIndex].text}` });            this.updateURLParams();            if (this.deals.length > 0) {              this.sortData();              this.render();            }          });                    const priceFilter = this.root.querySelector('#tg-df-price-filter');          if (priceFilter) {            this.priceFilter = priceFilter;            this.priceFilter.addEventListener('change', () => {              trackElementInteraction({ id: `filter-price-${this.priceFilter.value}`, name: 'Price', label: this.priceFilter.options[this.priceFilter.selectedIndex].text });              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              } else {                this.render();              }            });          }          const updateCustomPrice = () => {             this.updateURLParams();             if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);             } else {                this.render();             }          };          if (this.customPriceMin) {             this.customPriceMin.addEventListener('change', updateCustomPrice);             this.customPriceMin.addEventListener('keypress', (e) => {                if (e.key === 'Enter') updateCustomPrice();             });          }          if (this.customPriceMax) {             this.customPriceMax.addEventListener('change', updateCustomPrice);             this.customPriceMax.addEventListener('keypress', (e) => {                if (e.key === 'Enter') updateCustomPrice();             });          }          const discountFilter = this.root.querySelector('#tg-df-discount-filter');          if (discountFilter) {            this.discountFilter = discountFilter;            this.discountFilter.addEventListener('change', () => {              trackElementInteraction({ id: `filter-discount-${this.discountFilter.value}`, name: 'Discount', label: this.discountFilter.options[this.discountFilter.selectedIndex].text });              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              } else {                this.render();              }            });          }          if (this.categoryFilter) {            this.categoryFilter.addEventListener('change', (e) => {               const val = e.target.value === 'all' ? null : e.target.value;               this.activeDealTag = val;               this.fetchSavingsSquad();            });          }                    if (this.settingsToggle) {            this.settingsToggle.addEventListener('click', () => {              const o = this.settingsPanel.classList.toggle('active');              this.settingsBackdrop.classList.toggle('active');              if (o) trackElementInteraction({ id: 'filter-open', name: 'Filters', label: 'Open filters' });            });          }                    if (this.settingsBackdrop) {            this.settingsBackdrop.addEventListener('click', () => {              this.settingsPanel.classList.remove('active');              this.settingsBackdrop.classList.remove('active');            });          }                    if (this.regionSelect) {            this.regionSelect.addEventListener('change', () => {              trackElementInteraction({ id: `filter-region-${this.regionSelect.value}`, name: 'Region', label: this.regionSelect.options[this.regionSelect.selectedIndex].text });              this.updateURLParams();              this.updatePriceDropdownCurrency();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              }            });          }                    if (this.retailerSelect) {            this.retailerSelect.addEventListener('change', () => {              trackElementInteraction({ id: `filter-merchant-${this.retailerSelect.value}`, name: 'Retailer', label: this.retailerSelect.options[this.retailerSelect.selectedIndex].text });              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              }            });          }                    if (this.offerTypeSelect) {            this.offerTypeSelect.addEventListener('change', () => {              trackElementInteraction({ id: `filter-offertype-${this.offerTypeSelect.value}`, name: 'Offer Type', label: this.offerTypeSelect.options[this.offerTypeSelect.selectedIndex].text });              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              }            });          }                    if (this.viewModeSelect) {            this._prevViewMode = this.viewModeSelect.value;            this.viewModeSelect.addEventListener('change', () => {              trackElementInteraction({ id: `filter-viewmode-${this.viewModeSelect.value}`, name: 'View Mode', label: this.viewModeSelect.options[this.viewModeSelect.selectedIndex].text });                            // Reset all active toggles and filters to prevent config carry-over              this.selectedBrands = [];              if (this.brandTrigger) this.brandTrigger.innerText = 'Select Brands';              if (this.brandDropdown) {                const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');                chks.forEach(chk => { chk.checked = false; });              }              if (this.priceFilter) this.priceFilter.value = 'all';              if (this.customPriceMin) this.customPriceMin.value = '';              if (this.customPriceMax) this.customPriceMax.value = '';              if (this.sortSelect) this.sortSelect.value = this.viewModeSelect.value === 'savings_squad' ? 'date_desc' : 'discount_desc';              if (this.discountFilter) this.discountFilter.value = '0';              if (this.retailerSelect) this.retailerSelect.value = '';              if (this.offerTypeSelect) this.offerTypeSelect.value = '';              if (this.rowsSelect) this.rowsSelect.value = '12';              if (this.categoryFilter) this.categoryFilter.value = 'all';              this.activeDealTag = null;              this.updateURLParams();              this.applyLayoutMode();                            if (this.getViewMode() === 'savings_squad' || this._prevViewMode === 'savings_squad') {                this.fetchDeals(this.currentQuery);              } else {                this.render();              }              this._prevViewMode = this.viewModeSelect.value;            });          }                    if (this.rowsSelect) {            this.rowsSelect.addEventListener('change', () => {              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              }            });          }                    if (this.dealModeToggle) {            this.dealModeToggle.addEventListener('change', () => {              this.updateURLParams();              this.render();            });          }          if (this.editorModeToggle) {             this.editorModeToggle.addEventListener('change', (e) => {                this.editorMode = e.target.checked;                this.render();                this.updateFloatingCopyBar();             });          }          if (this.editorCopyBtn) {             this.editorCopyBtn.addEventListener('click', () => {                this.copySelectedDealsToCMS();             });          }          if (this.editorClearBtn) {             this.editorClearBtn.addEventListener('click', () => {                this.selectedDeals.clear();                this.render();                this.updateFloatingCopyBar();             });          }          if (this.grid) {            this.grid.addEventListener('change', (e) => {               if (e.target.classList.contains('tg-df-deal-checkbox')) {                  const dealId = e.target.getAttribute('data-id');                  if (e.target.checked) {                     const dealObj = this.deals.find(d => d.id === dealId);                     if (dealObj) this.selectedDeals.set(dealId, dealObj);                  } else {                     this.selectedDeals.delete(dealId);                  }                  this.updateFloatingCopyBar();               }            });            this.grid.addEventListener('click', (e) => {              const dealCard = e.target.closest('[data-action="deal-click"]');              const similarCard = e.target.closest('[data-action="view-similar-click"]');              const cardLink = dealCard || similarCard;              if (cardLink) {                const productName = cardLink.getAttribute('data-product-name');                const merchantName = cardLink.getAttribute('data-merchant-name');                const productId = cardLink.getAttribute('data-analytics-id');                const price = parseFloat(cardLink.getAttribute('data-price')) || null;                const prevPriceStr = cardLink.getAttribute('data-previous-price');                const previousPrice = prevPriceStr ? parseFloat(prevPriceStr) : null;                const originalLink = cardLink.getAttribute('data-original-link');                const rewrittenLink = cardLink.getAttribute('href');                const revenueId = cardLink.getAttribute('data-revenue-id');                const index = parseInt(cardLink.getAttribute('data-index'), 10) || 0;                const inStock = cardLink.getAttribute('data-in-stock') === 'true';                const totalText = cardLink.getAttribute('data-total');                const totalDeals = parseInt(totalText, 10) || 0;                const productCategoryName = 'deals';                const trackingParams = {                  widgetId: this.widgetId,                  productCategoryName: productCategoryName,                  product: {                    modelId: cardLink.getAttribute('data-model-id') || null,                    matchId: cardLink.getAttribute('data-match-id') || null,                    brand: cardLink.getAttribute('data-model-brand') || null,                    parent: cardLink.getAttribute('data-model-parent') || null,                    name: productName,                    price: price,                    previousPrice: previousPrice,                    link: rewrittenLink,                    originalLink: originalLink,                    inStock: inStock                  },                  zeroBasedProductIndexOrNull: index,                  totalDealsOrProducts: totalDeals,                   merchant: {                    id: cardLink.getAttribute('data-merchant-id') || null,                    network: cardLink.getAttribute('data-merchant-network') || null,                    url: cardLink.getAttribute('data-merchant-url') || null,                    name: merchantName                  },                  revenueId: revenueId,                  widgetTypeName: this.widgetTypeName,                  isoCurrencyCode: normalizeCurrency(this.escapeHTML(cardLink.getAttribute('data-currency') || '$'))                };                if (dealCard) {                  trackDealClick(trackingParams);                } else {                  trackViewSimilarClick(trackingParams);                }              }              const couponsBtn = e.target.closest('[data-action="coupons-click"]');              if (couponsBtn) {                trackElementInteraction({                  id: 'product-card-show-coupons',                  name: 'Coupons',                  label: `Product card coupons: ${couponsBtn.getAttribute('data-merchant')}`                });              }            });          }          this.setupScrollListeners();        }        setupScrollListeners() {          const containers = [             this.root.querySelector('.tg-df-carousel-roundels'),             this.root.querySelector('.tg-df-carousel-filters-wrap'),             this.root.querySelector('#tg-df-grid')          ];                    containers.forEach(container => {             if (!container) return;                          const checkScroll = () => {                if (!container.parentElement) return;                const leftBtn = container.parentElement.querySelector('.tg-df-carousel-scroll-left');                const rightBtn = container.parentElement.querySelector('.tg-df-carousel-scroll-right');                                if (leftBtn) {                   if (container.scrollLeft <= 5) leftBtn.style.display = 'none';                   else leftBtn.style.display = 'flex';                }                                if (rightBtn) {                   if (container.scrollWidth <= container.clientWidth) {                       rightBtn.style.display = 'none';                   } else if (container.scrollLeft >= container.scrollWidth - container.clientWidth - 5) {                       rightBtn.style.display = 'none';                   } else {                       rightBtn.style.display = 'flex';                   }                }             };                          container.addEventListener('scroll', checkScroll);             checkScroll();                          window.addEventListener('resize', checkScroll);                          const observer = new MutationObserver(checkScroll);             observer.observe(container, { childList: true, subtree: true, characterData: false });          });        }        get widgetTypeName() {          const mode = this.viewModeSelect ? this.viewModeSelect.value : (this.viewModeOverride || 'auto');          switch(mode) {              case 'carousel': return 'Carousel';              case 'savings_squad': return 'Savings Squad';              case 'grid': return 'Grid';              case 'row': return 'Row';              default: return 'Auto Collection';          }        }        getRowsLimit() {          if (this.rowsSelect && this.rowsSelect.value) return parseInt(this.rowsSelect.value, 10);          let configSource = window.location.search;          if (this.hostContainer && this.hostContainer.hasAttribute('data-widget-config')) {             configSource = this.hostContainer.getAttribute('data-widget-config');          } else if (typeof window !== 'undefined' && window.__WIDGET_CONFIG__) {             configSource = window.__WIDGET_CONFIG__;          }          const params = new URLSearchParams(configSource);          if (params.has('rows')) return parseInt(params.get('rows'), 10) || 12;          return 12;        }        getAreaCode() {          if (this.regionSelect && this.regionSelect.value) {            if (this.regionSelect.value === 'auto') return null;            return this.regionSelect.value;          }          let area = null;          try {            const locale = window.navigator.language || window.navigator.userLanguage;            if (locale && locale.includes('-')) {              area = locale.split('-')[1].toUpperCase();            } else if (locale && locale.length === 2) {              if (locale.toUpperCase() === 'EN') { area = 'US'; }              else { area = locale.toUpperCase(); }            }          } catch (e) { /* Ignore */ }                    // Map to known valid options or fallback to US          const valid = ['US', 'GB', 'CA', 'AU', 'DE', 'FR', 'IT'];          if (area === 'UK') area = 'GB';          if (valid.includes(area)) {             return area;          }          return 'US';        }                async loadCarouselSpreadsheet() {          try {              const parseCSVRow = (str) => {                  let result = [], cur = '', inQuotes = false;                  for (let i = 0; i < str.length; i++) {                      let char = str[i];                      if (inQuotes) {                          if (char === '"') {                              if (str[i + 1] === '"') { cur += '"'; i++; }                              else { inQuotes = false; }                          } else { cur += char; }                      } else {                          if (char === '"') { inQuotes = true; }                          else if (char === ',') { result.push(cur); cur = ''; }                          else { cur += char; }                      }                  }                  result.push(cur); return result;              };              const parseCSV = (str) => {                  const rows = []; let curRow = '', inQuotes = false;                  for (let i = 0; i < str.length; i++) {                      let char = str[i];                      if (char === '"') inQuotes = !inQuotes;                      if ((char === '\n' || char === '\r') && !inQuotes) {                          if (char === '\r' && str[i+1] === '\n') i++;                          if (curRow) rows.push(parseCSVRow(curRow));                          curRow = '';                      } else { curRow += char; }                  }                  if (curRow) rows.push(parseCSVRow(curRow));                  return rows;              };              const preloadedCSV = decodeURIComponent(escape(atob("LCwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNQ0KUm91bmRlbCB0ZXh0LEFsbCxUVnMsRm9vdHdlYXIsQXBwYXJlbCxNYXR0cmVzZXMsQXBwbGlhbmNlcyxXZWFyYWJsZSB0ZWNoLEhlYWRwaG9uZXMsU21hcnQgSG9tZSxTcGVha2VycyxMYXB0b3BzLFRhYmxldHMsQ29tcHV0aW5nLFBob25lcyxHYW1pbmcsTGVnbw0KUm91bmRlbCBpbWFnZSxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Byb2R1Y3RzL2Nhcm91c2VsL2FpLnBuZyxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Byb2R1Y3RzL2Nhcm91c2VsL3R2cy5wbmcsaHR0cHM6Ly9pbWFnZXMuZmllLmZ1dHVyZWNkbi5uZXQvcHJvZHVjdHMvN2IzYTIyNGIwNzk2M2M2MjdiNmI5MDliZDc4MzM4MzZlMDJmZjgxOS5qcGcud2VicCxodHRwczovL2ltYWdlcy5maWUuZnV0dXJlY2RuLm5ldC9wcm9kdWN0cy84NGRhYzVkNDhlZDJkNDQ4NTU5ZWJhNjdhY2U4MzE0Y2M2N2NjZDk0LmpwZy53ZWJwLGh0dHBzOi8vd3d3LnRvbXNndWlkZS5jb20vcHJvZHVjdHMvY2Fyb3VzZWwvbWF0dHJlc3Nlcy5wbmcsaHR0cHM6Ly9pbWFnZXMuZmllLmZ1dHVyZWNkbi5uZXQvcHJvZHVjdHMvNzY4ZTk3Y2ViMDcxODAxZmFlMjA5MTBkMDgyMGIxNmY3NDdhZjkzOS5qcGcud2VicCxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Byb2R1Y3RzL2Nhcm91c2VsL3dlbGxuZXNzLnBuZyxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Byb2R1Y3RzL2Nhcm91c2VsL2hlYWRwaG9uZXMuanBnLGh0dHBzOi8vaW1hZ2VzLmZpZS5mdXR1cmVjZG4ubmV0L3Byb2R1Y3RzLzg5NTM1YmVlYmUyMGRiYmQ0YTM0NmQ2ZDZiZGZlOTFkOGE4ODRhMjEuanBnLndlYnAsaHR0cHM6Ly93d3cudG9tc2d1aWRlLmNvbS9wcm9kdWN0cy9jYXJvdXNlbC9hdWRpby5qcGcsaHR0cHM6Ly93d3cudG9tc2d1aWRlLmNvbS9wcm9kdWN0cy9jYXJvdXNlbC9sYXB0b3BzLmpwZyxodHRwczovL2ltYWdlcy5maWUuZnV0dXJlY2RuLm5ldC9wcm9kdWN0cy8yMzk3NTY0ZWQ3YTVmZjk0N2U5YjZiMzBlNTRmNDc0OTRiODQxZjg5LmpwZy53ZWJwLGh0dHBzOi8vd3d3LnRvbXNndWlkZS5jb20vcHJvZHVjdHMvY2Fyb3VzZWwvY29tcHV0aW5nLmpwZyxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Byb2R1Y3RzL2Nhcm91c2VsL3Bob25lcy5wbmcsaHR0cHM6Ly93d3cudG9tc2d1aWRlLmNvbS9wcm9kdWN0cy9jYXJvdXNlbC9nYW1pbmcucG5nLGh0dHBzOi8vaW1hZ2VzLmZpZS5mdXR1cmVjZG4ubmV0L3Byb2R1Y3RzLzRmNmM2MjFjYWMwYmMxYTg1ZDU5M2UzNTk0YmE1YjM0OWVmZmQyOTIuanBnLndlYnANClNlYXJjaCBRdWVyeSxFdmVyeXRoaW5nLFRlbGV2aXNpb25zLCJTbmVha2VycywgcnVubmluZyBzaG9lcywgc2FuZGFscyIsQ2xvdGhpbmcsTWF0dHJlc3NlcyxIb21lIEFwcGxpYW5jZXMsV2VhcmFibGVzICYgRml0bmVzcyBUZWNoLEhlYWRwaG9uZXMsSG9tZSBUZWNoLFNwZWFrZXJzLExhcHRvcHMsVGFibGV0cyxDb21wdXRpbmcsUGhvbmVzLEdhbWluZyxDb25zdHJ1Y3Rpb24gVG95cw0KRGlzY291bnQgQW1vdW50LG1pbiA1JSxtaW4gMTAlLG1pbiA1JSxtaW4gNSUsbWluIDUlLG1pbiA1JSxtaW4gNSUsbWluIDUlLG1pbiA1JSxtaW4gNSUsbWluIDUlLG1pbiA1JSxtaW4gNSUsbWluIDUlLG1pbiA1JSxtaW4gNSUNClByaWNlIFJhbmdlLCwsLCxtaW4gJDQwMCwsLCxtaW4gJDI1LCxtaW4gJDMwMCwsLG1pbiAkMTAwLCwNCkJyYW5kIFNlbGVjdGlvbiwsLCwsLCwsLCwsLCwsLCwNCkZpbHRlciBidXR0b25zLCwsLCwsLCwsLCwsLCwsLA0KMSxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMNCjIsQW1hem9uIGRlYWxzLFVuZGVyICQxMDAwLDUwJSBvZmYsQWRpZGFzLEFtYXpvbiBkZWFscyxBbWF6b24gZGVhbHMsNTAlIG9mZixBbWF6b24gZGVhbHMsQW1hem9uIGRlYWxzLEFtYXpvbiBkZWFscyxBbWF6b24gZGVhbHMsQW1hem9uIGRlYWxzLEFtYXpvbiBkZWFscyxBbWF6b24gZGVhbHMsQW1hem9uIGRlYWxzLEFtYXpvbiBkZWFscw0KMyxPdmVyICQ0MDAsVW5kZXIgJDUwMCxIb2thLE5pa2UsU2FhdHZhLE5pbmphLDQwJSBvZmYsSkxhYiwsSkJMLERlbGwsLEFzdXMsQXBwbGUsQ29uc29sZXMsU3RhciBXYXJzDQo0LFVuZGVyICQxMDAwLDUwJSBvZmYsU2tlY2hlcnMsVW5kZXIgQXJtb3VyLEhlbGl4LFNoYXJrLEdhcm1pbixBbmtlciBTb3VuZGNvcmUsUmluZyxTb25vcyxBcHBsZSxBcHBsZSxUUC1saW5rLFNhbXN1bmcsQWNjZXNzb3JpZXMsVW5kZXIgJDI1DQo1LFVuZGVyICQ1MDAsTEcsQXNpY3MsQ29sdW1iaWEsRHJlYW1DbG91ZCxLZXVyaWcsQXBwbGUsU29ueSxHb3ZlZSxUcmliaXQsTGVub3ZvLFNhbXN1bmcsRWVybyxHb29nbGUsR2FtZXMsVW5kZXIgJDUwDQo2LDUwJSBvZmYsU2Ftc3VuZyxOaWtlLFBhdGFnb25pYSxOZWN0YXIsRGUnTG9uZ2hpLEFtYXpmaXQsQXBwbGUsS2FzYSBzbWFydCxTb255LEFsaWVud2FyZSxUQ0wsTmV0Z2VhcixNb3Rvcm9sYSxOaW50ZW5kbyxCb3RhbmljYWxzDQo3LEFtYXpvbixIaXNlbnNlLE5ldyBCYWxhbmNlLEFyYyd0ZXJ5eCxUZW1wdXItcGVkaWMsRHlzb24sRml0Yml0LEJlYXRzLFBoaWxpcHMgSHVlLEFua2VyLEFjZXIsT25lUGx1cyxEZWxsLE9uZVBsdXMsU29ueSxEaXNuZXkNCjgsQXBwbGUsVENMLEFkaWRhcyxDYXJoYXJ0dCxCZWFyLEJpc3NlbGwsU2Ftc3VuZyxFYXJmdW4sQmxpbmssQmVhdHMsTVNJLE1pY3Jvc29mdCxBY2VyLE5vdGhpbmcsWGJveCxNYXJ2ZWwNCjksLFNvbnksU2F1Y29ueSxUaGUgTm9ydGggRmFjZSxTaWVuYSxOdXRyaWJ1bGxldCxPdXJhLFNhbXN1bmcsR29vZ2xlIE5lc3QgLE1hcnNoYWxsLFNhbXN1bmcsTGVub3ZvLExlbm92bywsLFBva2Vtb24NCjEwLCxSb2t1LEJpcmtlbnN0b2NrLENSWiBZb2dhLFdpbmtCZWRzLEJsYWNrIGFuZCBEZWNrZXIsUmluZ2Nvbm4sQ01GLEV1ZnksU2Ftc3VuZyxNaWNyb3NvZnQsUmVNYXJrYWJsZSxBbGllbndhcmUsLCwNCjExLCwsQnJvb2tzLFRoZSBHeW0gUGVvcGxlLEJyb29rbHluIGJlZGRpbmcsTmVzcHJlc3NvLCwxTW9yZSxBcmxvLCxSYXplciwsQ29yc2FpciwsLA0KMTIsLCxDcm9jcywsRWlnaHQgU2xlZXAsQ3Vpc2luYXJ0LCxKQkwsLCwsLEhQLCwsDQpOb3RlcywsLCwsLCwsLCwsLCwsLCwNCiwsIlByaW9yaXRpc2UgYmlnZ2VzdCAlLyQgZGlzY291bnQsIFR2cyB3aXRoIH41MCUgb2ZmIGhhdmUgYmVlbiB0aGUgbW9zdCBwb3B1bGFyIGV2ZW4gaWYgdGhleSBhcmUgc3RpbGwgZXhwZW5zaXZlIiwiTm8gcGF0dGVybiB0byBwcmljaW5nL2Rpc2NvdW50LCByZWFkZXJzIG1haW5seSBzaG9wIGJ5IGJyYW5kL3JlY29nbmlzYWJsZSBzaG9lcyIsIk5vIHBhdHRlcm4gdG8gcHJpY2luZy9kaXNjb3VudCwgcmVhZGVycyBtYWlubHkgc2hvcCBieSBicmFuZCIsIkEgbGFiZWwgd2lsbCBkZWZpbml0ZWx5IGhlbHAgaGVyZSBlLmcuIGJlc3QgZm9yIHNpZGUgc2xlZXBlciwgYmVzdCBtZW1vcnkgZm9hbSIsIkFwcGxpYW5jZXMgaXMgYSBiaWcgY2F0ZWdvcnksIGlzIGl0IHBvc3NpYmxlIHRvIHNwbGl0IGludG8ga2l0Y2hlbiBhcHBsaWFuY2VzLCBmbG9vcmNhcmUsIGFpciBoZWFsdGgvY29vbGluZz8gT3Igc2ltaWxhciIsIkZvY3VzIG9uIHZhbHVlIGZvciBtb25leSwgR2FybWlucyB3aXRoIH41MCUgb2ZmIGhhdmUgYmVlbiBwb3B1bGFyIGV2ZW4gdGhvdWdoIHRoZXkgYXJlIHN0aWxsICQ1MDAiLCwsLCxJbmNsdWRlIEtpbmRsZXMsSSB3b3VsZCBpbmNsdWRlIHdpZmkgcm91dGVycyBoZXJlIGluc3RlYWQgb2Ygc21hcnQgaG9tZSxDYW4gd2Ugc3VyZmFjZSBwaG9uZSBwcm92aWRlciBkZWFscz8gVC1tb2JpbGUgYW5kIHZlcml6b24gd291bGQgbWFrZSBhIGxvdCBtb3JlIG1vbmV5IHRoYW4gQW1hem9uLCwNCiwsaGF2aW5nIGEgJ2Jlc3QgZm9yJyBsYWJlbCB3b3VsZCBiZSBoZWxwZnVsIGUuZy4gYmVzdCBmb3IgYnJpZ2h0IHJvb20sQ2FuIHdlIHN0b3Aga2lkcyBzaG9lcyBmcm9tIHB1bGxpbmcgdGhyb3VnaD8sIldpbGwgdGhpcyBpbmNsdWRlIGFjY2Vzc29yaWVzIGUuZy4gY2FwcywgYmFncywgaWYgc28gbWFrZSBzdXJlIHRoZXNlIGFyZSBtaXhlZCB0aHJvdWdob3V0IGNsb3RoaW5nIGRlYWxzIixXaWxsIHRoaXMgaW5jbHVkZSB0b3BwZXJzIGFuZCBwaWxsb3dzPyBTZWVpbmcgbW9yZSBtb21lbnR1bSB3aXRoIHRoaXMgY2F0ZWdvcnkgcmVjZW50bHkgc28gYSBiZWRkaW5nIHRhYiBtaWdodCB3b3JrLCwiTmVlZCB0byBtYWtlIHN1cmUgYmFuZHMsIHNjcmVlbiBwcm90ZWN0b3JzIGV0Yy4gZG9uJ3QgcHVsbCBpbnRvIGhlcmUiLCwsLCwsLCwsDQosLCJQcmlvcml0aXNlIDY1JycgYW5kIDU1JyBpbmNoIFRWcywgdGhlbiBiaWdnZXIgc2NyZWVucyBiZWZvcmUgdGhlIHNtYWxsZXIgc2l6ZXMiLCwsUXVlZW4gaXMgdGhlIG1vc3QgcG9wdWxhciBzaXplIGluIHRoZSBVUyAtIHByaW9yaXRpc2UgZGVhbHMgZm9yIHRoaXMgc2l6ZSwsLCwsLCwsLCwsDQosLCwsLCwsLCwsLCwsLCwsDQpDYXRlZ29yaWVzIHRvIGNvbnNpZGVyLCxQcm9kdWN0cyBpbmNsdWRlZCwsLCwsLCwsLCwsLCwsDQpVbmRlciAkNTA/LCxBaXIgdGFncywsLCwsLCwsLCwsLCwsDQosLFBvcnRhYmxlIGNoYXJnZXJzL3dpcmVsZXNzIGNoYXJnZXJzLCwsLCwsLCwsLCwsLCwNCiwsIldhdGVyIGJvdHRsZXMgKHN0YW5sZXlzLCBPd2FsYSwgSHlkcm8gZmxhc2ssIFlldGkpIiwsLCwsLCwsLCwsLCwsDQosLEhhbmQgaGVsZCBmYW5zLCwsLCwsLCwsLCwsLCwNCiwsLCwsLCwsLCwsLCwsLCwNCmhvbWUgb2ZmaWNlLCxvZmZpY2UgY2hhaXJzLCwsLCwsLCwsLCwsLCwNCiwsc3RhbmRpbmcgZGVza3MsLCwsLCwsLCwsLCwsLA0KLCxtb25pdG9ycywsLCwsLCwsLCwsLCwsDQosLEtleWJvYXJkcywsLCwsLCwsLCwsLCwsDQosLGRvY2tpbmcgc3RhdGlvbiwsLCwsLCwsLCwsLCwsDQosLCwsLCwsLCwsLCwsLCwsDQpHYW1pbmcsLENvbnNvbGVzLCwsLCwsLCwsLCwsLCwNCiwsQWNjZXNzb3JpZXMsLCwsLCwsLCwsLCwsLA0KLCxHYW1lcywsLCwsLCwsLCwsLCwsDQosLENvdWxkIGluY2x1ZGUgTGVnbz8sLCwsLCwsLCwsLCwsLA==")));              const text = preloadedCSV;              const parsed = parseCSV(text);                            const rowsByName = {};              let filterStart = -1;              parsed.forEach((rc, i) => {                 if (rc && rc.length > 0 && rc[0]) rowsByName[rc[0]] = rc;                 if (rc && rc.length > 0 && rc[0] === 'Filter buttons') filterStart = i;              });                            const cols = [];              if(rowsByName['Roundel text']) {                const headerRow = rowsByName['Roundel text'];                for(let col = 1; col < headerRow.length; col++) {                   let label = headerRow[col];                   if (!label) continue;                                      let q = rowsByName['Search Query'] && rowsByName['Search Query'][col] ? rowsByName['Search Query'][col] : '';                   let img = rowsByName['Roundel image'] && rowsByName['Roundel image'][col] ? rowsByName['Roundel image'][col] : '';                   let ds = rowsByName['Discount Amount'] && rowsByName['Discount Amount'][col] ? rowsByName['Discount Amount'][col] : '';                   let pr = rowsByName['Price Range'] && rowsByName['Price Range'][col] ? rowsByName['Price Range'][col] : '';                   let rt = rowsByName['Retailer'] && rowsByName['Retailer'][col] ? rowsByName['Retailer'][col] : '';                   let ot = rowsByName['Offer Type'] && rowsByName['Offer Type'][col] ? rowsByName['Offer Type'][col] : '';                                      let filters = [];                   if(filterStart > 0) {                     for(let r = filterStart + 1; r < parsed.length; r++) {                         if(!parsed[r] || parsed[r][0] === 'Notes' || parsed[r][0] === 'Categories to consider') break;                         let f = parsed[r][col];                         if(f) filters.push(f);                     }                   }                   cols.push({ label, img, q, ds, pr, rt, ot, filters });                }              }              this.carouselData = cols;              if (this.carouselData && this.carouselData.length > 0) {                 const isMatched = this.carouselData.some(c => c.q === this.currentQuery || c.label === this.currentQuery);                 if (!isMatched) {                    const first = this.carouselData[0];                    this.currentQuery = first.q || first.label;                    if (this.priceFilter) this.priceFilter.value = 'all';                    if (this.customPriceMin) this.customPriceMin.value = '';                    if (this.customPriceMax) this.customPriceMax.value = '';                    let dPr = first.pr || 'all';                    if (typeof dPr === 'string' && dPr !== 'all') {                       let prLower = dPr.toLowerCase();                       if (prLower.includes('min') || prLower.includes('over')) {                          let m = dPr.match(/(\d+)/);                          if (m && this.customPriceMin) this.customPriceMin.value = m[1];                       } else if (prLower.includes('max') || prLower.includes('under')) {                          let m = dPr.match(/(\d+)/);                          if (m && this.customPriceMax) this.customPriceMax.value = m[1];                       }                    }                    let dAm = '0';                    if(first.ds && typeof first.ds === 'string') {                       let m = first.ds.match(/(\d+)/);                       if(m) dAm = m[1];                    }                    if (this.discountFilter) this.discountFilter.value = dAm;                    if (this.offerTypeSelect) this.offerTypeSelect.value = first.ot || '';                    if (this.retailerSelect) this.retailerSelect.value = first.rt || '';                    this.selectedBrands = [];                    if (this.brandDropdown) {                        const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');                        chks.forEach(chk => chk.checked = false);                    }                    if (this.searchInput) this.searchInput.value = this.currentQuery;                 }              }              this.renderCarouselUI();          } catch(e){ console.warn(e); }        }                renderCarouselUI() {           const roundelWrapper = this.root.querySelector('.tg-df-carousel-roundels');           if(!roundelWrapper || !this.carouselData) return;                      let html = '';           this.carouselData.forEach(r => {              const q = r.q || r.label;              const isActive = (this.currentQuery === q || this.currentQuery === r.label) ? 'active' : '';              const imgHtml = r.img ? `\x3Cimg src="${r.img}" alt="${r.label}" />` : `\x3Csvg width="32" height="32" fill="#1F69FF" viewBox="0 0 24 24">\x3Cpath d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"/>\x3C/svg>`;              html += `                \x3Cdiv class="tg-df-roundel tg-df-carousel-cat ${isActive}" data-label="${this.escapeHTML(r.label)}">                  \x3Cdiv class="tg-df-roundel-img-box">${imgHtml}\x3C/div>                  \x3Cspan class="tg-df-roundel-label">${this.escapeHTML(r.label)}\x3C/span>                \x3C/div>              `;           });           roundelWrapper.innerHTML = html;                      // Rebind clicks           const roundels = this.root.querySelectorAll('.tg-df-carousel-cat');           roundels.forEach(rNode => {             rNode.addEventListener('click', () => {                const r = this.carouselData.find(c => c.label === rNode.getAttribute('data-label'));                 if(!r) return;                                  if (typeof trackHawkEvent !== 'undefined') {                     trackHawkEvent({                         clickType: "CC",                         widgetId: this.widgetId,                         productCategoryName: "deals",                         zeroBasedProductIndexOrNull: null,                         totalDealsOrProducts: null,                         areaClicked: "Category Roundel",                         revenueId: this.revenueId,                         isoCurrencyCode: typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD',                         queryName: r.label,                         widgetTypeName: this.widgetTypeName                     });                 }                this.currentQuery = r.q || r.label;                const labelTitle = this.root.querySelector('#tg-df-carousel-title-label');                if (labelTitle) labelTitle.textContent = 'Best ' + this.currentQuery;                if (this.priceFilter) this.priceFilter.value = 'all';                if (this.customPriceMin) this.customPriceMin.value = '';                if (this.customPriceMax) this.customPriceMax.value = '';                let dPr = r.pr || 'all';                if (typeof dPr === 'string' && dPr !== 'all') {                   let prLower = dPr.toLowerCase();                   if (prLower.includes('min') || prLower.includes('over')) {                      let m = dPr.match(/(\d+)/);                      if (m && this.customPriceMin) this.customPriceMin.value = m[1];                   } else if (prLower.includes('max') || prLower.includes('under')) {                      let m = dPr.match(/(\d+)/);                      if (m && this.customPriceMax) this.customPriceMax.value = m[1];                   }                }                                let discountAmount = '0';                if(r.ds && typeof r.ds === 'string') {                   let m = r.ds.match(/(\d+)/);                   if(m) discountAmount = m[1];                }                if (this.discountFilter) this.discountFilter.value = discountAmount;                if (this.offerTypeSelect) this.offerTypeSelect.value = r.ot || '';                if (this.retailerSelect) this.retailerSelect.value = r.rt || '';                                // Clear brands                    this.selectedBrands = [];                    if (this.brandDropdown) {                    const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');                    chks.forEach(chk => chk.checked = false);                }                                if (this.searchInput) this.searchInput.value = this.currentQuery;                                roundels.forEach(ro => ro.classList.remove('active'));                if (rNode) rNode.classList.add('active');                                this.renderCarouselFilters(r);                this.fetchDeals(this.currentQuery);             });           });                      // Auto-highlight active           const activeR = this.carouselData.find(c => c.q === this.currentQuery || c.label === this.currentQuery);           if(activeR) this.renderCarouselFilters(activeR);        }                renderCarouselFilters(r) {           const filtersWrap = this.root.querySelector('.tg-df-carousel-filters-wrap');           if(!filtersWrap) return;                      let html = `\x3Cbutton class="tg-df-carousel-filter-btn" data-type="all">All\x3C/button>`;                      r.filters.forEach(f => {              let fL = f.toLowerCase();              let icon = '';              let logic = `data-type="custom" data-v="${this.escapeHTML(f)}"`;              if (fL === 'amazon deals' || fL === 'prime deals') {                 html += `\x3Cbutton class="tg-df-carousel-filter-btn" ${logic}>\x3Cimg src="https://cdn.mos.cms.futurecdn.net/fwoVXvL79turN3Ph535m38-600-100.png" class="inactive-img" alt="" />\x3Cimg src="https://cdn.mos.cms.futurecdn.net/u75QjVpt3w2EsMimJiRo38-600-100.png" class="active-img" alt="" /> Prime deals\x3C/button>`;              } else if (fL === 'lightning deals') {                 html += `\x3Cbutton class="tg-df-carousel-filter-btn" ${logic}>\x3Cimg src="https://cdn.mos.cms.futurecdn.net/HqAui7w97ft2NPqBtQ5r38-600-100.png" class="inactive-img" alt="" />\x3Cimg src="https://cdn.mos.cms.futurecdn.net/yWPQ5yyQRhUwVKzGwYbh38-600-100.png" class="active-img" alt="" /> Lightning deals\x3C/button>`;              } else {                 if (fL.includes('lightning')) {                    icon = `\x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-zap">\x3Cpolygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2">\x3C/polygon>\x3C/svg>`;                 } else if (fL.includes('% off')) {                    icon = `\x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tag">\x3Cpath d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z">\x3C/path>\x3Ccircle cx="7.5" cy="7.5" r=".5" fill="currentColor">\x3C/circle>\x3C/svg>`;                 } else if (fL.includes('under') || fL.includes('min ')) {                    icon = `\x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-dollar-sign">\x3Cpath d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z">\x3C/path>\x3Cpath d="M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8">\x3C/path>\x3Cpath d="M12 18V6">\x3C/path>\x3C/svg>`;                 }                 html += `\x3Cbutton class="tg-df-carousel-filter-btn" ${logic}>${icon} ${this.escapeHTML(f)}\x3C/button>`;              }           });                      filtersWrap.innerHTML = html;                      const btns = filtersWrap.querySelectorAll('button');           btns.forEach(b => {             b.addEventListener('click', () => {                const type = b.getAttribute('data-type');                if (type === 'custom') {                   const v = b.getAttribute('data-v');                   if (typeof trackElementInteraction === 'function') trackElementInteraction({ id: `filter-custom-${(v||'').toLowerCase().replace(/[^a-z0-9]+/g, '-')}`, name: 'Custom Filter', label: v });                }                if (type === 'all') {                   if (typeof trackElementInteraction === 'function') trackElementInteraction({ id: 'filter-clear-all', name: 'Clear all', label: 'Clear all filters' });                   // reset everything                   btns.forEach(btn => btn.classList.remove('active'));                   b.classList.add('active');                                      // Reset prices                   if (this.priceFilter) this.priceFilter.value = 'all';                   if (this.customPriceMin) this.customPriceMin.value = '';                   if (this.customPriceMax) this.customPriceMax.value = '';                   let dPr = r.pr || 'all';                   if (typeof dPr === 'string' && dPr !== 'all') {                      let prLower = dPr.toLowerCase();                      if (prLower.includes('min') || prLower.includes('over')) {                         let m = dPr.match(/(\d+)/);                         if (m && this.customPriceMin) this.customPriceMin.value = m[1];                      } else if (prLower.includes('max') || prLower.includes('under')) {                         let m = dPr.match(/(\d+)/);                         if (m && this.customPriceMax) this.customPriceMax.value = m[1];                      }                   }                                      let discountAmount = '0';                   if(r.ds && typeof r.ds === 'string') {                      let m = r.ds.match(/(\d+)/);                      if(m) discountAmount = m[1];                   }                   if (this.discountFilter) this.discountFilter.value = discountAmount;                   if (this.offerTypeSelect) this.offerTypeSelect.value = r.ot || '';                   if (this.retailerSelect) this.retailerSelect.value = r.rt || '';                   this.selectedBrands = [];                   if (this.brandDropdown) {                     const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');                     chks.forEach(chk => chk.checked = false);                   }                } else {                   const v = b.getAttribute('data-v');                   const fL = v.toLowerCase();                                      let mapRet = ['amazon', 'walmart', 'best buy', 'target', 'john lewis', 'currys', 'argos'];                   const getCategory = (s) => {                      if (s === 'lightning deals' || s === 'amazon deals' || s === 'prime deals') return 'offer';                      if (s.includes('% off')) return 'discount';                      if (s.includes('under') || s.includes('over') || s.includes('min') || s.includes('max')) return 'price';                      if (mapRet.includes(s)) return 'retailer';                      return 'brand';                   };                   const cat = getCategory(fL);                   const wasActive = b.classList.contains('active');                   if (cat !== 'brand') {                      btns.forEach(btn => {                          if (btn === b) return;                          if (btn.getAttribute('data-type') === 'all') return;                          const bV = btn.getAttribute('data-v');                          if (!bV) return;                          if (getCategory(bV.toLowerCase()) === cat) btn.classList.remove('active');                      });                   }                   if (wasActive) b.classList.remove('active');                   else b.classList.add('active');                   let anyActive = Array.from(btns).some(btn => btn !== btns[0] && btn.classList.contains('active'));                   if (!anyActive) {                       btns[0].click();                       return;                   } else {                       btns[0].classList.remove('active');                   }                                      if (this.priceFilter) this.priceFilter.value = 'all';                   if (this.customPriceMin) this.customPriceMin.value = '';                   if (this.customPriceMax) this.customPriceMax.value = '';                   let dPr = r.pr || 'all';                   if (typeof dPr === 'string' && dPr !== 'all') {                      let prLower = dPr.toLowerCase();                      if (prLower.includes('min') || prLower.includes('over')) {                         let m = dPr.match(/(\d+)/);                         if (m && this.customPriceMin) this.customPriceMin.value = m[1];                      } else if (prLower.includes('max') || prLower.includes('under')) {                         let m = dPr.match(/(\d+)/);                         if (m && this.customPriceMax) this.customPriceMax.value = m[1];                      }                   }                                      let discountAmount = '0';                   if(r.ds && typeof r.ds === 'string') {                      let m = r.ds.match(/(\d+)/);                      if(m) discountAmount = m[1];                   }                   if (this.discountFilter) this.discountFilter.value = discountAmount;                   if (this.offerTypeSelect) this.offerTypeSelect.value = r.ot || '';                   if (this.retailerSelect) this.retailerSelect.value = r.rt || '';                   this.selectedBrands = [];                   btns.forEach(btn => {                       if (!btn.classList.contains('active') || btn.getAttribute('data-type') === 'all') return;                       const vv = btn.getAttribute('data-v');                       const vl = vv.toLowerCase();                                              if (vl === 'lightning deals') {                          if (this.offerTypeSelect) this.offerTypeSelect.value = 'amazon_lightning';                       } else if (vl === 'amazon deals' || vl === 'prime deals') {                          if (this.offerTypeSelect) this.offerTypeSelect.value = 'amazon_prime';                       } else if (vl.includes('% off')) {                          let m = vl.match(/(\d+)%/);                          if (m && this.discountFilter) this.discountFilter.value = m[1];                       } else if (vl.includes('under') || vl.includes('max')) {                          let m = vl.match(/(\d+)/);                          if (m && this.customPriceMax) this.customPriceMax.value = m[1];                       } else if (vl.includes('min') || vl.includes('over')) {                          let m = vl.match(/(\d+)/);                          if (m && this.customPriceMin) this.customPriceMin.value = m[1];                       } else {                          let foundR = mapRet.find(x => x === vl);                          if (foundR) {                             let realR = ['Amazon', 'Walmart', 'Best Buy', 'Target', 'John Lewis', 'Currys', 'Argos'].find(x => x.toLowerCase() === vl);                             if (this.retailerSelect) this.retailerSelect.value = realR;                          } else {                             this.selectedBrands.push(vv);                          }                       }                   });                                      if (this.brandDropdown) {                       const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');                       chks.forEach(c => c.checked = this.selectedBrands.includes(c.value));                   }                                      if (r.pr && typeof r.pr === 'string') {                       let prL = r.pr.toLowerCase();                       if (prL.includes('under $')) {                           let m = prL.match(/under \$(\d+)/i);                           if (m && this.customPriceMax && !this.customPriceMax.value) this.customPriceMax.value = m[1];                       }                   }                }                                this.fetchDeals(this.currentQuery);             });           });                      // default to highlighting first           btns[0].classList.add('active');        }async fetchDeals(query, append = false) {          if (!append) {             this.showLoading();             this.deals = [];             this.displayLimit = this.getRowsLimit();          } else {             this.displayLimit += this.getRowsLimit();          }                    try {            if (this.getViewMode() === 'savings_squad') {               await this.fetchSavingsSquad(append);            } else {               if (this.isBroadQuery(query)) {                 await this.fetchAdviserDeals(query, append);               } else {                 await this.fetchHawkDeals(query, append);                 if (this.deals.length === 0) {                   await this.fetchAdviserDeals(query, append);                 }               }            }          } catch (error) {            console.warn("[Tom's Guide Widget] Fetch error:", error);            this.showError();          }        }        async fetchSavingsSquad() {          let topArticles = this.airedaleArticles;          if (!topArticles) {            const airedaleUrl = `https://airedale.futurecdn.net/feeds/feed_1776420579726.json?site=tomsguide&articleType=deals&limit=50`;            let res;            try {               res = await fetch(airedaleUrl);            } catch(e) {               try { res = await fetch(`https://airedale.futurecdn.net/feeds/feed_1776420579726.json?site=tomsguide&articleType=deals&limit=50`); } catch (err) { console.warn("Fallback fetch failed", err); return; }            }            if (!res.ok) throw new Error('Airedale API Error');            const articles = await res.json();            topArticles = Array.isArray(articles) ? articles.slice(0, 50) : ((articles.data && Array.isArray(articles.data)) ? articles.data.slice(0, 50) : []);            this.airedaleArticles = topArticles;                        let tagCounts = {};            topArticles.forEach((a) => {              let articleTags = new Set();              if (a.articlecategory && Array.isArray(a.articlecategory)) {                 a.articlecategory.forEach((t) => articleTags.add(t));              }              articleTags.forEach(t => {                 tagCounts[t] = (tagCounts[t] || 0) + 1;              });            });                        this.airedaleTags = Object.keys(tagCounts).sort((a, b) => tagCounts[b] - tagCounts[a]);            this.airedaleTagCounts = tagCounts;          }                    let targetArticles = topArticles;          if (this.activeDealTag) {             const cleanTag = this.activeDealTag.toLowerCase().replace(/&/g, '').replace(/[^a-z0-9]+/g, '-').replace(/-+/g, '-').replace(/^-|-$/g, '');             const encodedTag = encodeURIComponent(cleanTag);             const url = `https://airedale.futurecdn.net/feeds/feed_1776420579726.json?site=tomsguide&articleType=deals&limit=50&articleCategoryHandle=${encodedTag}`;             try {                const res = await fetch(url);                if (res.ok) {                   const articles = await res.json();                   targetArticles = Array.isArray(articles) ? articles.slice(0, 50) : ((articles.data && Array.isArray(articles.data)) ? articles.data.slice(0, 50) : []);                }             } catch(e) {                console.warn("Failed to fetch by activeDealTag", e);             }          }          let extractedDeals = [];          let dynamicBrandsCounts = {};                    targetArticles.forEach((article) => {             if (!article.articlepage) return;                          let pageData = [];             try {                pageData = JSON.parse(article.articlepage[0]);             } catch(e){ console.warn(e); }                          const savingsSquad = pageData.filter((p) => p.type === 'deal' || p.type === 'featured-product');                          savingsSquad.forEach((block, idx) => {                const data = block.data || {};                const isFeatured = block.type === 'featured-product';                                const link = data.link || {};                const priceObj = data.price || {};                const image = data.image || {};                                if (data.brand) {                   data.brand = data.brand.replace(/^\d+\.\s*/, '').trim();                   dynamicBrandsCounts[data.brand] = (dynamicBrandsCounts[data.brand] || 0) + 1;                }                const externalUrl = isFeatured ? data.url : (link.href || null);                let summaryTitle = isFeatured ? (data.name || data.brand) : (data.productName || link.label || article.articlename);                let description = isFeatured ? (data.strapline || '') : (data.text || '');                                if (!isFeatured && !data.productName && data.text) {                   const brSplit = data.text.split(new RegExp('\x3Cbr\\s*\\/?\\x3E', 'i'));                   if (brSplit.length > 1) {                     summaryTitle = brSplit[0].replace(/<[^>]+>/g, '').trim();                     description = brSplit.slice(1).join(' ').replace(/<br\s*\/?>/gi, ' ').replace(/<\/?(p|div)[^>]*>/gi, ' ').replace(/<[^>]+>/g, '').replace(/\s+/g, ' ').trim();                   } else {                     const match = data.text.match(/\x3Cstrong>(.*?)<\/strong>/);                     if (match) {                       summaryTitle = match[1].replace(/<[^>]+>/g, '').trim();                       if (summaryTitle.endsWith(':')) summaryTitle = summaryTitle.slice(0, -1);                     }                   }                }                                let imageUrl = isFeatured ? image.mos : (image.src || null);                if (imageUrl && imageUrl.startsWith('//')) imageUrl = 'https:' + imageUrl;                                description = description.replace(/<br\s*\/?>/gi, ' ').replace(/<\/?(p|div)[^>]*>/gi, ' ').replace(/<[^>]+>/g, '').replace(/\s+/g, ' ').replace(/View Deal$/i, '').trim();                                let merchantName = data.retailer || '';                if (!merchantName && externalUrl) {                   try {                     merchantName = new URL(externalUrl).hostname.replace('www.', '').split('.')[0];                     merchantName = merchantName.charAt(0).toUpperCase() + merchantName.slice(1);                   }catch(e){ console.warn(e); }                }                if (!merchantName) merchantName = 'Retailer';                const q = (this.currentQuery || '').toLowerCase();                const activeTagLogic = (this.activeDealTag || '').toLowerCase();                if (q.length > 2 && q !== activeTagLogic) {                   const searchTarget = `${summaryTitle || ''} ${description || ''}`.toLowerCase();                   if (!searchTarget.includes(q)) return;                }                let rawPrice = 0;                let rawMsrp = 0;                let currencyStr = '$';                if (isFeatured) {                   rawPrice = typeof data.salePrice === 'number' && data.salePrice > 0 ? data.salePrice : (typeof data.price === 'number' ? data.price : 0);                   rawMsrp = typeof data.salePrice === 'number' && typeof data.price === 'number' && data.price > data.salePrice ? data.price : 0;                   currencyStr = data.currency === 'GBP' ? '£' : '$';                } else {                   rawPrice = priceObj.amount ? parseFloat(priceObj.amount) : 0;                   rawMsrp = priceObj.amountWas ? parseFloat(priceObj.amountWas) : 0;                   currencyStr = priceObj.currency === 'GBP' ? '£' : '$';                }                                let savingAmt = 0;                let savingLabel = '';                if (rawPrice > 0 && rawMsrp > rawPrice) {                   savingAmt = parseFloat((rawMsrp - rawPrice).toFixed(2));                   savingLabel = `Save ${currencyStr}${savingAmt}`;                }                                // Apply Brand filter                if (this.selectedBrands && this.selectedBrands.length > 0) {                   const itemBrand = (data.brand || '').toLowerCase();                   const hasMatch = this.selectedBrands.some(sb => sb.toLowerCase() === itemBrand);                   if (!hasMatch) return;                }                // Apply Price filter                let priceFilterVal = null;                const min = this.customPriceMin ? this.customPriceMin.value : '';                const max = this.customPriceMax ? this.customPriceMax.value : '';                if (min || max) {                   priceFilterVal = `${min}_${max}`;                } else if (this.priceFilter && this.priceFilter.value !== 'all') {                   priceFilterVal = this.priceFilter.value;                }                if (priceFilterVal && rawPrice > 0) {                   if (priceFilterVal === 'under50' && rawPrice >= 50) return;                   if (priceFilterVal === 'over50' && rawPrice <= 50) return;                   if (priceFilterVal === 'over30' && rawPrice <= 30) return;                   if (priceFilterVal === 'over500' && rawPrice <= 500) return;                   if (priceFilterVal.includes('_')) {                      const parts = priceFilterVal.split('_');                      const min = parseFloat(parts[0]);                      const max = parseFloat(parts[1]);                      if (!isNaN(min) && rawPrice < min) return;                      if (!isNaN(max) && rawPrice > max) return;                   }                }                // Apply Discount filter                if (this.discountFilter && this.discountFilter.value !== 'all' && this.discountFilter.value !== '0') {                   const requiredDiscount = parseInt(this.discountFilter.value);                   if (!isNaN(requiredDiscount) && requiredDiscount > 0) {                      if (!rawMsrp || rawMsrp <= rawPrice) return;                      const ratio = Math.round((1 - (rawPrice / rawMsrp)) * 100);                      if (ratio < requiredDiscount) return;                   }                }                                extractedDeals.push({                   id: `airedale-${article.id || Math.random()}-${idx}`,                   url: externalUrl,                   image: imageUrl,                   fallbackImage: imageUrl,                   title: summaryTitle,                   brand: data.brand || '',                   productName: data.productName || '',                   merchant: merchantName,                   rawPrice: rawPrice,                   rawMsrp: rawMsrp,                   price: rawPrice > 0 ? rawPrice.toString() : '',                   msrp: rawMsrp > 0 ? rawMsrp.toString() : '',                   currency: currencyStr,                   isCheckPrice: !rawPrice,                   savingLabel: savingLabel,                   savingType: rawMsrp > rawPrice ? 'amount' : 'none',                   isPrime: false,                   starRating: null,                   description: description,                   text: data.text || ''                });             });          });                    const airedaleBrandsList = Object.keys(dynamicBrandsCounts).map(b => ({              formatted_value: b,              count: dynamicBrandsCounts[b]          })).sort((a,b) => b.count - a.count);                    if (this.getViewMode() === 'savings_squad') {             this.populateBrandDropdown(airedaleBrandsList.slice(0, 15));             if (this.brandFilterWrapper) {                if (airedaleBrandsList.length === 0) {                    this.brandFilterWrapper.style.display = 'none';                } else {                    this.brandFilterWrapper.style.display = 'flex';                }             }          }                    this.deals = extractedDeals;          this.sortData();          this.render();          if (typeof trackDealsAppeared !== 'undefined') {             trackDealsAppeared(this.widgetId, this.deals, this.revenueId, typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD', this.currentQuery, this.widgetTypeName);          }        }        isBroadQuery(query) {          const q = query.toLowerCase();          const intentModifiers = ['deals', 'best', 'sale', 'under', 'cheap', 'offers', 'discount'];          return intentModifiers.some(term => q.includes(term));        }        async fetchHawkDeals(query, append = false) {          const url = new URL(this.apiUrl);          url.searchParams.append('model_name', query);          const areaCode = this.getAreaCode();          if (areaCode) {            url.searchParams.append('area', areaCode);          }                    if (append && this.deals.length > 0) {            url.searchParams.append('offset', this.deals.length.toString());          }                    if (this.retailerSelect && this.retailerSelect.value) {            url.searchParams.append('filter_merchant_name', this.retailerSelect.value);          }                    if (this.selectedBrands && this.selectedBrands.length > 0) {            url.searchParams.append('filter_label[text_brand]', this.selectedBrands.join(','));          }                    let priceVal = null;          const min = this.customPriceMin ? this.customPriceMin.value : '';          const max = this.customPriceMax ? this.customPriceMax.value : '';          if (min || max) {             priceVal = `${min}_${max}`;          } else if (this.priceFilter && this.priceFilter.value !== 'all') {             priceVal = this.priceFilter.value;          }          if (priceVal) {            if (priceVal === 'under50') {              url.searchParams.append('filter_max_price', '50');            } else if (priceVal === 'over50') {              url.searchParams.append('filter_min_price', '50');            } else if (priceVal === 'over30') {              url.searchParams.append('filter_min_price', '30');            } else if (priceVal === 'over500') {              url.searchParams.append('filter_min_price', '500');            } else if (priceVal.includes('_')) {              const parts = priceVal.split('_');              if (parts[0]) url.searchParams.append('filter_min_price', parts[0]);              if (parts[1]) url.searchParams.append('filter_max_price', parts[1]);            }          }                    if (this.discountFilter && this.discountFilter.value !== 'all' && this.discountFilter.value !== '0') {            const v = parseInt(this.discountFilter.value);            if (!isNaN(v) && v > 0) {              const ratio = (100 - v) / 100;              url.searchParams.append('min_discount_ratio', ratio.toString());            }          }                    if (this.offerTypeSelect && this.offerTypeSelect.value) {            url.searchParams.append('offer', this.offerTypeSelect.value);          }                    url.searchParams.append('filter_product_types', 'deals');                    url.searchParams.append('rows', this.getRowsLimit().toString());          let response;          try {             response = await fetch(url.toString());          } catch(e) {             if (window.location.protocol === 'file:') {                console.warn("[Tom's Guide Widget] fetch from file:// blocked by local CORS policy, falling back to Adviser mock.");                await this.fetchAdviserDeals(query);                return;             }             console.warn("Hawk fetch failed", e);             this.deals = [];             this.render();             return;          }          if (!response.ok) {            throw new Error('Hawk API Response Error');          }          const rawData = await response.json();          // Safely locate data array from potentially wrapped response          let offers = [];          let modelInfoArray = [];                    let brandFilterData = null;          if (rawData && rawData.widget && rawData.widget.data && Array.isArray(rawData.widget.data.filters)) {             brandFilterData = rawData.widget.data.filters.find(f => f.type === 'label_text_brand');          } else if (rawData && rawData.data && Array.isArray(rawData.data.filters)) {             brandFilterData = rawData.data.filters.find(f => f.type === 'label_text_brand');          }          if (brandFilterData && Array.isArray(brandFilterData.values) && brandFilterData.values.length > 0) {             this.populateBrandDropdown(brandFilterData.values);          } else {             if (this.brandFilterWrapper && this.selectedBrands.length === 0) {                this.brandFilterWrapper.style.display = 'none';             }          }                    if (rawData && rawData.widget && rawData.widget.data) {            if (Array.isArray(rawData.widget.data.offers)) offers = rawData.widget.data.offers;            if (rawData.widget.data.model_info && typeof rawData.widget.data.model_info === 'object') {              modelInfoArray = Array.isArray(rawData.widget.data.model_info) ? rawData.widget.data.model_info : Object.values(rawData.widget.data.model_info);            }          } else if (rawData && rawData.data) {            if (Array.isArray(rawData.data.offers)) offers = rawData.data.offers;            if (rawData.data.model_info && typeof rawData.data.model_info === 'object') {              modelInfoArray = Array.isArray(rawData.data.model_info) ? rawData.data.model_info : Object.values(rawData.data.model_info);            }          } else {            if (Array.isArray(rawData)) offers = rawData;            else if (rawData && Array.isArray(rawData.offers)) offers = rawData.offers;            else if (rawData && rawData.offers && Array.isArray(rawData.offers.offer)) offers = rawData.offers.offer;            else if (rawData && rawData.offers) offers = [].concat(rawData.offers);                        if (rawData && rawData.model_info && typeof rawData.model_info === 'object') {              modelInfoArray = Array.isArray(rawData.model_info) ? rawData.model_info : Object.values(rawData.model_info);            }          }          let modelDetails = {};          modelInfoArray.forEach(m => {            const mId = m.model_id || m.id;            if (mId) {              modelDetails[mId] = {                score: m.score != null ? parseFloat(m.score) : null,                brand: m.brand || null,                parent: (m.parents && Array.isArray(m.parents) && m.parents.length > 0) ? m.parents[0].name : null              };            }          });          offers.forEach(item => {            let data = { ...item };            const mId = data.model_id;            if (mId && modelDetails[mId]) {              data.review_score = modelDetails[mId].score;              data.model_brand = modelDetails[mId].brand;              data.model_parent = modelDetails[mId].parent;            } else {              data.review_score = null;            }                        let itemOffers = [];            if (Array.isArray(item.offers)) itemOffers = item.offers;            else if (Array.isArray(item.offer)) itemOffers = item.offer;            else if (item.offers && typeof item.offers === 'object') itemOffers = [item.offers];            else if (item.offer && typeof item.offer === 'object') itemOffers = [item.offer];            if (itemOffers.length > 0) {              itemOffers.forEach(subItem => {                let subData = { ...item, ...subItem };                const subId = subData.model_id;                if (subId && modelDetails[subId]) {                  subData.review_score = modelDetails[subId].score;                  subData.model_brand = modelDetails[subId].brand;                  subData.model_parent = modelDetails[subId].parent;                } else if (data.review_score != null) {                  subData.review_score = data.review_score;                }                if (subData.merchant && typeof subData.merchant === 'object') {                  subData.merchant_name = subData.merchant.name;                }                this.deals.push(this.extractDealData(subData));              });              return;            }                        if (item.merchant && typeof item.merchant === 'object') {              data.merchant_name = item.merchant.name;            }                        this.deals.push(this.extractDealData(data));          });                    this.sortData();          this.render();          if (typeof trackDealsAppeared !== 'undefined') {             trackDealsAppeared(this.widgetId, this.deals, this.revenueId, typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD', this.currentQuery, this.widgetTypeName);          }        }        async fetchAdviserDeals(query) {          // ======================================================================          // TODO: ADVISER API REPLACEMENT          // The code below simulates the Adviser API response using mock data.          // Once the real endpoint is ready, remove getAdviserMockData() and           // perform an actual fetch() request similar to fetchHawkDeals().          // Example:          // const area = this.getAreaCode();          // let apiUrl = `https://your-adviser-api.com/search?q=${query}&area=${area}`;          // if (this.priceFilter && this.priceFilter.value !== 'all') {          //   const val = this.priceFilter.value;          //   if (val === 'under50') apiUrl += '&filter_max_price=50';          //   else if (val === '50_100') apiUrl += '&filter_max_price=100';          //   else if (val === '100_200') apiUrl += '&filter_max_price=200';          //   else if (val === '200_500') apiUrl += '&filter_max_price=500';          // }          // const res = await fetch(apiUrl);          // const rawData = await res.json();          // ======================================================================          // Simulating network latency          await new Promise(resolve => setTimeout(resolve, 400));                    const rawData = this.getAdviserMockData();          let offers = [];                    if (rawData && rawData.data && rawData.data.Get && Array.isArray(rawData.data.Get.Deal)) {            offers = rawData.data.Get.Deal;          }                    // Basic client-side filtering for the mock if we want it to react to the query          const q = query.toLowerCase();          const selectedRetailer = (this.retailerSelect && this.retailerSelect.value) ? this.retailerSelect.value.toLowerCase() : null;                    offers.forEach(item => {            const dataObj = item;                        // Apply retailer filter            const itemRetailer = (dataObj.dataRetailer || '').toLowerCase();            if (selectedRetailer && itemRetailer !== selectedRetailer && !itemRetailer.includes(selectedRetailer)) {              return;            }                        // Apply mock price filter            let price = dataObj.dataDiscountedPrice || 0;            if (typeof price === 'string') {              price = parseFloat(price.replace(/[^0-9.]/g, ''));            }            let priceVal = null;            const min = this.customPriceMin ? this.customPriceMin.value : '';            const max = this.customPriceMax ? this.customPriceMax.value : '';            if (min || max) {               priceVal = `${min}_${max}`;            } else if (this.priceFilter && this.priceFilter.value !== 'all') {               priceVal = this.priceFilter.value;            }            if (priceVal) {              if (priceVal === 'under50' && price >= 50) return;              if (priceVal === 'over50' && price <= 50) return;              if (priceVal === 'over30' && price <= 30) return;              if (priceVal === 'over500' && price <= 500) return;              if (priceVal.includes('_')) {                 const parts = priceVal.split('_');                 if (parts[0] && price < parseFloat(parts[0])) return;                 if (parts[1] && price > parseFloat(parts[1])) return;              }            }                        // Map Adviser schema to our widget's expected schema            const mappedData = {              url: dataObj.linkHREF || dataObj.dataLink || '#',              image: dataObj.imageURL || (dataObj.image && dataObj.image.src) || '',              title: dataObj.dataProduct || (dataObj.product && dataObj.product.name) || 'Product Deal',              merchant: dataObj.dataRetailer || 'Retailer',              price: dataObj.dataDiscountedPrice || 0,              currency: dataObj.dataCurrency === 'USD' ? '$' : (dataObj.dataCurrency || '$'),              msrp: dataObj.dataOriginalPrice || null            };                        const titleLow = mappedData.title.toLowerCase();            const merchLow = mappedData.merchant.toLowerCase();                        // Smarter mock filtering            let isMatch = false;            if (q === '' || this.isBroadQuery(q)) {              isMatch = true;            } else if (titleLow.includes(q) || merchLow.includes(q)) {              isMatch = true;            } else if ((q.includes('laptop') || q.includes('mac') || q.includes('pc')) && (titleLow.includes('macbook') || titleLow.includes('laptop'))) {              isMatch = true;            } else if ((q.includes('tv') || q.includes('television')) && (titleLow.includes('tv') || titleLow.includes('oled') || titleLow.includes('qled'))) {              isMatch = true;            } else if ((q.includes('phone') || q.includes('smartphone')) && (titleLow.includes('galaxy') || titleLow.includes('phone'))) {              isMatch = true;            } else if ((q.match(/watch|fitness|run|shoe/)) && (titleLow.includes('forerunner') || titleLow.includes('saucony') || titleLow.includes('watch'))) {              isMatch = true;            }                        if (isMatch) {               this.deals.push(this.extractDealData(mappedData));            }          });                    let rowLimit = this.getRowsLimit();          // Intentionally omitting the slice here to allow "Load More" to work if the API returns more                    this.sortData();          this.render();          if (typeof trackDealsAppeared !== 'undefined') {             trackDealsAppeared(this.widgetId, this.deals, this.revenueId, typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD', this.currentQuery, this.widgetTypeName);          }        }        getAdviserMockData() {          return {            "data": {              "Get": {                "Deal": [                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 300,                    "dataOriginalPrice": 399,                    "dataProduct": "Samsung Galaxy A36",                    "dataRetailer": "Samsung",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/MqDYsukV3JBG54te6dEs7j.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 14,                    "dataOriginalPrice": 24,                    "dataProduct": "Blink Mini",                    "dataRetailer": "Amazon",                    "imageURL": "http://cdn.mos.cms.futurecdn.net/3JurmAjHsDa5tPdaHAwEV8.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 59,                    "dataOriginalPrice": 99,                    "dataProduct": "Ring Video Doorbell",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/rAh4uR7AsAsALCCLTXnLNJ.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 10,                    "dataOriginalPrice": 599,                    "dataProduct": "MacBook Neo",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/Lg4Dvg68j9SbB5CPNrTEpH.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 749,                    "dataOriginalPrice": 849,                    "dataProduct": "65\\\" Fire TV Omni 4K QLED TV",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/SG34ZWodUkLTxJvMTbjPYR.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 71,                    "dataOriginalPrice": 160,                    "dataProduct": "Saucony Hurricane 24",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/vxf7UD5T2Am7guVzFoFcZ4.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 649,                    "dataOriginalPrice": 749,                    "dataProduct": "Garmin Forerunner 970",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/3GKnEu7CdhtxPMfnPCMCiA.png"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 1049,                    "dataOriginalPrice": 1499,                    "dataProduct": "LG 48\\\" C4 4K OLED TV",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/imvwZV9zoMD6fn9Afuge35.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 1499,                    "dataOriginalPrice": 2199,                    "dataProduct": "Samsung 49\\\" Odyssey Neo G9 4K Gaming Monitor",                    "dataRetailer": "Amazon",                    "imageURL": "http://cdn.mos.cms.futurecdn.net/XWDEJ5dUAE2nhK8k3Jk7k7.png"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 299,                    "dataOriginalPrice": 699,                    "dataProduct": "EGOHOME Black Memory Foam Mattress (queen)",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/hMUemtAejNETLVYxNrktzm.jpg"                  }                ]              }            }          };        }        decodeHTML(html) {          if (!html) return '';          const txt = document.createElement("textarea");          txt.innerHTML = String(html);          return txt.value;        }        extractDealData(item) {          const priceRawStr = String(item.price || item.current_price || '0');          const msrpRawStr = String(item.was_price || item.msrp || item.original_price || '0');          const rawPrice = parseFloat(priceRawStr.replace(/[^\d.]/g, '')) || 0;          const rawMsrp = parseFloat(msrpRawStr.replace(/[^\d.]/g, '')) || 0;          const isCheckPrice = rawPrice === 0 || priceRawStr === '0.00' || priceRawStr === '0';                    let originalImageUrl = item.image || item.image_url || item.product_image || '';          let imageUrl = originalImageUrl;          if ((!imageUrl || isCheckPrice) && item.model_image_url) {             imageUrl = item.model_image_url;             originalImageUrl = imageUrl;          } else if ((!imageUrl || isCheckPrice) && item.model_image) {             imageUrl = item.model_image;             originalImageUrl = imageUrl;          }                    if (imageUrl) {            imageUrl = imageUrl.replace(/-(\d+)-(\d+)(\.[a-z.]+)$/i, '$3');          }                    let fallbackImage = '';          if (originalImageUrl && originalImageUrl !== imageUrl) {             fallbackImage = originalImageUrl;          } else if (item.model_image && item.model_image !== imageUrl) {             fallbackImage = item.model_image;          } else if (item.model_image_url && item.model_image_url !== imageUrl) {             fallbackImage = item.model_image_url;          }                    const rawCurrency = item.currency || item.currency_symbol || '$';                    let savingLabel = item.percentage_saving_label || '';          if (!savingLabel && rawMsrp > rawPrice && rawPrice > 0) {            const pct = Math.round(((rawMsrp - rawPrice) / rawMsrp) * 100);            if (pct > 0) {              savingLabel = `${pct}% OFF`;            }          }                    const isPrime = item.shipping && item.shipping.prime === true;                    let scoreRaw = (item.review_score !== undefined && item.review_score !== null && item.review_score > 0) ? parseFloat(item.review_score) : null;          let starRating = 0;          if (scoreRaw !== null) {            starRating = Math.round((scoreRaw > 10 ? scoreRaw / 20 : scoreRaw / 2) * 2) / 2;          }                    return {            id: item.offer_id || item.link || item.url || item.offer_link || Math.random().toString(),            url: item.link || item.url || item.offer_link || '#',            image: imageUrl,            fallbackImage: fallbackImage,            title: item.name || item.title || item.model_name || item.product_name || 'Unknown Product',            brand: item.brand || '',            productName: item.model_name || item.product_name || item.name || '',            merchant: item.merchant_name || item.merchant || item.retailer || 'Retailer',            price: item.price !== undefined ? String(item.price) : '0.00',            currency: this.decodeHTML(rawCurrency),            msrp: item.was_price || item.msrp || item.original_price || null,            rawPrice: rawPrice,            rawMsrp: rawMsrp,            hasWasPrice: (item.was_price !== undefined && item.was_price !== null),            isCheckPrice: isCheckPrice,            savingLabel: savingLabel,            isPrime: isPrime,            starRating: starRating > 0 ? starRating : null,            modelId: item.model_id || '',            productKey: item.product_key || '',            merchantId: (item.merchant && typeof item.merchant === 'object') ? item.merchant.id || '' : '',            matchId: item.match_id || '',            merchantNetwork: (item.merchant && typeof item.merchant === 'object') ? item.merchant.an || '' : '',            merchantUrl: (item.merchant && typeof item.merchant === 'object') ? item.merchant.url || '' : '',            modelBrand: item.model_brand || item.brand || '',            modelParent: item.model_parent || ''          };        }        sortData() {          const sortVal = this.sortSelect ? this.sortSelect.value : (this.getViewMode() === 'savings_squad' ? 'date_desc' : 'discount_desc');          if (sortVal === 'price_asc') {            this.deals.sort((a, b) => a.rawPrice - b.rawPrice);          } else if (sortVal === 'price_desc') {            this.deals.sort((a, b) => b.rawPrice - a.rawPrice);          } else if (sortVal === 'discount_desc') {            this.deals.sort((a, b) => {              const aDiscount = a.rawMsrp > a.rawPrice ? (a.rawMsrp - a.rawPrice) : 0;              const bDiscount = b.rawMsrp > b.rawPrice ? (b.rawMsrp - b.rawPrice) : 0;              return bDiscount - aDiscount;            });          } else if (sortVal === 'date_desc') {             this.deals.sort((a, b) => {                let dateA = 0;                let dateB = 0;                if (a && a.modifiedDate) {                   const valA = Array.isArray(a.modifiedDate) ? a.modifiedDate[0] : a.modifiedDate;                   dateA = new Date(valA).getTime();                   if (isNaN(dateA)) dateA = 0;                }                if (b && b.modifiedDate) {                   const valB = Array.isArray(b.modifiedDate) ? b.modifiedDate[0] : b.modifiedDate;                   dateB = new Date(valB).getTime();                   if (isNaN(dateB)) dateB = 0;                }                return dateB - dateA;             });          }        }        getFilteredDeals() {          let filteredDeals = [...this.deals];                    if (this.dealModeToggle && this.dealModeToggle.checked) {            filteredDeals = filteredDeals.filter(d => d.hasWasPrice || (d.msrp && d.rawMsrp > d.rawPrice));          }                    return filteredDeals;        }        showLoading() {          const _div = '<' + '/div>';          const skeletonCardHtml = `            \x3Cdiv class="tg-df-card">              \x3Cdiv class="tg-df-card-image-box">                \x3Cdiv class="tg-df-skeleton tg-df-skeleton-img">${_div}              ${_div}              \x3Cdiv class="tg-df-card-body">                \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short">${_div}                \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text title">${_div}                \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text title">${_div}                \x3Cdiv class="tg-df-card-footer mt-auto">                  \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="height:24px;">${_div}                  \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text" style="height:44px; margin-top:8px;">${_div}                ${_div}              ${_div}            ${_div}`;          this.grid.innerHTML = Array(4).fill(skeletonCardHtml).join('');        }        showError() {          const _div = '<' + '/div>';          this.grid.innerHTML = `\x3Cdiv class="tg-df-message">            An error occurred while finding deals. Please check your connection and try again.          ${_div}`;        }        escapeHTML(str) {          if (!str) return '';          return String(str).replace(/[&<>'"]/g, tag => ({              '&': '&', '<': '<', '>': '>', "'": ''', '"': '"'          }[tag] || tag));        }                bindCouponButtons() {          const btns = this.root.querySelectorAll('.tg-df-tag-coupons');          btns.forEach(btn => {            btn.addEventListener('click', (e) => {              e.preventDefault();              e.stopPropagation();              const merchant = btn.getAttribute('data-merchant');              this.openVouchersModal(merchant);            });          });                    const closeBtn = this.root.querySelector('#tg-df-vouchers-close');          const backdrop = this.root.querySelector('#tg-df-vouchers-modal');          if (closeBtn) {            closeBtn.onclick = () => this.closeVouchersModal();          }          if (backdrop) {            backdrop.onclick = (e) => {              if (e.target === backdrop) this.closeVouchersModal();            };          }        }                closeVouchersModal() {          const backdrop = this.root.querySelector('#tg-df-vouchers-modal');          if (backdrop) backdrop.classList.remove('active');        }                async checkMerchantsCouponsBulk(merchants) {          if (!merchants || merchants.length === 0) return {};          const controller = new AbortController();          const timeoutId = setTimeout(() => controller.abort(), 4000);          try {            const area = this.getAreaCode();            const url = new URL('https://search-api.fie.future.net.uk/widget.php');            url.searchParams.append('model_name', 'Everything');            url.searchParams.append('language', 'en-GB');            if (area) url.searchParams.append('area', area);            url.searchParams.append('combine_product_types', '1');            url.searchParams.append('filter_merchant_name', merchants.join(','));            url.searchParams.append('all_filters', 'false');            url.searchParams.append('exclude_unlabelled', 'false');            url.searchParams.append('include_specs', 'false');            url.searchParams.append('sort', 'voucher');            url.searchParams.append('distinct_merchants', 'natural');            url.searchParams.append('filter_product_types', 'vouchers,offer_deals,newsletter');            url.searchParams.append('rows', '120');            url.searchParams.append('origin', 'widgets-clientside');                        let res; try { res = await fetch(url.toString(), { signal: controller.signal }); } catch (e) { return {}; }            clearTimeout(timeoutId);            if (!res.ok) return {};            const data = await res.json();                        let offers = [];            if (data && data.widget && data.widget.data && Array.isArray(data.widget.data.offers)) {              offers = data.widget.data.offers;            } else if (data && data.data && Array.isArray(data.data.offers)) {              offers = data.data.offers;            } else if (Array.isArray(data)) {              offers = data;            } else if (data && Array.isArray(data.offers)) {              offers = data.offers;            } else if (data && data.offers && Array.isArray(data.offers.offer)) {              offers = data.offers.offer;            } else if (data && Array.isArray(data.data)) {              offers = data.data;            }                        const foundMerchants = new Set();            offers.forEach(o => {              let mName = o.merchant_name || o.merchant || o.retailer;              if (mName && typeof mName === 'object') mName = mName.name;              if (mName) foundMerchants.add(String(mName).toLowerCase());            });            const resultMap = {};            merchants.forEach(m => {              if (m) resultMap[m] = foundMerchants.has(String(m).toLowerCase());            });            return resultMap;          } catch (e) {            return {};          }        }                async openVouchersModal(merchantName) {          const backdrop = this.root.querySelector('#tg-df-vouchers-modal');          const title = this.root.querySelector('#tg-df-vouchers-title');          const content = this.root.querySelector('#tg-df-vouchers-content');                    if (!backdrop || !content) return;                    // HACK: Hide closing tags          const _div = '<' + '/div>';          const _span = '<' + '/span>';          const _a = '<' + '/a>';          const _h4 = '<' + '/h4>';          const _svg = '<' + '/svg>';          const _circle = '<' + '/circle>';          const _polyline = '<' + '/polyline>';          const _rect = '<' + '/rect>';          const _path = '<' + '/path>';                    title.innerText = `${merchantName} Coupons & Deals`;          content.innerHTML = `\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text">${_div}                               \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text">${_div}`;          backdrop.classList.add('active');                    try {            const area = this.getAreaCode();            const url = new URL('https://search-api.fie.future.net.uk/widget.php');            url.searchParams.append('model_name', 'Everything');            url.searchParams.append('language', 'en-GB');            if (area) url.searchParams.append('area', area);            url.searchParams.append('combine_product_types', '1');            url.searchParams.append('filter_merchant_name', merchantName);            url.searchParams.append('all_filters', 'false');            url.searchParams.append('exclude_unlabelled', 'false');            url.searchParams.append('include_specs', 'false');            url.searchParams.append('sort', 'voucher');            url.searchParams.append('distinct_merchants', 'natural');            url.searchParams.append('filter_product_types', 'vouchers,offer_deals,newsletter');            url.searchParams.append('rows', '50');            url.searchParams.append('origin', 'widgets-clientside');                        const res = await fetch(url.toString());            if (!res.ok) throw new Error('API Error');            const data = await res.json();                        let offers = [];            if (data && data.widget && data.widget.data && Array.isArray(data.widget.data.offers)) {              offers = data.widget.data.offers;            } else if (data && data.data && Array.isArray(data.data.offers)) {              offers = data.data.offers;            } else if (Array.isArray(data)) {              offers = data;            } else if (data && Array.isArray(data.offers)) {              offers = data.offers;            } else if (data && data.offers && Array.isArray(data.offers.offer)) {              offers = data.offers.offer;            } else if (data && Array.isArray(data.data)) {              offers = data.data;            }                        if (offers.length === 0) {              content.innerHTML = `\x3Cdiv class="tg-df-message">No vouchers currently available for ${this.escapeHTML(merchantName)}.${_div}`;              return;            }                        content.innerHTML = offers.map((v, idx) => {              let offerObj = v;              if (v.offers && v.offers.offer) {                offerObj = Array.isArray(v.offers.offer) ? v.offers.offer[0] : v.offers.offer;              } else if (v.offer) {                offerObj = Array.isArray(v.offer) ? v.offer[0] : v.offer;              }              let logoUrl = v.logo_url || offerObj.logo_url || '';              if (!logoUrl && v.merchant) {                if (Array.isArray(v.merchant) && v.merchant.length > 0) logoUrl = v.merchant[0].logo_url || '';                else logoUrl = v.merchant.logo_url || '';              }                            const offerName = offerObj.name || offerObj.title || v.name || v.title || 'Special Offer';              const endTime = offerObj.end_time || v.end_time || '';              const linkUrl = offerObj.link || offerObj.url || v.link || v.url || '#';                            let foundVoucherCode = '';              const findVoucherCode = (obj) => {                if (!obj || typeof obj !== 'object') return;                if (obj.type === 'voucher_code' && obj.display_value) {                  foundVoucherCode = obj.display_value;                  return;                }                if (Array.isArray(obj)) {                  for (const item of obj) {                    findVoucherCode(item);                    if (foundVoucherCode) return;                  }                } else {                  for (const k in obj) {                    if (Object.prototype.hasOwnProperty.call(obj, k)) {                      findVoucherCode(obj[k]);                      if (foundVoucherCode) return;                    }                  }                }              };              findVoucherCode(offerObj);              if (!foundVoucherCode) findVoucherCode(v);                            const voucherCode = foundVoucherCode || offerObj.voucher_code || v.voucher_code || '';              const codeHtml = voucherCode ? `\x3Cspan class="tg-df-voucher-code" data-action="copy-code" data-code="${this.escapeHTML(voucherCode)}" title="Copy to clipboard">                \x3Cspan class="tg-df-voucher-code-text">${this.escapeHTML(voucherCode)}${_span}                \x3Csvg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-left:6px;flex-shrink:0;" class="tg-df-voucher-copy-icon">                  \x3Crect x="9" y="9" width="13" height="13" rx="2" ry="2">${_rect}                  \x3Cpath d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1">${_path}                ${_svg}              ${_span}` : '';                            const logoHtml = logoUrl                 ? `\x3Cimg src="${this.escapeHTML(logoUrl)}" alt="${this.escapeHTML(offerName)}" class="tg-df-voucher-logo" />`                 : `\x3Cdiv class="tg-df-voucher-logo" style="background:#e2e8f0;">${_div}`;                            let expiryHtml = '';              if (endTime) {                let dStr = endTime;                if (!isNaN(dStr) && String(dStr).length === 10) dStr = Number(dStr) * 1000;                const d = new Date(dStr);                if (!isNaN(d.getTime())) {                  const options = { year: 'numeric', month: 'short', day: 'numeric' };                  expiryHtml = `                    \x3Cdiv class="tg-df-voucher-expiry">                      \x3Csvg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">                        \x3Ccircle cx="12" cy="12" r="10">${_circle}                        \x3Cpolyline points="12 6 12 12 16 14">${_polyline}                      ${_svg}                      Expires ${d.toLocaleDateString(undefined, options)}                    ${_div}`;                }              }              const revenueIdVal = generateRevenueId(linkUrl, offerName, merchantName, null);              const rewrittenLinkUrl = rewriteAffiliateLink(linkUrl, area, revenueIdVal);              return `                \x3Ca href="${this.escapeHTML(rewrittenLinkUrl)}" target="_blank" rel="noopener nofollow" class="tg-df-voucher-item"                  data-action="voucher-click"                  data-product-name="${this.escapeHTML(offerName)}"                  data-merchant-name="${this.escapeHTML(merchantName)}"                  data-analytics-id="${this.escapeHTML(offerObj.offer_id || offerObj.id || v.id || '')}"                  data-price=""                  data-previous-price=""                  data-original-link="${this.escapeHTML(linkUrl)}"                  data-revenue-id="${revenueIdVal}"                  data-index="${idx}"                  data-total="${offers.length}"                  data-in-stock="true"                  data-currency="USD"                  data-model-id="${this.escapeHTML(offerObj.model_id || v.model_id || offerObj.id || v.id || '')}"                  data-merchant-id="${this.escapeHTML(offerObj.merchant_id || offerObj.merchant?.id || '')}"                >                  ${logoHtml}                  \x3Cdiv class="tg-df-voucher-content">                    \x3Ch4 class="tg-df-voucher-title">${this.escapeHTML(offerName)}${_h4}                    ${codeHtml}                    ${expiryHtml}                  ${_div}                ${_a}              `;            }).join('');                        // Attach copy functionality            const copyBtns = content.querySelectorAll('[data-action="copy-code"]');            copyBtns.forEach(btn => {              btn.addEventListener('click', async (e) => {                e.preventDefault();                e.stopPropagation();                                const code = btn.getAttribute('data-code');                if (!code) return;                                try {                  const copyToClipboard = async (text) => {                     if (window.navigator.clipboard && window.isSecureContext) {                        try { await window.navigator.clipboard.writeText(text); return; } catch (e) {}                     }                     const textArea = document.createElement("textarea");                     textArea.value = text;                     textArea.style.position = "fixed";                     document.body.appendChild(textArea);                     textArea.focus();                     textArea.select();                     document.execCommand('copy');                     textArea.remove();                  };                  await copyToClipboard(code);                                    // Visual feedback                  btn.classList.add('copied');                  const textSpan = btn.querySelector('.tg-df-voucher-code-text');                  const iconSvg = btn.querySelector('.tg-df-voucher-copy-icon');                                    const origText = textSpan.innerText;                  const origIcon = iconSvg.innerHTML;                                    textSpan.innerText = 'Copied!';                  iconSvg.innerHTML = `\x3Cpolyline points="20 6 9 17 4 12">${_polyline}`;                                    setTimeout(() => {                    if (btn) {                      btn.classList.remove('copied');                      if (textSpan) textSpan.innerText = origText;                      if (iconSvg) iconSvg.innerHTML = origIcon;                    }                  }, 2000);                                    trackElementInteraction({                    id: 'voucher-code-copy',                    name: 'Copy Voucher Code',                    label: `Copied ${code} for ${merchantName}`                  });                } catch (err) {                  console.warn('Failed to copy text: ', err);                }              });            });            // Attach voucher click tracking            const voucherBtns = content.querySelectorAll('[data-action="voucher-click"]');            voucherBtns.forEach(btn => {              btn.addEventListener('click', (e) => {                if (e.target.closest('[data-action="copy-code"]')) return;                                const productName = btn.getAttribute('data-product-name');                const merchantNameAttr = btn.getAttribute('data-merchant-name');                const productId = btn.getAttribute('data-analytics-id');                const price = parseFloat(btn.getAttribute('data-price')) || null;                const prevPriceStr = btn.getAttribute('data-previous-price');                const previousPrice = prevPriceStr ? parseFloat(prevPriceStr) : null;                const originalLink = btn.getAttribute('data-original-link');                const rewrittenLink = btn.getAttribute('href');                const revenueId = btn.getAttribute('data-revenue-id');                const index = parseInt(btn.getAttribute('data-index'), 10) || 0;                const inStock = btn.getAttribute('data-in-stock') === 'true';                const totalText = btn.getAttribute('data-total');                const totalDeals = parseInt(totalText, 10) || 0;                const productCategoryName = 'deals';                const trackingParams = {                  widgetId: this.widgetId,                  productCategoryName: productCategoryName,                  product: {                    modelId: btn.getAttribute('data-model-id') || null,                    matchId: btn.getAttribute('data-match-id') || null,                    brand: btn.getAttribute('data-model-brand') || null,                    parent: btn.getAttribute('data-model-parent') || null,                    name: productName,                    price: price,                    previousPrice: previousPrice,                    link: rewrittenLink,                    originalLink: originalLink,                    inStock: inStock                  },                  zeroBasedProductIndexOrNull: index,                  totalDealsOrProducts: totalDeals,                   merchant: {                    id: btn.getAttribute('data-merchant-id') || null,                    network: btn.getAttribute('data-merchant-network') || null,                    url: btn.getAttribute('data-merchant-url') || null,                    name: merchantNameAttr                  },                  revenueId: revenueId,                  widgetTypeName: this.widgetTypeName,                  isoCurrencyCode: btn.getAttribute('data-currency') || 'USD'                };                if (typeof trackDealClick === 'function') {                  trackDealClick(trackingParams);                }              });            });                                  } catch (e) {            console.warn(e);            content.innerHTML = `\x3Cdiv class="tg-df-message">Failed to load vouchers.${_div}`;          }        }        render() {          try {            if (this.getViewMode() === 'savings_squad' && this.airedaleTags.length > 0) {              if (this.categoryFilterWrapper) {                 this.categoryFilterWrapper.style.display = 'flex';              }              if (this.categoryFilter) {                 const _option = '<' + '/option>';                 let optionsHtml = `\x3Coption value="all">All Categories${_option}`;                 this.airedaleTags.forEach(tag => {                    const isSelected = this.activeDealTag === tag ? 'selected' : '';                    optionsHtml += `\x3Coption value="${this.escapeHTML(tag)}" ${isSelected}>${this.escapeHTML(tag)} (${this.airedaleTagCounts[tag] || 0})${_option}`;                 });                 this.categoryFilter.innerHTML = optionsHtml;                 this.categoryFilter.value = this.activeDealTag || 'all';              }            } else {               if (this.categoryFilterWrapper) {                  this.categoryFilterWrapper.style.display = 'none';               }            }            const displayDeals = this.getFilteredDeals();          // HACK: Hide closing tags from the CMS HTML sanitizer so it doesn't strip them during in-page injection          const _div = '<' + '/div>';          const _span = '<' + '/span>';          const _a = '<' + '/a>';          const _h3 = '<' + '/h3>';          const _p = '<' + '/p>';          const _strong = '<' + '/strong>';          const _sup = '<' + '/sup>';          const _button = '<' + '/button>';          if (displayDeals.length === 0) {            if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {              if (this.deals.length > 0) {                 this.grid.innerHTML = `\x3Cdiv class="tg-df-message">                  No deals match your selected filters.                ${_div}`;              } else if (this.getViewMode() === 'savings_squad' && this.currentQuery.length <= 2) {                 // Do not show "no exact matches" if query is empty for savings_squad                 this.grid.innerHTML = '';              } else {                 this.grid.innerHTML = `\x3Cdiv class="tg-df-message">                  No exact matches found for "\x3Cstrong>${this.escapeHTML(this.currentQuery)}${_strong}". Try adjusting your search term.                ${_div}`;              }            } else {              this.grid.innerHTML = `\x3Cdiv class="tg-df-message">                Search product or category names to discover the best deals from across the web.              ${_div}`;            }            return;          }          let dealsHtml = displayDeals.slice(0, this.displayLimit).map((deal, index) => {            try {               const currencySym = this.escapeHTML(deal.currency);               const isoCurrencyCode = normalizeCurrency(currencySym);               const escapedPrice = this.escapeHTML(deal.price);               const escapedMsrp = this.escapeHTML(deal.msrp);               const areaCode = this.getAreaCode();                              const revenueId = generateRevenueId(deal.url, deal.title, deal.merchant, null);               const originalLink = deal.url;               const rewrittenLink = rewriteAffiliateLink(deal.url, areaCode, revenueId);                        const productCategoryName = 'deals';            const dataAttr = `              data-action="${deal.isCheckPrice ? 'view-similar-click' : 'deal-click'}"              data-analytics-id="${this.escapeHTML(deal.externalProductId || deal.id || '')}"              data-product-name="${this.escapeHTML(deal.title)}"              data-merchant-name="${this.escapeHTML(deal.merchant)}"              data-price="${deal.rawPrice || ''}"              data-previous-price="${deal.rawMsrp || ''}"              data-original-link="${this.escapeHTML(originalLink)}"              data-revenue-id="${revenueId}"              data-index="${index}"              data-total="${displayDeals.length}"              data-in-stock="${deal.inStock !== false}"              data-currency="${this.escapeHTML(isoCurrencyCode)}"              data-model-id="${this.escapeHTML(deal.modelId || '')}"              data-product-key="${this.escapeHTML(deal.productKey || '')}"              data-merchant-id="${this.escapeHTML(deal.merchantId || '')}"            `;                        let priceGroupHtml = '';            let isSavingsSquadMode = this.getViewMode() === 'savings_squad';            let ctaText = 'View Deal';            let formattedPrice = '';            let msrpHtml = '';                        if (deal.isCheckPrice) {              ctaText = isSavingsSquadMode ? 'View Deal' : 'Check Price';              if (isSavingsSquadMode) {                priceGroupHtml = `                  \x3Cdiv class="tg-df-card-merchant-wrapper">                    \x3Cspan class="tg-df-card-merchant-pill" title="${this.escapeHTML(deal.merchant)}">${this.escapeHTML(deal.merchant)}${_span}                  ${_div}                  \x3Cdiv class="tg-df-card-price-group">                  ${_div}                `;              } else {                priceGroupHtml = `                  \x3Cdiv class="tg-df-card-merchant-wrapper">                    \x3Cspan class="tg-df-card-merchant-pill" title="${this.escapeHTML(deal.merchant)}">${this.escapeHTML(deal.merchant)}${_span}                  ${_div}                  \x3Cdiv class="tg-df-card-price-group">                    \x3Cspan class="tg-df-card-price" style="font-size: 15px; font-weight: 500; font-style: italic;">See price at retailer${_span}                  ${_div}                `;              }            } else {              // Format Price              formattedPrice = escapedPrice.includes(currencySym)                 ? escapedPrice                 : `${currencySym}${escapedPrice}`;                              // Format MSRP              msrpHtml = deal.msrp && deal.rawMsrp > deal.rawPrice                ? `\x3Cspan class="tg-df-card-msrp">${escapedMsrp.includes(currencySym) ? escapedMsrp : currencySym + escapedMsrp}${_span}`                : '';                              priceGroupHtml = `                \x3Cdiv class="tg-df-card-merchant-wrapper">                  \x3Cspan class="tg-df-card-merchant-pill" title="${this.escapeHTML(deal.merchant)}">${this.escapeHTML(deal.merchant)}${_span}                ${_div}                \x3Cdiv class="tg-df-card-price-group">                  ${isSavingsSquadMode ? '' : `                  \x3Cspan class="tg-df-card-price">${formattedPrice}${_span}                  ${msrpHtml}                  `}                ${_div}              `;            }                        const discountBadgeHtml = deal.savingLabel && !deal.isCheckPrice              ? `\x3Cspan class="tg-df-card-discount-badge">${this.escapeHTML(deal.savingLabel)}${_span}`              : '';                          // HACK for CMS            const _button = '<' + '/button>';            const _svg = '<' + '/svg>';            const _path = '<' + '/path>';            const _rect = '<' + '/rect>';            const _circle = '<' + '/circle>';            const _polyline = '<' + '/polyline>';            const _line = '<' + '/line>';                        let badgesHtml = '';            const primeBadge = deal.isPrime ? `              \x3Cspan class="tg-df-tag tg-df-tag-prime">                \x3Csvg width="12" height="12" viewBox="0 0 24 24" fill="currentColor">                  \x3Cpath d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z">${_path}                ${_svg} Prime              ${_span}            ` : '';                        const couponsBadge = deal.merchant && deal.merchant.toLowerCase().includes('amazon') ? '' : `              \x3Cdiv class="tg-df-coupon-wrapper" data-merchant="${this.escapeHTML(deal.merchant)}" style="display:inline-flex; align-items:center;">                \x3Cdiv class="tg-df-coupon-spinner">${_div}                \x3Cbutton type="button" class="tg-df-tag tg-df-tag-coupons" data-action="coupons-click" data-merchant="${this.escapeHTML(deal.merchant)}" style="display:none;">                  \x3Csvg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">                    \x3Cpath d="M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z">${_path}                    \x3Cline x1="7" y1="7" x2="7.01" y2="7">${_line}                  ${_svg} Coupons                ${_button}              ${_div}            `;                        // Note: We always add coupons badge if there's a chance, but to allow 3-line titles we check wrapper display state            badgesHtml = `              \x3Cdiv class="tg-df-card-badges">                ${primeBadge}                ${couponsBadge}              ${_div}            `;            const _linearGradient = '<' + '/linearGradient>';            const _polygon = '<' + '/polygon>';            const _stop = '<' + '/stop>';            const _defs = '<' + '/defs>';                        let starHtml = '';            if (deal.starRating) {              let rating = deal.starRating;                            if (rating > 0) {                const fullStars = Math.floor(rating);                const halfStar = (rating - fullStars) >= 0.5 ? 1 : 0;                const emptyStars = Math.max(0, 5 - fullStars - halfStar);                const blue = '#1f69ff'; // Tom's guide brand color from VIEW DEAL button                const gray = '#cbd5e1';                                const starSvgFull = `\x3Csvg width="14" height="14" viewBox="0 0 24 24" fill="${blue}" stroke="${blue}" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpolygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26">${_polygon}${_svg}`;                                const gradId = 'half_grad_' + Math.floor(Math.random()*1000000);                const starSvgHalf = `\x3Csvg width="14" height="14" viewBox="0 0 24 24" stroke="${blue}" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">\x3Cdefs>\x3ClinearGradient id="${gradId}" x1="0" x2="1" y1="0" y2="0">\x3Cstop offset="50%" stop-color="${blue}">${_stop}\x3Cstop offset="50%" stop-color="transparent">${_stop}${_linearGradient}${_defs}                  \x3Cpolygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26" fill="url(#${gradId})">${_polygon}${_svg}`;                                  const starSvgEmpty = `\x3Csvg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="${gray}" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpolygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26">${_polygon}${_svg}`;                                let stars = [];                for (let i=0; i<fullStars; i++) stars.push(starSvgFull);                if (halfStar) stars.push(starSvgHalf);                for (let i=0; i<emptyStars; i++) stars.push(starSvgEmpty);                                starHtml = `\x3Cdiv class="tg-df-card-stars" style="display:flex;align-items:center;margin-bottom:8px;font-size:13px;font-weight:600;color:var(--tg-df-text-muted);">                  \x3Cspan style="margin-right:6px;">Tom's Guide:${_span}                  \x3Cdiv style="display:flex;gap:2px;">                    ${stars.join('')}                  ${_div}                ${_div}`;              }            }            let htmlOutput = '';            if (isSavingsSquadMode) {              htmlOutput += `              \x3Cdiv class="hawk-deal-widget-container tg-df-mobile-only" data-collapsible="true">                ${this.editorMode ? `\x3Cinput type="checkbox" class="tg-df-deal-checkbox" data-id="${this.escapeHTML(deal.id)}" ${this.selectedDeals.has(deal.id) ? 'checked' : ''} style="margin-bottom: 10px;">` : ''}                \x3Cdiv class="hawk-deal-widget-wrap">                  \x3Cdiv class="hawk-deal-widget-image-container">                    \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" rel="sponsored noopener" target="_blank" class="hawk-affiliate-link-deal-widget" ${dataAttr}>                      \x3Cimg ${deal.image ? `src="${this.escapeHTML(deal.image)}"` : ''} alt="${this.escapeHTML(deal.title)}" class="hawk-lazy-image-deal-widget" loading="lazy" width="140" height="160" onerror="${deal.fallbackImage ? `if(!this.dataset.fb) { this.dataset.fb='1'; this.src='${this.escapeHTML(deal.fallbackImage)}'; } else { this.style.opacity='0'; }` : `this.style.opacity='0';`}">                    ${_a}                  ${_div}                  \x3Cdiv class="hawk-deal-widget-text-cta-container">                    \x3Cdiv class="hawk-deal-widget-text-body-container">                      \x3Cdiv class="hawk-deal-widget-text-body-main">                        \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" class="hawk-affiliate-link-container" rel="sponsored noopener" target="_blank" ${dataAttr}>                          ${deal.isCheckPrice ? `                            \x3Cspan class="hawk-deal-widget-title-product-title">${this.escapeHTML(deal.title)}${_span}                          ` : `                            \x3Cspan class="hawk-deal-widget-title-product-title">${deal.brand ? this.escapeHTML(deal.brand) + ' ' : ''}${this.escapeHTML(deal.productName || deal.title || '')}:${_span}                          `}                        ${_a}                        ${!deal.isCheckPrice && deal.rawMsrp && deal.rawMsrp > deal.rawPrice ? `                          \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" class="hawk-affiliate-link-container" rel="sponsored noopener" target="_blank" ${dataAttr}>                            \x3Cspan class="hawk-deal-widget-title-was-price">was ${currencySym}${escapedMsrp}${_span}                          ${_a}                        ` : ''}                        \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" class="hawk-affiliate-link-container" rel="sponsored noopener" target="_blank" ${dataAttr}>                          \x3Cspan class="hawk-deal-widget-title-retailer-price">                            ${!deal.isCheckPrice ? `                              \x3Cspan class="hawk-deal-widget-title-price">now ${formattedPrice}${_span}                              \x3Cspan class="hawk-deal-widget-title-retailer"> at ${this.escapeHTML(deal.merchant)}${_span}                            ` : `                              \x3Cspan class="hawk-deal-widget-title-price">See price at ${this.escapeHTML(deal.merchant)}${_span}                            `}                          ${_span}                        ${_a}                        ${deal.description ? `\x3Cdiv class="hawk-deal-widget-text-body-description">\x3Cp>${this.escapeHTML(deal.description)}${_p}${_div}` : ''}                      ${_div}                    ${_div}                    \x3Cdiv class="hawk-deal-widget-footer">                      \x3Cdiv class="hawk-deal-widget-button-wrapper">                        \x3Cdiv class="hawk-deal-widget-preferred-partner-wrapper">                          \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" class="hawk-affiliate-link-deal-button" rel="sponsored noopener" target="_blank" ${dataAttr}>                            \x3Cspan>${deal.isCheckPrice ? 'Check Price' : 'View Deal'}${_span}                          ${_a}                        ${_div}                      ${_div}                    ${_div}                  ${_div}                ${_div}              ${_div}              `;            }            htmlOutput += `              \x3Cdiv class="tg-df-card ${isSavingsSquadMode ? 'tg-df-desktop-only' : ''}">                ${this.editorMode ? `\x3Cinput type="checkbox" class="tg-df-deal-checkbox" data-id="${this.escapeHTML(deal.id)}" ${this.selectedDeals.has(deal.id) ? 'checked' : ''}>` : ''}                \x3Cdiv class="tg-df-card-image-box">                  ${discountBadgeHtml}                  \x3Ca href="${this.escapeHTML(rewrittenLink)}" ${dataAttr} target="_blank" rel="noopener nofollow" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;">                    \x3Cimg ${deal.image ? `src="${this.escapeHTML(deal.image)}"` : ''} alt="${this.escapeHTML(deal.title)}" class="tg-df-card-image" loading="lazy" onerror="${deal.fallbackImage ? `if(!this.dataset.fb) { this.dataset.fb='1'; this.src='${this.escapeHTML(deal.fallbackImage)}'; } else { this.style.opacity='0'; }` : `this.style.opacity='0';`}">                  ${_a}                ${_div}                \x3Cdiv class="tg-df-card-body">                  ${starHtml}                  ${badgesHtml}                  \x3Ch3 class="tg-df-card-title tg-df-custom-savings-squad-title" title="${this.escapeHTML(deal.title)}">                    \x3Ca href="${this.escapeHTML(rewrittenLink)}" disable-tracking="true" target="_blank" rel="noopener nofollow" style="text-decoration: none; color: inherit;">                      ${isSavingsSquadMode                         ? (deal.isCheckPrice                             ? (deal.title && deal.title.includes(':')                                 ? `\x3Cstrong>${this.escapeHTML(deal.title.substring(0, deal.title.indexOf(':') + 1))}${_strong}\x3Cspan style="color: #1f69ff; font-weight: normal;">${this.escapeHTML(deal.title.substring(deal.title.indexOf(':') + 1))}${_span}`                                : this.escapeHTML(deal.title)                              )                             : `\x3Cstrong>${deal.brand ? this.escapeHTML(deal.brand) + ' ' : ''}${this.escapeHTML(deal.productName || deal.title || '')}:${_strong} ${deal.rawMsrp && deal.rawMsrp > deal.rawPrice ? `\x3Cspan style="color: #d0021b; text-decoration: line-through; font-weight: normal; margin-right: 4px;">was ${currencySym}${escapedMsrp}${_span} ` : ''}\x3Cspan style="color: #1f69ff; font-weight: normal;">now ${formattedPrice} at ${this.escapeHTML(deal.merchant)}${_span}`                          )                        : this.escapeHTML(deal.title)                      }                    ${_a}                  ${_h3}                  ${deal.description ? `\x3Cp style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 12px; line-height: 1.4;">${this.escapeHTML(deal.description)}${_p}` : ''}                  \x3Cdiv class="tg-df-card-footer">                    ${priceGroupHtml}                    \x3Ca href="${this.escapeHTML(rewrittenLink)}" ${dataAttr} target="_blank" rel="noopener nofollow" class="tg-df-card-cta ${isSavingsSquadMode ? 'tg-df-cta-savings-squad' : ''}" style="text-decoration: none;">${ctaText}${_a}                  ${_div}                ${_div}              ${_div}            `;                        return htmlOutput;            } catch (e) {               console.log("Error rendering deal in map for index", index, typeof deal === 'object' ? JSON.stringify(deal) : deal, "MSG:", e.message);               return '';            }          }).join('');                    if (displayDeals.length > this.displayLimit || ((this.getViewMode() === 'carousel' || this.getViewMode() === 'auto') && displayDeals.length > 0 && displayDeals.length % ((this.rowsSelect && this.rowsSelect.value) ? parseInt(this.rowsSelect.value, 10) : 12) === 0)) {            if (this.getViewMode() === 'carousel') {               dealsHtml += `                 \x3Cbutton type="button" class="tg-df-load-more-card tg-df-load-more">                   \x3Csvg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-bottom: 8px;">\x3Cpath d="M5 12h14">\x3C/path>\x3Cpath d="m12 5 7 7-7 7">\x3C/path>\x3C/svg>                   Load More                 ${_button}               `;            } else {               dealsHtml += `                 \x3Cdiv style="width: 100%; display: flex; justify-content: center; margin-top: 16px; grid-column: 1 / -1;">                   \x3Cbutton type="button" class="tg-df-tag-outline tg-df-load-more" style="padding: 8px 24px; border-radius: 100px; font-weight: 600; font-size: 14px; cursor: pointer; display: flex; align-items: center;">Load More${_button}                 ${_div}               `;            }          }                    this.grid.innerHTML = dealsHtml;          // Inject JSON-LD          try {            let targetNode = this.hostContainer || document.head;            let jsonLdScript = targetNode.querySelector('#tg-df-json-ld-' + this.widgetId);            if (!jsonLdScript) {                jsonLdScript = document.createElement('script');                jsonLdScript.type = 'application/ld+json';                jsonLdScript.id = 'tg-df-json-ld-' + this.widgetId;                targetNode.appendChild(jsonLdScript);            }            const jsonLdData = {              "@context": "https://schema.org",              "@type": "ItemList",              "itemListElement": displayDeals.slice(0, this.displayLimit).map((deal, index) => {                 let isoCurrency = "USD";                 if (deal.currency === '£') isoCurrency = "GBP";                 else if (deal.currency === '€') isoCurrency = "EUR";                 else if (deal.currency === 'A$') isoCurrency = "AUD";                 else if (deal.currency === 'CA$') isoCurrency = "CAD";                 const areaCode = typeof this.getAreaCode === 'function' ? this.getAreaCode() : 'US';                 const revenueId = typeof generateRevenueId === 'function' ? generateRevenueId(deal.url, deal.title, deal.merchant, null) : '';                 const rewrittenLink = typeof rewriteAffiliateLink === 'function' ? rewriteAffiliateLink(deal.url, areaCode, revenueId) : deal.url;                 return {                   "@type": "ListItem",                   "position": index + 1,                   "item": {                     "@type": "Product",                     "name": deal.title,                     "image": deal.image || "",                     "description": deal.description || "",                     "brand": {                       "@type": "Brand",                       "name": deal.brand || ""                     },                     "offers": {                       "@type": "Offer",                       "priceCurrency": isoCurrency,                       "price": deal.rawPrice || 0,                       "url": rewrittenLink,                       "seller": {                         "@type": "Organization",                         "name": deal.merchant || ""                       }                     }                   }                 };              }).filter(item => item.item.name)            };            jsonLdScript.textContent = JSON.stringify(jsonLdData);          } catch(e) { console.warn("JSON-LD generation failed", e); }                    let gridWrapper = this.grid.parentElement;          if (gridWrapper && gridWrapper.classList.contains('tg-df-grid-wrapper')) {             let rightChevron = gridWrapper.querySelector('.tg-df-carousel-scroll-right');             let leftChevron = gridWrapper.querySelector('.tg-df-carousel-scroll-left');             if (this.getViewMode() === 'carousel') {                 // The observer set up in setupScrollListeners handles visibility.                 if (rightChevron) rightChevron.style.display = 'flex';                 if (leftChevron) leftChevron.style.display = 'none'; // reset correctly             } else {                 if (rightChevron) rightChevron.style.display = 'none';                 if (leftChevron) leftChevron.style.display = 'none';             }          }                    const loadMoreBtn = this.grid.querySelector('.tg-df-load-more');          if (loadMoreBtn) {            loadMoreBtn.addEventListener('click', async () => {              if (typeof trackElementInteraction === 'function') {                trackElementInteraction({ id: 'load-more', name: 'Load more', label: 'Load More Results' });              }              if (displayDeals.length <= this.displayLimit) {                 loadMoreBtn.innerHTML = `                  <svg class="tg-df-spinner" style="width: 16px; height: 16px; display: inline-block; vertical-align: middle; margin-right: 8px;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M12 2v4m0 12v4M4.93 4.93l2.83 2.83m8.48 8.48l2.83 2.83M2 12h4m12 0h4M4.93 19.07l2.83-2.83m8.48-8.48l2.83-2.83"/></svg>                  Loading...                 `;                 loadMoreBtn.disabled = true;                 await this.fetchDeals(this.currentQuery, true);              } else {                 this.displayLimit += this.getRowsLimit();                 this.render();              }            });          }                      this.bindCouponButtons();            this.checkAndUpdateCoupons();                        // Allow hawklinks.js to discover and rewrite our widget links             // by appending the .article-body class and manually triggering processArticle.            let container = this.root.classList.contains('tg-df-container') ? this.root : this.root.querySelector('.tg-df-container');            if (container && !container.classList.contains('article-body')) {               container.classList.add('article-body');            }            setTimeout(() => {               if (this.grid && !this.grid.classList.contains('article-body')) this.grid.classList.add('article-body');               document.dispatchEvent(new CustomEvent('processArticle', { detail: { element: this.root } }));            }, 50);          } catch(e) {            console.warn("Widget render error", e);          }        }                async checkAndUpdateCoupons() {          const wrappers = Array.from(this.root.querySelectorAll('.tg-df-coupon-wrapper'));          if (wrappers.length === 0) return;                    const merchants = [...new Set(wrappers.map(w => w.getAttribute('data-merchant')).filter(Boolean))];          if (merchants.length === 0) return;          const couponResultsMap = await this.checkMerchantsCouponsBulk(merchants);                    for (const merchant of merchants) {            const hasCoupons = !!couponResultsMap[merchant];            const merchantWrappers = wrappers.filter(w => w.getAttribute('data-merchant') === merchant);            merchantWrappers.forEach(wrapper => {              const spinner = wrapper.querySelector('.tg-df-coupon-spinner');              const btn = wrapper.querySelector('.tg-df-tag-coupons');                            if (spinner) spinner.style.display = 'none';                            if (hasCoupons && btn) {                btn.style.display = 'inline-flex';              } else if (!hasCoupons) {                wrapper.style.display = 'none';              }            });          }        }        updateFloatingCopyBar() {          if (!this.editorBar || !this.editorSelectedCount) return;          if (this.editorMode && this.selectedDeals.size > 0) {            this.editorBar.style.display = 'flex';            this.editorSelectedCount.innerText = this.selectedDeals.size;          } else {            this.editorBar.style.display = 'none';          }        }        async copySelectedDealsToCMS() {           function htmlToSlate(htmlString) {              if (!htmlString) return [{ type: 'paragraph', children: [{ text: '' }] }];              let doc;              if (typeof window !== 'undefined' && window.DOMParser) {                 doc = new DOMParser().parseFromString(htmlString, 'text/html');              } else {                 doc = document.implementation.createHTMLDocument('');                 doc.body.innerHTML = htmlString;              }                            function parseNode(node, marks = {}) {                  if (node.nodeType === 3) {                      const text = node.textContent;                      if (!text) return null;                      return { text: text, ...marks };                  }                  if (node.nodeType === 1) {                      const tagName = node.tagName.toLowerCase();                      if (tagName === 'br') {                          return { type: 'line-break', children: [{ text: '' }] };                      }                      if (tagName === 'p') {                          let children = Array.from(node.childNodes).map(child => parseNode(child, marks)).flat().filter(Boolean);                          if (children.length === 0) children.push({ text: "" });                          return { type: 'paragraph', children };                      }                      if (tagName === 'strong' || tagName === 'b') {                          const newMarks = { ...marks, bold: true };                          return Array.from(node.childNodes).map(child => parseNode(child, newMarks)).flat().filter(Boolean);                      }                      if (tagName === 'em' || tagName === 'i') {                          const newMarks = { ...marks, italic: true };                          return Array.from(node.childNodes).map(child => parseNode(child, newMarks)).flat().filter(Boolean);                      }                      if (tagName === 'a') {                          const href = node.getAttribute('href') || '';                          let children = Array.from(node.childNodes).map(child => parseNode(child, marks)).flat().filter(Boolean);                          if (children.length === 0) children.push({ text: "" });                          return {                              type: 'link',                              url: href,                              isNoFollow: (node.getAttribute('rel') || '').includes('nofollow'),                              isSponsored: (node.getAttribute('rel') || '').includes('sponsored'),                              isOpenNewTab: node.getAttribute('target') === '_blank',                              isPreventDataRewrite: false,                              children: children                          };                      }                      return Array.from(node.childNodes).map(child => parseNode(child, marks)).flat().filter(Boolean);                  }                  return null;              }                            let blocksArray = [];              let currentParagraphChildren = [];              function flushParagraph() {                  if (currentParagraphChildren.length > 0) {                      blocksArray.push({ type: 'paragraph', children: currentParagraphChildren });                      currentParagraphChildren = [];                  }              }              Array.from(doc.body.childNodes).forEach(node => {                  const parsed = parseNode(node, {});                  const parsedItems = Array.isArray(parsed) ? parsed : (parsed ? [parsed] : []);                  parsedItems.forEach(item => {                      if (item.type === 'paragraph') {                          flushParagraph();                          blocksArray.push(item);                      } else {                          currentParagraphChildren.push(item);                      }                  });              });              flushParagraph();              if (blocksArray.length === 0) {                  blocksArray = [{ type: 'paragraph', children: [{ text: '' }] }];              }              return blocksArray;           }           const blocks = [];                      this.editorCopyBtn.innerHTML = '\x3Cspan class="tg-df-coupon-spinner" style="display:inline-block; margin-right:8px; border-top-color:#fff;">' + '<' + '/span> Copying...';           for (const deal of Array.from(this.selectedDeals.values())) {              const url = deal.url;              const merchant = deal.merchant;              const title = deal.title;              const image = deal.image;              const currentPrice = deal.currency + deal.rawPrice;              const wasPrice = deal.hasWasPrice && deal.rawMsrp > deal.rawPrice ? deal.currency + deal.rawMsrp : '';                            let couponsChildren = [];              try {                  const area = this.getAreaCode();                  const apiUrl = new URL('https://search-api.fie.future.net.uk/widget.php');                  apiUrl.searchParams.append('model_name', 'Everything');                  apiUrl.searchParams.append('language', 'en-GB');                  apiUrl.searchParams.append('area', area);                  apiUrl.searchParams.append('combine_product_types', '1');                  apiUrl.searchParams.append('filter_merchant_name', merchant);                  apiUrl.searchParams.append('all_filters', 'false');                  apiUrl.searchParams.append('exclude_unlabelled', 'false');                  apiUrl.searchParams.append('include_specs', 'false');                  apiUrl.searchParams.append('sort', 'voucher');                  apiUrl.searchParams.append('distinct_merchants', 'natural');                  apiUrl.searchParams.append('filter_product_types', 'vouchers,offer_deals,newsletter');                  apiUrl.searchParams.append('rows', '3');                  apiUrl.searchParams.append('origin', 'widgets-clientside');                                    let res; try { res = await fetch(apiUrl.toString()); } catch (e) { return; }                  if (res.ok) {                      const data = await res.json();                      let offers = [];                      if (data && data.widget && data.widget.data && Array.isArray(data.widget.data.offers)) {                        offers = data.widget.data.offers;                      } else if (data && data.data && Array.isArray(data.data.offers)) {                        offers = data.data.offers;                      }                                            if (offers.length > 0) {                          couponsChildren.push({ text: "Also check out these coupons: ", bold: true });                          offers.slice(0, 3).forEach((offer, idx) => {                              const actualOffer = offer.offer || offer;                              const offerName = actualOffer.name || actualOffer.title || offer.model_name || offer.title || offer.name || 'Coupon';                              const linkUrl = actualOffer.link || actualOffer.url || actualOffer.offer_link || '#';                              couponsChildren.push({ type: "line-break", children: [{ text: "" }] });                              couponsChildren.push({ text: "🎟️ " });                              couponsChildren.push({                                  type: "link",                                  url: linkUrl,                                  isNoFollow: true,                                  isSponsored: false,                                  isOpenNewTab: true,                                  isPreventDataRewrite: false,                                  children: [{ text: offerName, bold: true }]                              });                          });                      }                  }              } catch (err) {                  console.warn('Failed to fetch coupons for', merchant, err);              }              let descriptionValue = [];              if (deal.text) {                 descriptionValue = htmlToSlate(deal.text);              } else {                 const dealDescriptions = [                   `Don't miss out on this fantastic deal for the ${title}. It is currently available at ${merchant} for a highly competitive price.`,                   `We've spotted an excellent price drop on the ${title}. Grab it now at ${merchant} before it's gone.`,                   `The ${title} is currently seeing a generous discount over at ${merchant}. This is a perfect time to buy if you've been holding out.`,                   `If you're in the market for the ${title}, ${merchant} has just the deal for you.`,                   `Score the ${title} for less at ${merchant} right now. This is a rare chance to save big.`,                   `Upgrade your setup with the ${title}, now available at a stellar price via ${merchant}.`                 ];                 const randomDescription = dealDescriptions[Math.floor(Math.random() * dealDescriptions.length)];                 descriptionValue = [                    { type: "paragraph", children: [{ text: randomDescription }] }                 ];              }                            if (couponsChildren.length > 0) {                 let lastBlock = descriptionValue[descriptionValue.length - 1];                 if (lastBlock && lastBlock.type === 'paragraph') {                     lastBlock.children.push({ type: "line-break", children: [{ text: "" }] });                     lastBlock.children.push({ type: "line-break", children: [{ text: "" }] });                     lastBlock.children.push({ text: "Also check out these coupons: ", bold: true });                     lastBlock.children.push({ type: "line-break", children: [{ text: "" }] });                     lastBlock.children = lastBlock.children.concat(couponsChildren);                 } else {                     descriptionValue.push({                         type: "paragraph",                         children: [                             { type: "line-break", children: [{ text: "" }] },                             { type: "line-break", children: [{ text: "" }] },                             { text: "Also check out these coupons: ", bold: true },                             { type: "line-break", children: [{ text: "" }] },                             ...couponsChildren                         ]                     });                 }              }              function normalizeCurrencyToISO(symbol) {                const map = { '£': 'GBP', '$': 'USD', 'A$': 'AUD', 'CA$': 'CAD', '€': 'EUR' };                return map[symbol] || symbol;              }              const isoCurrency = normalizeCurrencyToISO(deal.currency);              blocks.push({                 id: (window.crypto && window.crypto.randomUUID) ? window.crypto.randomUUID() : 'cms-' + Date.now() + Math.random(),                 blockTypeName: "deal",                 excludeFrom: [],                 collapsible: false,                 props: {                    description: {                       value: descriptionValue,                       touched: false,                       validationMessage: ""                    },                    image: {                       value: {                          credit: [{ type: "paragraph", children: [{ text: merchant }] }],                          dateCreated: Date.now(),                          dateModified: Date.now(),                          distribution: [],                          fileSize: 0,                          height: 1000,                          id: deal.id,                          imageRights: "",                          src: image,                          name: title + ".jpg",                          tags: [],                          width: 1000                       },                       touched: false,                       validationMessage: ""                    },                    showDealButton: { value: true, touched: false, validationMessage: "" },                    isPreferredPartner: { value: false, touched: false, validationMessage: "" },                    linkHref: { value: url, touched: false, validationMessage: "" },                    linkLabel: { value: "", touched: false, validationMessage: "" },                    linkIsNoFollow: { value: true, touched: false, validationMessage: "" },                    linkIsSponsored: { value: false, touched: false, validationMessage: "" },                    linkIsOpenNewWindow: { value: true, touched: false, validationMessage: "" },                    customPromoFlags: { value: [], touched: false, validationMessage: "" },                    showStarDeal: { value: false, touched: false, validationMessage: "" },                    savingType: { value: "none", touched: false, validationMessage: "" },                    starDealPromoFlag: { value: "", touched: false, validationMessage: "" },                    showEditorsChoice: { value: false, touched: false, validationMessage: "" },                    editorsChoiceTitle: { value: "", touched: false, validationMessage: "" },                    hawkPriceCurrency: { value: { value: isoCurrency, label: isoCurrency }, touched: false, validationMessage: "" },                    hawkPrice: { value: deal.hasWasPrice ? String(deal.rawMsrp) : String(deal.rawPrice), touched: false, validationMessage: "" },                    hawkSalePrice: { value: String(deal.rawPrice), touched: false, validationMessage: "" },                    lastCheckedPriceDate: { value: "", touched: false, validationMessage: "" },                    hawkModel: { touched: false, validationMessage: "" },                    productId: { value: "", touched: false, validationMessage: "" },                    voucherId: { value: "", touched: false, validationMessage: "" },                    brand: { value: deal.brand || merchant, touched: false, validationMessage: "" },                    productName: { value: title, touched: false, validationMessage: "" },                    label: { value: "", touched: false, validationMessage: "" },                    retailer: { value: merchant, touched: false, validationMessage: "" },                    priceCheckError: false                 },                 failedFetchError: ""              });           }           const payload = {              type: "articleBuilderPages",              data: blocks           };           const jsonStr = JSON.stringify(payload);                      if (navigator.clipboard && navigator.clipboard.writeText) {              navigator.clipboard.writeText(jsonStr).then(() => {                 this.editorCopyBtn.innerHTML = 'Copied!';                 setTimeout(() => {                    this.editorCopyBtn.innerHTML = '\x3Csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-right: 6px;">\x3Crect x="9" y="9" width="13" height="13" rx="2" ry="2"><' + '/rect>\x3Cpath d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"><' + '/path><' + '/svg> Copy to CMS';                 }, 2000);              }).catch(err => {                 console.warn('Failed to copy text: ', err);                 alert('Failed to copy deals to clipboard. See console.');              });           } else {              // Fallback              const textArea = document.createElement("textarea");              textArea.value = jsonStr;              document.body.appendChild(textArea);              textArea.focus();              textArea.select();              try {                 document.execCommand('copy');                 this.editorCopyBtn.innerHTML = 'Copied!';                 setTimeout(() => {                    this.editorCopyBtn.innerHTML = '\x3Csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-right: 6px;">\x3Crect x="9" y="9" width="13" height="13" rx="2" ry="2"><' + '/rect>\x3Cpath d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"><' + '/path><' + '/svg> Copy to CMS';                 }, 2000);              } catch (err) {                 console.warn('Fallback: Oops, unable to copy', err);                 alert('Fallback: Failed to copy deals to clipboard.');              }              document.body.removeChild(textArea);           }        }      }      // Initialize the Widget      if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', () => new DealsFinderWidget({ rootId: 'signal-deals-finder-root', rootNode: shadowRoot, hostContainer: hostContainer }));      } else {        new DealsFinderWidget({ rootId: 'signal-deals-finder-root', rootNode: shadowRoot, hostContainer: hostContainer });      }    })();  </script></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I can't believe an RTX 5080 gaming laptop just lasted 14 hours on the battery: My full Asus ROG Zephyrus G16 review ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The Asus ROG Zephyrus G16 is often one of our favorite gaming laptops, though the 2025 model lost us with its expensive price tag, sub-par keyboard, and abysmal battery life. </p><p>While the 2026 model does have better battery life to go along with its powerful CPU and GPU performance, lightweight design, and vibrant display, it still suffers from a hefty price tag and disappointing legacy features like the same chiclet keyboard and heavy proprietary power brick.But can the new Zephyrus G16’s premium features make up for its high price tag to become one of our <a href="https://www.tomsguide.com/best-picks/best-gaming-laptops"><u>best gaming laptops</u></a>?</p><h2 class="article-body__section" id="section-asus-rog-zephyrus-g16-2026-cheat-sheet"><span>Asus ROG Zephyrus G16 (2026): Cheat sheet</span></h2><ul><li><strong>What is it?: </strong>The Asus ROG Zephyrus G16 is a premium, light and thin gaming laptop.</li><li><strong>Who is it for?: </strong>Gamers on the go, students, and professionals who need a laptop with a powerful GPU while still being able to commute to and from work or school.</li><li><strong>What does it cost?: </strong><a href="https://eshop.asus.com/us/rog/rog-zephyrus-g16-g14-2026.html?config=90NR0PC1-M006M0" target="_blank" rel="nofollow">Pricing for the Asus ROG Zephyrus G16 starts at $3,699</a></li><li><strong>What do we like?:</strong> The Zephyrus G16 is a portable powerhouse with strong CPU and GPU performance, impressive battery life, a sleek design, and vibrant display.</li><li><strong>What don’t we like?:</strong> The Zephyrus G16, like all gaming hardware in 2026, has been hit with the same memory shortage price increase which makes it far less affordable for students and gamers. The power brick is also a bit heavy for a commuter laptop.</li></ul><h2 class="article-body__section" id="section-asus-rog-zephyrus-g16-2026-specs"><span>Asus ROG Zephyrus G16 (2026): Specs</span></h2><div ><table><thead><tr><th class="firstcol empty" ></th><th  ><p>Asus ROG Zephyrus G16 (2026) (starting)</p></th><th  ><p>Asus ROG Zephyrus G16 (2026) (as reviewed)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p>$3,699</p></td><td  ><p>$4,799</p></td></tr><tr><td class="firstcol " ><p><strong>CPU</strong></p></td><td  ><p>Intel Core Ultra 9 386H</p></td><td  ><p>Intel Core Ultra 9 386H</p></td></tr><tr><td class="firstcol " ><p><strong>GPU</strong></p></td><td  ><p>Nvidia GeForce RTX 5070 Ti</p></td><td  ><p>Nvidia GeForce RTX 5080</p></td></tr><tr><td class="firstcol " ><p><strong>Display</strong></p></td><td  ><p>16-inch, 240Hz, 2,560 x 1,600, OLED</p></td><td  ><p>16-inch, 240Hz, 2,560 x 1,600, OLED</p></td></tr><tr><td class="firstcol " ><p><strong>Memory</strong></p></td><td  ><p>32GB</p></td><td  ><p>64GB</p></td></tr><tr><td class="firstcol " ><p><strong>Storage</strong></p></td><td  ><p>1TB</p></td><td  ><p>1TB</p></td></tr><tr><td class="firstcol " ><p><strong>Ports</strong></p></td><td  ><p>2x USB 3.2 Gen 2 Type-A, 1x USB 3.2 Gen 2 Type-C, 1x Thunderbolt 4, 1x HDMI 2.1, 1x audio combo jack, 1x SD card reader</p></td><td  ><p>2x USB 3.2 Gen 2 Type-A, 1x USB 3.2 Gen 2 Type-C, 1x Thunderbolt 4, 1x HDMI 2.1, 1x audio combo jack, 1x SD card reader</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>WiFi 7, Bluetooth 6</p></td><td  ><p>WiFi 7, Bluetooth 6</p></td></tr><tr><td class="firstcol " ><p><strong>Size</strong></p></td><td  ><p>13.94 x 9.69 x 0.59~0.70 inches</p></td><td  ><p>13.94 x 9.69 x 0.59~0.70 inches</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>4.3 pounds</p></td><td  ><p>4.3 pounds</p></td></tr></tbody></table></div><h2 class="article-body__section" id="section-asus-rog-zephyrus-g16-2026-the-ups"><span>Asus ROG Zephyrus G16 (2026): The ups</span></h2><p>The Zephyrus laptop line has always been premium with the build quality and features to match. The 2026 model is no different, with a sleek design, robust audio, vivid display, strong CPU and GPU performance, and good battery life.</p><h2 id="a-sleek-gaming-machine">A sleek gaming machine</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="dcGsA8xdeqjSdA3sWq8vVM" name="Asus ROG Zephyrus G16 (2026)" alt="Asus ROG Zephyrus G16 (2026)" src="https://cdn.mos.cms.futurecdn.net/dcGsA8xdeqjSdA3sWq8vVM-1920-80.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Asus hasn’t changed much on the Zephyrus G16’s chassis this generation. So it’s still a slim, easily portable aluminum chassis with a shiny chrome stripe that runs on an angle across the top panel lid. The Asus Republic of Gamers logo is subtly embossed on the lower left-hand corner of the panel, leaving the rest of the design on the more understated side.</p><p>Combined with slim display bezels, a smooth keyboard deck, and an edge-to-edge touchpad that takes the entire vertical space between the keyboard and the edge of the palm rest, the inside deck of the laptop is as sleek as the outside panels, maintaining the Zephyrus’ modern aesthetic.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="aCJWQfCFRCuQ8KqvZPAhSM" name="Asus ROG Zephyrus G16 (2026)" alt="Asus ROG Zephyrus G16 (2026)" src="https://cdn.mos.cms.futurecdn.net/aCJWQfCFRCuQ8KqvZPAhSM-1920-80.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The top-firing quad-speaker audio system features Dolby Atmos tuning and achieves impressive volume with crisp clarity, so you can go without a pair of headphones. The built-in audio is loud enough to be heard over the Zephyrus’ cooling fans, so you don’t need to worry about losing audio entirely while gaming.</p><p>The 16-inch OLED display is also on the vibrant side, boasting Pantone validation for color accuracy. While our own testing validated an 80% accuracy for the display, we do expect some variation on OLED panels based on our testing methods compared to the methods used to measure display accuracy used by manufacturers like Asus. </p><div ><table><thead><tr><th class="firstcol " ><p>Laptop</p></th><th  ><p>Average brightness (nits)</p></th><th  ><p>DCI-P3 color gamut (%)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Asus ROG Zephyrus G16 (2026)</strong></p></td><td  ><p>469</p></td><td  ><p>80.4%</p></td></tr><tr><td class="firstcol " ><p><strong>MSI Stealth 16 AI+ (2026)</strong></p></td><td  ><p>375</p></td><td  ><p>85.5%</p></td></tr><tr><td class="firstcol " ><p><strong>Razer Blade 16 (2026)</strong></p></td><td  ><p>408</p></td><td  ><p>90%</p></td></tr></tbody></table></div><p>The Zephyrus’s display is also bright, hitting an average SDR brightness of 469 nits, with a peak HDR brightness of 1,052 nits. Whether you’re using the Zephyrus G16 for a Netflix binge or for a visually immersive gaming session, it’s going to be an enjoyable experience.</p><h2 id="stronger-cpu-and-gpu-performance">Stronger CPU and GPU performance</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="iNGx32S37KU4RC96P4zLYM" name="Asus ROG Zephyrus G16 (2026)" alt="Asus ROG Zephyrus G16 (2026)" src="https://cdn.mos.cms.futurecdn.net/iNGx32S37KU4RC96P4zLYM-1920-80.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The <a href="https://www.tomsguide.com/computing/gaming-laptops/i-spent-a-month-with-the-rtx-5080-equipped-asus-rog-zephyrus-g16-heres-why-it-falls-short">Asus ROG Zephyrus G16 (2025)</a> wasn’t exactly a slouch when it came to performance, it just wasn’t quite powerful enough to justify its price tag.Compared to last year’s Zephyrus G16, the 2026 Zephyrus packs a more powerful punch in CPU multicore performance on Geekbench 6 and Handbrake, which is helpful since the 2025 Zephyrus was a bit underwhelming in terms of raw power. </p><div ><table><thead><tr><th class="firstcol " ><p>Laptop</p></th><th  ><p>Geekbench 6 single-core</p></th><th  ><p>Geekbench 6 multicore</p></th><th  ><p>Handbrake transcode 4k to 1080p (mm:ss)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Asus ROG Zephyrus G16 (2026)</strong></p></td><td  ><p>2877</p></td><td  ><p>16960</p></td><td  ><p>03:09</p></td></tr><tr><td class="firstcol " ><p><strong>MSI Stealth 16 AI+ (2026)</strong></p></td><td  ><p>2832</p></td><td  ><p>15170</p></td><td  ><p>03:31</p></td></tr><tr><td class="firstcol " ><p><strong>Razer Blade 16 (2026)</strong></p></td><td  ><p>2895</p></td><td  ><p>16971</p></td><td  ><p>03:17</p></td></tr></tbody></table></div><p>The Zephyrus also gets stronger multicore performance than the <a href="https://www.tomsguide.com/computing/gaming-laptops/msi-stealth-16-ai-plus-2026-review">MSI Stealth 16 AI+</a>, despite having the same Intel chipset. Even when put against our best premium gaming laptop, the <a href="https://www.tomsguide.com/computing/gaming-laptops/razer-blade-16-2026-review">Razer Blade 16 (2026)</a>, the Zephyrus comes out with a slight edge on multithreaded performance.</p><p>As for the Zephyrus’ GPU performance, things get a bit more complicated. The 2026 Zephyrus scraped together a few more FPS on <em>Cyberpunk 2077</em> at 1600p compared to the 2025 Zephyrus (which was running at 1440p resolution). The 2026 Zephyrus G16 also benchmarked well when compared to other RTX 5080 gaming laptops like the Razer and <a href="https://www.tomsguide.com/computing/gaming-laptops/lenovo-legion-pro-7i-review">Lenovo Legion Pro 7i Gen 10</a>. </p><div ><table><thead><tr><th class="firstcol " ><p><strong>Game (NO DLSS)</strong></p></th><th  ><p><strong>Asus ROG Zephyrus G16 (RTX 5080)</strong></p></th><th  ><p>Lenovo Legion Pro 7i Gen 10 (RTX 5080)</p></th><th  ><p>Razer Blade 16 (RTX 5090)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Black Myth: Wukong (QHD Cinematic)</strong></p></td><td  ><p>33 FPS</p></td><td  ><p>35 FPS</p></td><td  ><p>44 FPS</p></td></tr><tr><td class="firstcol " ><p><strong>Doom: The Dark Ages (QHD Ultra RT)</strong></p></td><td  ><p>53 FPS</p></td><td  ><p>n/a</p></td><td  ><p>66 FPS</p></td></tr><tr><td class="firstcol " ><p><strong>F1 23 (QHD Ultra)</strong></p></td><td  ><p>52 FPS</p></td><td  ><p>50 FPS</p></td><td  ><p>72 FPS</p></td></tr><tr><td class="firstcol " ><p><strong>Cyberpunk 2077 (QHD RT Ultra)</strong></p></td><td  ><p>30 FPS</p></td><td  ><p>31 FPS</p></td><td  ><p>42 FPS</p></td></tr><tr><td class="firstcol " ><p><strong>Shadow of the Tomb Raider (QHD Max settings)</strong></p></td><td  ><p>95 FPS</p></td><td  ><p>101 FPS</p></td><td  ><p>133 FPS</p></td></tr></tbody></table></div><p>The Zephyrus G16 trailed only a few FPS behind the to the Lenovo Legion Pro 7i on games like <em>Assassin’s Creed Shadows</em>, <em>Black Myth: Wukong</em> and <em>Cyberpunk</em> at Ultra 1080p settings, though the Razer Blade 16 outperformed both the Legion and Zephyrus G16.</p><p>I was easily able to achieve framerates of 200fps or higher on games like <em>Doom: The Dark Ages</em> on Ultra settings at 1600p resolution with DLSS enabled, while native performance without DLSS was around 60fps. </p><p>Highly optimized titles like <em>Baldur’s Gate III</em> and <em>Final Fantasy XIV: Dawntrail</em> also performed well above 100fps even without super sampling. So you are getting proper gaming performance even if the Razer Blade 16 might be just a bit more powerful.</p><h2 id="all-day-battery-life">All-day battery life</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="FzcSMhrg7hfaZnVL6QL78M" name="Asus ROG Zephyrus G16 (2026)" alt="Asus ROG Zephyrus G16 (2026)" src="https://cdn.mos.cms.futurecdn.net/FzcSMhrg7hfaZnVL6QL78M-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Gaming laptops are rarely known for having great battery life, but there have been a few notable exceptions over the years. The Asus ROG Zephyrus G16 (2026) is one of those rare gaming laptops that gets over 10 hours of web surfing battery life.</p><p>At 150-nits of brightness, the Zephyrus G16 lasted over 13 hours and 45 minutes. That’s an hour longer than the Razer Blade 16 (2026), about 3 hours more battery life than the MSI Stealth 16 AI+, and more than 3x the battery life of the Lenovo Legion Pro 7i.</p><div ><table><thead><tr><th class="firstcol " ><p>Laptop</p></th><th  ><p>Web browsing battery life test (hh:mm)</p></th><th  ><p>Gaming battery life test (hh:mm)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Asus ROG Zephyrus G16 (2026)</strong></p></td><td  ><p>13:45</p></td><td  ><p>00:55</p></td></tr><tr><td class="firstcol " ><p><strong>Lenovo Legion Pro 7i Gen 10</strong></p></td><td  ><p>04:37</p></td><td  ><p>01:36</p></td></tr><tr><td class="firstcol " ><p><strong>Razer Blade 16 (2026)</strong></p></td><td  ><p>12:36</p></td><td  ><p>01:41</p></td></tr></tbody></table></div><p>Things do take a bit of a downturn when it comes to gaming battery life, however. The Zephyrus has just 55 minutes of gaming battery life on the PCMark 10 Gaming battery test, while the MSI Stealth and Razer Blade 16 both have nearly two hours of gaming battery time.</p><p>However, you’re unlikely to game on a laptop when running on battery power, so that’s less of a detriment than it could be otherwise. Just make sure to pack your charger, especially if you’re going to be doing a lot of GPU-heavy work.</p><h2 class="article-body__section" id="section-asus-rog-zephyrus-g16-2026-the-downs"><span>Asus ROG Zephyrus G16 (2026): The downs</span></h2><p>While the ROG Zephyrus G16 (2026) has plenty to recommend it, all those positives do come with a few downsides. The biggest one is the price-tag. But the new Zephyrus shares a chassis with the 2025 model, which means it has the same lackluster keyboard and hefty proprietary power brick.</p><h2 id="beyond-expensive">Beyond expensive</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="qXNQmAeAUciWHfyri6BVRM" name="Asus ROG Zephyrus G16 (2026)" alt="Asus ROG Zephyrus G16 (2026)" src="https://cdn.mos.cms.futurecdn.net/qXNQmAeAUciWHfyri6BVRM-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>All tech hardware has become nigh unaffordable, but some laptops have gotten hit by the supply chain price hike worse than others. The ROG Zephyrus was always a pricey, premium gaming laptop that fit into the working professional to STEM student venn diagram. But with a starting price of $3,699 for the RTX 5070 Ti version, it’s hard to see how the 2026 Zephyrus G16 could ever function as a student laptop.</p><p>Last year’s Zephyrus G16 at least had a starting configuration that was priced at $2,799. That’s still steep for your average college student but it’s still more affordable than this year’s model which is at least $900 more expensive and comes with less storage capacity than last year’s entry level configuration.</p><p>While some of this price hike is due to supply chain issues, the Zephyrus G16 has been steadily increasing in price over the past few years which is beyond the realm of the AI Data Center memory shortage. And that makes the hefty price tag of the 2026 Zephyrus even harder to justify.</p><h2 id="portability-stops-at-the-power-brick">Portability stops at the power brick</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="45ZJ4D8k2RGh52UhyN7dUM" name="Asus ROG Zephyrus G16 (2026)" alt="Asus ROG Zephyrus G16 (2026)" src="https://cdn.mos.cms.futurecdn.net/45ZJ4D8k2RGh52UhyN7dUM-1920-80.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I’ve always appreciated the svelte design of the Zephyrus G16 and G14 laptops. They’re slim, they’re lightweight, and yet they pack a powerful punch that’s more than enough to do some high-power gaming even when on the road. Thin, portable gaming laptops are among my personal favorites.</p><p>But there’s one aspect of the Zephyrus G16 that feels stuck in the past. Between the proprietary AC-port and the heavy 250W charge brick, the Zephyrus G16 is a bit less portable than it appears. While the laptop itself weighs just 4.3 pounds, the power supply itself weighs an additional 1.3 pounds. And that brings the total carry weight of the Zephyrus G16 to 5.6 pounds.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="QdujLo6TX8bK7NBbsQUPRM" name="Asus ROG Zephyrus G16 (2026)" alt="Asus ROG Zephyrus G16 (2026)" src="https://cdn.mos.cms.futurecdn.net/QdujLo6TX8bK7NBbsQUPRM-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Sure, it gets 13 hours of web-surfing battery life. But if I’m doing anything that will turn on the discrete Nvidia GPU, that battery life expectancy drops through the floor. The gaming battery life of the G16 is only 55 minutes, so the power brick isn’t an optional accessory.</p><p>It’d be one thing if Asus used a Thunderbolt 4 port for the G16. But the RTX 5080 is too power hungry for that. And thus we’re still stuck in the dark ages with a hefty external power supply that makes this ultraportable laptop just a little less comfortable to carry on a long commute.</p><h2 class="article-body__section" id="section-asus-rog-zephyrus-g16-2026-verdict"><span>Asus ROG Zephyrus G16 (2026): Verdict</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Xdm2jzK94CLBvuAS8g6PjL" name="Asus ROG Zephyrus G16 (2026)" alt="Asus ROG Zephyrus G16 (2026)" src="https://cdn.mos.cms.futurecdn.net/Xdm2jzK94CLBvuAS8g6PjL-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Asus ROG Zephyrus G16 is often one of our favorite gaming laptops, however we were rather disappointed by the 2025 model thanks to its high price tag, sub-par keyboard, and grim battery life.</p><p>The 2026 model does fix the battery life issue, but it still suffers from the same lackluster keyboard and heavy proprietary power brick as last year’s model. And it’s even more expensive.</p><p>But if you’re looking for a highly commutable, powerful gaming laptop or STEM machine, the Zephyrus G16 is still a solid choice. As long as you’ve got the cash.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/gaming-laptops/asus-rog-zephyrus-g16-2026-review</link>
                                                                            <description>
                            <![CDATA[ The Asus ROG Zephyrus G16 is often a favorite in the gaming laptop scene, though last year’s model was more disappointing than expected. The new 2026 model does improve the battery life, and packs a heftier punch in terms of raw performance, but it’s still too pricey. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">KqbGTvY6ZJQyXzvoUX7ULU</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/sSnCYvFSoeR8JUik4W6kWM-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 06 Jul 2026 05:45:00 +0000</pubDate>                                                                                                                                <updated>Mon, 06 Jul 2026 13:08:42 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming Laptops]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Laptops]]></category>
                                                                                                                    <dc:creator><![CDATA[ Madeline Ricchiuto ]]></dc:creator>                                                                                                        <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/sSnCYvFSoeR8JUik4W6kWM-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Asus ROG Zephyrus G16 (2026)]]></media:description>                                                            <media:text><![CDATA[Asus ROG Zephyrus G16 (2026)]]></media:text>
                                <media:title type="plain"><![CDATA[Asus ROG Zephyrus G16 (2026)]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/sSnCYvFSoeR8JUik4W6kWM-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The Asus ROG Zephyrus G16 is often one of our favorite gaming laptops, though the 2025 model lost us with its expensive price tag, sub-par keyboard, and abysmal battery life. </p><p>While the 2026 model does have better battery life to go along with its powerful CPU and GPU performance, lightweight design, and vibrant display, it still suffers from a hefty price tag and disappointing legacy features like the same chiclet keyboard and heavy proprietary power brick.But can the new Zephyrus G16’s premium features make up for its high price tag to become one of our <a href="https://www.tomsguide.com/best-picks/best-gaming-laptops"><u>best gaming laptops</u></a>?</p><h2 class="article-body__section" id="section-asus-rog-zephyrus-g16-2026-cheat-sheet"><span>Asus ROG Zephyrus G16 (2026): Cheat sheet</span></h2><ul><li><strong>What is it?: </strong>The Asus ROG Zephyrus G16 is a premium, light and thin gaming laptop.</li><li><strong>Who is it for?: </strong>Gamers on the go, students, and professionals who need a laptop with a powerful GPU while still being able to commute to and from work or school.</li><li><strong>What does it cost?: </strong><a href="https://eshop.asus.com/us/rog/rog-zephyrus-g16-g14-2026.html?config=90NR0PC1-M006M0" target="_blank" rel="nofollow">Pricing for the Asus ROG Zephyrus G16 starts at $3,699</a></li><li><strong>What do we like?:</strong> The Zephyrus G16 is a portable powerhouse with strong CPU and GPU performance, impressive battery life, a sleek design, and vibrant display.</li><li><strong>What don’t we like?:</strong> The Zephyrus G16, like all gaming hardware in 2026, has been hit with the same memory shortage price increase which makes it far less affordable for students and gamers. The power brick is also a bit heavy for a commuter laptop.</li></ul><h2 class="article-body__section" id="section-asus-rog-zephyrus-g16-2026-specs"><span>Asus ROG Zephyrus G16 (2026): Specs</span></h2><div ><table><thead><tr><th class="firstcol empty" ></th><th  ><p>Asus ROG Zephyrus G16 (2026) (starting)</p></th><th  ><p>Asus ROG Zephyrus G16 (2026) (as reviewed)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p>$3,699</p></td><td  ><p>$4,799</p></td></tr><tr><td class="firstcol " ><p><strong>CPU</strong></p></td><td  ><p>Intel Core Ultra 9 386H</p></td><td  ><p>Intel Core Ultra 9 386H</p></td></tr><tr><td class="firstcol " ><p><strong>GPU</strong></p></td><td  ><p>Nvidia GeForce RTX 5070 Ti</p></td><td  ><p>Nvidia GeForce RTX 5080</p></td></tr><tr><td class="firstcol " ><p><strong>Display</strong></p></td><td  ><p>16-inch, 240Hz, 2,560 x 1,600, OLED</p></td><td  ><p>16-inch, 240Hz, 2,560 x 1,600, OLED</p></td></tr><tr><td class="firstcol " ><p><strong>Memory</strong></p></td><td  ><p>32GB</p></td><td  ><p>64GB</p></td></tr><tr><td class="firstcol " ><p><strong>Storage</strong></p></td><td  ><p>1TB</p></td><td  ><p>1TB</p></td></tr><tr><td class="firstcol " ><p><strong>Ports</strong></p></td><td  ><p>2x USB 3.2 Gen 2 Type-A, 1x USB 3.2 Gen 2 Type-C, 1x Thunderbolt 4, 1x HDMI 2.1, 1x audio combo jack, 1x SD card reader</p></td><td  ><p>2x USB 3.2 Gen 2 Type-A, 1x USB 3.2 Gen 2 Type-C, 1x Thunderbolt 4, 1x HDMI 2.1, 1x audio combo jack, 1x SD card reader</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>WiFi 7, Bluetooth 6</p></td><td  ><p>WiFi 7, Bluetooth 6</p></td></tr><tr><td class="firstcol " ><p><strong>Size</strong></p></td><td  ><p>13.94 x 9.69 x 0.59~0.70 inches</p></td><td  ><p>13.94 x 9.69 x 0.59~0.70 inches</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>4.3 pounds</p></td><td  ><p>4.3 pounds</p></td></tr></tbody></table></div><h2 class="article-body__section" id="section-asus-rog-zephyrus-g16-2026-the-ups"><span>Asus ROG Zephyrus G16 (2026): The ups</span></h2><p>The Zephyrus laptop line has always been premium with the build quality and features to match. The 2026 model is no different, with a sleek design, robust audio, vivid display, strong CPU and GPU performance, and good battery life.</p><h2 id="a-sleek-gaming-machine">A sleek gaming machine</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="dcGsA8xdeqjSdA3sWq8vVM" name="Asus ROG Zephyrus G16 (2026)" alt="Asus ROG Zephyrus G16 (2026)" src="https://cdn.mos.cms.futurecdn.net/dcGsA8xdeqjSdA3sWq8vVM-1920-80.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Asus hasn’t changed much on the Zephyrus G16’s chassis this generation. So it’s still a slim, easily portable aluminum chassis with a shiny chrome stripe that runs on an angle across the top panel lid. The Asus Republic of Gamers logo is subtly embossed on the lower left-hand corner of the panel, leaving the rest of the design on the more understated side.</p><p>Combined with slim display bezels, a smooth keyboard deck, and an edge-to-edge touchpad that takes the entire vertical space between the keyboard and the edge of the palm rest, the inside deck of the laptop is as sleek as the outside panels, maintaining the Zephyrus’ modern aesthetic.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="aCJWQfCFRCuQ8KqvZPAhSM" name="Asus ROG Zephyrus G16 (2026)" alt="Asus ROG Zephyrus G16 (2026)" src="https://cdn.mos.cms.futurecdn.net/aCJWQfCFRCuQ8KqvZPAhSM-1920-80.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The top-firing quad-speaker audio system features Dolby Atmos tuning and achieves impressive volume with crisp clarity, so you can go without a pair of headphones. The built-in audio is loud enough to be heard over the Zephyrus’ cooling fans, so you don’t need to worry about losing audio entirely while gaming.</p><p>The 16-inch OLED display is also on the vibrant side, boasting Pantone validation for color accuracy. While our own testing validated an 80% accuracy for the display, we do expect some variation on OLED panels based on our testing methods compared to the methods used to measure display accuracy used by manufacturers like Asus. </p><div ><table><thead><tr><th class="firstcol " ><p>Laptop</p></th><th  ><p>Average brightness (nits)</p></th><th  ><p>DCI-P3 color gamut (%)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Asus ROG Zephyrus G16 (2026)</strong></p></td><td  ><p>469</p></td><td  ><p>80.4%</p></td></tr><tr><td class="firstcol " ><p><strong>MSI Stealth 16 AI+ (2026)</strong></p></td><td  ><p>375</p></td><td  ><p>85.5%</p></td></tr><tr><td class="firstcol " ><p><strong>Razer Blade 16 (2026)</strong></p></td><td  ><p>408</p></td><td  ><p>90%</p></td></tr></tbody></table></div><p>The Zephyrus’s display is also bright, hitting an average SDR brightness of 469 nits, with a peak HDR brightness of 1,052 nits. Whether you’re using the Zephyrus G16 for a Netflix binge or for a visually immersive gaming session, it’s going to be an enjoyable experience.</p><h2 id="stronger-cpu-and-gpu-performance">Stronger CPU and GPU performance</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="iNGx32S37KU4RC96P4zLYM" name="Asus ROG Zephyrus G16 (2026)" alt="Asus ROG Zephyrus G16 (2026)" src="https://cdn.mos.cms.futurecdn.net/iNGx32S37KU4RC96P4zLYM-1920-80.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The <a href="https://www.tomsguide.com/computing/gaming-laptops/i-spent-a-month-with-the-rtx-5080-equipped-asus-rog-zephyrus-g16-heres-why-it-falls-short">Asus ROG Zephyrus G16 (2025)</a> wasn’t exactly a slouch when it came to performance, it just wasn’t quite powerful enough to justify its price tag.Compared to last year’s Zephyrus G16, the 2026 Zephyrus packs a more powerful punch in CPU multicore performance on Geekbench 6 and Handbrake, which is helpful since the 2025 Zephyrus was a bit underwhelming in terms of raw power. </p><div ><table><thead><tr><th class="firstcol " ><p>Laptop</p></th><th  ><p>Geekbench 6 single-core</p></th><th  ><p>Geekbench 6 multicore</p></th><th  ><p>Handbrake transcode 4k to 1080p (mm:ss)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Asus ROG Zephyrus G16 (2026)</strong></p></td><td  ><p>2877</p></td><td  ><p>16960</p></td><td  ><p>03:09</p></td></tr><tr><td class="firstcol " ><p><strong>MSI Stealth 16 AI+ (2026)</strong></p></td><td  ><p>2832</p></td><td  ><p>15170</p></td><td  ><p>03:31</p></td></tr><tr><td class="firstcol " ><p><strong>Razer Blade 16 (2026)</strong></p></td><td  ><p>2895</p></td><td  ><p>16971</p></td><td  ><p>03:17</p></td></tr></tbody></table></div><p>The Zephyrus also gets stronger multicore performance than the <a href="https://www.tomsguide.com/computing/gaming-laptops/msi-stealth-16-ai-plus-2026-review">MSI Stealth 16 AI+</a>, despite having the same Intel chipset. Even when put against our best premium gaming laptop, the <a href="https://www.tomsguide.com/computing/gaming-laptops/razer-blade-16-2026-review">Razer Blade 16 (2026)</a>, the Zephyrus comes out with a slight edge on multithreaded performance.</p><p>As for the Zephyrus’ GPU performance, things get a bit more complicated. The 2026 Zephyrus scraped together a few more FPS on <em>Cyberpunk 2077</em> at 1600p compared to the 2025 Zephyrus (which was running at 1440p resolution). The 2026 Zephyrus G16 also benchmarked well when compared to other RTX 5080 gaming laptops like the Razer and <a href="https://www.tomsguide.com/computing/gaming-laptops/lenovo-legion-pro-7i-review">Lenovo Legion Pro 7i Gen 10</a>. </p><div ><table><thead><tr><th class="firstcol " ><p><strong>Game (NO DLSS)</strong></p></th><th  ><p><strong>Asus ROG Zephyrus G16 (RTX 5080)</strong></p></th><th  ><p>Lenovo Legion Pro 7i Gen 10 (RTX 5080)</p></th><th  ><p>Razer Blade 16 (RTX 5090)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Black Myth: Wukong (QHD Cinematic)</strong></p></td><td  ><p>33 FPS</p></td><td  ><p>35 FPS</p></td><td  ><p>44 FPS</p></td></tr><tr><td class="firstcol " ><p><strong>Doom: The Dark Ages (QHD Ultra RT)</strong></p></td><td  ><p>53 FPS</p></td><td  ><p>n/a</p></td><td  ><p>66 FPS</p></td></tr><tr><td class="firstcol " ><p><strong>F1 23 (QHD Ultra)</strong></p></td><td  ><p>52 FPS</p></td><td  ><p>50 FPS</p></td><td  ><p>72 FPS</p></td></tr><tr><td class="firstcol " ><p><strong>Cyberpunk 2077 (QHD RT Ultra)</strong></p></td><td  ><p>30 FPS</p></td><td  ><p>31 FPS</p></td><td  ><p>42 FPS</p></td></tr><tr><td class="firstcol " ><p><strong>Shadow of the Tomb Raider (QHD Max settings)</strong></p></td><td  ><p>95 FPS</p></td><td  ><p>101 FPS</p></td><td  ><p>133 FPS</p></td></tr></tbody></table></div><p>The Zephyrus G16 trailed only a few FPS behind the to the Lenovo Legion Pro 7i on games like <em>Assassin’s Creed Shadows</em>, <em>Black Myth: Wukong</em> and <em>Cyberpunk</em> at Ultra 1080p settings, though the Razer Blade 16 outperformed both the Legion and Zephyrus G16.</p><p>I was easily able to achieve framerates of 200fps or higher on games like <em>Doom: The Dark Ages</em> on Ultra settings at 1600p resolution with DLSS enabled, while native performance without DLSS was around 60fps. </p><p>Highly optimized titles like <em>Baldur’s Gate III</em> and <em>Final Fantasy XIV: Dawntrail</em> also performed well above 100fps even without super sampling. So you are getting proper gaming performance even if the Razer Blade 16 might be just a bit more powerful.</p><h2 id="all-day-battery-life">All-day battery life</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="FzcSMhrg7hfaZnVL6QL78M" name="Asus ROG Zephyrus G16 (2026)" alt="Asus ROG Zephyrus G16 (2026)" src="https://cdn.mos.cms.futurecdn.net/FzcSMhrg7hfaZnVL6QL78M-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Gaming laptops are rarely known for having great battery life, but there have been a few notable exceptions over the years. The Asus ROG Zephyrus G16 (2026) is one of those rare gaming laptops that gets over 10 hours of web surfing battery life.</p><p>At 150-nits of brightness, the Zephyrus G16 lasted over 13 hours and 45 minutes. That’s an hour longer than the Razer Blade 16 (2026), about 3 hours more battery life than the MSI Stealth 16 AI+, and more than 3x the battery life of the Lenovo Legion Pro 7i.</p><div ><table><thead><tr><th class="firstcol " ><p>Laptop</p></th><th  ><p>Web browsing battery life test (hh:mm)</p></th><th  ><p>Gaming battery life test (hh:mm)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Asus ROG Zephyrus G16 (2026)</strong></p></td><td  ><p>13:45</p></td><td  ><p>00:55</p></td></tr><tr><td class="firstcol " ><p><strong>Lenovo Legion Pro 7i Gen 10</strong></p></td><td  ><p>04:37</p></td><td  ><p>01:36</p></td></tr><tr><td class="firstcol " ><p><strong>Razer Blade 16 (2026)</strong></p></td><td  ><p>12:36</p></td><td  ><p>01:41</p></td></tr></tbody></table></div><p>Things do take a bit of a downturn when it comes to gaming battery life, however. The Zephyrus has just 55 minutes of gaming battery life on the PCMark 10 Gaming battery test, while the MSI Stealth and Razer Blade 16 both have nearly two hours of gaming battery time.</p><p>However, you’re unlikely to game on a laptop when running on battery power, so that’s less of a detriment than it could be otherwise. Just make sure to pack your charger, especially if you’re going to be doing a lot of GPU-heavy work.</p><h2 class="article-body__section" id="section-asus-rog-zephyrus-g16-2026-the-downs"><span>Asus ROG Zephyrus G16 (2026): The downs</span></h2><p>While the ROG Zephyrus G16 (2026) has plenty to recommend it, all those positives do come with a few downsides. The biggest one is the price-tag. But the new Zephyrus shares a chassis with the 2025 model, which means it has the same lackluster keyboard and hefty proprietary power brick.</p><h2 id="beyond-expensive">Beyond expensive</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="qXNQmAeAUciWHfyri6BVRM" name="Asus ROG Zephyrus G16 (2026)" alt="Asus ROG Zephyrus G16 (2026)" src="https://cdn.mos.cms.futurecdn.net/qXNQmAeAUciWHfyri6BVRM-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>All tech hardware has become nigh unaffordable, but some laptops have gotten hit by the supply chain price hike worse than others. The ROG Zephyrus was always a pricey, premium gaming laptop that fit into the working professional to STEM student venn diagram. But with a starting price of $3,699 for the RTX 5070 Ti version, it’s hard to see how the 2026 Zephyrus G16 could ever function as a student laptop.</p><p>Last year’s Zephyrus G16 at least had a starting configuration that was priced at $2,799. That’s still steep for your average college student but it’s still more affordable than this year’s model which is at least $900 more expensive and comes with less storage capacity than last year’s entry level configuration.</p><p>While some of this price hike is due to supply chain issues, the Zephyrus G16 has been steadily increasing in price over the past few years which is beyond the realm of the AI Data Center memory shortage. And that makes the hefty price tag of the 2026 Zephyrus even harder to justify.</p><h2 id="portability-stops-at-the-power-brick">Portability stops at the power brick</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="45ZJ4D8k2RGh52UhyN7dUM" name="Asus ROG Zephyrus G16 (2026)" alt="Asus ROG Zephyrus G16 (2026)" src="https://cdn.mos.cms.futurecdn.net/45ZJ4D8k2RGh52UhyN7dUM-1920-80.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I’ve always appreciated the svelte design of the Zephyrus G16 and G14 laptops. They’re slim, they’re lightweight, and yet they pack a powerful punch that’s more than enough to do some high-power gaming even when on the road. Thin, portable gaming laptops are among my personal favorites.</p><p>But there’s one aspect of the Zephyrus G16 that feels stuck in the past. Between the proprietary AC-port and the heavy 250W charge brick, the Zephyrus G16 is a bit less portable than it appears. While the laptop itself weighs just 4.3 pounds, the power supply itself weighs an additional 1.3 pounds. And that brings the total carry weight of the Zephyrus G16 to 5.6 pounds.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="QdujLo6TX8bK7NBbsQUPRM" name="Asus ROG Zephyrus G16 (2026)" alt="Asus ROG Zephyrus G16 (2026)" src="https://cdn.mos.cms.futurecdn.net/QdujLo6TX8bK7NBbsQUPRM-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Sure, it gets 13 hours of web-surfing battery life. But if I’m doing anything that will turn on the discrete Nvidia GPU, that battery life expectancy drops through the floor. The gaming battery life of the G16 is only 55 minutes, so the power brick isn’t an optional accessory.</p><p>It’d be one thing if Asus used a Thunderbolt 4 port for the G16. But the RTX 5080 is too power hungry for that. And thus we’re still stuck in the dark ages with a hefty external power supply that makes this ultraportable laptop just a little less comfortable to carry on a long commute.</p><h2 class="article-body__section" id="section-asus-rog-zephyrus-g16-2026-verdict"><span>Asus ROG Zephyrus G16 (2026): Verdict</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Xdm2jzK94CLBvuAS8g6PjL" name="Asus ROG Zephyrus G16 (2026)" alt="Asus ROG Zephyrus G16 (2026)" src="https://cdn.mos.cms.futurecdn.net/Xdm2jzK94CLBvuAS8g6PjL-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Asus ROG Zephyrus G16 is often one of our favorite gaming laptops, however we were rather disappointed by the 2025 model thanks to its high price tag, sub-par keyboard, and grim battery life.</p><p>The 2026 model does fix the battery life issue, but it still suffers from the same lackluster keyboard and heavy proprietary power brick as last year’s model. And it’s even more expensive.</p><p>But if you’re looking for a highly commutable, powerful gaming laptop or STEM machine, the Zephyrus G16 is still a solid choice. As long as you’ve got the cash.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I tested Control Resonant on an RTX 5090 — and I'm now preparing for a new benchmark for PC gaming ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Whenever I get the chance to test out the <a href="https://www.tomsguide.com/best-picks/best-gaming-laptops">best gaming laptops</a>, my first port of call is to actually <em>game </em>as a form of benchmarking. For years, <a href="https://www.tomsguide.com/reviews/control">Control</a> has long been one of my go-to titles, but that will quickly change once Control Resonant arrives on PC.</p><p>Horrifying, bleak and messy — not exactly "positive" words to use for developer Remedy Entertainment's upcoming action-heavy sequel, but I mean these in the most endearing way possible from what I saw when playing Control Resonant on an <a href="https://www.tomsguide.com/gaming/pc-gaming/the-rtx-5090-is-the-best-graphics-card-ive-ever-owned-but-theres-a-catch-for-living-room-pc-gamers">RTX 5090</a> gaming PC during a three-hour hands-on session. </p><p>Fighting off hordes of The Hiss (the main threat in the game) is thrillingly horrifying with their grotesquely detailed forms, the bleak atmosphere of a warped Manhattan is enthralling and the mind-bending, twisted environments you get to explore are satisfyingly messy. If you thought The Oldest House in Control was a trip, just wait for what Control Resonant has to offer. </p><p>With Nvidia's RTX 50-series GPUs lending their power, though, with <a href="https://www.tomsguide.com/computing/gpus/what-is-nvidia-dlss-explaining-the-ai-tech-transforming-pc-gaming-and-why-its-getting-controversial">DLSS</a> turned on and ray tracing set to high, Remedy's follow-up had me immersed. From the expert use of lighting in a chaotic world to the smooth, fast-paced combat, I already see Control Resonant being an all-new PC gaming benchmark. </p><p>You can check our <a href="https://www.tomsguide.com/gaming/i-played-control-resonant-for-2-hours-and-trust-me-remedy-cooked-with-this-sequel">Control Resonant preview</a> for how the game plays and our <a href="https://www.tomsguide.com/gaming/control-resonant-interview">interview with Remedy Entertainment's Creative Director</a> for more on what is now one of my most highly anticipated games of the year. But for how it handles on PC, let's dive in. </p><h2 id="control-resonant-pc-requirements">Control Resonant PC requirements</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="2RJAaTxpN9a5XEwiDx7H3i" name="Control Resonant on RTX PC" alt="Control Resonant on display next to PC" src="https://cdn.mos.cms.futurecdn.net/2RJAaTxpN9a5XEwiDx7H3i-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future / Tom's Guide)</span></figcaption></figure><p>While I played Control Resonant on a monster of a gaming PC (the RTX 5090 says it all), I was assured by the team at Remedy Entertainment that PCs that don't reach those heights, like many of the more affordable <a href="https://www.tomsguide.com/us/best-gaming-pc,review-2219.html">best gaming PCs</a>, will be able to play the game without trouble. </p><p>Take a look at the system requirements for Control Resonant below, along with the PC specs I played on. Spoiler alert: you <em>will </em>need a lot of storage.</p><div ><table><caption>Control Resonant System Requirements</caption><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>Minimum specs</strong></p></td><td  ><p><strong>Recommended specs</strong></p></td><td  ><p><strong>Tested specs</strong></p></td></tr><tr><td class="firstcol " ><p><strong>CPU</strong></p></td><td  ><p>Intel i5-8500 or AMD equivalent</p></td><td  ><p>Ryzen 7 3700X or Intel equivalent</p></td><td  ><p>Intel Core i9-14900K</p></td></tr><tr><td class="firstcol " ><p><strong>GPU</strong></p></td><td  ><p>Nvidia GeForce GTX 1070 / AMD Radeon RX 5600 XT (6GB)</p></td><td  ><p>Nvidia GeForce RTX 3070 / AMD Radeon RX 6700 XT (8GB)</p></td><td  ><p>Nvidia GeForce RTX 5090</p></td></tr><tr><td class="firstcol " ><p><strong>RAM</strong></p></td><td  ><p>16GB</p></td><td  ><p>16GB</p></td><td  ><p>128GB</p></td></tr><tr><td class="firstcol " ><p><strong>Storage</strong></p></td><td  ><p>100GB</p></td><td  ><p>100GB</p></td><td  ><p>100GB</p></td></tr></tbody></table></div><h2 id="brimming-with-power">Brimming with power</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="3gLe9x7DPQZW5AfrDGXr6i" name="Control Resonant on RTX PC" alt="Control Resonant on display next to PC" src="https://cdn.mos.cms.futurecdn.net/3gLe9x7DPQZW5AfrDGXr6i-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future / Tom's Guide)</span></figcaption></figure><p>First, a few preliminary points. As with most previews, this isn't the final version of Control Resonant. Not only is lighting and framerate still being worked on, but also audio mixing, hit impacts and more. This is still very much in beta, but honestly, from the time I had playing through the opening act and a mid-game area called The Sinkhole (it's a masterpiece), it's already looking to be in good shape. </p><p>I can imagine a lot of that has to do with the RTX 5090 working behind the scenes. With DLSS upscaling (no frame generation) and DLSS Ray Reconstruction (for sharper reflections and accurate lighting), zipping and levitating through a disfigured Manhattan as the all-powerful Dylan Faden (our up-close-and-personal protagonist) was a treat for the eyes. </p><p>And that was with graphics and ray tracing presets set to high, only made better by the 4K (3840 x 2160) resolution I was playing on. From the many twisted forms of The Hiss shown in terrifying detail to the deep contrast of red hues streaking across the screen, along with the subtle yet clear reflections in windows of buildings turned upside down, it's all beautifully crafted — and I often found myself taking it all in. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W5xZ0e"></div>                            </div>                            <script src="https://kwizly.com/embed/W5xZ0e.js" async></script><p>After leaving The Oldest House after the opening act, I was impressed by the visual distortion effect beaming off cars, with The Hiss floating in midair endlessly in the background. That, along with blaring, dangerous red lighting reflecting off the pavement. For those stationary moments, it all hits right.</p><p>In combat, with Remedy changing pace from a third-person shooter to pure melee action, things can get chaotic, but unsurprisingly, this rig could handle it all. As in, the copious amounts of rubble Dylan hurls at enemies while quickly dashing to slash through them using his Aberrant weapon (I chose the sword-like Flurry form as my weapon of choice), while the almost faded rainbow oil mist blasts off foes as he hits them. </p><p>It's smooth, clean action, which is what you'd want in a fast-moving action game. It's the little nuances, like the aftereffect of dashing being so crystal clear, like a sleek afterimage of static video, that make it work. </p><p>Now, I wasn't able to see frame rates or tinker with different settings, as it appeared the game was locked at a rock-solid 60 frames per second (FPS) for beta purposes. But even with the mass of Hiss shooting red beams from every direction during The Sinkhole section, along with the gravity-bending environment Dylan can shift through, it's clear Control Resonant will be taking full advantage of what Nvidia's GPUs have to offer. </p><p>And I'm here for it. </p><h2 id="reaching-a-new-pc-benchmark">Reaching a new PC benchmark </h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="CnSPTRGg2bjPzspUo58MFi" name="Control Resonant on RTX PC" alt="Control Resonant on display next to PC" src="https://cdn.mos.cms.futurecdn.net/CnSPTRGg2bjPzspUo58MFi-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future / Tom's Guide)</span></figcaption></figure><p>While Remedy is still polishing off Control Resonant, especially the PC version, we can expect plenty of RTX features to be fully on show (just like path tracing in <a href="https://www.tomsguide.com/gaming/pc-gaming/resident-evil-requiem-with-path-tracing-is-horrifying-and-i-mean-that-as-a-compliment-to-nvidia-and-dlss-4">Resident Evil Requiem</a>). That includes <a href="https://www.tomsguide.com/computing/gpus/i-tested-dlss-4-5-dynamic-multi-frame-generation-its-not-just-ai-trickery-its-nvidias-cheat-code-for-4k-240hz-and-a-true-console-killer">DLSS 4.5</a> and its dynamic multi-frame gen tech (expect frame rates to hit over 200 FPS), DLSS Super Resolution and path tracing for photorealistic lighting, no less. </p><p>That's exciting, considering just how well it already looks, and there's still plenty of time for the team at Remedy to cook. During my session, I had a chat with Lead Gameplay Designer Sergey Mohov, and he explained how there's now more to play around with. </p><p>"We weren't limited by hardware in terms of gameplay. It's very helpful that computers and consoles these days can actually run games like this, and we're able to put all of these enemies on screen, all of these effects and make it look nice while feeling very satisfying to kill them all. </p><p>"The hardest thing was actually making the world, making it bigger and increasing draw distances. But we've invested in improving our in-house engine (Northlight Engine) to handle these things. But, you know, we've done it."</p><p>I believe Mohov is spot on, taking the improvements we saw in <a href="https://www.tomsguide.com/reviews/alan-wake-2">Alan Wake 2</a> and pushing it even further. Of course, just like how <a href="https://www.tiktok.com/@tomsguide/video/7635330240482479391">Control is now available on iOS</a>, there's the aim for Resonant to be flexible enough to be played on, well, anything that isn't just an RTX 5090 while still delivering great visuals and performance. </p><p>"We have a lot of people who are really excited about putting all the latest tech in. Nvidia is helping out, and we'll have all the latest Nvidia stuff in [Control Resonant]. So that's going to be pretty cool. But if somebody can run Control on, like, a potato or a fridge, I'll be pretty happy."</p><p>Control Resonant is set to launch on September 24, available on PS5, Xbox Series X/S, macOS and cloud streaming via Nvidia GeForce Now. But just from my brief experience, it will be a PC purchase for me. </p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/gaming/6-best-video-games-of-2026-so-far-on-ps5-nintendo-switch-2-pc-and-xbox">The 6 best video games we've played in 2026 (so far) on PS5, Switch 2, PC and Xbox</a></li><li><a href="https://www.tomsguide.com/gaming/nintendo/star-fox-review">I just finished Star Fox on Switch 2 — and it’s better than the game I imagined I was playing as a kid</a></li><li><a href="https://www.tomsguide.com/gaming/5-recently-announced-video-games-im-most-excited-about-including-a-sequel-ive-been-waiting-13-long-years-for">5 recently announced video games I’m most excited about, including a sequel I’ve been waiting 13 long years for</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/gaming/pc-gaming/i-tested-control-resonant-on-an-rtx-5090-and-im-now-preparing-for-a-new-benchmark-for-pc-gaming</link>
                                                                            <description>
                            <![CDATA[ I played three hours of Remedy Entertainment's upcoming Control Resonant on an RTX 5090 gaming PC, and its reality-bending action is looking to take full advantage of Nvidia's latest graphics cards. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">MYWRrJijVuMZQ6774gA35V</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/uzDcZoSrtzEyFsr74wSvDi-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 27 Jun 2026 09:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[PC Gaming]]></category>
                                                    <category><![CDATA[GPUs]]></category>
                                                    <category><![CDATA[Gaming]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Computing Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Darragh Murphy ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/5QiaTSWf9FcVB7STxcdo4M-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Darragh is Tom’s Guide’s Computing Editor and is fascinated by all things bizarre in tech. This usually leads to assorted coverage varying from washing machines designed for earbuds to the wild world of laptops. Whether it&#039;s connecting Scar from The Lion King to two-factor authentication or turning his love for laptops into a fabricated rap battle from 8 Mile, he believes there’s always a quirky spin to be made.&lt;br&gt;&lt;br&gt;Darragh has previously been an Editor for Laptop Mag and a News Editor for Time Out Dubai, where he also headed the gaming and tech section. His work can be seen in Mashable, Android Police, Shortlist Dubai, Proton, theBit.nz, ReviewsFire and more. &lt;br&gt;&lt;br&gt;While laptops are his bread and butter, he’s also reviewed smartphones, monitors, speakers, docking stations and VPNs. He’s covered IFA, MWC Barcelona, the Consumer Electronics Show (&lt;a href=&quot;https://www.tomsguide.com/uk/tag/ces&quot; target=&quot;_blank&quot;&gt;CES&lt;/a&gt;) and more.&lt;br&gt;&lt;br&gt;When he&#039;s not checking out the latest devices and all things computing, he can be found going for dreaded long runs, watching terrible shark movies, and trying to find time to game.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/uzDcZoSrtzEyFsr74wSvDi-1920-80.jpg">
                                                            <media:credit><![CDATA[Future / Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Control Resonant on display next to PC]]></media:description>                                                            <media:text><![CDATA[Control Resonant on display next to PC]]></media:text>
                                <media:title type="plain"><![CDATA[Control Resonant on display next to PC]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/uzDcZoSrtzEyFsr74wSvDi-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Whenever I get the chance to test out the <a href="https://www.tomsguide.com/best-picks/best-gaming-laptops">best gaming laptops</a>, my first port of call is to actually <em>game </em>as a form of benchmarking. For years, <a href="https://www.tomsguide.com/reviews/control">Control</a> has long been one of my go-to titles, but that will quickly change once Control Resonant arrives on PC.</p><p>Horrifying, bleak and messy — not exactly "positive" words to use for developer Remedy Entertainment's upcoming action-heavy sequel, but I mean these in the most endearing way possible from what I saw when playing Control Resonant on an <a href="https://www.tomsguide.com/gaming/pc-gaming/the-rtx-5090-is-the-best-graphics-card-ive-ever-owned-but-theres-a-catch-for-living-room-pc-gamers">RTX 5090</a> gaming PC during a three-hour hands-on session. </p><p>Fighting off hordes of The Hiss (the main threat in the game) is thrillingly horrifying with their grotesquely detailed forms, the bleak atmosphere of a warped Manhattan is enthralling and the mind-bending, twisted environments you get to explore are satisfyingly messy. If you thought The Oldest House in Control was a trip, just wait for what Control Resonant has to offer. </p><p>With Nvidia's RTX 50-series GPUs lending their power, though, with <a href="https://www.tomsguide.com/computing/gpus/what-is-nvidia-dlss-explaining-the-ai-tech-transforming-pc-gaming-and-why-its-getting-controversial">DLSS</a> turned on and ray tracing set to high, Remedy's follow-up had me immersed. From the expert use of lighting in a chaotic world to the smooth, fast-paced combat, I already see Control Resonant being an all-new PC gaming benchmark. </p><p>You can check our <a href="https://www.tomsguide.com/gaming/i-played-control-resonant-for-2-hours-and-trust-me-remedy-cooked-with-this-sequel">Control Resonant preview</a> for how the game plays and our <a href="https://www.tomsguide.com/gaming/control-resonant-interview">interview with Remedy Entertainment's Creative Director</a> for more on what is now one of my most highly anticipated games of the year. But for how it handles on PC, let's dive in. </p><h2 id="control-resonant-pc-requirements">Control Resonant PC requirements</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="2RJAaTxpN9a5XEwiDx7H3i" name="Control Resonant on RTX PC" alt="Control Resonant on display next to PC" src="https://cdn.mos.cms.futurecdn.net/2RJAaTxpN9a5XEwiDx7H3i-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future / Tom's Guide)</span></figcaption></figure><p>While I played Control Resonant on a monster of a gaming PC (the RTX 5090 says it all), I was assured by the team at Remedy Entertainment that PCs that don't reach those heights, like many of the more affordable <a href="https://www.tomsguide.com/us/best-gaming-pc,review-2219.html">best gaming PCs</a>, will be able to play the game without trouble. </p><p>Take a look at the system requirements for Control Resonant below, along with the PC specs I played on. Spoiler alert: you <em>will </em>need a lot of storage.</p><div ><table><caption>Control Resonant System Requirements</caption><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>Minimum specs</strong></p></td><td  ><p><strong>Recommended specs</strong></p></td><td  ><p><strong>Tested specs</strong></p></td></tr><tr><td class="firstcol " ><p><strong>CPU</strong></p></td><td  ><p>Intel i5-8500 or AMD equivalent</p></td><td  ><p>Ryzen 7 3700X or Intel equivalent</p></td><td  ><p>Intel Core i9-14900K</p></td></tr><tr><td class="firstcol " ><p><strong>GPU</strong></p></td><td  ><p>Nvidia GeForce GTX 1070 / AMD Radeon RX 5600 XT (6GB)</p></td><td  ><p>Nvidia GeForce RTX 3070 / AMD Radeon RX 6700 XT (8GB)</p></td><td  ><p>Nvidia GeForce RTX 5090</p></td></tr><tr><td class="firstcol " ><p><strong>RAM</strong></p></td><td  ><p>16GB</p></td><td  ><p>16GB</p></td><td  ><p>128GB</p></td></tr><tr><td class="firstcol " ><p><strong>Storage</strong></p></td><td  ><p>100GB</p></td><td  ><p>100GB</p></td><td  ><p>100GB</p></td></tr></tbody></table></div><h2 id="brimming-with-power">Brimming with power</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="3gLe9x7DPQZW5AfrDGXr6i" name="Control Resonant on RTX PC" alt="Control Resonant on display next to PC" src="https://cdn.mos.cms.futurecdn.net/3gLe9x7DPQZW5AfrDGXr6i-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future / Tom's Guide)</span></figcaption></figure><p>First, a few preliminary points. As with most previews, this isn't the final version of Control Resonant. Not only is lighting and framerate still being worked on, but also audio mixing, hit impacts and more. This is still very much in beta, but honestly, from the time I had playing through the opening act and a mid-game area called The Sinkhole (it's a masterpiece), it's already looking to be in good shape. </p><p>I can imagine a lot of that has to do with the RTX 5090 working behind the scenes. With DLSS upscaling (no frame generation) and DLSS Ray Reconstruction (for sharper reflections and accurate lighting), zipping and levitating through a disfigured Manhattan as the all-powerful Dylan Faden (our up-close-and-personal protagonist) was a treat for the eyes. </p><p>And that was with graphics and ray tracing presets set to high, only made better by the 4K (3840 x 2160) resolution I was playing on. From the many twisted forms of The Hiss shown in terrifying detail to the deep contrast of red hues streaking across the screen, along with the subtle yet clear reflections in windows of buildings turned upside down, it's all beautifully crafted — and I often found myself taking it all in. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W5xZ0e"></div>                            </div>                            <script src="https://kwizly.com/embed/W5xZ0e.js" async></script><p>After leaving The Oldest House after the opening act, I was impressed by the visual distortion effect beaming off cars, with The Hiss floating in midair endlessly in the background. That, along with blaring, dangerous red lighting reflecting off the pavement. For those stationary moments, it all hits right.</p><p>In combat, with Remedy changing pace from a third-person shooter to pure melee action, things can get chaotic, but unsurprisingly, this rig could handle it all. As in, the copious amounts of rubble Dylan hurls at enemies while quickly dashing to slash through them using his Aberrant weapon (I chose the sword-like Flurry form as my weapon of choice), while the almost faded rainbow oil mist blasts off foes as he hits them. </p><p>It's smooth, clean action, which is what you'd want in a fast-moving action game. It's the little nuances, like the aftereffect of dashing being so crystal clear, like a sleek afterimage of static video, that make it work. </p><p>Now, I wasn't able to see frame rates or tinker with different settings, as it appeared the game was locked at a rock-solid 60 frames per second (FPS) for beta purposes. But even with the mass of Hiss shooting red beams from every direction during The Sinkhole section, along with the gravity-bending environment Dylan can shift through, it's clear Control Resonant will be taking full advantage of what Nvidia's GPUs have to offer. </p><p>And I'm here for it. </p><h2 id="reaching-a-new-pc-benchmark">Reaching a new PC benchmark </h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="CnSPTRGg2bjPzspUo58MFi" name="Control Resonant on RTX PC" alt="Control Resonant on display next to PC" src="https://cdn.mos.cms.futurecdn.net/CnSPTRGg2bjPzspUo58MFi-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future / Tom's Guide)</span></figcaption></figure><p>While Remedy is still polishing off Control Resonant, especially the PC version, we can expect plenty of RTX features to be fully on show (just like path tracing in <a href="https://www.tomsguide.com/gaming/pc-gaming/resident-evil-requiem-with-path-tracing-is-horrifying-and-i-mean-that-as-a-compliment-to-nvidia-and-dlss-4">Resident Evil Requiem</a>). That includes <a href="https://www.tomsguide.com/computing/gpus/i-tested-dlss-4-5-dynamic-multi-frame-generation-its-not-just-ai-trickery-its-nvidias-cheat-code-for-4k-240hz-and-a-true-console-killer">DLSS 4.5</a> and its dynamic multi-frame gen tech (expect frame rates to hit over 200 FPS), DLSS Super Resolution and path tracing for photorealistic lighting, no less. </p><p>That's exciting, considering just how well it already looks, and there's still plenty of time for the team at Remedy to cook. During my session, I had a chat with Lead Gameplay Designer Sergey Mohov, and he explained how there's now more to play around with. </p><p>"We weren't limited by hardware in terms of gameplay. It's very helpful that computers and consoles these days can actually run games like this, and we're able to put all of these enemies on screen, all of these effects and make it look nice while feeling very satisfying to kill them all. </p><p>"The hardest thing was actually making the world, making it bigger and increasing draw distances. But we've invested in improving our in-house engine (Northlight Engine) to handle these things. But, you know, we've done it."</p><p>I believe Mohov is spot on, taking the improvements we saw in <a href="https://www.tomsguide.com/reviews/alan-wake-2">Alan Wake 2</a> and pushing it even further. Of course, just like how <a href="https://www.tiktok.com/@tomsguide/video/7635330240482479391">Control is now available on iOS</a>, there's the aim for Resonant to be flexible enough to be played on, well, anything that isn't just an RTX 5090 while still delivering great visuals and performance. </p><p>"We have a lot of people who are really excited about putting all the latest tech in. Nvidia is helping out, and we'll have all the latest Nvidia stuff in [Control Resonant]. So that's going to be pretty cool. But if somebody can run Control on, like, a potato or a fridge, I'll be pretty happy."</p><p>Control Resonant is set to launch on September 24, available on PS5, Xbox Series X/S, macOS and cloud streaming via Nvidia GeForce Now. But just from my brief experience, it will be a PC purchase for me. </p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/gaming/6-best-video-games-of-2026-so-far-on-ps5-nintendo-switch-2-pc-and-xbox">The 6 best video games we've played in 2026 (so far) on PS5, Switch 2, PC and Xbox</a></li><li><a href="https://www.tomsguide.com/gaming/nintendo/star-fox-review">I just finished Star Fox on Switch 2 — and it’s better than the game I imagined I was playing as a kid</a></li><li><a href="https://www.tomsguide.com/gaming/5-recently-announced-video-games-im-most-excited-about-including-a-sequel-ive-been-waiting-13-long-years-for">5 recently announced video games I’m most excited about, including a sequel I’ve been waiting 13 long years for</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ OpenAI just made its biggest move against Nvidia — and it could make ChatGPT cheaper to run ]]></title>
                                                                                                <dc:content><![CDATA[ <p>OpenAI has unveiled <a href="https://openai.com/index/openai-broadcom-jalapeno-inference-chip/" target="_blank"><strong>Jalapeño</strong></a>, its first custom-built AI processor, developed with Broadcom specifically to run the large language models that power ChatGPT. Unlike the graphics processors (<a href="https://www.tomsguide.com/computing/gpus/update-your-nvidia-gpu-drivers-now-to-protect-your-pc-from-9-high-severity-vulnerabilities-heres-whats-at-risk">GPUs</a>) that dominate today's AI infrastructure, Jalapeño was designed from the ground up for one job: answering user prompts as quickly and efficiently as possible.</p><p>This move is huge for the future of ChatGPT as the AI assistant could become faster, cheaper to operate and more reliable over the next few years.</p><h2 id="why-openai-built-its-own-chip">Why OpenAI built its own chip</h2><p>Nvidia remains the undisputed leader in AI hardware, supplying the GPUs that train and run many of the world's most advanced AI systems. But those chips were designed to tackle a wide variety of computing workloads, not exclusively the task of serving billions of chatbot responses every day.</p><p>Now Jalapeño takes a different approach. Instead of being a general-purpose processor, it's an <strong>inference chip</strong>, meaning its<strong> </strong>hardware is optimized specifically for generating answers after an AI model has already been trained. That's the part of the AI process you interact with every time you ask ChatGPT a question.</p><p>According to OpenAI and Broadcom as reported by <a href="https://www.reuters.com/world/asia-pacific/openai-unveils-custom-chip-it-designed-with-broadcom-boost-its-ai-infrastructure-2026-06-24/" target="_blank">Reuters</a>, the new chip was architected around the memory, networking and computing patterns used by modern large language models, allowing it to perform those workloads more efficiently than conventional hardware. Early internal testing suggests it delivers better performance per watt than today's leading AI accelerators, although independent benchmarks have not yet been released.</p><h2 id="why-this-matters-for-chatgpt-users">Why this matters for ChatGPT users</h2><p>If OpenAI can answer more questions while using less electricity and fewer expensive chips, the economics of running ChatGPT begin to change. That doesn't necessarily mean your <a href="https://www.tomsguide.com/ai/chatgpt/7-ways-i-use-chatgpt-plus-heres-why-i-think-its-worth-it">ChatGPT Plus subscription</a> will suddenly become cheaper, but lower infrastructure costs could allow OpenAI to respond to prompts faster, support more users during peak demand, <a href="https://www.tomsguide.com/news/live/chatgpt-openai-down-outage-6-10-2025">reduce outages</a> caused by hardware shortages and roll out more capable AI models without dramatically increasing operating costs.</p><p>In other words, beyond building a faster chip, OpenAI is making ChatGPT itself more scalable.</p><h2 id="openai-is-becoming-more-vertically-integrated">OpenAI is becoming more vertically integrated</h2><p>Until now, OpenAI has largely relied on partners to provide the hardware powering its AI systems. By designing its own processors while continuing to build its own models and products, the company is gradually taking control of more of the entire AI stack.</p><p>That's a strategy we've seen succeed elsewhere in technology. Companies that design both their hardware and software can optimize them to work together, improving performance while reducing long-term costs.</p><p>OpenAI has described Jalapeño as the first step in a multi-generation compute platform, suggesting this won't be its last custom processor. To me, this looks more like an effort to reduce dependence on a single supplier while lowering one of OpenAI's biggest ongoing expenses.</p><p>Nvidia still dominates AI training, and OpenAI continues to rely on Nvidia hardware across much of its infrastructure. Jalapeño is designed for inference, not to replace every GPU in OpenAI's data centers. </p><h2 id="the-takeaway">The takeaway</h2><p>Interestingly enough, AI actually helped design the chip. The company says Jalapeño went from concept to production-ready design in just nine months, which is an unusually fast timeline for advanced semiconductor development.</p><p>It's another reminder that AI isn't just writing code anymore, but increasingly, it's helping engineers build the hardware that future AI systems will run on.</p><p>Although most users will never see Jalapeño, (they'll never need to), but they will . notice the results every time ChatGPT responds a little faster, serves a few more people or unlocks capabilities that were previously too expensive to run.</p><a href="https://follow.it/articles-by-amanda-caswell-tom-s-guide?leanpub" class="button button--large button--primary">Follow Amanda Caswell and stay ahead of the AI curve</a><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/ai/anthropic-will-pay-workers-usd85-000-to-learn-ai-and-it-reveals-the-next-big-ai-job-trend">Anthropic will pay workers $85,000 to learn AI — and it reveals the next big AI job trend</a></li><li><a href="https://www.tomsguide.com/ai/anthropics-fable-five-ban-exposed-ais-next-big-problem-but-sakanas-fugu-may-have-the-answer">Anthropic's Fable 5 ban exposed AI's next big problem — but Sakana's Fugu may have the answer</a></li><li><a href="https://www.tomsguide.com/ai/is-your-job-ai-resilient-find-your-risk-score-with-our-career-calculator">Is your job 'AI-resilient'? Find your risk score with our career calculator</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/ai/openai-just-made-its-biggest-move-against-nvidia-and-it-could-make-chatgpt-cheaper-to-run</link>
                                                                            <description>
                            <![CDATA[ OpenAI has unveiled its first custom AI chip, designed to make ChatGPT faster, more efficient and less dependent on Nvidia hardware. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">rYJsNeLL9gqMczPbVn67KC</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/R8Hp6dEStDjPWvqEKChpsX-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 25 Jun 2026 14:14:03 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[AI]]></category>
                                                                                                <author><![CDATA[ amanda.caswell@futurenet.com (Amanda Caswell) ]]></author>                    <dc:creator><![CDATA[ Amanda Caswell ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/zYjevim2q7FjQiefqpjZRB-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/R8Hp6dEStDjPWvqEKChpsX-1920-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[OpenAI logo with robotic human head]]></media:description>                                                            <media:text><![CDATA[OpenAI logo with robotic human head]]></media:text>
                                <media:title type="plain"><![CDATA[OpenAI logo with robotic human head]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/R8Hp6dEStDjPWvqEKChpsX-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>OpenAI has unveiled <a href="https://openai.com/index/openai-broadcom-jalapeno-inference-chip/" target="_blank"><strong>Jalapeño</strong></a>, its first custom-built AI processor, developed with Broadcom specifically to run the large language models that power ChatGPT. Unlike the graphics processors (<a href="https://www.tomsguide.com/computing/gpus/update-your-nvidia-gpu-drivers-now-to-protect-your-pc-from-9-high-severity-vulnerabilities-heres-whats-at-risk">GPUs</a>) that dominate today's AI infrastructure, Jalapeño was designed from the ground up for one job: answering user prompts as quickly and efficiently as possible.</p><p>This move is huge for the future of ChatGPT as the AI assistant could become faster, cheaper to operate and more reliable over the next few years.</p><h2 id="why-openai-built-its-own-chip">Why OpenAI built its own chip</h2><p>Nvidia remains the undisputed leader in AI hardware, supplying the GPUs that train and run many of the world's most advanced AI systems. But those chips were designed to tackle a wide variety of computing workloads, not exclusively the task of serving billions of chatbot responses every day.</p><p>Now Jalapeño takes a different approach. Instead of being a general-purpose processor, it's an <strong>inference chip</strong>, meaning its<strong> </strong>hardware is optimized specifically for generating answers after an AI model has already been trained. That's the part of the AI process you interact with every time you ask ChatGPT a question.</p><p>According to OpenAI and Broadcom as reported by <a href="https://www.reuters.com/world/asia-pacific/openai-unveils-custom-chip-it-designed-with-broadcom-boost-its-ai-infrastructure-2026-06-24/" target="_blank">Reuters</a>, the new chip was architected around the memory, networking and computing patterns used by modern large language models, allowing it to perform those workloads more efficiently than conventional hardware. Early internal testing suggests it delivers better performance per watt than today's leading AI accelerators, although independent benchmarks have not yet been released.</p><h2 id="why-this-matters-for-chatgpt-users">Why this matters for ChatGPT users</h2><p>If OpenAI can answer more questions while using less electricity and fewer expensive chips, the economics of running ChatGPT begin to change. That doesn't necessarily mean your <a href="https://www.tomsguide.com/ai/chatgpt/7-ways-i-use-chatgpt-plus-heres-why-i-think-its-worth-it">ChatGPT Plus subscription</a> will suddenly become cheaper, but lower infrastructure costs could allow OpenAI to respond to prompts faster, support more users during peak demand, <a href="https://www.tomsguide.com/news/live/chatgpt-openai-down-outage-6-10-2025">reduce outages</a> caused by hardware shortages and roll out more capable AI models without dramatically increasing operating costs.</p><p>In other words, beyond building a faster chip, OpenAI is making ChatGPT itself more scalable.</p><h2 id="openai-is-becoming-more-vertically-integrated">OpenAI is becoming more vertically integrated</h2><p>Until now, OpenAI has largely relied on partners to provide the hardware powering its AI systems. By designing its own processors while continuing to build its own models and products, the company is gradually taking control of more of the entire AI stack.</p><p>That's a strategy we've seen succeed elsewhere in technology. Companies that design both their hardware and software can optimize them to work together, improving performance while reducing long-term costs.</p><p>OpenAI has described Jalapeño as the first step in a multi-generation compute platform, suggesting this won't be its last custom processor. To me, this looks more like an effort to reduce dependence on a single supplier while lowering one of OpenAI's biggest ongoing expenses.</p><p>Nvidia still dominates AI training, and OpenAI continues to rely on Nvidia hardware across much of its infrastructure. Jalapeño is designed for inference, not to replace every GPU in OpenAI's data centers. </p><h2 id="the-takeaway">The takeaway</h2><p>Interestingly enough, AI actually helped design the chip. The company says Jalapeño went from concept to production-ready design in just nine months, which is an unusually fast timeline for advanced semiconductor development.</p><p>It's another reminder that AI isn't just writing code anymore, but increasingly, it's helping engineers build the hardware that future AI systems will run on.</p><p>Although most users will never see Jalapeño, (they'll never need to), but they will . notice the results every time ChatGPT responds a little faster, serves a few more people or unlocks capabilities that were previously too expensive to run.</p><a href="https://follow.it/articles-by-amanda-caswell-tom-s-guide?leanpub" class="button button--large button--primary">Follow Amanda Caswell and stay ahead of the AI curve</a><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/ai/anthropic-will-pay-workers-usd85-000-to-learn-ai-and-it-reveals-the-next-big-ai-job-trend">Anthropic will pay workers $85,000 to learn AI — and it reveals the next big AI job trend</a></li><li><a href="https://www.tomsguide.com/ai/anthropics-fable-five-ban-exposed-ais-next-big-problem-but-sakanas-fugu-may-have-the-answer">Anthropic's Fable 5 ban exposed AI's next big problem — but Sakana's Fugu may have the answer</a></li><li><a href="https://www.tomsguide.com/ai/is-your-job-ai-resilient-find-your-risk-score-with-our-career-calculator">Is your job 'AI-resilient'? Find your risk score with our career calculator</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ NVIDIA claims its new AI data centers use almost no water — here's what that actually means ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Training and running AI models requires <a href="https://www.tomsguide.com/ai/the-ai-boom-is-driving-up-electricity-bills-heres-what-you-need-to-know">enormous amounts of computing power</a>, and keeping those powerful chips cool often means consuming large amounts of water. It's become a growing source of concern as tech companies build <a href="https://www.tomsguide.com/ai/this-ai-data-center-will-be-bigger-than-2-000-walmarts-and-dump-23-atom-bombs-worth-of-energy-into-the-environment-every-day-and-locals-are-terrified">massive AI data centers </a>across the United States.</p><p>Now NVIDIA says it has a solution. The company recently unveiled a <a href="https://blogs.nvidia.com/blog/liquid-cooling-ai-factories/" target="_blank">new liquid-cooling system</a> designed for its next-generation AI infrastructure that it claims could reduce cooling water consumption to nearly zero in certain environments.</p><p> The announcement arrives as <a href="https://www.tomsguide.com/ai/i-kept-hearing-that-ai-data-centers-are-draining-towns-dry-so-i-looked-at-the-evidence">public scrutiny of AI's environmental footprint continues to grow</a>, with communities questioning whether new data centers are placing too much strain on local resources.</p><p>So what exactly is NVIDIA proposing, and does it really solve AI's water problem?</p><h2 id="why-ai-data-centers-use-so-much-water">Why AI data centers use so much water  </h2><p>AI systems run on specialized chips called <a href="https://www.tomsguide.com/news/the-top-gpus-just-fell-below-msrp-should-you-buy-now">GPUs</a>, many of which are <a href="https://www.tomsguide.com/computing/laptops/nvidia-is-returning-to-its-roots-with-new-laptop-chips-and-a-heavy-focus-on-gaming-but-will-it-be-enough-to-make-arm-cpus-a-viable-alternative">designed by NVIDIA</a>. These chips generate enormous amounts of heat when processing AI workloads.</p><p>Historically, many data centers have relied on cooling towers that use water evaporation to remove heat. While effective, the process can consume millions of gallons of water annually.</p><p>As AI models become larger and more powerful, <a href="https://www.lincolninst.edu/publications/land-lines-magazine/articles/land-water-impacts-data-centers/" target="_blank">cooling demands have increased alongside them</a>, turning water consumption into one of the most controversial aspects of the AI boom.</p><p>The issue has become especially sensitive in regions already facing water shortages or drought conditions.</p><h2 id="nvidia-s-new-approach">NVIDIA's new approach </h2><p>According to NVIDIA, its latest cooling system <a href="https://blogs.nvidia.com/blog/liquid-cooling-ai-factories/" target="_blank">circulates warm liquid directly around AI hardware at temperatures reaching approximately 45°C (113°F)</a>.</p><p>Rather than relying on traditional cooling towers, the warmer liquid can be paired with dry coolers, which function more like large radiators and do not require significant water consumption.</p><p>NVIDIA says this could <a href="https://blogs.nvidia.com/blog/liquid-cooling-ai-factories/">r</a>educe facility cooling water use from roughly 2.6 million gallons per megawatt annually to nearly zero in favorable climates.</p><p>The company also argues that operating at higher liquid temperatures improves overall energy efficiency while creating opportunities to reuse waste heat elsewhere.</p><p>In other words, NVIDIA's goal is o redesign the entire thermal management process around water conservation.</p><h2 id="the-important-caveat">The important caveat  </h2><p>The company's claims primarily address one specific category of water use: cooling. And while that matters, cooling isn't the only way AI consumes water. </p><p>Water is also used throughout the broader AI supply chain, including electricity generation, semiconductor manufacturing and data center construction.</p><p>Even if cooling water usage falls dramatically, AI systems still carry an environmental footprint beyond the walls of the data center itself.</p><p>Of course, there's also the question of scale. AI demand continues to grow at an extraordinary pace. Critics argue that <a href="https://www.tomshardware.com/tech-industry/ai-is-set-to-consume-up-to-600-billion-gallons-of-water-by-2030-rising-energy-consumption-primarily-to-blame-as-data-center-power-demands-rise" target="_blank">efficiency gains can sometimes be offset by rapid expansion</a>, meaning total resource consumption may continue rising even as individual facilities become more efficient.</p><h2 id="why-this-matters">Why this matters  </h2><p>The industry's largest companies are now under pressure to demonstrate that future AI growth can occur without placing unsustainable demands on water and energy resources. NVIDIA is not alone here — <a href="https://www.tomshardware.com/tech-industry/big-tech/microsoft-ceo-says-new-ai-data-centers-use-as-little-water-annually-as-a-restaurant-closed-loop-cooling-system-aims-to-slash-consumption-from-millions-of-gallons-as-ai-infrastructure-faces-mounting-environmental-scrutiny" target="_blank">Microsoft has made similar zero-water cooling claims</a> for its newest data centers.</p><p>NVIDIA isn't claiming that AI no longer has an environmental footprint. Instead, it's targeting one of the most visible concerns surrounding modern data centers: water-intensive cooling system</p><p>Whether NVIDIA's approach becomes the new standard remains to be seen, but it offers a glimpse of how the industry may attempt to address one of its most persistent criticisms.</p><a href="https://follow.it/articles-by-amanda-caswell-tom-s-guide?leanpub" class="button button--large button--primary">Follow Amanda Caswell and stay ahead of the AI curve</a><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/ai/anthropic-will-pay-workers-usd85-000-to-learn-ai-and-it-reveals-the-next-big-ai-job-trend">Anthropic will pay workers $85,000 to learn AI — and it reveals the next big AI job trend</a></li><li><a href="https://www.tomsguide.com/ai/anthropics-fable-five-ban-exposed-ais-next-big-problem-but-sakanas-fugu-may-have-the-answer">Anthropic's Fable 5 ban exposed AI's next big problem — but Sakana's Fugu may have the answer</a></li><li><a href="https://www.tomsguide.com/ai/is-your-job-ai-resilient-find-your-risk-score-with-our-career-calculator">Is your job 'AI-resilient'? Find your risk score with our career calculator</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/ai/nvidia-claims-its-new-ai-data-centers-use-almost-no-water-heres-what-that-actually-means</link>
                                                                            <description>
                            <![CDATA[ NVIDIA says its new AI data centers can use almost no water thanks to advanced liquid cooling. Here's how the technology works and whether it really solves AI's growing environmental problem. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">7uh2GC6NaFEAuyXazX5Zp</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/JsjUeAN9AybsfyYfuATxUE-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 24 Jun 2026 18:45:30 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[AI]]></category>
                                                                                                <author><![CDATA[ amanda.caswell@futurenet.com (Amanda Caswell) ]]></author>                    <dc:creator><![CDATA[ Amanda Caswell ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/zYjevim2q7FjQiefqpjZRB-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/JsjUeAN9AybsfyYfuATxUE-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Nvidia]]></media:description>                                                            <media:text><![CDATA[Nvidia]]></media:text>
                                <media:title type="plain"><![CDATA[Nvidia]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/JsjUeAN9AybsfyYfuATxUE-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Training and running AI models requires <a href="https://www.tomsguide.com/ai/the-ai-boom-is-driving-up-electricity-bills-heres-what-you-need-to-know">enormous amounts of computing power</a>, and keeping those powerful chips cool often means consuming large amounts of water. It's become a growing source of concern as tech companies build <a href="https://www.tomsguide.com/ai/this-ai-data-center-will-be-bigger-than-2-000-walmarts-and-dump-23-atom-bombs-worth-of-energy-into-the-environment-every-day-and-locals-are-terrified">massive AI data centers </a>across the United States.</p><p>Now NVIDIA says it has a solution. The company recently unveiled a <a href="https://blogs.nvidia.com/blog/liquid-cooling-ai-factories/" target="_blank">new liquid-cooling system</a> designed for its next-generation AI infrastructure that it claims could reduce cooling water consumption to nearly zero in certain environments.</p><p> The announcement arrives as <a href="https://www.tomsguide.com/ai/i-kept-hearing-that-ai-data-centers-are-draining-towns-dry-so-i-looked-at-the-evidence">public scrutiny of AI's environmental footprint continues to grow</a>, with communities questioning whether new data centers are placing too much strain on local resources.</p><p>So what exactly is NVIDIA proposing, and does it really solve AI's water problem?</p><h2 id="why-ai-data-centers-use-so-much-water">Why AI data centers use so much water  </h2><p>AI systems run on specialized chips called <a href="https://www.tomsguide.com/news/the-top-gpus-just-fell-below-msrp-should-you-buy-now">GPUs</a>, many of which are <a href="https://www.tomsguide.com/computing/laptops/nvidia-is-returning-to-its-roots-with-new-laptop-chips-and-a-heavy-focus-on-gaming-but-will-it-be-enough-to-make-arm-cpus-a-viable-alternative">designed by NVIDIA</a>. These chips generate enormous amounts of heat when processing AI workloads.</p><p>Historically, many data centers have relied on cooling towers that use water evaporation to remove heat. While effective, the process can consume millions of gallons of water annually.</p><p>As AI models become larger and more powerful, <a href="https://www.lincolninst.edu/publications/land-lines-magazine/articles/land-water-impacts-data-centers/" target="_blank">cooling demands have increased alongside them</a>, turning water consumption into one of the most controversial aspects of the AI boom.</p><p>The issue has become especially sensitive in regions already facing water shortages or drought conditions.</p><h2 id="nvidia-s-new-approach">NVIDIA's new approach </h2><p>According to NVIDIA, its latest cooling system <a href="https://blogs.nvidia.com/blog/liquid-cooling-ai-factories/" target="_blank">circulates warm liquid directly around AI hardware at temperatures reaching approximately 45°C (113°F)</a>.</p><p>Rather than relying on traditional cooling towers, the warmer liquid can be paired with dry coolers, which function more like large radiators and do not require significant water consumption.</p><p>NVIDIA says this could <a href="https://blogs.nvidia.com/blog/liquid-cooling-ai-factories/">r</a>educe facility cooling water use from roughly 2.6 million gallons per megawatt annually to nearly zero in favorable climates.</p><p>The company also argues that operating at higher liquid temperatures improves overall energy efficiency while creating opportunities to reuse waste heat elsewhere.</p><p>In other words, NVIDIA's goal is o redesign the entire thermal management process around water conservation.</p><h2 id="the-important-caveat">The important caveat  </h2><p>The company's claims primarily address one specific category of water use: cooling. And while that matters, cooling isn't the only way AI consumes water. </p><p>Water is also used throughout the broader AI supply chain, including electricity generation, semiconductor manufacturing and data center construction.</p><p>Even if cooling water usage falls dramatically, AI systems still carry an environmental footprint beyond the walls of the data center itself.</p><p>Of course, there's also the question of scale. AI demand continues to grow at an extraordinary pace. Critics argue that <a href="https://www.tomshardware.com/tech-industry/ai-is-set-to-consume-up-to-600-billion-gallons-of-water-by-2030-rising-energy-consumption-primarily-to-blame-as-data-center-power-demands-rise" target="_blank">efficiency gains can sometimes be offset by rapid expansion</a>, meaning total resource consumption may continue rising even as individual facilities become more efficient.</p><h2 id="why-this-matters">Why this matters  </h2><p>The industry's largest companies are now under pressure to demonstrate that future AI growth can occur without placing unsustainable demands on water and energy resources. NVIDIA is not alone here — <a href="https://www.tomshardware.com/tech-industry/big-tech/microsoft-ceo-says-new-ai-data-centers-use-as-little-water-annually-as-a-restaurant-closed-loop-cooling-system-aims-to-slash-consumption-from-millions-of-gallons-as-ai-infrastructure-faces-mounting-environmental-scrutiny" target="_blank">Microsoft has made similar zero-water cooling claims</a> for its newest data centers.</p><p>NVIDIA isn't claiming that AI no longer has an environmental footprint. Instead, it's targeting one of the most visible concerns surrounding modern data centers: water-intensive cooling system</p><p>Whether NVIDIA's approach becomes the new standard remains to be seen, but it offers a glimpse of how the industry may attempt to address one of its most persistent criticisms.</p><a href="https://follow.it/articles-by-amanda-caswell-tom-s-guide?leanpub" class="button button--large button--primary">Follow Amanda Caswell and stay ahead of the AI curve</a><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/ai/anthropic-will-pay-workers-usd85-000-to-learn-ai-and-it-reveals-the-next-big-ai-job-trend">Anthropic will pay workers $85,000 to learn AI — and it reveals the next big AI job trend</a></li><li><a href="https://www.tomsguide.com/ai/anthropics-fable-five-ban-exposed-ais-next-big-problem-but-sakanas-fugu-may-have-the-answer">Anthropic's Fable 5 ban exposed AI's next big problem — but Sakana's Fugu may have the answer</a></li><li><a href="https://www.tomsguide.com/ai/is-your-job-ai-resilient-find-your-risk-score-with-our-career-calculator">Is your job 'AI-resilient'? Find your risk score with our career calculator</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Nvidia RTX Spark vs Apple M5 Pro: Which laptop chip could win in 2026? ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Apple’s Mac lineup has gone from strength to strength since the rollout of its own Apple Silicon chips beginning with the M1, and while other manufacturers are catching up, it may have its most impressive rival yet.</p><p>Nvidia’s new RTX Spark leans on the company’s strengths in AI, gaming, and creative applications, and while it’s not out yet, it could<a href="https://www.tomsguide.com/computing/gaming-laptops/all-8-laptops-launching-with-nvidia-rtx-spark-this-fall-and-what-they-can-do"> supercharge the Windows laptop</a> in a similar fashion to Apple’s own revolution in 2020.</p><p>Here’s all we know about each, and which could come out on top.</p><h2 id="release">Release</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="z8QnA8sSHYRpcmCTadYtbB" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/z8QnA8sSHYRpcmCTadYtbB-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The RTX Spark was <a href="https://www.tomsguide.com/computing/cpus/nvidia-rtx-spark-is-here-and-no-its-not-called-n1x-everything-you-need-to-know-about-the-super-chip-thats-about-to-change-laptops-forever">revealed at Computex 2026</a>, and we've <a href="https://www.tomsguide.com/computing/laptops/ive-gone-hands-on-with-every-nvidia-rtx-spark-laptop-coming-this-fall-heres-my-ranked-list-of-the-best-options">already had some early hands-on time with it</a>. The chip will roll out via manufacturers including Asus, Dell, MSI, and more in the coming months.</p><p>It’ll also come to the Microsoft Surface Laptop Ultra, with Acer and Gigabyte expected to follow. Sadly, because it’s not on sale yet, we don’t have an idea of what the final prices on these machines will be. Expect them to be high.</p><p>The M5 Pro, <a href="https://www.tomsguide.com/computing/macbooks/macbook-pro-16-inch-m5-pro-review">Apple’s latest and greatest laptop chip</a>, can be found starting at $2199. That’s a steep cost, but it only gets steeper if you’re looking for more memory or storage.</p><h2 id="specs">Specs</h2><div ><table><tbody><tr><td class="firstcol empty" ></td><td  ></td><td  ></td></tr><tr><td class="firstcol " ><p><strong>Manufacturer</strong></p></td><td  ><p>Nvidia</p></td><td  ><p>Apple</p></td></tr><tr><td class="firstcol " ><p><strong>Launch Date</strong></p></td><td  ><p>Late 2026</p></td><td  ><p>March 2026</p></td></tr><tr><td class="firstcol " ><p><strong>CPU</strong></p></td><td  ><p>20-core</p></td><td  ><p>14-core and 12-core options</p></td></tr><tr><td class="firstcol " ><p><strong>GPU</strong></p></td><td  ><p>Blackwell architecture</p></td><td  ><p>20-core and 14-core options</p></td></tr><tr><td class="firstcol " ><p><strong>Max Unified Memory</strong></p></td><td  ><p>Options up to 128GB</p></td><td  ><p>Options up to 64GB</p></td></tr><tr><td class="firstcol " ><p><strong>OS</strong></p></td><td  ><p>Windows 11</p></td><td  ><p>macOS Tahoe</p></td></tr></tbody></table></div><h2 id="what-s-in-a-chip">What’s in a chip?</h2><p>As you might expect, Nvidia’s new chip is built to take advantage of the company’s expertise across the likes of AI and graphical prowess.</p><p>To that end, the company hasn’t been shy about reaching out to partners like Microsoft and Adobe. RTX Spark, thanks to its development in partnership with Microsoft, will allow the first Windows PC models “purpose-built for personal agents”. OpenClaw users, rejoice!</p><p>Nvidia has also been working with Adobe to make its suite of professional apps, like Photoshop and Premiere, run even better on RTX Spark. The result (with the caveat of us not having tested it yet) is two times the AI and graphics performance.</p><p>It’s worth noting that Apple also trots out Adobe numbers when talking about its Mac chips, stating the M5 Pro and Max models offer a 35% increase in capabilities from the prior generation.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="4mJKUYNF7nfUQ7tB5tfQaS" name="Apple M5 Pro and M5 Max" alt="Apple M5 Pro and M5 Max" src="https://cdn.mos.cms.futurecdn.net/4mJKUYNF7nfUQ7tB5tfQaS-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>We’re expecting big things for GPU performance, too. The Blackwell architecture from the RTX 50-series of GPUs is found in the onboard GPU, and that means plenty of CUDA cores that could, at least in theory, mean features like DLSS 4.5 could come to RTX Spark.</p><p>Apple does boast improved graphical performance for the Mac lineup with each iteration, but it would be fair to say that its ecosystem doesn’t support as many titles. With that in mind, gamers will likely prefer the RTX Spark.</p><p>The CPU on Apple’s chip supports up to 64GB of RAM, but the RTX Spark can reach as high as 128GB. Expect to pay handsomely for it, but it might make it a no-brainer if you’re using your laptop for complex AI compute tasks. </p><h2 id="bottom-line">Bottom line</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="NC4Vevw7coKXAFTkqRDdYP" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/NC4Vevw7coKXAFTkqRDdYP-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Watching these two chips go head-to-head in the next generation of devices (<a href="https://www.tomsguide.com/computing/laptops/macbook-ultra-everything-we-know-so-far">MacBook Ultra</a>, anyone?) is going to be fascinating, but it seems pretty clear-cut to me where the dividing lines will be.</p><p>Anyone who wants raw power for things like gaming or demanding creative work is going to be leaning towards the RTX Spark. Meanwhile, those looking for streamlined efficiency and battery life will still be suited to a MacBook. While Nvidia's chip will win on raw power, it will still run Windows inside a laptop developed by a third party. Apple's unification will be its remaining strength.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ORVdvO"></div>                            </div>                            <script src="https://kwizly.com/embed/ORVdvO.js" async></script><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/best-of-computex-2026">Best of Computex 2026: The 17 greatest gadgets from the world’s largest computing show</a></li><li><a href="https://www.tomsguide.com/computing/gpus/amd-radeon-rx-9070-gre-review">I gamed for 250 hours on AMD Radeon RX 9070 GRE — it’s a $549 nightmare for Nvidia’s RTX 5060 Ti</a></li><li><a href="https://www.tomsguide.com/gaming/handheld-gaming/msi-claw-8-ex-ai-plus-hands-on-review">I just tested the MSI Claw 8 EX AI+ — it leaves ROG Xbox Ally in the dust with breakthrough Intel Arc G3 power</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/nvidia-rtx-spark-vs-apple-m5-pro-which-laptop-chip-could-win-in-2026</link>
                                                                            <description>
                            <![CDATA[ Apple Silicon has been transformative for Mac users, but could the RTX Spark be even better? ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">pQomCXaejjbG4H4N55kLhg</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/8JaTbLhe3FEvMBkfYzH9oR-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 08 Jun 2026 09:44:49 +0000</pubDate>                                                                                                                                <updated>Mon, 08 Jun 2026 09:44:53 +0000</updated>
                                                                                                                                            <category><![CDATA[Computing]]></category>
                                                                                                                    <dc:creator><![CDATA[ Lloyd Coombes ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/xcWocVTwa9yiwXRs559XNA-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Lloyd Coombes is a freelance tech and fitness writer. He&#039;s an expert in all things Apple as well as in computer and gaming tech, with previous works published on TechRadar, Tom&#039;s Guide, Live Science and more. You&#039;ll find him regularly testing the latest MacBook or iPhone, but he spends most of his time writing about video games as Gaming Editor for the Daily Star. He also covers board games and virtual reality, just to round out the nerdy pursuits.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/8JaTbLhe3FEvMBkfYzH9oR-1920-80.jpg">
                                                            <media:credit><![CDATA[Tom&#039;s Guide/Nvidia/Apple/Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Nvidia Spark vs M5 Pro]]></media:description>                                                            <media:text><![CDATA[Nvidia Spark vs M5 Pro]]></media:text>
                                <media:title type="plain"><![CDATA[Nvidia Spark vs M5 Pro]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/8JaTbLhe3FEvMBkfYzH9oR-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Apple’s Mac lineup has gone from strength to strength since the rollout of its own Apple Silicon chips beginning with the M1, and while other manufacturers are catching up, it may have its most impressive rival yet.</p><p>Nvidia’s new RTX Spark leans on the company’s strengths in AI, gaming, and creative applications, and while it’s not out yet, it could<a href="https://www.tomsguide.com/computing/gaming-laptops/all-8-laptops-launching-with-nvidia-rtx-spark-this-fall-and-what-they-can-do"> supercharge the Windows laptop</a> in a similar fashion to Apple’s own revolution in 2020.</p><p>Here’s all we know about each, and which could come out on top.</p><h2 id="release">Release</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="z8QnA8sSHYRpcmCTadYtbB" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/z8QnA8sSHYRpcmCTadYtbB-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The RTX Spark was <a href="https://www.tomsguide.com/computing/cpus/nvidia-rtx-spark-is-here-and-no-its-not-called-n1x-everything-you-need-to-know-about-the-super-chip-thats-about-to-change-laptops-forever">revealed at Computex 2026</a>, and we've <a href="https://www.tomsguide.com/computing/laptops/ive-gone-hands-on-with-every-nvidia-rtx-spark-laptop-coming-this-fall-heres-my-ranked-list-of-the-best-options">already had some early hands-on time with it</a>. The chip will roll out via manufacturers including Asus, Dell, MSI, and more in the coming months.</p><p>It’ll also come to the Microsoft Surface Laptop Ultra, with Acer and Gigabyte expected to follow. Sadly, because it’s not on sale yet, we don’t have an idea of what the final prices on these machines will be. Expect them to be high.</p><p>The M5 Pro, <a href="https://www.tomsguide.com/computing/macbooks/macbook-pro-16-inch-m5-pro-review">Apple’s latest and greatest laptop chip</a>, can be found starting at $2199. That’s a steep cost, but it only gets steeper if you’re looking for more memory or storage.</p><h2 id="specs">Specs</h2><div ><table><tbody><tr><td class="firstcol empty" ></td><td  ></td><td  ></td></tr><tr><td class="firstcol " ><p><strong>Manufacturer</strong></p></td><td  ><p>Nvidia</p></td><td  ><p>Apple</p></td></tr><tr><td class="firstcol " ><p><strong>Launch Date</strong></p></td><td  ><p>Late 2026</p></td><td  ><p>March 2026</p></td></tr><tr><td class="firstcol " ><p><strong>CPU</strong></p></td><td  ><p>20-core</p></td><td  ><p>14-core and 12-core options</p></td></tr><tr><td class="firstcol " ><p><strong>GPU</strong></p></td><td  ><p>Blackwell architecture</p></td><td  ><p>20-core and 14-core options</p></td></tr><tr><td class="firstcol " ><p><strong>Max Unified Memory</strong></p></td><td  ><p>Options up to 128GB</p></td><td  ><p>Options up to 64GB</p></td></tr><tr><td class="firstcol " ><p><strong>OS</strong></p></td><td  ><p>Windows 11</p></td><td  ><p>macOS Tahoe</p></td></tr></tbody></table></div><h2 id="what-s-in-a-chip">What’s in a chip?</h2><p>As you might expect, Nvidia’s new chip is built to take advantage of the company’s expertise across the likes of AI and graphical prowess.</p><p>To that end, the company hasn’t been shy about reaching out to partners like Microsoft and Adobe. RTX Spark, thanks to its development in partnership with Microsoft, will allow the first Windows PC models “purpose-built for personal agents”. OpenClaw users, rejoice!</p><p>Nvidia has also been working with Adobe to make its suite of professional apps, like Photoshop and Premiere, run even better on RTX Spark. The result (with the caveat of us not having tested it yet) is two times the AI and graphics performance.</p><p>It’s worth noting that Apple also trots out Adobe numbers when talking about its Mac chips, stating the M5 Pro and Max models offer a 35% increase in capabilities from the prior generation.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="4mJKUYNF7nfUQ7tB5tfQaS" name="Apple M5 Pro and M5 Max" alt="Apple M5 Pro and M5 Max" src="https://cdn.mos.cms.futurecdn.net/4mJKUYNF7nfUQ7tB5tfQaS-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>We’re expecting big things for GPU performance, too. The Blackwell architecture from the RTX 50-series of GPUs is found in the onboard GPU, and that means plenty of CUDA cores that could, at least in theory, mean features like DLSS 4.5 could come to RTX Spark.</p><p>Apple does boast improved graphical performance for the Mac lineup with each iteration, but it would be fair to say that its ecosystem doesn’t support as many titles. With that in mind, gamers will likely prefer the RTX Spark.</p><p>The CPU on Apple’s chip supports up to 64GB of RAM, but the RTX Spark can reach as high as 128GB. Expect to pay handsomely for it, but it might make it a no-brainer if you’re using your laptop for complex AI compute tasks. </p><h2 id="bottom-line">Bottom line</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="NC4Vevw7coKXAFTkqRDdYP" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/NC4Vevw7coKXAFTkqRDdYP-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Watching these two chips go head-to-head in the next generation of devices (<a href="https://www.tomsguide.com/computing/laptops/macbook-ultra-everything-we-know-so-far">MacBook Ultra</a>, anyone?) is going to be fascinating, but it seems pretty clear-cut to me where the dividing lines will be.</p><p>Anyone who wants raw power for things like gaming or demanding creative work is going to be leaning towards the RTX Spark. Meanwhile, those looking for streamlined efficiency and battery life will still be suited to a MacBook. While Nvidia's chip will win on raw power, it will still run Windows inside a laptop developed by a third party. Apple's unification will be its remaining strength.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ORVdvO"></div>                            </div>                            <script src="https://kwizly.com/embed/ORVdvO.js" async></script><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/best-of-computex-2026">Best of Computex 2026: The 17 greatest gadgets from the world’s largest computing show</a></li><li><a href="https://www.tomsguide.com/computing/gpus/amd-radeon-rx-9070-gre-review">I gamed for 250 hours on AMD Radeon RX 9070 GRE — it’s a $549 nightmare for Nvidia’s RTX 5060 Ti</a></li><li><a href="https://www.tomsguide.com/gaming/handheld-gaming/msi-claw-8-ex-ai-plus-hands-on-review">I just tested the MSI Claw 8 EX AI+ — it leaves ROG Xbox Ally in the dust with breakthrough Intel Arc G3 power</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I’ve gone hands-on with every Nvidia RTX Spark laptop coming this fall — here’s my brutal tier list of the best options ]]></title>
                                                                                                <dc:content><![CDATA[ <p>I’ve <a href="https://www.tomsguide.com/computing/laptops/nvidia-rtx-spark-hands-on-review">tested Nvidia’s RTX Spark laptop chip</a> (spoiler alert: it’s mindblowing), and now I’ve gone hands-on with every single laptop launching in just a few months time to set up a ranked list.</p><p>Eight premium notebooks are launching — each with their own unique features and quirks that I’m keen to share, so that when the launch date arrives, you know which one is best for you. Of course, this is personal preference, and certain systems I put in a lower grade may be better suited for you!</p><p>These are all incredible-feeling laptops, but grading them allowed me to get brutally honest with where I’d put them. So without further ado, let’s get into it.</p><p>While the Microsoft Surface Laptop was used in the demos, other models were turned off. This was something Nvidia required to ensure journalists (like me) don’t sneakily benchmark the laptops! That being said, these notebooks are basically pre-existing laptops but with RTX Spark inside and some tweaked cooling, so I can use past experience to fill in some gaps.</p><h2 class="article-body__section" id="section-nvidia-rtx-spark-laptops-tier-list"><span>Nvidia RTX Spark laptops: Tier list</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1140px;"><p class="vanilla-image-block" style="padding-top:37.81%;"><img id="mJb5YxRUzGmz9tSeR284He" name="Nvidia RTX Spark laptops" alt="Nvidia RTX Spark laptops" src="https://cdn.mos.cms.futurecdn.net/mJb5YxRUzGmz9tSeR284He-1920-80.png" mos="" align="middle" fullscreen="1" width="1140" height="431" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/mJb5YxRUzGmz9tSeR284He-1920-80.png' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tier Maker)</span></figcaption></figure><h2 class="article-body__section" id="section-s-tier-microsoft-surface-laptop-ultra-and-asus-proart-p14"><span>S-Tier: Microsoft Surface Laptop Ultra and Asus ProArt P14</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="C77AV3dtd7mJBPRExw6wgS" name="Microsoft Surface Laptop Ultra" alt="Microsoft Surface Laptop Ultra" src="https://cdn.mos.cms.futurecdn.net/C77AV3dtd7mJBPRExw6wgS-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I’ve already shared my experience with the <a href="https://www.tomsguide.com/computing/laptops/microsoft-surface-laptop-ultra-rtx-spark-hands-on-review">Microsoft Surface Laptop Ultra</a> — it’s a spectacular-feeling laptop in terms of a premium build quality, fantastic mini LED screen, tactile keyboard and a utilitarian aesthetic. </p><p>But the big showcase feature here (that no other Spark system has) is that breakthrough touchpad, which is able to communicate back to you with haptics across the UI. It’s a unique sensation like when snapping apps to the sides of the screen.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6000px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="svYgwSEYH6hUH2SojJWJ4h" name="Asus ProArt P14" alt="Asus ProArt P14" src="https://cdn.mos.cms.futurecdn.net/svYgwSEYH6hUH2SojJWJ4h-1920-80.jpg" mos="" align="middle" fullscreen="" width="6000" height="3376" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>That being said, it is a 16-inch beast of a system, and the reason why I love my 14-inch MacBook Pro is the power paired with portability. Enter the Asus ProArt P14, and when I say Apple’s pro notebook is in trouble, this is the most direct competition to it in terms of premium build, fantastic ergonomics, port array and that RTX Spark chip.</p><p>Throw in an OLED display, and you’ve got a phenomenal ultraportable that I’d be willing to trade off a little bit of battery life to get — but hopefully Nvidia’s “all-day battery life” comes true to make this less of a fear.</p><h2 class="article-body__section" id="section-a-tier-msi-prestige-flip-n16-ai-asus-proart-p16-and-hp-omnibook-x-14"><span>A-Tier: MSI Prestige Flip N16 AI+, Asus ProArt P16 and HP Omnibook X 14</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6000px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="Kmwwr3Vtt95ryTAg7KUWK6" name="MSI Prestige N16 Flip AI+" alt="MSI Prestige N16 Flip AI+" src="https://cdn.mos.cms.futurecdn.net/Kmwwr3Vtt95ryTAg7KUWK6-1920-80.jpg" mos="" align="middle" fullscreen="" width="6000" height="3376" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Kicking off with the Prestige Flip N16 AI+, I’ve already gone hands-on with the Intel version of this system back at CES 2026, and I’m a huge fan of it. This is the only 2-in-1 in the lineup, and that flippable hinge has a smooth glide and strong staying power at all angles.</p><p>On top of that, the touchscreen OLED panel on the pre-existing model is gorgeous; the keyboard is nicely tactile; and the touchpad is absolutely massive. Plus, there’s a stylus stowed in the bottom of the shell magnetically.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="sEh32KCDXP8aSTmojUTnKD" name="proart listing.jpg" alt="Asus ProArt P16" src="https://cdn.mos.cms.futurecdn.net/sEh32KCDXP8aSTmojUTnKD-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Then there’s the ProArt P16 from Asus, which is the same as that P14, but only bigger. If 16 inches is more than your speed, this is a fantastic option. But I’ll always opt for something more portable.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6000px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="vpp6XKHmGcKfPZ2FcgZaGM" name="HP Omnibook X 14" alt="HP Omnibook X 14" src="https://cdn.mos.cms.futurecdn.net/vpp6XKHmGcKfPZ2FcgZaGM-1920-80.jpg" mos="" align="middle" fullscreen="" width="6000" height="3376" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>And finally in the A-tier is the HP Omnibook X 14, which immediately tickled my inner love for 14-inch laptops. Premium build quality, good I/O and a top notch OLED panel up top — so why the lower grade? Well, it comes down to that keyboard. </p><p>Whenever I’m typing on laptop boards, I’m more of a fan of a subtle dish that my fingers can fall into, whereas the keys on here are much more pronounced. It definitely has its fans, but I’m a little more mixed towards them.</p><h2 class="article-body__section" id="section-b-tier-hp-omnibook-16-ultra-lenovo-yoga-pro-9n-and-dell-xps-16-creator-edition"><span>B-Tier: HP Omnibook 16 Ultra, Lenovo Yoga Pro 9N and Dell XPS 16 Creator Edition</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6000px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="ACDMtYvoK4RDR8UGBNwSxW" name="HP Omnibook Ultra 16" alt="HP Omnibook Ultra 16" src="https://cdn.mos.cms.futurecdn.net/ACDMtYvoK4RDR8UGBNwSxW-1920-80.jpg" mos="" align="middle" fullscreen="" width="6000" height="3376" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Now for the B-tier. Again, not any real slight, and this is my way-too-early impressions based on holding the systems. But personal taste made this an easy decision.</p><p>The HP Omnibook 16 Ultra felt like the heaviest laptop of the bunch, and while it has all those same winning specs as other options like an OLED display and a ton of I/O, that keyboard has those odd raised keys again and the edges can feel a bit sharp on the wrists when leaning on this to type.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6000px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="B78uyvAzwTa98oZvQtfUJe" name="Lenovo Yoga Pro 9N" alt="Lenovo Yoga Pro 9N" src="https://cdn.mos.cms.futurecdn.net/B78uyvAzwTa98oZvQtfUJe-1920-80.jpg" mos="" align="middle" fullscreen="" width="6000" height="3376" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Next, the Lenovo Yoga Pro 9N. From my time going hands-on with the Yoga Pro 9i (the same laptop shell), it’s a real prosumer piece of hardware with a nice aluminum build and those classic Lenovo ergonomics (a phenomenal keyboard for example). </p><p>But amongst a bunch of laptops that have some real unique elements that make these devices shine, it’s a rather unremarkable option. Not to say that’s a bad thing — I’m all for laptops that nail the fundamentals, but some just reinvent those fundamentals.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6000px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="nf8FAGxBWRPUavE54fkcum" name="Dell XPS 16 Creator Edition" alt="Dell XPS 16 Creator Edition" src="https://cdn.mos.cms.futurecdn.net/nf8FAGxBWRPUavE54fkcum-1920-80.jpg" mos="" align="middle" fullscreen="" width="6000" height="3376" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>And then, there’s the Dell XPS 16 Creator Edition. In many ways, this is very much a Surface Laptop Ultra alternative, and another chapter in the book of Dell’s XPS apology tour for ditching the brand for a weird year back in 2024. The screen’s great, the touchpad is massive, and the I/O is plentiful. </p><p>My only main gripe is the keyboard — chiclet keys with no gaps between them. In my time testing XPS 16s of old, it took me a while to get used to a board like this, and I found myself often losing my place and making a couple of spelling errors.</p><h2 class="article-body__section" id="section-outlook"><span>Outlook</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="z8QnA8sSHYRpcmCTadYtbB" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/z8QnA8sSHYRpcmCTadYtbB-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Of course, there's a lot more we need to find out first — not just actually testing these systems, but the big question of price. In a Q&A session, <a href="https://www.tomsguide.com/computing/i-spoke-to-nvidia-ceo-jensen-huang-about-rtx-spark-he-is-willing-to-work-on-an-rtx-gaming-handheld-n2x-and-n3x-are-already-planned-and-the-chip-is-more-like-r2d2-than-a-laptop-cpu">Nvidia CEO Jensen Huang</a> did say this is the top-tier chip as part of a whole family.</p><p>That does mean we could get cheaper, lower-end models too. But looking at what we tested, we can get a somewhat decent guess of the price based on the fact its essentially the same silicon (and RAM) as the DGX Spark mini AI PC — a device that costs $5,000.</p><p>So if you want the top-tier model, this could get real pricey! But all I can say is I hope there are more reasonably priced RTX Spark laptops, which in the midst of <a href="https://www.tomsguide.com/computing/ram-price-crisis-2026-everything-you-need-to-know">RAMageddon</a> may be tricky.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/best-of-computex-2026">Best of Computex 2026: The 17 greatest gadgets from the world’s largest computing show</a></li><li><a href="https://www.tomsguide.com/computing/gpus/amd-radeon-rx-9070-gre-review">I gamed for 250 hours on AMD Radeon RX 9070 GRE — it’s a $549 nightmare for Nvidia’s RTX 5060 Ti</a></li><li><a href="https://www.tomsguide.com/gaming/handheld-gaming/msi-claw-8-ex-ai-plus-hands-on-review">I just tested the MSI Claw 8 EX AI+ — it leaves ROG Xbox Ally in the dust with breakthrough Intel Arc G3 power</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/laptops/ive-gone-hands-on-with-every-nvidia-rtx-spark-laptop-coming-this-fall-heres-my-ranked-list-of-the-best-options</link>
                                                                            <description>
                            <![CDATA[ I’ve tested Nvidia’s RTX Spark laptop chip (spoiler alert: it’s mindblowing), and now I’ve gone hands-on with every single laptop launching in just a few months time to set up a ranked list. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">e3p4SRsphKxDyQu3xXYANJ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/qaK2LNXYk9Ue4n3xcRv2cP-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 05 Jun 2026 04:15:00 +0000</pubDate>                                                                                                                                <updated>Fri, 05 Jun 2026 05:30:03 +0000</updated>
                                                                                                                                            <category><![CDATA[Laptops]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jason England ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/v4fSq5U4uZUEtGY2BwNuJ6-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jason brings a decade of tech and gaming journalism experience to his role as a Managing Editor of Computing at Tom&#039;s Guide. He has previously written for Laptop Mag, Tom&#039;s Hardware, Kotaku, Stuff and BBC Science Focus. In his spare time, you&#039;ll find Jason looking for good dogs to pet or thinking about eating pizza if he isn&#039;t already.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/qaK2LNXYk9Ue4n3xcRv2cP-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Nvidia RTX Spark]]></media:description>                                                            <media:text><![CDATA[Nvidia RTX Spark]]></media:text>
                                <media:title type="plain"><![CDATA[Nvidia RTX Spark]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/qaK2LNXYk9Ue4n3xcRv2cP-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I’ve <a href="https://www.tomsguide.com/computing/laptops/nvidia-rtx-spark-hands-on-review">tested Nvidia’s RTX Spark laptop chip</a> (spoiler alert: it’s mindblowing), and now I’ve gone hands-on with every single laptop launching in just a few months time to set up a ranked list.</p><p>Eight premium notebooks are launching — each with their own unique features and quirks that I’m keen to share, so that when the launch date arrives, you know which one is best for you. Of course, this is personal preference, and certain systems I put in a lower grade may be better suited for you!</p><p>These are all incredible-feeling laptops, but grading them allowed me to get brutally honest with where I’d put them. So without further ado, let’s get into it.</p><p>While the Microsoft Surface Laptop was used in the demos, other models were turned off. This was something Nvidia required to ensure journalists (like me) don’t sneakily benchmark the laptops! That being said, these notebooks are basically pre-existing laptops but with RTX Spark inside and some tweaked cooling, so I can use past experience to fill in some gaps.</p><h2 class="article-body__section" id="section-nvidia-rtx-spark-laptops-tier-list"><span>Nvidia RTX Spark laptops: Tier list</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1140px;"><p class="vanilla-image-block" style="padding-top:37.81%;"><img id="mJb5YxRUzGmz9tSeR284He" name="Nvidia RTX Spark laptops" alt="Nvidia RTX Spark laptops" src="https://cdn.mos.cms.futurecdn.net/mJb5YxRUzGmz9tSeR284He-1920-80.png" mos="" align="middle" fullscreen="1" width="1140" height="431" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/mJb5YxRUzGmz9tSeR284He-1920-80.png' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tier Maker)</span></figcaption></figure><h2 class="article-body__section" id="section-s-tier-microsoft-surface-laptop-ultra-and-asus-proart-p14"><span>S-Tier: Microsoft Surface Laptop Ultra and Asus ProArt P14</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="C77AV3dtd7mJBPRExw6wgS" name="Microsoft Surface Laptop Ultra" alt="Microsoft Surface Laptop Ultra" src="https://cdn.mos.cms.futurecdn.net/C77AV3dtd7mJBPRExw6wgS-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I’ve already shared my experience with the <a href="https://www.tomsguide.com/computing/laptops/microsoft-surface-laptop-ultra-rtx-spark-hands-on-review">Microsoft Surface Laptop Ultra</a> — it’s a spectacular-feeling laptop in terms of a premium build quality, fantastic mini LED screen, tactile keyboard and a utilitarian aesthetic. </p><p>But the big showcase feature here (that no other Spark system has) is that breakthrough touchpad, which is able to communicate back to you with haptics across the UI. It’s a unique sensation like when snapping apps to the sides of the screen.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6000px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="svYgwSEYH6hUH2SojJWJ4h" name="Asus ProArt P14" alt="Asus ProArt P14" src="https://cdn.mos.cms.futurecdn.net/svYgwSEYH6hUH2SojJWJ4h-1920-80.jpg" mos="" align="middle" fullscreen="" width="6000" height="3376" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>That being said, it is a 16-inch beast of a system, and the reason why I love my 14-inch MacBook Pro is the power paired with portability. Enter the Asus ProArt P14, and when I say Apple’s pro notebook is in trouble, this is the most direct competition to it in terms of premium build, fantastic ergonomics, port array and that RTX Spark chip.</p><p>Throw in an OLED display, and you’ve got a phenomenal ultraportable that I’d be willing to trade off a little bit of battery life to get — but hopefully Nvidia’s “all-day battery life” comes true to make this less of a fear.</p><h2 class="article-body__section" id="section-a-tier-msi-prestige-flip-n16-ai-asus-proart-p16-and-hp-omnibook-x-14"><span>A-Tier: MSI Prestige Flip N16 AI+, Asus ProArt P16 and HP Omnibook X 14</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6000px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="Kmwwr3Vtt95ryTAg7KUWK6" name="MSI Prestige N16 Flip AI+" alt="MSI Prestige N16 Flip AI+" src="https://cdn.mos.cms.futurecdn.net/Kmwwr3Vtt95ryTAg7KUWK6-1920-80.jpg" mos="" align="middle" fullscreen="" width="6000" height="3376" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Kicking off with the Prestige Flip N16 AI+, I’ve already gone hands-on with the Intel version of this system back at CES 2026, and I’m a huge fan of it. This is the only 2-in-1 in the lineup, and that flippable hinge has a smooth glide and strong staying power at all angles.</p><p>On top of that, the touchscreen OLED panel on the pre-existing model is gorgeous; the keyboard is nicely tactile; and the touchpad is absolutely massive. Plus, there’s a stylus stowed in the bottom of the shell magnetically.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="sEh32KCDXP8aSTmojUTnKD" name="proart listing.jpg" alt="Asus ProArt P16" src="https://cdn.mos.cms.futurecdn.net/sEh32KCDXP8aSTmojUTnKD-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Then there’s the ProArt P16 from Asus, which is the same as that P14, but only bigger. If 16 inches is more than your speed, this is a fantastic option. But I’ll always opt for something more portable.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6000px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="vpp6XKHmGcKfPZ2FcgZaGM" name="HP Omnibook X 14" alt="HP Omnibook X 14" src="https://cdn.mos.cms.futurecdn.net/vpp6XKHmGcKfPZ2FcgZaGM-1920-80.jpg" mos="" align="middle" fullscreen="" width="6000" height="3376" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>And finally in the A-tier is the HP Omnibook X 14, which immediately tickled my inner love for 14-inch laptops. Premium build quality, good I/O and a top notch OLED panel up top — so why the lower grade? Well, it comes down to that keyboard. </p><p>Whenever I’m typing on laptop boards, I’m more of a fan of a subtle dish that my fingers can fall into, whereas the keys on here are much more pronounced. It definitely has its fans, but I’m a little more mixed towards them.</p><h2 class="article-body__section" id="section-b-tier-hp-omnibook-16-ultra-lenovo-yoga-pro-9n-and-dell-xps-16-creator-edition"><span>B-Tier: HP Omnibook 16 Ultra, Lenovo Yoga Pro 9N and Dell XPS 16 Creator Edition</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6000px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="ACDMtYvoK4RDR8UGBNwSxW" name="HP Omnibook Ultra 16" alt="HP Omnibook Ultra 16" src="https://cdn.mos.cms.futurecdn.net/ACDMtYvoK4RDR8UGBNwSxW-1920-80.jpg" mos="" align="middle" fullscreen="" width="6000" height="3376" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Now for the B-tier. Again, not any real slight, and this is my way-too-early impressions based on holding the systems. But personal taste made this an easy decision.</p><p>The HP Omnibook 16 Ultra felt like the heaviest laptop of the bunch, and while it has all those same winning specs as other options like an OLED display and a ton of I/O, that keyboard has those odd raised keys again and the edges can feel a bit sharp on the wrists when leaning on this to type.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6000px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="B78uyvAzwTa98oZvQtfUJe" name="Lenovo Yoga Pro 9N" alt="Lenovo Yoga Pro 9N" src="https://cdn.mos.cms.futurecdn.net/B78uyvAzwTa98oZvQtfUJe-1920-80.jpg" mos="" align="middle" fullscreen="" width="6000" height="3376" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Next, the Lenovo Yoga Pro 9N. From my time going hands-on with the Yoga Pro 9i (the same laptop shell), it’s a real prosumer piece of hardware with a nice aluminum build and those classic Lenovo ergonomics (a phenomenal keyboard for example). </p><p>But amongst a bunch of laptops that have some real unique elements that make these devices shine, it’s a rather unremarkable option. Not to say that’s a bad thing — I’m all for laptops that nail the fundamentals, but some just reinvent those fundamentals.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6000px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="nf8FAGxBWRPUavE54fkcum" name="Dell XPS 16 Creator Edition" alt="Dell XPS 16 Creator Edition" src="https://cdn.mos.cms.futurecdn.net/nf8FAGxBWRPUavE54fkcum-1920-80.jpg" mos="" align="middle" fullscreen="" width="6000" height="3376" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>And then, there’s the Dell XPS 16 Creator Edition. In many ways, this is very much a Surface Laptop Ultra alternative, and another chapter in the book of Dell’s XPS apology tour for ditching the brand for a weird year back in 2024. The screen’s great, the touchpad is massive, and the I/O is plentiful. </p><p>My only main gripe is the keyboard — chiclet keys with no gaps between them. In my time testing XPS 16s of old, it took me a while to get used to a board like this, and I found myself often losing my place and making a couple of spelling errors.</p><h2 class="article-body__section" id="section-outlook"><span>Outlook</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="z8QnA8sSHYRpcmCTadYtbB" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/z8QnA8sSHYRpcmCTadYtbB-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Of course, there's a lot more we need to find out first — not just actually testing these systems, but the big question of price. In a Q&A session, <a href="https://www.tomsguide.com/computing/i-spoke-to-nvidia-ceo-jensen-huang-about-rtx-spark-he-is-willing-to-work-on-an-rtx-gaming-handheld-n2x-and-n3x-are-already-planned-and-the-chip-is-more-like-r2d2-than-a-laptop-cpu">Nvidia CEO Jensen Huang</a> did say this is the top-tier chip as part of a whole family.</p><p>That does mean we could get cheaper, lower-end models too. But looking at what we tested, we can get a somewhat decent guess of the price based on the fact its essentially the same silicon (and RAM) as the DGX Spark mini AI PC — a device that costs $5,000.</p><p>So if you want the top-tier model, this could get real pricey! But all I can say is I hope there are more reasonably priced RTX Spark laptops, which in the midst of <a href="https://www.tomsguide.com/computing/ram-price-crisis-2026-everything-you-need-to-know">RAMageddon</a> may be tricky.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/best-of-computex-2026">Best of Computex 2026: The 17 greatest gadgets from the world’s largest computing show</a></li><li><a href="https://www.tomsguide.com/computing/gpus/amd-radeon-rx-9070-gre-review">I gamed for 250 hours on AMD Radeon RX 9070 GRE — it’s a $549 nightmare for Nvidia’s RTX 5060 Ti</a></li><li><a href="https://www.tomsguide.com/gaming/handheld-gaming/msi-claw-8-ex-ai-plus-hands-on-review">I just tested the MSI Claw 8 EX AI+ — it leaves ROG Xbox Ally in the dust with breakthrough Intel Arc G3 power</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I'm at Computex 2026 LIVE — testing every Nvidia RTX Spark laptop and so much more on day two ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="live-content"><p>We've reached day 2 of Computex 2026, and from holding every <a href="https://www.tomsguide.com/computing/laptops/nvidia-rtx-spark-hands-on-review">Nvidia RTX Spark</a> laptop to comparing all the new budget systems competing with the MacBook Neo, I have so much to update you on!</p><p>Beyond that, I got to talk to Nvidia CEO Jensen Huang about Spark, properly tested the <a href="https://www.tomsguide.com/gaming/handheld-gaming/watch-out-amd-intels-arc-g3-and-arc-g3-extreme-handheld-chips-expected-for-computex-reveal">Intel Arc G3 Extreme chip</a> in the <a href="https://www.tomsguide.com/gaming/handheld-gaming/msi-claw-8-ex-ai-plus-hands-on-review">MSI Claw 8 EX AI+</a> (spoiler alert: AMD gaming handhelds are cooked), and went on a mission to find every budget laptop that competes with the <a href="https://www.tomsguide.com/computing/macbooks/apple-macbook-neo-review">MacBook Neo</a>.</p><p>But that's not all, as my team is out here too — running around the exhibition center and finding all the best (and weirdest) tech of Computex. So follow along with us for all the latest.</p><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="5qk1l7" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><h3 class="article-body__section" id="section-read-the-latest-from-computex"><span>Read the latest from Computex</span></h3><ul><li><a href="https://www.tomsguide.com/computing/laptops/nvidia-rtx-spark-hands-on-review">I just tested Nvidia RTX Spark laptops for video editing, gaming and AI — and the MacBook Pro is in trouble</a></li><li><a href="https://www.tomsguide.com/computing/laptops/i-held-the-macbook-neo-in-one-hand-and-the-new-xps-13-in-the-other-and-dells-affordable-laptop-is-surprisingly-lighter">I held the MacBook Neo in one hand and the new XPS 13 in the other — and Dell’s affordable laptop is surprisingly lighter</a></li><li><a href="https://www.tomsguide.com/computing/laptops/microsoft-surface-laptop-ultra-rtx-spark-hands-on-review">I just tested Microsoft Surface Laptop Ultra — Nvidia RTX Spark brings life to one of the best laptops I’ve ever tried</a></li><li><a href="https://www.tomsguide.com/computing/i-spoke-to-nvidia-ceo-jensen-huang-about-rtx-spark-he-is-willing-to-work-on-an-rtx-gaming-handheld-n2x-and-n3x-are-already-planned-and-the-chip-is-more-like-r2d2-than-a-laptop-cpu">I spoke to Nvidia CEO Jensen Huang about RTX Spark — he is ‘willing to work’ on an RTX gaming handheld, N2X and N3X are already planned and the chip is 'more like R2D2’ than a laptop CPU</a></li><li><a href="https://www.tomsguide.com/gaming/handheld-gaming/msi-claw-8-ex-ai-plus-hands-on-review">I just tested the MSI Claw 8 EX AI+ — Intel Arc G3 is a breakthrough for handheld gaming, but at what cost?</a></li><li><a href="https://www.tomsguide.com/computing/monitors/i-thought-asus-massive-32-inch-oled-would-be-my-favorite-computex-2026-monitor-i-was-wrong">I thought Asus' massive 32-inch OLED would be my favorite Computex 2026 monitor — but I found one that was even better</a></li><li><a href="https://www.tomsguide.com/gaming/handheld-gaming/acer-predator-atlas-8-hands-on-review">I tested the Acer Predator Atlas 8, and played a game Intel told me not to — the numbers are staggering</a></li></ul><h3 class="article-body__section" id="section-live-updates"><span>LIVE UPDATES</span></h3></div><div class="live-content"><time datetime="2026-06-03T13:24:35+00:00">June 3, 2026 – 9:24 AM</time><h2 id="computex-is-still-going-strong">Computex is still going strong</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="uwYYSxecu43DVEHNSFodeX" name="Computex 2026" alt="Computex 2026" src="https://cdn.mos.cms.futurecdn.net/uwYYSxecu43DVEHNSFodeX-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Hey, all! Our Computex 2026 coverage is going strong as we're on the ground in Taipei checking out the latest and greatest from the computing world. Keep it locked here four all of our live updates and hands-on impressions.</p></div><div class="live-content"><time datetime="2026-06-03T13:33:35+00:00">June 3, 2026 – 9:33 AM</time><h2 id="rtx-spark-put-to-the-test">RTX Spark put to the test</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="EhWYmoygJ2EfpXBFi47X8P" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/EhWYmoygJ2EfpXBFi47X8P-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>We've had the opportunity to put Nvidia's RTX Spark to the test for video editing, gaming, and AI, and the results are... impressive. Now, the obvious caveat is that we don't know what these machines will <em>cost</em> once they arrive — but it should make Apple and its MacBook Pro a little more than nervous.</p><p>Here's what my colleague Jason had to say after he'd spent some time with Nvidia's new chip: "With Microsoft in tow, working in lockstep to rebuild Windows 11 for Nvidia's agentic vision for the future of computing, these are going to be some truly mighty notebooks that may very well revolutionize the Windows laptop and truly stand on their own as the future of computing."</p><ul><li><strong>Read the full story:</strong> <a href="https://www.tomsguide.com/computing/laptops/nvidia-rtx-spark-hands-on-review">I just tested Nvidia RTX Spark laptops for video editing, gaming and AI — and the MacBook Pro is in trouble</a></li></ul></div><div class="live-content"><time datetime="2026-06-03T13:42:06+00:00">June 3, 2026 – 9:42 AM</time><h2 id="msi-debuts-triple-mode-monitor">MSI debuts 'Triple Mode' monitor</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6000px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="HrTg3tCMgHBR5x54pkhcjC" name="DSC05695.JPG" alt="MSI Triple Mode QD-OLED Gaming Monitor" src="https://cdn.mos.cms.futurecdn.net/HrTg3tCMgHBR5x54pkhcjC-1920-80.jpg" mos="" align="middle" fullscreen="" width="6000" height="3376" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>This right here is the MSI MPG OLED 322URDX36. It's the first 31.5-inch, 4K 360Hz gaming monitor on the market to feature the 'Triple Mode' configuration technology. </p><p>It lets gamers switch freely between 4K 360Hz, 2K 520Hz, and FHD 680Hz based on their preferences — meeting the specific performance demands of various game genres. </p><p>The monitor rocks a peak HDR brightness of 1,500 nits and integrates an AI Care Sensor that "leverages accurate human detection to provide real-time OLED panel protection without compromising user privacy." Whatever that means.</p></div><div class="live-content"><time datetime="2026-06-03T14:03:41+00:00">June 3, 2026 – 10:03 AM</time><h2 id="could-microsoft-be-building-the-most-exciting-rtx-spark-laptop">Could Microsoft be building the most exciting RTX Spark laptop?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="jPf82R6ASS76yFSsoeyR4A" name="Surface Laptop Ultra lede" alt="Microsoft Surface Laptop Ultra" src="https://cdn.mos.cms.futurecdn.net/jPf82R6ASS76yFSsoeyR4A-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>Microsoft will be facing down the MacBook Pro with the Surface Laptop Ultra later this year, it's one of the <a href="https://www.tomsguide.com/computing/gaming-laptops/all-8-laptops-launching-with-nvidia-rtx-spark-this-fall-and-what-they-can-do">first eight laptops to arrive with Nvidia's RTX Spark</a> on board and it could be seriously impressive.</p><p>Microsoft claims this will be most powerful Surface it's ever built and there are a few specs we are already pretty confident about. For starters, it has a 15-inch mini-LED PixelSense Ultra display that can reportedly reach 2,000 nits of peak HDR brightness. There's also a full set of ports, including HDMI, USB-C, USB-A, an SD card reader, and a headphone jack. </p><p>The Surface Laptop Ultra will also reportedly have “all-day” battery life and you can expect it to come in Platinum and Nightfall finishes.</p><ul><li><strong>Read more:</strong> <a href="https://www.tomsguide.com/computing/laptops/microsofts-surface-laptop-ultra-packs-an-nvidia-spark-chip-and-it-could-be-a-macbook-pro-killer">Microsoft’s Surface Laptop Ultra packs an Nvidia Spark chip — and it could be a MacBook Pro killer</a></li></ul></div><div class="live-content"><time datetime="2026-06-03T14:21:37+00:00">June 3, 2026 – 10:21 AM</time><h2 id="intel-arc-g3-steps-up-against-amd">Intel Arc G3 steps up against AMD</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="dfy9CxfFkp6UmjdfoRjC6o" name="Acer Predator Atlas 8" alt="Acer Predator Atlas 8" src="https://cdn.mos.cms.futurecdn.net/dfy9CxfFkp6UmjdfoRjC6o-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p><a href="https://www.tomsguide.com/gaming/handheld-gaming/intel-arc-g3-is-here-to-shake-up-handheld-gaming-and-amd-should-be-terrified-acer-predator-atlas-8-is-the-first-out-the-gate">Intel Arc G3 and G3 Extreme</a> are really bringing the heat with a monstrous integrated GPU and XeSS 3, seemingly delivering some of the best handheld gaming experiences you can get.</p><p>We've checked out the <a href="https://www.tomsguide.com/gaming/handheld-gaming/acer-predator-atlas-8-hands-on-review">Acer Predator Atlas 8</a> and the <a href="https://www.tomsguide.com/gaming/handheld-gaming/msi-claw-8-ex-ai-plus-hands-on-review">MSI Claw 8 EX AI+</a> here at Computex already, and both have impressed us with their smooth performance. </p><p>This is a huge win for Intel, which has, up until now, played second fiddle to AMD and its near-dominance over the handheld space.</p></div><div class="live-content"><time datetime="2026-06-03T14:40:34+00:00">June 3, 2026 – 10:40 AM</time><h2 id="macbook-neo-has-competition-from-dell">MacBook Neo has competition from Dell</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6000px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="YG8Czrmg7tJvPgNji5ZEbL" name="DSC05649.JPG" alt="Dell XPS 13 next to MacBook Neo" src="https://cdn.mos.cms.futurecdn.net/YG8Czrmg7tJvPgNji5ZEbL-1920-80.jpg" mos="" align="middle" fullscreen="" width="6000" height="3376" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>We just got to go hands-on with Dell's new XPS laptop line but one device in particular stood out: the new Dell XPS 13. Thin, light and affordable, you know where this is going. We have <a href="https://www.tomsguide.com/computing/laptops/dell-just-announced-the-new-usd699-xps-13-and-it-could-be-a-macbook-neo-killer">another MacBook Neo competitor in our midst</a>.<br><br>The Dell XPS 13 does have a few nice extras you don't get on the Neo, like a backlit keyboard, a touchscreen and two full-featured USB-C 3.1 Gen 2 ports with one on each side. Stay tuned for our full hands-on but so far, I'm quite impressed.</p></div><div class="live-content"><time datetime="2026-06-03T15:00:56+00:00">June 3, 2026 – 11:00 AM</time><h2 id="a-mesmerizing-laptop">A mesmerizing laptop</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="T3bsKRqXYzdjdWXXyVpUe9" name="MSI Prestige 14 Flip AI+ Vincent van Gogh Edition" alt="MSI Prestige 14 Flip AI+ Vincent van Gogh Edition" src="https://cdn.mos.cms.futurecdn.net/T3bsKRqXYzdjdWXXyVpUe9-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Laptops tend to look similar, which is why the <a href="https://www.tomsguide.com/computing/laptops/msi-prestige-14-flip-ai-vincent-van-gogh-edition-hands-on-review">Prestige 14 Flip AI+ Vincent van Gogh Edition</a> stands out. Adorned with the troubled artist's work on the lid, it’s certainly a conversation starter. The fact that it’s built around a <a href="https://www.tomsguide.com/computing/laptops/msi-prestige-14-flip-ai-review">Prestige 14 Flip AI+</a> means you’re getting quite the workhorse here, too.</p><p>But what about the price? It’s the one question nobody can really answer, given how RAMageddon has put the whole computing market in flux. </p><p>To hazard a guess, given that the current Prestige sells for $1,299 and this is a more powerful special-edition machine, we bet it could be around $2,499. Of course, we'll have to wait and see what the actual price is.</p></div><div class="live-content"><time datetime="2026-06-03T15:30:09+00:00">June 3, 2026 – 11:30 AM</time><h2 id="8-laptops-confirmed-to-launch-in-the-fall-with-rtx-spark">8 laptops confirmed to launch in the fall with RTX Spark</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1035px;"><p class="vanilla-image-block" style="padding-top:56.23%;"><img id="Jr9cN8mjLczEpYQnVpXMBE" name="Spark laptops" alt="Laptops confirmed to launch with Nvidia Spark" src="https://cdn.mos.cms.futurecdn.net/Jr9cN8mjLczEpYQnVpXMBE-1920-80.jpg" mos="" align="middle" fullscreen="" width="1035" height="582" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Nvidia's RTX Spark chip is already slated to appear in a bunch of laptops arriving this fall, including a new Surface Laptop from Microsoft. Following on from the laptops, expect to see it appearing in mini PCs and small form-factor from the likes of Dell, HP, Lenovo, Asus, MSI, Acer and Gigabyte.</p><p>Powered by the new chip, these laptops are poised to deliver a thin-and-light form factor coupled with elite battery life and enough power for desktop-class AI development and heavy video editing. They'll also be pretty good when it comes to gaming, too. </p><p>The only question is what will the pricing be for these new machines?</p><ul><li><strong>Read more:</strong> <a href="https://www.tomsguide.com/computing/gaming-laptops/all-8-laptops-launching-with-nvidia-rtx-spark-this-fall-and-what-they-can-do">All 8 laptops launching with Nvidia RTX Spark this fall — and what they can do</a></li></ul></div><div class="live-content"><time datetime="2026-06-03T16:18:44+00:00">June 3, 2026 – 12:18 PM</time><h2 id="the-msi-claw-8-ex-ai-leaves-the-rog-xbox-ally-in-the-dust">The MSI Claw 8 EX AI+ leaves the ROG Xbox Ally in the dust</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ZwZTnFJaJabpwnJQBhKKV3" name="MSI Claw 8 EX AI+" alt="MSI Claw 8 EX AI+" src="https://cdn.mos.cms.futurecdn.net/ZwZTnFJaJabpwnJQBhKKV3-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p><a href="https://www.tomsguide.com/gaming/handheld-gaming/watch-out-amd-intels-arc-g3-and-arc-g3-extreme-handheld-chips-expected-for-computex-revealhttps://www.tomsguide.com/gaming/handheld-gaming/intel-arc-g3-is-here-to-shake-up-handheld-gaming-and-amd-should-be-terrified-acer-predator-atlas-8-is-the-first-out-the-gate">Intel Arc G3</a> handhelds are the talk of the town here at <a href="https://www.tomsguide.com/tag/computex-2026">Computex 2026</a>, and I just got an early hands-on with the <a href="https://www.tomsguide.com/gaming/handheld-gaming/msi-claw-8-ex-ai-plus-hands-on-review">MSI Claw 8 EX AI+</a>. In short, believe the hype — this is the next generation of gaming on the go, unlike anything you’ve seen before.</p><p>Of course, a lot of this comes from that new silicon, which copies a lot of Panther Lake’s homework, including that monster integrated GPU with XeSS 3 support to deliver some blistering frame rates (more on those later) while being much more power efficient than any AMD-filled handheld I’ve tested.</p><p>But the secret sauce here is MSI’s DNA — learning from previous Claws and dramatically upgrading the design, vastly improving airflow to keep it cool, bringing a gorgeous new display, tweaking the ergonomics and tactility of the vibration, and making it even easier to upgrade.</p></div><div class="live-content"><time datetime="2026-06-03T17:21:48+00:00">June 3, 2026 – 1:21 PM</time><h2 id="the-asus-xbox-ally-x20-isn-t-just-another-special-edition-handheld">The Asus Xbox Ally X20 isn’t just another special edition handheld</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6000px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="mzGWRxjFEyMo7UNPnXJTfM" name="DSC05575.JPG" alt="The Asus ROG Xbox Ally X20 with the special edition ROG R1 smart glasses" src="https://cdn.mos.cms.futurecdn.net/mzGWRxjFEyMo7UNPnXJTfM-1920-80.jpg" mos="" align="middle" fullscreen="" width="6000" height="3376" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>We’ve already seen a ton of new handheld gaming PCs here at <a href="https://www.tomsguide.com/tag/computex-2026">Computex 2026</a>. Instead of going that route, Asus has decided to commemorate the 20th anniversary of its Republic of Gamers (ROG) subbrand with a special edition of the <a href="https://www.tomsguide.com/gaming/handheld-gaming/rog-xbox-ally-x-review">ROG Xbox Ally X</a>.</p><p>Dubbed the ROG Xbox Ally X20, this new device uses (mostly) the same hardware as last year’s Xbox-themed handheld. You still get the powerful performance of AMD’s Ryzen AI Z2 Extreme chip, 24GB of RAM, and a 1TB SSD.</p><p>While not technically a new device, Asus has made some fundamental changes under the hood and has also given the handheld a regal makeover, with hints of gold throughout its design.</p></div><div class="live-content"><time datetime="2026-06-03T19:14:00+00:00">June 3, 2026 – 3:14 PM</time><h2 id="the-best-of-computex-2026">The best of Computex 2026</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="gdANyLE7xPhKnyRCCV2pPc" name="Best of Computex 2026" alt="Best of Computex 2026" src="https://cdn.mos.cms.futurecdn.net/gdANyLE7xPhKnyRCCV2pPc-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Our <a href="https://www.tomsguide.com/computing/best-of-computex-2026">best of Computex 2026</a> round-up is live! There, we detail the 17 products that impressed us the most during our time at the convention.</p><p>From Nvidia’s biggest chip release in the last 20 years, Intel revolutionizing handheld gaming, mind-blowing monitors, and actual value-for-money laptops to take on the MacBook Neo, we’ve fallen in love with so much tech here in Taipei!</p></div> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/news/live/computex-2026-live-blog</link>
                                                                            <description>
                            <![CDATA[ We've reached day 2 of Computex 2026, and from holding every Nvidia RTX Spark laptop to comparing all the new budget systems competing with the MacBook Neo, I have so much to update you on! ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">9xHegygE9QYKafbt3vATV6</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/uwYYSxecu43DVEHNSFodeX-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 03 Jun 2026 13:24:47 +0000</pubDate>                                                                                                                                <updated>Wed, 03 Jun 2026 19:14:03 +0000</updated>
                                                                                                                                            <category><![CDATA[Computing]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jason England ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/v4fSq5U4uZUEtGY2BwNuJ6-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jason brings a decade of tech and gaming journalism experience to his role as a Managing Editor of Computing at Tom&#039;s Guide. He has previously written for Laptop Mag, Tom&#039;s Hardware, Kotaku, Stuff and BBC Science Focus. In his spare time, you&#039;ll find Jason looking for good dogs to pet or thinking about eating pizza if he isn&#039;t already.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/uwYYSxecu43DVEHNSFodeX-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Computex 2026]]></media:description>                                                            <media:text><![CDATA[Computex 2026]]></media:text>
                                <media:title type="plain"><![CDATA[Computex 2026]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/uwYYSxecu43DVEHNSFodeX-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="live-content"><p>We've reached day 2 of Computex 2026, and from holding every <a href="https://www.tomsguide.com/computing/laptops/nvidia-rtx-spark-hands-on-review">Nvidia RTX Spark</a> laptop to comparing all the new budget systems competing with the MacBook Neo, I have so much to update you on!</p><p>Beyond that, I got to talk to Nvidia CEO Jensen Huang about Spark, properly tested the <a href="https://www.tomsguide.com/gaming/handheld-gaming/watch-out-amd-intels-arc-g3-and-arc-g3-extreme-handheld-chips-expected-for-computex-reveal">Intel Arc G3 Extreme chip</a> in the <a href="https://www.tomsguide.com/gaming/handheld-gaming/msi-claw-8-ex-ai-plus-hands-on-review">MSI Claw 8 EX AI+</a> (spoiler alert: AMD gaming handhelds are cooked), and went on a mission to find every budget laptop that competes with the <a href="https://www.tomsguide.com/computing/macbooks/apple-macbook-neo-review">MacBook Neo</a>.</p><p>But that's not all, as my team is out here too — running around the exhibition center and finding all the best (and weirdest) tech of Computex. So follow along with us for all the latest.</p><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="5qk1l7" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><h3 class="article-body__section" id="section-read-the-latest-from-computex"><span>Read the latest from Computex</span></h3><ul><li><a href="https://www.tomsguide.com/computing/laptops/nvidia-rtx-spark-hands-on-review">I just tested Nvidia RTX Spark laptops for video editing, gaming and AI — and the MacBook Pro is in trouble</a></li><li><a href="https://www.tomsguide.com/computing/laptops/i-held-the-macbook-neo-in-one-hand-and-the-new-xps-13-in-the-other-and-dells-affordable-laptop-is-surprisingly-lighter">I held the MacBook Neo in one hand and the new XPS 13 in the other — and Dell’s affordable laptop is surprisingly lighter</a></li><li><a href="https://www.tomsguide.com/computing/laptops/microsoft-surface-laptop-ultra-rtx-spark-hands-on-review">I just tested Microsoft Surface Laptop Ultra — Nvidia RTX Spark brings life to one of the best laptops I’ve ever tried</a></li><li><a href="https://www.tomsguide.com/computing/i-spoke-to-nvidia-ceo-jensen-huang-about-rtx-spark-he-is-willing-to-work-on-an-rtx-gaming-handheld-n2x-and-n3x-are-already-planned-and-the-chip-is-more-like-r2d2-than-a-laptop-cpu">I spoke to Nvidia CEO Jensen Huang about RTX Spark — he is ‘willing to work’ on an RTX gaming handheld, N2X and N3X are already planned and the chip is 'more like R2D2’ than a laptop CPU</a></li><li><a href="https://www.tomsguide.com/gaming/handheld-gaming/msi-claw-8-ex-ai-plus-hands-on-review">I just tested the MSI Claw 8 EX AI+ — Intel Arc G3 is a breakthrough for handheld gaming, but at what cost?</a></li><li><a href="https://www.tomsguide.com/computing/monitors/i-thought-asus-massive-32-inch-oled-would-be-my-favorite-computex-2026-monitor-i-was-wrong">I thought Asus' massive 32-inch OLED would be my favorite Computex 2026 monitor — but I found one that was even better</a></li><li><a href="https://www.tomsguide.com/gaming/handheld-gaming/acer-predator-atlas-8-hands-on-review">I tested the Acer Predator Atlas 8, and played a game Intel told me not to — the numbers are staggering</a></li></ul><h3 class="article-body__section" id="section-live-updates"><span>LIVE UPDATES</span></h3></div><div class="live-content"><time datetime="2026-06-03T13:24:35+00:00">June 3, 2026 – 9:24 AM</time><h2 id="computex-is-still-going-strong">Computex is still going strong</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="uwYYSxecu43DVEHNSFodeX" name="Computex 2026" alt="Computex 2026" src="https://cdn.mos.cms.futurecdn.net/uwYYSxecu43DVEHNSFodeX-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Hey, all! Our Computex 2026 coverage is going strong as we're on the ground in Taipei checking out the latest and greatest from the computing world. Keep it locked here four all of our live updates and hands-on impressions.</p></div><div class="live-content"><time datetime="2026-06-03T13:33:35+00:00">June 3, 2026 – 9:33 AM</time><h2 id="rtx-spark-put-to-the-test">RTX Spark put to the test</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="EhWYmoygJ2EfpXBFi47X8P" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/EhWYmoygJ2EfpXBFi47X8P-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>We've had the opportunity to put Nvidia's RTX Spark to the test for video editing, gaming, and AI, and the results are... impressive. Now, the obvious caveat is that we don't know what these machines will <em>cost</em> once they arrive — but it should make Apple and its MacBook Pro a little more than nervous.</p><p>Here's what my colleague Jason had to say after he'd spent some time with Nvidia's new chip: "With Microsoft in tow, working in lockstep to rebuild Windows 11 for Nvidia's agentic vision for the future of computing, these are going to be some truly mighty notebooks that may very well revolutionize the Windows laptop and truly stand on their own as the future of computing."</p><ul><li><strong>Read the full story:</strong> <a href="https://www.tomsguide.com/computing/laptops/nvidia-rtx-spark-hands-on-review">I just tested Nvidia RTX Spark laptops for video editing, gaming and AI — and the MacBook Pro is in trouble</a></li></ul></div><div class="live-content"><time datetime="2026-06-03T13:42:06+00:00">June 3, 2026 – 9:42 AM</time><h2 id="msi-debuts-triple-mode-monitor">MSI debuts 'Triple Mode' monitor</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6000px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="HrTg3tCMgHBR5x54pkhcjC" name="DSC05695.JPG" alt="MSI Triple Mode QD-OLED Gaming Monitor" src="https://cdn.mos.cms.futurecdn.net/HrTg3tCMgHBR5x54pkhcjC-1920-80.jpg" mos="" align="middle" fullscreen="" width="6000" height="3376" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>This right here is the MSI MPG OLED 322URDX36. It's the first 31.5-inch, 4K 360Hz gaming monitor on the market to feature the 'Triple Mode' configuration technology. </p><p>It lets gamers switch freely between 4K 360Hz, 2K 520Hz, and FHD 680Hz based on their preferences — meeting the specific performance demands of various game genres. </p><p>The monitor rocks a peak HDR brightness of 1,500 nits and integrates an AI Care Sensor that "leverages accurate human detection to provide real-time OLED panel protection without compromising user privacy." Whatever that means.</p></div><div class="live-content"><time datetime="2026-06-03T14:03:41+00:00">June 3, 2026 – 10:03 AM</time><h2 id="could-microsoft-be-building-the-most-exciting-rtx-spark-laptop">Could Microsoft be building the most exciting RTX Spark laptop?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="jPf82R6ASS76yFSsoeyR4A" name="Surface Laptop Ultra lede" alt="Microsoft Surface Laptop Ultra" src="https://cdn.mos.cms.futurecdn.net/jPf82R6ASS76yFSsoeyR4A-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>Microsoft will be facing down the MacBook Pro with the Surface Laptop Ultra later this year, it's one of the <a href="https://www.tomsguide.com/computing/gaming-laptops/all-8-laptops-launching-with-nvidia-rtx-spark-this-fall-and-what-they-can-do">first eight laptops to arrive with Nvidia's RTX Spark</a> on board and it could be seriously impressive.</p><p>Microsoft claims this will be most powerful Surface it's ever built and there are a few specs we are already pretty confident about. For starters, it has a 15-inch mini-LED PixelSense Ultra display that can reportedly reach 2,000 nits of peak HDR brightness. There's also a full set of ports, including HDMI, USB-C, USB-A, an SD card reader, and a headphone jack. </p><p>The Surface Laptop Ultra will also reportedly have “all-day” battery life and you can expect it to come in Platinum and Nightfall finishes.</p><ul><li><strong>Read more:</strong> <a href="https://www.tomsguide.com/computing/laptops/microsofts-surface-laptop-ultra-packs-an-nvidia-spark-chip-and-it-could-be-a-macbook-pro-killer">Microsoft’s Surface Laptop Ultra packs an Nvidia Spark chip — and it could be a MacBook Pro killer</a></li></ul></div><div class="live-content"><time datetime="2026-06-03T14:21:37+00:00">June 3, 2026 – 10:21 AM</time><h2 id="intel-arc-g3-steps-up-against-amd">Intel Arc G3 steps up against AMD</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="dfy9CxfFkp6UmjdfoRjC6o" name="Acer Predator Atlas 8" alt="Acer Predator Atlas 8" src="https://cdn.mos.cms.futurecdn.net/dfy9CxfFkp6UmjdfoRjC6o-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p><a href="https://www.tomsguide.com/gaming/handheld-gaming/intel-arc-g3-is-here-to-shake-up-handheld-gaming-and-amd-should-be-terrified-acer-predator-atlas-8-is-the-first-out-the-gate">Intel Arc G3 and G3 Extreme</a> are really bringing the heat with a monstrous integrated GPU and XeSS 3, seemingly delivering some of the best handheld gaming experiences you can get.</p><p>We've checked out the <a href="https://www.tomsguide.com/gaming/handheld-gaming/acer-predator-atlas-8-hands-on-review">Acer Predator Atlas 8</a> and the <a href="https://www.tomsguide.com/gaming/handheld-gaming/msi-claw-8-ex-ai-plus-hands-on-review">MSI Claw 8 EX AI+</a> here at Computex already, and both have impressed us with their smooth performance. </p><p>This is a huge win for Intel, which has, up until now, played second fiddle to AMD and its near-dominance over the handheld space.</p></div><div class="live-content"><time datetime="2026-06-03T14:40:34+00:00">June 3, 2026 – 10:40 AM</time><h2 id="macbook-neo-has-competition-from-dell">MacBook Neo has competition from Dell</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6000px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="YG8Czrmg7tJvPgNji5ZEbL" name="DSC05649.JPG" alt="Dell XPS 13 next to MacBook Neo" src="https://cdn.mos.cms.futurecdn.net/YG8Czrmg7tJvPgNji5ZEbL-1920-80.jpg" mos="" align="middle" fullscreen="" width="6000" height="3376" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>We just got to go hands-on with Dell's new XPS laptop line but one device in particular stood out: the new Dell XPS 13. Thin, light and affordable, you know where this is going. We have <a href="https://www.tomsguide.com/computing/laptops/dell-just-announced-the-new-usd699-xps-13-and-it-could-be-a-macbook-neo-killer">another MacBook Neo competitor in our midst</a>.<br><br>The Dell XPS 13 does have a few nice extras you don't get on the Neo, like a backlit keyboard, a touchscreen and two full-featured USB-C 3.1 Gen 2 ports with one on each side. Stay tuned for our full hands-on but so far, I'm quite impressed.</p></div><div class="live-content"><time datetime="2026-06-03T15:00:56+00:00">June 3, 2026 – 11:00 AM</time><h2 id="a-mesmerizing-laptop">A mesmerizing laptop</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="T3bsKRqXYzdjdWXXyVpUe9" name="MSI Prestige 14 Flip AI+ Vincent van Gogh Edition" alt="MSI Prestige 14 Flip AI+ Vincent van Gogh Edition" src="https://cdn.mos.cms.futurecdn.net/T3bsKRqXYzdjdWXXyVpUe9-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Laptops tend to look similar, which is why the <a href="https://www.tomsguide.com/computing/laptops/msi-prestige-14-flip-ai-vincent-van-gogh-edition-hands-on-review">Prestige 14 Flip AI+ Vincent van Gogh Edition</a> stands out. Adorned with the troubled artist's work on the lid, it’s certainly a conversation starter. The fact that it’s built around a <a href="https://www.tomsguide.com/computing/laptops/msi-prestige-14-flip-ai-review">Prestige 14 Flip AI+</a> means you’re getting quite the workhorse here, too.</p><p>But what about the price? It’s the one question nobody can really answer, given how RAMageddon has put the whole computing market in flux. </p><p>To hazard a guess, given that the current Prestige sells for $1,299 and this is a more powerful special-edition machine, we bet it could be around $2,499. Of course, we'll have to wait and see what the actual price is.</p></div><div class="live-content"><time datetime="2026-06-03T15:30:09+00:00">June 3, 2026 – 11:30 AM</time><h2 id="8-laptops-confirmed-to-launch-in-the-fall-with-rtx-spark">8 laptops confirmed to launch in the fall with RTX Spark</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1035px;"><p class="vanilla-image-block" style="padding-top:56.23%;"><img id="Jr9cN8mjLczEpYQnVpXMBE" name="Spark laptops" alt="Laptops confirmed to launch with Nvidia Spark" src="https://cdn.mos.cms.futurecdn.net/Jr9cN8mjLczEpYQnVpXMBE-1920-80.jpg" mos="" align="middle" fullscreen="" width="1035" height="582" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Nvidia's RTX Spark chip is already slated to appear in a bunch of laptops arriving this fall, including a new Surface Laptop from Microsoft. Following on from the laptops, expect to see it appearing in mini PCs and small form-factor from the likes of Dell, HP, Lenovo, Asus, MSI, Acer and Gigabyte.</p><p>Powered by the new chip, these laptops are poised to deliver a thin-and-light form factor coupled with elite battery life and enough power for desktop-class AI development and heavy video editing. They'll also be pretty good when it comes to gaming, too. </p><p>The only question is what will the pricing be for these new machines?</p><ul><li><strong>Read more:</strong> <a href="https://www.tomsguide.com/computing/gaming-laptops/all-8-laptops-launching-with-nvidia-rtx-spark-this-fall-and-what-they-can-do">All 8 laptops launching with Nvidia RTX Spark this fall — and what they can do</a></li></ul></div><div class="live-content"><time datetime="2026-06-03T16:18:44+00:00">June 3, 2026 – 12:18 PM</time><h2 id="the-msi-claw-8-ex-ai-leaves-the-rog-xbox-ally-in-the-dust">The MSI Claw 8 EX AI+ leaves the ROG Xbox Ally in the dust</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ZwZTnFJaJabpwnJQBhKKV3" name="MSI Claw 8 EX AI+" alt="MSI Claw 8 EX AI+" src="https://cdn.mos.cms.futurecdn.net/ZwZTnFJaJabpwnJQBhKKV3-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p><a href="https://www.tomsguide.com/gaming/handheld-gaming/watch-out-amd-intels-arc-g3-and-arc-g3-extreme-handheld-chips-expected-for-computex-revealhttps://www.tomsguide.com/gaming/handheld-gaming/intel-arc-g3-is-here-to-shake-up-handheld-gaming-and-amd-should-be-terrified-acer-predator-atlas-8-is-the-first-out-the-gate">Intel Arc G3</a> handhelds are the talk of the town here at <a href="https://www.tomsguide.com/tag/computex-2026">Computex 2026</a>, and I just got an early hands-on with the <a href="https://www.tomsguide.com/gaming/handheld-gaming/msi-claw-8-ex-ai-plus-hands-on-review">MSI Claw 8 EX AI+</a>. In short, believe the hype — this is the next generation of gaming on the go, unlike anything you’ve seen before.</p><p>Of course, a lot of this comes from that new silicon, which copies a lot of Panther Lake’s homework, including that monster integrated GPU with XeSS 3 support to deliver some blistering frame rates (more on those later) while being much more power efficient than any AMD-filled handheld I’ve tested.</p><p>But the secret sauce here is MSI’s DNA — learning from previous Claws and dramatically upgrading the design, vastly improving airflow to keep it cool, bringing a gorgeous new display, tweaking the ergonomics and tactility of the vibration, and making it even easier to upgrade.</p></div><div class="live-content"><time datetime="2026-06-03T17:21:48+00:00">June 3, 2026 – 1:21 PM</time><h2 id="the-asus-xbox-ally-x20-isn-t-just-another-special-edition-handheld">The Asus Xbox Ally X20 isn’t just another special edition handheld</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6000px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="mzGWRxjFEyMo7UNPnXJTfM" name="DSC05575.JPG" alt="The Asus ROG Xbox Ally X20 with the special edition ROG R1 smart glasses" src="https://cdn.mos.cms.futurecdn.net/mzGWRxjFEyMo7UNPnXJTfM-1920-80.jpg" mos="" align="middle" fullscreen="" width="6000" height="3376" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>We’ve already seen a ton of new handheld gaming PCs here at <a href="https://www.tomsguide.com/tag/computex-2026">Computex 2026</a>. Instead of going that route, Asus has decided to commemorate the 20th anniversary of its Republic of Gamers (ROG) subbrand with a special edition of the <a href="https://www.tomsguide.com/gaming/handheld-gaming/rog-xbox-ally-x-review">ROG Xbox Ally X</a>.</p><p>Dubbed the ROG Xbox Ally X20, this new device uses (mostly) the same hardware as last year’s Xbox-themed handheld. You still get the powerful performance of AMD’s Ryzen AI Z2 Extreme chip, 24GB of RAM, and a 1TB SSD.</p><p>While not technically a new device, Asus has made some fundamental changes under the hood and has also given the handheld a regal makeover, with hints of gold throughout its design.</p></div><div class="live-content"><time datetime="2026-06-03T19:14:00+00:00">June 3, 2026 – 3:14 PM</time><h2 id="the-best-of-computex-2026">The best of Computex 2026</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="gdANyLE7xPhKnyRCCV2pPc" name="Best of Computex 2026" alt="Best of Computex 2026" src="https://cdn.mos.cms.futurecdn.net/gdANyLE7xPhKnyRCCV2pPc-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Our <a href="https://www.tomsguide.com/computing/best-of-computex-2026">best of Computex 2026</a> round-up is live! There, we detail the 17 products that impressed us the most during our time at the convention.</p><p>From Nvidia’s biggest chip release in the last 20 years, Intel revolutionizing handheld gaming, mind-blowing monitors, and actual value-for-money laptops to take on the MacBook Neo, we’ve fallen in love with so much tech here in Taipei!</p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I just tested Microsoft Surface Laptop Ultra — Nvidia RTX Spark brings life to one of the best laptops I’ve ever tried ]]></title>
                                                                                                <dc:content><![CDATA[ <p><a href="https://www.tomsguide.com/computing/gaming-laptops/all-8-laptops-launching-with-nvidia-rtx-spark-this-fall-and-what-they-can-do">Eight laptops are launching with Nvidia RTX Spark</a> inside at <a href="https://www.tomsguide.com/news/live/computex-2026">Computex 2026</a>, and the Microsoft Surface Laptop Ultra is easily one of the best — so beautifully designed it almost makes Spark feel like a side character.</p><p>Gunning for the <a href="https://www.tomsguide.com/computing/macbooks/macbook-pro-16-inch-m5-pro-review">16-inch MacBook Pro</a>, Microsoft doesn’t miss with a seriously luxurious build, great I/O for pros, fantastic ergonomics (including a breakthrough touchpad) and a mesmerizing display.</p><p>And you’ve seen what it will be able to do from all the <a href="https://www.tomsguide.com/computing/laptops/nvidia-rtx-spark-hands-on-review">RTX Spark testing</a> I’ve done. This will not be a cheap laptop with that chip inside, so Microsoft has rolled out the red carpet in utilitarian aesthetics. Let me tell you about it.</p><h2 class="article-body__section" id="section-microsoft-surface-laptop-ultra-specs"><span>Microsoft Surface Laptop Ultra: Specs</span></h2><div ><table><tbody><tr><td class="firstcol " ><p><strong>CPU</strong></p></td><td  ><p>Nvidia RTX Spark</p></td></tr><tr><td class="firstcol " ><p><strong>RAM</strong></p></td><td  ><p>Up to 128GB LPDDR5X unified memory</p></td></tr><tr><td class="firstcol " ><p><strong>Ports</strong></p></td><td  ><p>3x USB-C, 1x USB-A, 1x HDMI, 1x SD card reader, 1x 3.5mm headphone jack</p></td></tr><tr><td class="firstcol " ><p><strong>Display</strong></p></td><td  ><p>15-inch 2880 x 1920-pixel mini-LED PixelSense Ultra, 2000 nits peak HDR brightness</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>4.5 pounds</p></td></tr><tr><td class="firstcol " ><p><strong>Price (rumored)</strong></p></td><td  ><p>$3,000-$7,000</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-a-seriously-good-looker-and-worker"><span>A seriously good looker (and worker)</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="5uYe3aKfrghYpnkxdVKejS" name="Microsoft Surface Laptop Ultra" alt="Microsoft Surface Laptop Ultra" src="https://cdn.mos.cms.futurecdn.net/5uYe3aKfrghYpnkxdVKejS-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Make no mistake about it — the Surface Laptop Ultra is built different. On the face of it, this is a Surface Laptop if it started bulking for a few months. But once you get into the details, you realize it’s so much more than that.</p><p>It starts with a beefy utilitarian presence atop any desk. This is a hefty machine, but those premium materials and the added bulk makes this feel ready to power through any task you throw at it — just like a MacBook Pro does.</p><p>The similarities also extend to the port selection, but chalk this up as a win for the Ultra with its additional USB-A for wider support. They keyboard feels gorgeous to type on, which is something that Microsoft has really excelled in in the past — giving you a nice tactility to every key press that makes it feel intentful.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="NhBrhfnt7kHM3UTaYCJPnS" name="Microsoft Surface Laptop Ultra" alt="Microsoft Surface Laptop Ultra" src="https://cdn.mos.cms.futurecdn.net/NhBrhfnt7kHM3UTaYCJPnS-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>But the real star of the show on that bottom deck is the 30% larger haptic touchpad. It’s an absolute ocean with a smooth gliding surface, with every click giving me those same snappy sensations I love from the MacBook Pro’s trackpad. But as an addition here is the haptics that actually communicate back to you.</p><p>Built directly into Windows 11, you’ll feel small hints of feedback as you do key things like snap apps to sides of the screen. On top of that, the company is working with key developers to give you those same sensations in third party apps like moving your cursor over clips in a video timeline.</p><p>It’s a feeling that when returning to my MacBook Pro, I felt like something was missing! Top it all off with that gorgeously color-accurate and smooth PixelSense display up top that can get seriously bright, and you’ve got a nice-looking beast that’s ready for anything.</p><h3 class="article-body__section" id="section-monstrous-performance"><span>Monstrous performance</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="vFUbLWHV4FJFhgWi9FsCqS" name="Microsoft Surface Laptop Ultra" alt="Microsoft Surface Laptop Ultra" src="https://cdn.mos.cms.futurecdn.net/vFUbLWHV4FJFhgWi9FsCqS-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Speaking of ready for anything, that’s where I get to the fun stuff inside. You’ve seen a lot of the software stuff it will be able to do from the Microsoft Build announcements — in short, expect a lot of agentic AI features to take advantage of that RTX Spark chip.</p><p>And as you saw in my testing of Spark itself, there’s a lot to be had here from the massive local models changing the dynamic of how you interact with a computer from it being a tool you lays idle when you’re not using it, to an active assistant machine.</p><p>But let’s compare apples and oranges and put it up against the MacBook Pro workload. You want your laptop to get the pro stuff done speedily both on and off the charger. After flying around the most dense Unreal Engine map while connected and disconnected, that’s easily proven true. There’s also tie-ins with Adobe to use much more of that built-in RTX 5070-level GPU and turboboost creator tasks beyond levels I’d seen in equivalent Apple laptops.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="uwg94CzoH3VwsikR2fFqoS" name="Microsoft Surface Laptop Ultra" alt="Microsoft Surface Laptop Ultra" src="https://cdn.mos.cms.futurecdn.net/uwg94CzoH3VwsikR2fFqoS-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>But the real killer app for me is the ability to use the same laptop to work by day and play by night. Alan Wake 2 is built natively for Arm and can run at 1600p resolution with ray tracing and DLSS 4.5 ray reconstruction at buttery smooth frame rates. Even games that are not built for this architecture like Pragmata go through the Prism emulator layer and play smoothly too. And yes, both of these were on and off the charger too!</p><p>The big unanswered question here is power efficiency, which could be affected by that emulation layer. Speaking to Nvidia, they’re not giving anything away, but did give me a cheeky smile when I started talking about what all-day battery life really means. We could be in for something special here.</p><h2 class="article-body__section" id="section-outlook"><span>Outlook</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="9yfWzrhKcu2Vq669dcijxS" name="Microsoft Surface Laptop Ultra" alt="Microsoft Surface Laptop Ultra" src="https://cdn.mos.cms.futurecdn.net/9yfWzrhKcu2Vq669dcijxS-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Ignoring the larger USB-C port mystery (my theory is it’s a magnetic breakaway USB-C socket that replaces the missing Surface Connect), what you’re left with here is a phenomenal laptop that <em>feels </em>powerful.</p><p>The aesthetics are clean, the ergonomics are fantastic, the display is mesmerizing and the power under the hood is awesome! Of course, there’s a big question on price, which rumors here at Computex point to a starting cost of $3,000.</p><p>This is definitely for the pros who know how to make the most of that power, and no longer is the MacBook Pro the default option at this price. A new player has come to town.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/i-spoke-to-nvidia-ceo-jensen-huang-about-rtx-spark-he-is-willing-to-work-on-an-rtx-gaming-handheld-n2x-and-n3x-are-already-planned-and-the-chip-is-more-like-r2d2-than-a-laptop-cpu">I spoke to Nvidia CEO Jensen Huang about RTX Spark — he tells us why this is less of a laptop chip and more like 'R2-D2,' and shares future plans on N2X and N3X</a></li><li><a href="https://www.tomsguide.com/computing/gpus/amd-radeon-rx-9070-gre-review">I gamed for 250 hours on AMD Radeon RX 9070 GRE — it’s a $549 nightmare for Nvidia’s RTX 5060 Ti</a></li><li><a href="https://www.tomsguide.com/gaming/handheld-gaming/msi-claw-8-ex-ai-plus-hands-on-review">I just tested the MSI Claw 8 EX AI+ — it leaves ROG Xbox Ally in the dust with breakthrough Intel Arc G3 power</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/laptops/microsoft-surface-laptop-ultra-rtx-spark-hands-on-review</link>
                                                                            <description>
                            <![CDATA[ Microsoft Surface Laptop Ultra is easily one of the best laptops I've tested — so beautifully designed it almost makes RTX Spark feel like a side character. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">7ZgAshoDUGewRYqNbiuhRN</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/C77AV3dtd7mJBPRExw6wgS-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 03 Jun 2026 04:02:48 +0000</pubDate>                                                                                                                                <updated>Wed, 03 Jun 2026 17:52:39 +0000</updated>
                                                                                                                                            <category><![CDATA[Laptops]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jason England ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/v4fSq5U4uZUEtGY2BwNuJ6-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jason brings a decade of tech and gaming journalism experience to his role as a Managing Editor of Computing at Tom&#039;s Guide. He has previously written for Laptop Mag, Tom&#039;s Hardware, Kotaku, Stuff and BBC Science Focus. In his spare time, you&#039;ll find Jason looking for good dogs to pet or thinking about eating pizza if he isn&#039;t already.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/C77AV3dtd7mJBPRExw6wgS-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Microsoft Surface Laptop Ultra]]></media:description>                                                            <media:text><![CDATA[Microsoft Surface Laptop Ultra]]></media:text>
                                <media:title type="plain"><![CDATA[Microsoft Surface Laptop Ultra]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/C77AV3dtd7mJBPRExw6wgS-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p><a href="https://www.tomsguide.com/computing/gaming-laptops/all-8-laptops-launching-with-nvidia-rtx-spark-this-fall-and-what-they-can-do">Eight laptops are launching with Nvidia RTX Spark</a> inside at <a href="https://www.tomsguide.com/news/live/computex-2026">Computex 2026</a>, and the Microsoft Surface Laptop Ultra is easily one of the best — so beautifully designed it almost makes Spark feel like a side character.</p><p>Gunning for the <a href="https://www.tomsguide.com/computing/macbooks/macbook-pro-16-inch-m5-pro-review">16-inch MacBook Pro</a>, Microsoft doesn’t miss with a seriously luxurious build, great I/O for pros, fantastic ergonomics (including a breakthrough touchpad) and a mesmerizing display.</p><p>And you’ve seen what it will be able to do from all the <a href="https://www.tomsguide.com/computing/laptops/nvidia-rtx-spark-hands-on-review">RTX Spark testing</a> I’ve done. This will not be a cheap laptop with that chip inside, so Microsoft has rolled out the red carpet in utilitarian aesthetics. Let me tell you about it.</p><h2 class="article-body__section" id="section-microsoft-surface-laptop-ultra-specs"><span>Microsoft Surface Laptop Ultra: Specs</span></h2><div ><table><tbody><tr><td class="firstcol " ><p><strong>CPU</strong></p></td><td  ><p>Nvidia RTX Spark</p></td></tr><tr><td class="firstcol " ><p><strong>RAM</strong></p></td><td  ><p>Up to 128GB LPDDR5X unified memory</p></td></tr><tr><td class="firstcol " ><p><strong>Ports</strong></p></td><td  ><p>3x USB-C, 1x USB-A, 1x HDMI, 1x SD card reader, 1x 3.5mm headphone jack</p></td></tr><tr><td class="firstcol " ><p><strong>Display</strong></p></td><td  ><p>15-inch 2880 x 1920-pixel mini-LED PixelSense Ultra, 2000 nits peak HDR brightness</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>4.5 pounds</p></td></tr><tr><td class="firstcol " ><p><strong>Price (rumored)</strong></p></td><td  ><p>$3,000-$7,000</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-a-seriously-good-looker-and-worker"><span>A seriously good looker (and worker)</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="5uYe3aKfrghYpnkxdVKejS" name="Microsoft Surface Laptop Ultra" alt="Microsoft Surface Laptop Ultra" src="https://cdn.mos.cms.futurecdn.net/5uYe3aKfrghYpnkxdVKejS-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Make no mistake about it — the Surface Laptop Ultra is built different. On the face of it, this is a Surface Laptop if it started bulking for a few months. But once you get into the details, you realize it’s so much more than that.</p><p>It starts with a beefy utilitarian presence atop any desk. This is a hefty machine, but those premium materials and the added bulk makes this feel ready to power through any task you throw at it — just like a MacBook Pro does.</p><p>The similarities also extend to the port selection, but chalk this up as a win for the Ultra with its additional USB-A for wider support. They keyboard feels gorgeous to type on, which is something that Microsoft has really excelled in in the past — giving you a nice tactility to every key press that makes it feel intentful.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="NhBrhfnt7kHM3UTaYCJPnS" name="Microsoft Surface Laptop Ultra" alt="Microsoft Surface Laptop Ultra" src="https://cdn.mos.cms.futurecdn.net/NhBrhfnt7kHM3UTaYCJPnS-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>But the real star of the show on that bottom deck is the 30% larger haptic touchpad. It’s an absolute ocean with a smooth gliding surface, with every click giving me those same snappy sensations I love from the MacBook Pro’s trackpad. But as an addition here is the haptics that actually communicate back to you.</p><p>Built directly into Windows 11, you’ll feel small hints of feedback as you do key things like snap apps to sides of the screen. On top of that, the company is working with key developers to give you those same sensations in third party apps like moving your cursor over clips in a video timeline.</p><p>It’s a feeling that when returning to my MacBook Pro, I felt like something was missing! Top it all off with that gorgeously color-accurate and smooth PixelSense display up top that can get seriously bright, and you’ve got a nice-looking beast that’s ready for anything.</p><h3 class="article-body__section" id="section-monstrous-performance"><span>Monstrous performance</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="vFUbLWHV4FJFhgWi9FsCqS" name="Microsoft Surface Laptop Ultra" alt="Microsoft Surface Laptop Ultra" src="https://cdn.mos.cms.futurecdn.net/vFUbLWHV4FJFhgWi9FsCqS-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Speaking of ready for anything, that’s where I get to the fun stuff inside. You’ve seen a lot of the software stuff it will be able to do from the Microsoft Build announcements — in short, expect a lot of agentic AI features to take advantage of that RTX Spark chip.</p><p>And as you saw in my testing of Spark itself, there’s a lot to be had here from the massive local models changing the dynamic of how you interact with a computer from it being a tool you lays idle when you’re not using it, to an active assistant machine.</p><p>But let’s compare apples and oranges and put it up against the MacBook Pro workload. You want your laptop to get the pro stuff done speedily both on and off the charger. After flying around the most dense Unreal Engine map while connected and disconnected, that’s easily proven true. There’s also tie-ins with Adobe to use much more of that built-in RTX 5070-level GPU and turboboost creator tasks beyond levels I’d seen in equivalent Apple laptops.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="uwg94CzoH3VwsikR2fFqoS" name="Microsoft Surface Laptop Ultra" alt="Microsoft Surface Laptop Ultra" src="https://cdn.mos.cms.futurecdn.net/uwg94CzoH3VwsikR2fFqoS-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>But the real killer app for me is the ability to use the same laptop to work by day and play by night. Alan Wake 2 is built natively for Arm and can run at 1600p resolution with ray tracing and DLSS 4.5 ray reconstruction at buttery smooth frame rates. Even games that are not built for this architecture like Pragmata go through the Prism emulator layer and play smoothly too. And yes, both of these were on and off the charger too!</p><p>The big unanswered question here is power efficiency, which could be affected by that emulation layer. Speaking to Nvidia, they’re not giving anything away, but did give me a cheeky smile when I started talking about what all-day battery life really means. We could be in for something special here.</p><h2 class="article-body__section" id="section-outlook"><span>Outlook</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="9yfWzrhKcu2Vq669dcijxS" name="Microsoft Surface Laptop Ultra" alt="Microsoft Surface Laptop Ultra" src="https://cdn.mos.cms.futurecdn.net/9yfWzrhKcu2Vq669dcijxS-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Ignoring the larger USB-C port mystery (my theory is it’s a magnetic breakaway USB-C socket that replaces the missing Surface Connect), what you’re left with here is a phenomenal laptop that <em>feels </em>powerful.</p><p>The aesthetics are clean, the ergonomics are fantastic, the display is mesmerizing and the power under the hood is awesome! Of course, there’s a big question on price, which rumors here at Computex point to a starting cost of $3,000.</p><p>This is definitely for the pros who know how to make the most of that power, and no longer is the MacBook Pro the default option at this price. A new player has come to town.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/i-spoke-to-nvidia-ceo-jensen-huang-about-rtx-spark-he-is-willing-to-work-on-an-rtx-gaming-handheld-n2x-and-n3x-are-already-planned-and-the-chip-is-more-like-r2d2-than-a-laptop-cpu">I spoke to Nvidia CEO Jensen Huang about RTX Spark — he tells us why this is less of a laptop chip and more like 'R2-D2,' and shares future plans on N2X and N3X</a></li><li><a href="https://www.tomsguide.com/computing/gpus/amd-radeon-rx-9070-gre-review">I gamed for 250 hours on AMD Radeon RX 9070 GRE — it’s a $549 nightmare for Nvidia’s RTX 5060 Ti</a></li><li><a href="https://www.tomsguide.com/gaming/handheld-gaming/msi-claw-8-ex-ai-plus-hands-on-review">I just tested the MSI Claw 8 EX AI+ — it leaves ROG Xbox Ally in the dust with breakthrough Intel Arc G3 power</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Computex 2026 LIVE — I just tested Nvidia RTX Spark laptops, Dell's XPS 13 response to MacBook Neo, and more ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="live-content"><p><a href="https://www.tomsguide.com/tag/computex-2026">Computex 2026</a> is fully underway, and besides asking Nvidia CEO Jensen Huang about RTX Spark, I just tested the laptops of the future from Team Green!</p><p>But that's not all, as Intel's having a ball dunking on AMD with its Arc G3 gaming handheld chip in the <a href="https://www.tomsguide.com/gaming/handheld-gaming/msi-claw-8-ex-ai-plus-hands-on-review">MSI Claw 8 EX AI+</a>, we've been going hands-on with every Windows laptop that's facing off with the MacBook Neo (including the new Dell Xps 13), and much more.</p><p>Follow along with us for live updates from the ground, and keep us bookmarked throughout the week. You're going to want to see what we're up to!</p><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="5qk1l7" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><h3 class="article-body__section" id="section-read-the-latest-from-computex"><span>Read the latest from Computex</span></h3><ul><li><a href="https://www.tomsguide.com/computing/cpus/nvidia-rtx-spark-is-here-and-no-its-not-called-n1x-everything-you-need-to-know-about-the-super-chip-thats-about-to-change-laptops-forever">Nvidia RTX Spark is here, and it's going to 'reinvent the pc' — here's everything you need to know about this all-new laptop chip</a></li><li><a href="https://www.tomsguide.com/computing/i-spoke-to-nvidia-ceo-jensen-huang-about-rtx-spark-he-is-willing-to-work-on-an-rtx-gaming-handheld-n2x-and-n3x-are-already-planned-and-the-chip-is-more-like-r2d2-than-a-laptop-cpu">I spoke to Nvidia CEO Jensen Huang about RTX Spark — he is ‘willing to work’ on an RTX gaming handheld, N2X and N3X are already planned and the chip is 'more like R2D2’ than a laptop CPU</a></li><li><a href="https://www.tomsguide.com/computing/gaming-laptops/all-8-laptops-launching-with-nvidia-rtx-spark-this-fall-and-what-they-can-do">All 8 laptops launching with Nvidia RTX Spark this fall — and what they can do</a></li><li><a href="https://www.tomsguide.com/gaming/handheld-gaming/msi-claw-8-ex-ai-plus-hands-on-review">I just tested the MSI Claw 8 EX AI+ — Intel Arc G3 is a breakthrough for handheld gaming, but at what cost?</a></li><li><a href="https://www.tomsguide.com/computing/gpus/amd-radeon-rx-9070-gre-review">I gamed for 250 hours on AMD Radeon RX 9070 GRE — it’s a $549 nightmare for Nvidia’s RTX 5060 Ti</a></li><li><a href="https://www.tomsguide.com/computing/monitors/i-thought-asus-massive-32-inch-oled-would-be-my-favorite-computex-2026-monitor-i-was-wrong">I thought Asus' massive 32-inch OLED would be my favorite Computex 2026 monitor — but I found one that was even better</a></li><li><a href="https://www.tomsguide.com/computing/laptops/msi-prestige-14-flip-ai-vincent-van-gogh-edition-hands-on-review">I just held the most beautiful laptop, but I’m not sure Vincent van Gogh would be happy with his name connected to AI</a></li><li><a href="https://www.tomsguide.com/gaming/handheld-gaming/acer-predator-atlas-8-hands-on-review">I tested the Acer Predator Atlas 8, and played a game Intel told me not to — the numbers are staggering</a></li></ul><h3 class="article-body__section" id="section-live-updates"><span>LIVE UPDATES</span></h3></div><div class="live-content"><time datetime="2026-06-02T11:35:47+00:00">June 2, 2026 – 7:35 AM</time><h2 id="our-first-in-person-look-at-rtx-spark">Our first in-person look at RTX Spark</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6000px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="DcQ7kASCqVMBQSQ4FZJbTB" name="DSC05706.JPG" alt="MSI RTX Spark laptop and mini PC" src="https://cdn.mos.cms.futurecdn.net/DcQ7kASCqVMBQSQ4FZJbTB-1920-80.jpg" mos="" align="middle" fullscreen="" width="6000" height="3376" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>The big news of the conference so far is, of course, the RTX Spark and we've just got our first look at actual devices running Nvidia's chips from MSI. </p><p>They look even better in person than they did during Jensen's keynote yesterday. Hopefully, we'll be able to go hands-on with laptops, desktops and mini PCs running Nvidia RTX Spark chips soon.</p><ul><li><strong>Read more:</strong> <a href="https://www.tomsguide.com/computing/cpus/nvidia-rtx-spark-is-here-and-no-its-not-called-n1x-everything-you-need-to-know-about-the-super-chip-thats-about-to-change-laptops-forever">Nvidia RTX Spark is here, and it's going to 'reinvent the pc' — here's everything you need to know about this all-new laptop chip</a></li></ul></div><div class="live-content"><time datetime="2026-06-02T11:45:16+00:00">June 2, 2026 – 7:45 AM</time><h2 id="8-laptops-confirmed-to-launch-in-the-fall-with-rtx-spark-2">8 laptops confirmed to launch in the fall with RTX Spark</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1035px;"><p class="vanilla-image-block" style="padding-top:56.23%;"><img id="Jr9cN8mjLczEpYQnVpXMBE" name="Spark laptops" alt="Laptops confirmed to launch with Nvidia Spark" src="https://cdn.mos.cms.futurecdn.net/Jr9cN8mjLczEpYQnVpXMBE-1920-80.jpg" mos="" align="middle" fullscreen="" width="1035" height="582" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Nvidia's RTX Spark chip is already slated to appear in a bunch of laptops arriving this fall, including a new Surface Laptop from Microsoft. Following on from the laptops, expect to see it appearing in mini PCs and small form-factor from the likes of Dell, HP, Lenovo, Asus, MSI, Acer and Gigabyte.</p><p>Powered by the new chip, these laptops are poised to deliver a thin-and-light form factor coupled with elite battery life and enough power for desktop-class AI development and heavy video editing. They'll also be pretty good when it comes to gaming, too. </p><p>The only question is what will the pricing be for these new machines?</p><ul><li><strong>Read more:</strong> <a href="https://www.tomsguide.com/computing/gaming-laptops/all-8-laptops-launching-with-nvidia-rtx-spark-this-fall-and-what-they-can-do">All 8 laptops launching with Nvidia RTX Spark this fall — and what they can do</a></li></ul></div><div class="live-content"><time datetime="2026-06-02T11:54:12+00:00">June 2, 2026 – 7:54 AM</time><h2 id="reporting-from-the-show-floor">Reporting from the show floor!</h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/vZsRP9yTEP29GgBVzJKRoZ-1920-80.jpg" alt="Computex 2026 show floor" /><figcaption><small role="credit">Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/t2NFj9QYLb5uJvb3tjs4nZ-1920-80.jpg" alt="Computex 2026 show floor" /><figcaption><small role="credit">Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/DmunRpM7wahDNqq96Ky5WY-1920-80.jpg" alt="Computex 2026 show floor" /><figcaption><small role="credit">Tom's Guide</small></figcaption></figure></figure><p>Computex is the biggest computing industry event of the year, and in among the flagship keynotes it's always fun to roam the halls and see what's on offer. </p><p>So far this year, we've spied a holographic PC that uses AI to answer your questions, a custom-built GTA VI PC that could be outdated before the game itself actually arrives and the forthcoming Wireless Touchpad Keyboard from sustainable laptop company Framework.</p></div><div class="live-content"><time datetime="2026-06-02T11:57:36+00:00">June 2, 2026 – 7:57 AM</time><h2 id="intel-arc-g3-steps-up-against-amd-2">Intel Arc G3 steps up against AMD</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="dfy9CxfFkp6UmjdfoRjC6o" name="Acer Predator Atlas 8" alt="Acer Predator Atlas 8" src="https://cdn.mos.cms.futurecdn.net/dfy9CxfFkp6UmjdfoRjC6o-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p><a href="https://www.tomsguide.com/gaming/handheld-gaming/intel-arc-g3-is-here-to-shake-up-handheld-gaming-and-amd-should-be-terrified-acer-predator-atlas-8-is-the-first-out-the-gate">Intel Arc G3 and G3 Extreme</a> are really bringing the heat with a monstrous integrated GPU and XeSS 3, seemingly delivering some of the best handheld gaming experiences you can get.</p><p>We've checked out the <a href="https://www.tomsguide.com/gaming/handheld-gaming/acer-predator-atlas-8-hands-on-review">Acer Predator Atlas 8</a> and the <a href="https://www.tomsguide.com/gaming/handheld-gaming/msi-claw-8-ex-ai-plus-hands-on-review">MSI Claw 8 EX AI+</a> here at Computex already, and both have impressed us with their smooth performance. </p><p>This is a huge win for Intel, which has, up until now, played second fiddle to AMD and its near-dominance over the handheld space.</p></div><div class="live-content"><time datetime="2026-06-02T12:19:08+00:00">June 2, 2026 – 8:19 AM</time><h2 id="macbook-neo-has-competition-from-dell-2">MacBook Neo has competition from Dell</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6000px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="YG8Czrmg7tJvPgNji5ZEbL" name="DSC05649.JPG" alt="Dell XPS 13 next to MacBook Neo" src="https://cdn.mos.cms.futurecdn.net/YG8Czrmg7tJvPgNji5ZEbL-1920-80.jpg" mos="" align="middle" fullscreen="" width="6000" height="3376" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>We just got to go hands-on with Dell's new XPS laptop line but one device in particular stood out: the new Dell XPS 13. Thin, light and affordable, you know where this is going. We have <a href="https://www.tomsguide.com/computing/laptops/dell-just-announced-the-new-usd699-xps-13-and-it-could-be-a-macbook-neo-killer">another MacBook Neo competitor in our midst</a>.<br><br>The Dell XPS 13 does have a few nice extras you don't get on the Neo, like a backlit keyboard, a touchscreen and two full-featured USB-C 3.1 Gen 2 ports with one on each side. Stay tuned for our full hands-on but so far, I'm quite impressed.</p></div><div class="live-content"><time datetime="2026-06-02T12:58:00+00:00">June 2, 2026 – 8:58 AM</time><h2 id="a-mesmerizing-laptop-2">A mesmerizing laptop</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="T3bsKRqXYzdjdWXXyVpUe9" name="MSI Prestige 14 Flip AI+ Vincent van Gogh Edition" alt="MSI Prestige 14 Flip AI+ Vincent van Gogh Edition" src="https://cdn.mos.cms.futurecdn.net/T3bsKRqXYzdjdWXXyVpUe9-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Laptops tend to look similar, which is why the <a href="https://www.tomsguide.com/computing/laptops/msi-prestige-14-flip-ai-vincent-van-gogh-edition-hands-on-review">Prestige 14 Flip AI+ Vincent van Gogh Edition</a> stands out. Adorned with the troubled artist's work on the lid, it’s certainly a conversation starter. The fact that it’s built around a <a href="https://www.tomsguide.com/computing/laptops/msi-prestige-14-flip-ai-review">Prestige 14 Flip AI+</a> means you’re getting quite the workhorse here, too.</p><p>But what about the price? It’s the one question nobody can really answer, given how RAMageddon has put the whole computing market in flux. </p><p>To hazard a guess, given that the current Prestige sells for $1,299 and this is a more powerful special-edition machine, we bet it could be around $2,499. Of course, we'll have to wait and see what the actual price is.</p></div><div class="live-content"><time datetime="2026-06-02T13:44:28+00:00">June 2, 2026 – 9:44 AM</time><h2 id="could-microsoft-be-building-the-most-exciting-rtx-spark-laptop-2">Could Microsoft be building the most exciting RTX Spark laptop?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="jPf82R6ASS76yFSsoeyR4A" name="Surface Laptop Ultra lede" alt="Microsoft Surface Laptop Ultra" src="https://cdn.mos.cms.futurecdn.net/jPf82R6ASS76yFSsoeyR4A-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>Microsoft will be facing down the MacBook Pro with the Surface Laptop Ultra later this year, it's one of the <a href="https://www.tomsguide.com/computing/gaming-laptops/all-8-laptops-launching-with-nvidia-rtx-spark-this-fall-and-what-they-can-do">first eight laptops to arrive with Nvidia's RTX Spark</a> on board and it could be seriously impressive.</p><p>Microsoft claims this will be most powerful Surface it's ever built and there are a few specs we are already pretty confident about. For starters, it has a 15-inch mini-LED PixelSense Ultra display that can reportedly reach 2,000 nits of peak HDR brightness. There's also a full set of ports, including HDMI, USB-C, USB-A, an SD card reader, and a headphone jack. </p><p>The Surface Laptop Ultra will also reportedly have “all-day” battery life and you can expect it to come in Platinum and Nightfall finishes.</p><ul><li><strong>Read more:</strong> <a href="https://www.tomsguide.com/computing/laptops/microsofts-surface-laptop-ultra-packs-an-nvidia-spark-chip-and-it-could-be-a-macbook-pro-killer">Microsoft’s Surface Laptop Ultra packs an Nvidia Spark chip — and it could be a MacBook Pro killer</a></li></ul></div><div class="live-content"><time datetime="2026-06-02T13:56:59+00:00">June 2, 2026 – 9:56 AM</time><h2 id="asus-new-laptops-could-include-a-macbook-neo-rival">Asus' new laptops could include a MacBook Neo rival</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4080px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="bBPKBXyjTvWtXLGoukpKTf" name="ASUS Zenbook 14" alt="Asus Zenbook 14" src="https://cdn.mos.cms.futurecdn.net/bBPKBXyjTvWtXLGoukpKTf-1920-80.jpg" mos="" align="middle" fullscreen="" width="4080" height="2295" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Asus)</span></figcaption></figure><p>Asus has revealed its new laptop family at Computex and while we already know about the RTX Spark-equipped ProArt machines, but another device has caught my eye.</p><p>Asus is launching the new Zenbook 14 with base-level specs that include a Snapdragon X1-26-100 processor with 8GB RAM and 256GB of storage. Depending on the ongoing RAM crisis, Asus may be able to price this laptop to compete with the MacBook Neo.</p><p>For those that want a bit more power, the Zenbook 14 will also come with AMD and Intel configurations too.</p></div><div class="live-content"><time datetime="2026-06-02T15:14:03+00:00">June 2, 2026 – 11:14 AM</time><h2 id="msi-debuts-triple-mode-monitor-2">MSI debuts 'Triple Mode' monitor</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6000px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="HrTg3tCMgHBR5x54pkhcjC" name="DSC05695.JPG" alt="MSI Triple Mode QD-OLED Gaming Monitor" src="https://cdn.mos.cms.futurecdn.net/HrTg3tCMgHBR5x54pkhcjC-1920-80.jpg" mos="" align="middle" fullscreen="" width="6000" height="3376" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>This right here is the MSI MPG OLED 322URDX36. It's the first 31.5-inch, 4K 360Hz gaming monitor on the market to feature the 'Triple Mode' configuration technology. </p><p>It lets gamers switch freely between 4K 360Hz, 2K 520Hz, and FHD 680Hz based on their preferences — meeting the specific performance demands of various game genres. </p><p>The monitor rocks a peak HDR brightness of 1,500 nits and integrates an AI Care Sensor that "leverages accurate human detection to provide real-time OLED panel protection without compromising user privacy." Whatever that means.</p></div><div class="live-content"><time datetime="2026-06-02T16:15:34+00:00">June 2, 2026 – 12:15 PM</time><h2 id="rtx-spark-put-to-the-test-2">RTX Spark put to the test</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="EhWYmoygJ2EfpXBFi47X8P" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/EhWYmoygJ2EfpXBFi47X8P-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>We've had an opportunity to put Nvidia's RTX Spark to the test when it comes to video editing, gaming and AI and the results are...impressive. Now, the obvious caveat here is that we don't know what these machines are going to <em>cost</em> once they do arrive — but it should serve to make Apple and its MacBook Pro a little more than nervous.</p><p>Here's what my colleague Jason had to say after he'd spent some time with Nvidia's new chip: "With Microsoft in tow, working in lockstep to rebuild Windows 11 for Nvidia's agentic vision for the future of computing, these are going to be some truly mighty notebooks that may very well revolutionize the Windows laptop and truly stand on their own as the future of computing."</p><ul><li><strong>Read the full story:</strong> <a href="https://www.tomsguide.com/computing/laptops/nvidia-rtx-spark-hands-on-review">I just tested Nvidia RTX Spark laptops for video editing, gaming and AI — and the MacBook Pro is in trouble</a></li></ul></div> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/news/live/computex-2026-live</link>
                                                                            <description>
                            <![CDATA[ Computex 2026 is in full swing, and I've just tested the Nvidia RTX Spark laptops. Follow along for the latest hands-on impressions! ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">eVLWXyxu7haXNxhef8TXJ7</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/bmJyAYKCysBbmhYtDKN6oZ-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 02 Jun 2026 11:32:46 +0000</pubDate>                                                                                                                                <updated>Tue, 02 Jun 2026 19:39:39 +0000</updated>
                                                                                                                                            <category><![CDATA[Computing]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jason England ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/v4fSq5U4uZUEtGY2BwNuJ6-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jason brings a decade of tech and gaming journalism experience to his role as a Managing Editor of Computing at Tom&#039;s Guide. He has previously written for Laptop Mag, Tom&#039;s Hardware, Kotaku, Stuff and BBC Science Focus. In his spare time, you&#039;ll find Jason looking for good dogs to pet or thinking about eating pizza if he isn&#039;t already.&lt;/p&gt; ]]></dc:description>
                                                                                                        <dc:contributor><![CDATA[ Jeff Parsons ]]></dc:contributor>
                                                                    <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/bmJyAYKCysBbmhYtDKN6oZ-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Computex 2026]]></media:description>                                                            <media:text><![CDATA[Computex 2026]]></media:text>
                                <media:title type="plain"><![CDATA[Computex 2026]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/bmJyAYKCysBbmhYtDKN6oZ-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="live-content"><p><a href="https://www.tomsguide.com/tag/computex-2026">Computex 2026</a> is fully underway, and besides asking Nvidia CEO Jensen Huang about RTX Spark, I just tested the laptops of the future from Team Green!</p><p>But that's not all, as Intel's having a ball dunking on AMD with its Arc G3 gaming handheld chip in the <a href="https://www.tomsguide.com/gaming/handheld-gaming/msi-claw-8-ex-ai-plus-hands-on-review">MSI Claw 8 EX AI+</a>, we've been going hands-on with every Windows laptop that's facing off with the MacBook Neo (including the new Dell Xps 13), and much more.</p><p>Follow along with us for live updates from the ground, and keep us bookmarked throughout the week. You're going to want to see what we're up to!</p><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="5qk1l7" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><h3 class="article-body__section" id="section-read-the-latest-from-computex"><span>Read the latest from Computex</span></h3><ul><li><a href="https://www.tomsguide.com/computing/cpus/nvidia-rtx-spark-is-here-and-no-its-not-called-n1x-everything-you-need-to-know-about-the-super-chip-thats-about-to-change-laptops-forever">Nvidia RTX Spark is here, and it's going to 'reinvent the pc' — here's everything you need to know about this all-new laptop chip</a></li><li><a href="https://www.tomsguide.com/computing/i-spoke-to-nvidia-ceo-jensen-huang-about-rtx-spark-he-is-willing-to-work-on-an-rtx-gaming-handheld-n2x-and-n3x-are-already-planned-and-the-chip-is-more-like-r2d2-than-a-laptop-cpu">I spoke to Nvidia CEO Jensen Huang about RTX Spark — he is ‘willing to work’ on an RTX gaming handheld, N2X and N3X are already planned and the chip is 'more like R2D2’ than a laptop CPU</a></li><li><a href="https://www.tomsguide.com/computing/gaming-laptops/all-8-laptops-launching-with-nvidia-rtx-spark-this-fall-and-what-they-can-do">All 8 laptops launching with Nvidia RTX Spark this fall — and what they can do</a></li><li><a href="https://www.tomsguide.com/gaming/handheld-gaming/msi-claw-8-ex-ai-plus-hands-on-review">I just tested the MSI Claw 8 EX AI+ — Intel Arc G3 is a breakthrough for handheld gaming, but at what cost?</a></li><li><a href="https://www.tomsguide.com/computing/gpus/amd-radeon-rx-9070-gre-review">I gamed for 250 hours on AMD Radeon RX 9070 GRE — it’s a $549 nightmare for Nvidia’s RTX 5060 Ti</a></li><li><a href="https://www.tomsguide.com/computing/monitors/i-thought-asus-massive-32-inch-oled-would-be-my-favorite-computex-2026-monitor-i-was-wrong">I thought Asus' massive 32-inch OLED would be my favorite Computex 2026 monitor — but I found one that was even better</a></li><li><a href="https://www.tomsguide.com/computing/laptops/msi-prestige-14-flip-ai-vincent-van-gogh-edition-hands-on-review">I just held the most beautiful laptop, but I’m not sure Vincent van Gogh would be happy with his name connected to AI</a></li><li><a href="https://www.tomsguide.com/gaming/handheld-gaming/acer-predator-atlas-8-hands-on-review">I tested the Acer Predator Atlas 8, and played a game Intel told me not to — the numbers are staggering</a></li></ul><h3 class="article-body__section" id="section-live-updates"><span>LIVE UPDATES</span></h3></div><div class="live-content"><time datetime="2026-06-02T11:35:47+00:00">June 2, 2026 – 7:35 AM</time><h2 id="our-first-in-person-look-at-rtx-spark">Our first in-person look at RTX Spark</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6000px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="DcQ7kASCqVMBQSQ4FZJbTB" name="DSC05706.JPG" alt="MSI RTX Spark laptop and mini PC" src="https://cdn.mos.cms.futurecdn.net/DcQ7kASCqVMBQSQ4FZJbTB-1920-80.jpg" mos="" align="middle" fullscreen="" width="6000" height="3376" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>The big news of the conference so far is, of course, the RTX Spark and we've just got our first look at actual devices running Nvidia's chips from MSI. </p><p>They look even better in person than they did during Jensen's keynote yesterday. Hopefully, we'll be able to go hands-on with laptops, desktops and mini PCs running Nvidia RTX Spark chips soon.</p><ul><li><strong>Read more:</strong> <a href="https://www.tomsguide.com/computing/cpus/nvidia-rtx-spark-is-here-and-no-its-not-called-n1x-everything-you-need-to-know-about-the-super-chip-thats-about-to-change-laptops-forever">Nvidia RTX Spark is here, and it's going to 'reinvent the pc' — here's everything you need to know about this all-new laptop chip</a></li></ul></div><div class="live-content"><time datetime="2026-06-02T11:45:16+00:00">June 2, 2026 – 7:45 AM</time><h2 id="8-laptops-confirmed-to-launch-in-the-fall-with-rtx-spark-2">8 laptops confirmed to launch in the fall with RTX Spark</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1035px;"><p class="vanilla-image-block" style="padding-top:56.23%;"><img id="Jr9cN8mjLczEpYQnVpXMBE" name="Spark laptops" alt="Laptops confirmed to launch with Nvidia Spark" src="https://cdn.mos.cms.futurecdn.net/Jr9cN8mjLczEpYQnVpXMBE-1920-80.jpg" mos="" align="middle" fullscreen="" width="1035" height="582" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Nvidia's RTX Spark chip is already slated to appear in a bunch of laptops arriving this fall, including a new Surface Laptop from Microsoft. Following on from the laptops, expect to see it appearing in mini PCs and small form-factor from the likes of Dell, HP, Lenovo, Asus, MSI, Acer and Gigabyte.</p><p>Powered by the new chip, these laptops are poised to deliver a thin-and-light form factor coupled with elite battery life and enough power for desktop-class AI development and heavy video editing. They'll also be pretty good when it comes to gaming, too. </p><p>The only question is what will the pricing be for these new machines?</p><ul><li><strong>Read more:</strong> <a href="https://www.tomsguide.com/computing/gaming-laptops/all-8-laptops-launching-with-nvidia-rtx-spark-this-fall-and-what-they-can-do">All 8 laptops launching with Nvidia RTX Spark this fall — and what they can do</a></li></ul></div><div class="live-content"><time datetime="2026-06-02T11:54:12+00:00">June 2, 2026 – 7:54 AM</time><h2 id="reporting-from-the-show-floor">Reporting from the show floor!</h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/vZsRP9yTEP29GgBVzJKRoZ-1920-80.jpg" alt="Computex 2026 show floor" /><figcaption><small role="credit">Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/t2NFj9QYLb5uJvb3tjs4nZ-1920-80.jpg" alt="Computex 2026 show floor" /><figcaption><small role="credit">Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/DmunRpM7wahDNqq96Ky5WY-1920-80.jpg" alt="Computex 2026 show floor" /><figcaption><small role="credit">Tom's Guide</small></figcaption></figure></figure><p>Computex is the biggest computing industry event of the year, and in among the flagship keynotes it's always fun to roam the halls and see what's on offer. </p><p>So far this year, we've spied a holographic PC that uses AI to answer your questions, a custom-built GTA VI PC that could be outdated before the game itself actually arrives and the forthcoming Wireless Touchpad Keyboard from sustainable laptop company Framework.</p></div><div class="live-content"><time datetime="2026-06-02T11:57:36+00:00">June 2, 2026 – 7:57 AM</time><h2 id="intel-arc-g3-steps-up-against-amd-2">Intel Arc G3 steps up against AMD</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="dfy9CxfFkp6UmjdfoRjC6o" name="Acer Predator Atlas 8" alt="Acer Predator Atlas 8" src="https://cdn.mos.cms.futurecdn.net/dfy9CxfFkp6UmjdfoRjC6o-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p><a href="https://www.tomsguide.com/gaming/handheld-gaming/intel-arc-g3-is-here-to-shake-up-handheld-gaming-and-amd-should-be-terrified-acer-predator-atlas-8-is-the-first-out-the-gate">Intel Arc G3 and G3 Extreme</a> are really bringing the heat with a monstrous integrated GPU and XeSS 3, seemingly delivering some of the best handheld gaming experiences you can get.</p><p>We've checked out the <a href="https://www.tomsguide.com/gaming/handheld-gaming/acer-predator-atlas-8-hands-on-review">Acer Predator Atlas 8</a> and the <a href="https://www.tomsguide.com/gaming/handheld-gaming/msi-claw-8-ex-ai-plus-hands-on-review">MSI Claw 8 EX AI+</a> here at Computex already, and both have impressed us with their smooth performance. </p><p>This is a huge win for Intel, which has, up until now, played second fiddle to AMD and its near-dominance over the handheld space.</p></div><div class="live-content"><time datetime="2026-06-02T12:19:08+00:00">June 2, 2026 – 8:19 AM</time><h2 id="macbook-neo-has-competition-from-dell-2">MacBook Neo has competition from Dell</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6000px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="YG8Czrmg7tJvPgNji5ZEbL" name="DSC05649.JPG" alt="Dell XPS 13 next to MacBook Neo" src="https://cdn.mos.cms.futurecdn.net/YG8Czrmg7tJvPgNji5ZEbL-1920-80.jpg" mos="" align="middle" fullscreen="" width="6000" height="3376" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>We just got to go hands-on with Dell's new XPS laptop line but one device in particular stood out: the new Dell XPS 13. Thin, light and affordable, you know where this is going. We have <a href="https://www.tomsguide.com/computing/laptops/dell-just-announced-the-new-usd699-xps-13-and-it-could-be-a-macbook-neo-killer">another MacBook Neo competitor in our midst</a>.<br><br>The Dell XPS 13 does have a few nice extras you don't get on the Neo, like a backlit keyboard, a touchscreen and two full-featured USB-C 3.1 Gen 2 ports with one on each side. Stay tuned for our full hands-on but so far, I'm quite impressed.</p></div><div class="live-content"><time datetime="2026-06-02T12:58:00+00:00">June 2, 2026 – 8:58 AM</time><h2 id="a-mesmerizing-laptop-2">A mesmerizing laptop</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="T3bsKRqXYzdjdWXXyVpUe9" name="MSI Prestige 14 Flip AI+ Vincent van Gogh Edition" alt="MSI Prestige 14 Flip AI+ Vincent van Gogh Edition" src="https://cdn.mos.cms.futurecdn.net/T3bsKRqXYzdjdWXXyVpUe9-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Laptops tend to look similar, which is why the <a href="https://www.tomsguide.com/computing/laptops/msi-prestige-14-flip-ai-vincent-van-gogh-edition-hands-on-review">Prestige 14 Flip AI+ Vincent van Gogh Edition</a> stands out. Adorned with the troubled artist's work on the lid, it’s certainly a conversation starter. The fact that it’s built around a <a href="https://www.tomsguide.com/computing/laptops/msi-prestige-14-flip-ai-review">Prestige 14 Flip AI+</a> means you’re getting quite the workhorse here, too.</p><p>But what about the price? It’s the one question nobody can really answer, given how RAMageddon has put the whole computing market in flux. </p><p>To hazard a guess, given that the current Prestige sells for $1,299 and this is a more powerful special-edition machine, we bet it could be around $2,499. Of course, we'll have to wait and see what the actual price is.</p></div><div class="live-content"><time datetime="2026-06-02T13:44:28+00:00">June 2, 2026 – 9:44 AM</time><h2 id="could-microsoft-be-building-the-most-exciting-rtx-spark-laptop-2">Could Microsoft be building the most exciting RTX Spark laptop?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="jPf82R6ASS76yFSsoeyR4A" name="Surface Laptop Ultra lede" alt="Microsoft Surface Laptop Ultra" src="https://cdn.mos.cms.futurecdn.net/jPf82R6ASS76yFSsoeyR4A-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>Microsoft will be facing down the MacBook Pro with the Surface Laptop Ultra later this year, it's one of the <a href="https://www.tomsguide.com/computing/gaming-laptops/all-8-laptops-launching-with-nvidia-rtx-spark-this-fall-and-what-they-can-do">first eight laptops to arrive with Nvidia's RTX Spark</a> on board and it could be seriously impressive.</p><p>Microsoft claims this will be most powerful Surface it's ever built and there are a few specs we are already pretty confident about. For starters, it has a 15-inch mini-LED PixelSense Ultra display that can reportedly reach 2,000 nits of peak HDR brightness. There's also a full set of ports, including HDMI, USB-C, USB-A, an SD card reader, and a headphone jack. </p><p>The Surface Laptop Ultra will also reportedly have “all-day” battery life and you can expect it to come in Platinum and Nightfall finishes.</p><ul><li><strong>Read more:</strong> <a href="https://www.tomsguide.com/computing/laptops/microsofts-surface-laptop-ultra-packs-an-nvidia-spark-chip-and-it-could-be-a-macbook-pro-killer">Microsoft’s Surface Laptop Ultra packs an Nvidia Spark chip — and it could be a MacBook Pro killer</a></li></ul></div><div class="live-content"><time datetime="2026-06-02T13:56:59+00:00">June 2, 2026 – 9:56 AM</time><h2 id="asus-new-laptops-could-include-a-macbook-neo-rival">Asus' new laptops could include a MacBook Neo rival</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4080px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="bBPKBXyjTvWtXLGoukpKTf" name="ASUS Zenbook 14" alt="Asus Zenbook 14" src="https://cdn.mos.cms.futurecdn.net/bBPKBXyjTvWtXLGoukpKTf-1920-80.jpg" mos="" align="middle" fullscreen="" width="4080" height="2295" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Asus)</span></figcaption></figure><p>Asus has revealed its new laptop family at Computex and while we already know about the RTX Spark-equipped ProArt machines, but another device has caught my eye.</p><p>Asus is launching the new Zenbook 14 with base-level specs that include a Snapdragon X1-26-100 processor with 8GB RAM and 256GB of storage. Depending on the ongoing RAM crisis, Asus may be able to price this laptop to compete with the MacBook Neo.</p><p>For those that want a bit more power, the Zenbook 14 will also come with AMD and Intel configurations too.</p></div><div class="live-content"><time datetime="2026-06-02T15:14:03+00:00">June 2, 2026 – 11:14 AM</time><h2 id="msi-debuts-triple-mode-monitor-2">MSI debuts 'Triple Mode' monitor</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6000px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="HrTg3tCMgHBR5x54pkhcjC" name="DSC05695.JPG" alt="MSI Triple Mode QD-OLED Gaming Monitor" src="https://cdn.mos.cms.futurecdn.net/HrTg3tCMgHBR5x54pkhcjC-1920-80.jpg" mos="" align="middle" fullscreen="" width="6000" height="3376" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>This right here is the MSI MPG OLED 322URDX36. It's the first 31.5-inch, 4K 360Hz gaming monitor on the market to feature the 'Triple Mode' configuration technology. </p><p>It lets gamers switch freely between 4K 360Hz, 2K 520Hz, and FHD 680Hz based on their preferences — meeting the specific performance demands of various game genres. </p><p>The monitor rocks a peak HDR brightness of 1,500 nits and integrates an AI Care Sensor that "leverages accurate human detection to provide real-time OLED panel protection without compromising user privacy." Whatever that means.</p></div><div class="live-content"><time datetime="2026-06-02T16:15:34+00:00">June 2, 2026 – 12:15 PM</time><h2 id="rtx-spark-put-to-the-test-2">RTX Spark put to the test</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="EhWYmoygJ2EfpXBFi47X8P" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/EhWYmoygJ2EfpXBFi47X8P-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>We've had an opportunity to put Nvidia's RTX Spark to the test when it comes to video editing, gaming and AI and the results are...impressive. Now, the obvious caveat here is that we don't know what these machines are going to <em>cost</em> once they do arrive — but it should serve to make Apple and its MacBook Pro a little more than nervous.</p><p>Here's what my colleague Jason had to say after he'd spent some time with Nvidia's new chip: "With Microsoft in tow, working in lockstep to rebuild Windows 11 for Nvidia's agentic vision for the future of computing, these are going to be some truly mighty notebooks that may very well revolutionize the Windows laptop and truly stand on their own as the future of computing."</p><ul><li><strong>Read the full story:</strong> <a href="https://www.tomsguide.com/computing/laptops/nvidia-rtx-spark-hands-on-review">I just tested Nvidia RTX Spark laptops for video editing, gaming and AI — and the MacBook Pro is in trouble</a></li></ul></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I just tested Nvidia RTX Spark laptops for video editing, gaming and AI — and the MacBook Pro is in trouble ]]></title>
                                                                                                <dc:content><![CDATA[ <p>So, to start my thoughts on testing <a href="https://www.tomsguide.com/computing/gaming-laptops/all-8-laptops-launching-with-nvidia-rtx-spark-this-fall-and-what-they-can-do">Nvidia RTX Spark laptops</a>, some context is needed.</p><p>My daily driver is the <a href="https://www.tomsguide.com/computing/macbooks/macbook-pro-m5-review">M5 MacBook Pro</a> for its lightning fast performance and power efficiency to be just as fast on and off the charger, but I have to carry a <a href="https://www.tomsguide.com/reviews/steam-deck-oled">Steam Deck</a> for the gaming side of it. Enter RTX Spark, and that compromise is gone.</p><p>With Microsoft in tow, working in lockstep to rebuild Windows 11 for Nvidia's agentic vision for the future of computing, these are going to be some truly mighty notebooks that may very well revolutionize the Windows laptop and truly stand on their own as the future of computing.</p><p>But even if you’re not interested in the AI features, Nvidia has created the silicon that <em>actually </em>can kill the MacBook. No joke. Let me explain.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W0mjMO"></div>                            </div>                            <script src="https://kwizly.com/embed/W0mjMO.js" async></script><h2 id="nvidia-rtx-spark-adobe-premiere-pro-boost">Nvidia RTX Spark: Adobe Premiere Pro boost</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ZsKE6oANrP4riZc8VBwHMP" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/ZsKE6oANrP4riZc8VBwHMP-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Nvidia worked closely with key creative app developers to ensure serious speed increases with that on-board GPU. Adobe Premiere Pro is 2x faster in key tasks that you can automate with AI, like cutting down massive clips. Meanwhile, in Unreal Engine 5, a massive cityscape of trillions of polygons can be loaded and moved around with ease.</p><p>And even better? All of this can be done both while plugged in unplugged. That crucial MacBook Pro advantage is no longer limited to Apple’s notebooks.</p><p>With these big specs (128GB RAM in this economy!?) these particular variants will be limited to only the absolute pro creators, but it’s not too far of a stretch of the imagination to see lower-end versions of these chips being more than enough for putting your projects together.</p><h2 id="nvidia-rtx-spark-gaming">Nvidia RTX Spark: Gaming</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="RewkLciiWWu8fmzQZn4nUP" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/RewkLciiWWu8fmzQZn4nUP-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>This is the main weakness of any MacBook. Don’t get me wrong, they do offer game support, and apps like GameHub can navigate the compatibility issues and give you some form of PC gaming. But none of it compares to a DLSS-armed RTX Spark system.</p><p>Whether it’s Arm-native games like Alan Wake 2 taking full advantage of DLSS 4.5 ray reconstruction for some eye-catching visuals, or games that are being emulated like Pragmata, you’re getting a buttery smooth experience across the board. Nvidia wouldn’t show us FPS numbers, so based on eyeing it, I saw both these games in excess of 100 FPS on these laptop screens (which I assume are 120Hz).</p><p>The questions I don’t have answers to yet are how much that emulation harms performance (if at all), and whether battery life is impacted. But based on early impressions, these are laptops you can work on and play on.</p><h2 id="nvidia-rtx-spark-going-agentic">Nvidia RTX Spark: Going agentic</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="EhWYmoygJ2EfpXBFi47X8P" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/EhWYmoygJ2EfpXBFi47X8P-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Let’s get into Team Green’s mission to “reinvent the PC” to begin with. I got to try out some demos of some of its agentic features.</p><p>First, there was a mutli-device OpenClaw situation of talking to your computer. This was done on a DGX Spark mini PC, but given the silicon is practically identical to RTX Spark (just that the latter is optimized for Windows), you can do this too. And the idea of your computer being something that you can work with from anywhere no matter what device came into view.</p><p>From complex things like coding a website landing page to simpler things like translating a menu and picking the right dish with low salt if you have high blood pressure, the long memory context that can be saved and loaded into the massive memory on tap here is significant.</p><p>Second, there was the multi-app pipeline of getting something done. I got to recreate the demo from the keynote where a griffin was AI generated in Photoshop based on a sketch, turned into a 3D model and animated via ComfyUI (the visual way of connecting AI models together).</p><p>The speed was seriously impressive, though you did see the limitations of the current local AI models, where the legs would disappear in what I assume was some hallucination madness.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="QvUkaJevhA8BvZ7cyd8CRP" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/QvUkaJevhA8BvZ7cyd8CRP-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Then came the developer side of things. I won’t go into the vibecoding bit of it (I don’t really agree this is the way to create sites and apps), but what I will talk about is the system taking agentic control of the website. The last time I tested something agentic on a web browser was Opera’s Browser Operator, which would take a screenshot and then send it to an LLM in the cloud to devise the next move.</p><p>All happening securely on the system, the speed difference is night and day — tearing through a site and filling in a form in mere seconds. This is a glimpse of what telling your laptop to just do something can be.</p><p>And yes, the bird creation turned into video definitely screams AI slop, but the principle is there. You can imagine the natural language prompts with an image to tweak the colors and contrast, or turning your pencilled ideas into something that can inspire a real-life idea.</p><p>Also, shout-out to the tweaks being made to Windows 11 too! Attaching the taskbar to the side of the monitor is a revelation to getting it out of the way and focusing on your work.</p><h2 id="the-nvidia-rtx-spark-laptops-are-seriously-good">The Nvidia RTX Spark laptops are seriously good</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="jRHxfLtx34MLCvks53ZGMP" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/jRHxfLtx34MLCvks53ZGMP-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Then there’s the laptops themselves. I won’t spend too much time talking about them here, as I want to rank them in a future piece (spoiler alert: that Asus ProArt P14 is calling to me). But to match that expected high price, there are some seriously sleek hardware options coming.</p><p>One thing you’ll notice is that these are very familiar shells with maybe a tweak for cooling here and there. This lines up well with what Nvidia CEO Jensen Huang told me about wanting users to “go on the journey at your own pace” when it comes to the agentic side of things. So to completely flip the laptop build would probably terrify some folks.</p><p>For the 2-in-1 crowd, the MSI Prestige N16 Flip AI+ is a seriously nice system, Microsoft’s Surface Laptop Ultra is a luxurious device, HP’s Omnibook 14X has an amazing keyboard, and the Dell XPS 16 Creator Edition gives you a nice upmarket feel. These partners have truly pulled out all the stops to provide some primo shells for Nvidia’s silicon.</p><h2 id="rtx-spark-outlook">RTX Spark outlook</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="38ktfWC5JHPxWo7jUrDWuM" name="Nvidia" alt="Nvidia" src="https://cdn.mos.cms.futurecdn.net/38ktfWC5JHPxWo7jUrDWuM-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I was speaking with our video producer extraordinaire Paul Antill in an uber around Taipei, and he asked about whether RTX Spark could beat the MacBook. To me, that question is always a bit of a poison pill, but one that is fair — every tech news outlet is guilty of saying “this laptop is good, but it’s not quite as good as the MacBook.”</p><p>But now, finally, after years and years of waiting for an Apple killer, Nvidia has stepped up and done the damned thing. AI slop laptop potential aside (lapslop?), this is a phenomenal chip that delivers <strong>big </strong>on making an extremely powerful machine both on and off the charger with serious power efficiency, while also being a peak gaming machine, too.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/i-spoke-to-nvidia-ceo-jensen-huang-about-rtx-spark-he-is-willing-to-work-on-an-rtx-gaming-handheld-n2x-and-n3x-are-already-planned-and-the-chip-is-more-like-r2d2-than-a-laptop-cpu">I spoke to Nvidia CEO Jensen Huang about RTX Spark — he is ‘willing to work’ on an RTX gaming handheld, N2X and N3X are already planned and the chip is 'more like R2D2’ than a laptop CPU</a></li><li><a href="https://www.tomsguide.com/computing/gpus/amd-radeon-rx-9070-gre-review">I gamed for 250 hours on AMD Radeon RX 9070 GRE — it’s a $549 nightmare for Nvidia’s RTX 5060 Ti</a></li><li><a href="https://www.tomsguide.com/gaming/handheld-gaming/msi-claw-8-ex-ai-plus-hands-on-review">I just tested the MSI Claw 8 EX AI+ — it leaves ROG Xbox Ally in the dust with breakthrough Intel Arc G3 power</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/laptops/nvidia-rtx-spark-hands-on-review</link>
                                                                            <description>
                            <![CDATA[ I went hands-on with Nvidia’s powerful new RTX Spark laptops at Computex 2026. Combining all-day Arm efficiency with elite DLSS 4.5 gaming, they completely threaten the MacBook Pro. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">3fBg3BSkSuwmtSMx6PLRq4</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/NC4Vevw7coKXAFTkqRDdYP-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 02 Jun 2026 11:22:51 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Laptops]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jason England ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/v4fSq5U4uZUEtGY2BwNuJ6-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jason brings a decade of tech and gaming journalism experience to his role as a Managing Editor of Computing at Tom&#039;s Guide. He has previously written for Laptop Mag, Tom&#039;s Hardware, Kotaku, Stuff and BBC Science Focus. In his spare time, you&#039;ll find Jason looking for good dogs to pet or thinking about eating pizza if he isn&#039;t already.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/NC4Vevw7coKXAFTkqRDdYP-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Nvidia RTX Spark]]></media:description>                                                            <media:text><![CDATA[Nvidia RTX Spark]]></media:text>
                                <media:title type="plain"><![CDATA[Nvidia RTX Spark]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/NC4Vevw7coKXAFTkqRDdYP-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>So, to start my thoughts on testing <a href="https://www.tomsguide.com/computing/gaming-laptops/all-8-laptops-launching-with-nvidia-rtx-spark-this-fall-and-what-they-can-do">Nvidia RTX Spark laptops</a>, some context is needed.</p><p>My daily driver is the <a href="https://www.tomsguide.com/computing/macbooks/macbook-pro-m5-review">M5 MacBook Pro</a> for its lightning fast performance and power efficiency to be just as fast on and off the charger, but I have to carry a <a href="https://www.tomsguide.com/reviews/steam-deck-oled">Steam Deck</a> for the gaming side of it. Enter RTX Spark, and that compromise is gone.</p><p>With Microsoft in tow, working in lockstep to rebuild Windows 11 for Nvidia's agentic vision for the future of computing, these are going to be some truly mighty notebooks that may very well revolutionize the Windows laptop and truly stand on their own as the future of computing.</p><p>But even if you’re not interested in the AI features, Nvidia has created the silicon that <em>actually </em>can kill the MacBook. No joke. Let me explain.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W0mjMO"></div>                            </div>                            <script src="https://kwizly.com/embed/W0mjMO.js" async></script><h2 id="nvidia-rtx-spark-adobe-premiere-pro-boost">Nvidia RTX Spark: Adobe Premiere Pro boost</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ZsKE6oANrP4riZc8VBwHMP" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/ZsKE6oANrP4riZc8VBwHMP-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Nvidia worked closely with key creative app developers to ensure serious speed increases with that on-board GPU. Adobe Premiere Pro is 2x faster in key tasks that you can automate with AI, like cutting down massive clips. Meanwhile, in Unreal Engine 5, a massive cityscape of trillions of polygons can be loaded and moved around with ease.</p><p>And even better? All of this can be done both while plugged in unplugged. That crucial MacBook Pro advantage is no longer limited to Apple’s notebooks.</p><p>With these big specs (128GB RAM in this economy!?) these particular variants will be limited to only the absolute pro creators, but it’s not too far of a stretch of the imagination to see lower-end versions of these chips being more than enough for putting your projects together.</p><h2 id="nvidia-rtx-spark-gaming">Nvidia RTX Spark: Gaming</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="RewkLciiWWu8fmzQZn4nUP" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/RewkLciiWWu8fmzQZn4nUP-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>This is the main weakness of any MacBook. Don’t get me wrong, they do offer game support, and apps like GameHub can navigate the compatibility issues and give you some form of PC gaming. But none of it compares to a DLSS-armed RTX Spark system.</p><p>Whether it’s Arm-native games like Alan Wake 2 taking full advantage of DLSS 4.5 ray reconstruction for some eye-catching visuals, or games that are being emulated like Pragmata, you’re getting a buttery smooth experience across the board. Nvidia wouldn’t show us FPS numbers, so based on eyeing it, I saw both these games in excess of 100 FPS on these laptop screens (which I assume are 120Hz).</p><p>The questions I don’t have answers to yet are how much that emulation harms performance (if at all), and whether battery life is impacted. But based on early impressions, these are laptops you can work on and play on.</p><h2 id="nvidia-rtx-spark-going-agentic">Nvidia RTX Spark: Going agentic</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="EhWYmoygJ2EfpXBFi47X8P" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/EhWYmoygJ2EfpXBFi47X8P-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Let’s get into Team Green’s mission to “reinvent the PC” to begin with. I got to try out some demos of some of its agentic features.</p><p>First, there was a mutli-device OpenClaw situation of talking to your computer. This was done on a DGX Spark mini PC, but given the silicon is practically identical to RTX Spark (just that the latter is optimized for Windows), you can do this too. And the idea of your computer being something that you can work with from anywhere no matter what device came into view.</p><p>From complex things like coding a website landing page to simpler things like translating a menu and picking the right dish with low salt if you have high blood pressure, the long memory context that can be saved and loaded into the massive memory on tap here is significant.</p><p>Second, there was the multi-app pipeline of getting something done. I got to recreate the demo from the keynote where a griffin was AI generated in Photoshop based on a sketch, turned into a 3D model and animated via ComfyUI (the visual way of connecting AI models together).</p><p>The speed was seriously impressive, though you did see the limitations of the current local AI models, where the legs would disappear in what I assume was some hallucination madness.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="QvUkaJevhA8BvZ7cyd8CRP" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/QvUkaJevhA8BvZ7cyd8CRP-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Then came the developer side of things. I won’t go into the vibecoding bit of it (I don’t really agree this is the way to create sites and apps), but what I will talk about is the system taking agentic control of the website. The last time I tested something agentic on a web browser was Opera’s Browser Operator, which would take a screenshot and then send it to an LLM in the cloud to devise the next move.</p><p>All happening securely on the system, the speed difference is night and day — tearing through a site and filling in a form in mere seconds. This is a glimpse of what telling your laptop to just do something can be.</p><p>And yes, the bird creation turned into video definitely screams AI slop, but the principle is there. You can imagine the natural language prompts with an image to tweak the colors and contrast, or turning your pencilled ideas into something that can inspire a real-life idea.</p><p>Also, shout-out to the tweaks being made to Windows 11 too! Attaching the taskbar to the side of the monitor is a revelation to getting it out of the way and focusing on your work.</p><h2 id="the-nvidia-rtx-spark-laptops-are-seriously-good">The Nvidia RTX Spark laptops are seriously good</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="jRHxfLtx34MLCvks53ZGMP" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/jRHxfLtx34MLCvks53ZGMP-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Then there’s the laptops themselves. I won’t spend too much time talking about them here, as I want to rank them in a future piece (spoiler alert: that Asus ProArt P14 is calling to me). But to match that expected high price, there are some seriously sleek hardware options coming.</p><p>One thing you’ll notice is that these are very familiar shells with maybe a tweak for cooling here and there. This lines up well with what Nvidia CEO Jensen Huang told me about wanting users to “go on the journey at your own pace” when it comes to the agentic side of things. So to completely flip the laptop build would probably terrify some folks.</p><p>For the 2-in-1 crowd, the MSI Prestige N16 Flip AI+ is a seriously nice system, Microsoft’s Surface Laptop Ultra is a luxurious device, HP’s Omnibook 14X has an amazing keyboard, and the Dell XPS 16 Creator Edition gives you a nice upmarket feel. These partners have truly pulled out all the stops to provide some primo shells for Nvidia’s silicon.</p><h2 id="rtx-spark-outlook">RTX Spark outlook</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="38ktfWC5JHPxWo7jUrDWuM" name="Nvidia" alt="Nvidia" src="https://cdn.mos.cms.futurecdn.net/38ktfWC5JHPxWo7jUrDWuM-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I was speaking with our video producer extraordinaire Paul Antill in an uber around Taipei, and he asked about whether RTX Spark could beat the MacBook. To me, that question is always a bit of a poison pill, but one that is fair — every tech news outlet is guilty of saying “this laptop is good, but it’s not quite as good as the MacBook.”</p><p>But now, finally, after years and years of waiting for an Apple killer, Nvidia has stepped up and done the damned thing. AI slop laptop potential aside (lapslop?), this is a phenomenal chip that delivers <strong>big </strong>on making an extremely powerful machine both on and off the charger with serious power efficiency, while also being a peak gaming machine, too.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/i-spoke-to-nvidia-ceo-jensen-huang-about-rtx-spark-he-is-willing-to-work-on-an-rtx-gaming-handheld-n2x-and-n3x-are-already-planned-and-the-chip-is-more-like-r2d2-than-a-laptop-cpu">I spoke to Nvidia CEO Jensen Huang about RTX Spark — he is ‘willing to work’ on an RTX gaming handheld, N2X and N3X are already planned and the chip is 'more like R2D2’ than a laptop CPU</a></li><li><a href="https://www.tomsguide.com/computing/gpus/amd-radeon-rx-9070-gre-review">I gamed for 250 hours on AMD Radeon RX 9070 GRE — it’s a $549 nightmare for Nvidia’s RTX 5060 Ti</a></li><li><a href="https://www.tomsguide.com/gaming/handheld-gaming/msi-claw-8-ex-ai-plus-hands-on-review">I just tested the MSI Claw 8 EX AI+ — it leaves ROG Xbox Ally in the dust with breakthrough Intel Arc G3 power</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I spoke to Nvidia CEO Jensen Huang about RTX Spark — he tells us why this is less of a laptop chip and more like 'R2-D2,' and shares future plans on N2X and N3X ]]></title>
                                                                                                <dc:content><![CDATA[ <p>So in case you’ve been living under a rock, Nvidia just changed the face of consumer computing with <a href="https://www.tomsguide.com/computing/cpus/nvidia-rtx-spark-is-here-and-no-its-not-called-n1x-everything-you-need-to-know-about-the-super-chip-thats-about-to-change-laptops-forever">RTX Spark</a> — a new all-in-one chip that Team Green aims to “reinvent the PC” with. It’s a bold mission and I wanted to know more, so I talked to CEO Jensen Huang about it in a Q&A at Computex 2026.</p><p>What does reinventing the PC actually look like? What does the future of this silicon look like? How does Huang fancy his chances against Apple silicon? And could we see Nvidia take this, pair it with its gaming handheld expertise with Nintendo Switch chipsets, and make a PC handheld? It was a long conversation, so grab a cuppa and find out what he had to say!</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W0mjMO"></div>                            </div>                            <script src="https://kwizly.com/embed/W0mjMO.js" async></script><h3 class="article-body__section" id="section-jensen-wants-to-turn-your-pc-into-r2-d2"><span>Jensen wants to turn your PC into R2-D2</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="9DZ8Rg3N4MCTkbxMAyvb8N" name="Nvidia" alt="Nvidia" src="https://cdn.mos.cms.futurecdn.net/9DZ8Rg3N4MCTkbxMAyvb8N-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I think the most fascinating part of this talk came down to the grand vision of where Huang and Nvidia see the world of computing going. You’ve already heard about the want to reinvent the PC with agents, but he goes into more detail here.</p><p>“I believe that today, the computer sits there waiting for us to use it. In the future, when we leave it, we’ll be talking with it all the time,” Huang expanded. “I’ll be chatting with my agent on WhatsApp. It’ll be talking back to me. It’ll even call me!</p><p>“That is the personal computer of the future. Tell me that’s not R2-D2. Tell me that’s not robotics. Tell me that’s not cool.”</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="YNp39WLpwfEdq6fT74hGyM" name="Nvidia" alt="Nvidia" src="https://cdn.mos.cms.futurecdn.net/YNp39WLpwfEdq6fT74hGyM-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>And looking back to Nvidia’s keen interest and investment in <a href="https://www.tomsguide.com/ai/i-tested-the-viral-ai-agent-that-could-replace-apps-and-it-made-me-appreciate-my-computer-without-it">OpenClaw</a> and innovating upon it for themselves suggests just how this vision comes together. Agentic AI via the cloud is slow, whereas with the right-trained model built locally into Windows, this could be a breeze. That is what RTX Spark is capable of.</p><p>That being said, Huang did acknowledge that the transition will be tricky, when asked the question about whether this should even be called a PC at all. Nvidia and Microsoft want to keep the foundational experience familiar, and make RTX Spark systems “100% awesome at everything you expect the PC to do,” so you can “go on that journey at your own pace” with the agentic side of things.</p><h3 class="article-body__section" id="section-the-roadmap-has-already-been-set"><span>The roadmap has already been set</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="VavrDU7C56RdmnwhmHkQjM" name="Nvidia" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/VavrDU7C56RdmnwhmHkQjM-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>To clear up any confusion, Huang was quick to confirm that N1X <em>is </em>RTX Spark, saying, “N1X was the project code name.”</p><p>But he went a little further into the family plans for the architecture, and its future too! “N2X and N3X are already planned, and N1X is called N1X because it has a smaller version called N1. We’re going to expand our family. We’re going to extend this architecture for a very long time.</p><p>And pointing back to Nvidia’s historical track record of taking care of its software over a long term, users can expect to keep their RTX Spark systems in their homes for 5-10 years. “Just like my home theater system,” Huang compared in probably one of the more humorous comparisons to home computing I’ve heard.</p><p>But this puts it right in line with what kind of longevity you can expect from Apple Silicon products. Speaking of…</p><h3 class="article-body__section" id="section-rtx-spark-vs-apple-silicon"><span>RTX Spark vs Apple Silicon</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="38ktfWC5JHPxWo7jUrDWuM" name="Nvidia" alt="Nvidia" src="https://cdn.mos.cms.futurecdn.net/38ktfWC5JHPxWo7jUrDWuM-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>In group Q&As like this, it’s best to make friends with the person next to you to double up on what you want to know. Shout-out to <a href="https://www.youtube.com/@ArshGoyal" target="_blank">Arsh Garwal</a> for stating the fact that RTX Spark is “basically entering Apple Silicon’s home turf,” and asking Huang what winning looks like for Nvidia in comparison.</p><p>“Apple’s ecosystem is excellent as you know, and they have a world-class silicon roadmap. But that’s not our focus,” Huang responded. “Our focus is to reinvent the PC. Windows is of course improving, but the basic architecture of a PC has largely been the same now for about 40 years, and we want to reinvent it.”</p><p>Of course, this is a subtle dodge of the question here, as Huang talks about how Apple has the ecosystem advantage (which it really does). But it goes to show the focused mission going on here.</p><h3 class="article-body__section" id="section-can-nvidia-have-its-own-nintendo-switch-now"><span>Can Nvidia have its own Nintendo Switch now?</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="MuqZhMjioFq7Bnu5smpChD" name="Nintendo_Switch2_ 8.JPG" alt="A Nintendo Switch 2 photographed under RGB lighting" src="https://cdn.mos.cms.futurecdn.net/MuqZhMjioFq7Bnu5smpChD-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>I got the chance to ask Huang a question about gaming — specifically handheld gaming. Besides the goal to “reinvent the PC” with Microsoft, this is an Arm chip that has the same graphical capabilities of an RTX 5070 notebook card, while being much more power-efficient. </p><p>Nvidia claims you can get 100 fps in Indiana Jones at 1440p, and with it being the full Team Green silicon, you’ve got access to all that DLSS 4.5 goodness with dynamic multi-frame generation. On top of that, Nvidia’s silicon is inside arguably the best-selling gaming handheld in the <a href="https://www.tomsguide.com/us/best-nintendo-switch-deals,news-26129.html">Nintendo Switch</a> and <a href="https://www.tomsguide.com/gaming/nintendo/nintendo-switch-2-console-review">Switch 2</a>.</p><p>And with <a href="https://www.tomsguide.com/gaming/handheld-gaming/intel-arc-g3-is-here-to-shake-up-handheld-gaming-and-amd-should-be-terrified-acer-predator-atlas-8-is-the-first-out-the-gate">Intel Arc G3</a> taking PC handhelds to the next generation of performance with its beasty integrated GPU and XeSS 3 AI trickery, it got me thinking. So I asked him whether he envisions a future where some form of this RTX Spark silicon comes to a gaming handheld.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6000px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="4EcE3wi48qZ49YUev7cr2N" name="DSC00121.JPG" alt="Paul Antill holding the MSI Claw 8 EX AI+ up for the camera at Computex 2026" src="https://cdn.mos.cms.futurecdn.net/4EcE3wi48qZ49YUev7cr2N-1920-80.jpg" mos="" align="middle" fullscreen="" width="6000" height="3376" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>“If somebody wants to do it, we'll work with them on it,” Huang responded. “But right now, we're really focused on doing something that is just such a big deal — reinventing the PC after 40 years.” Understandable given the lofty goals, but he goes on. I’ll just put the transcript here and analyze afterwards, as he touches on a lot of details.</p><p><em>“This is such a gigantic project. We worked with hundreds of people that worked inside the company for years now. Remember all of these applications in the Windows world and x86 world, we have to prove that they work fantastically. And all the games, they have to have anti-cheat turned on. All of that stuff is really really hard. There's a reason why today's PCs are so fragmented — that things that are great for Adobe aren't great for gaming, or things that are great for gaming aren't great for AI. The world has a very hard time uniting that into one platform, and we felt that we had the ability to do that from a technology perspective, from a software architecture perspective, and an ecosystem reach. And over the course of the last couple years between us and MediaTek, all the PC OEMs and Microsoft, you're going to hear more about it later today </em>[at <a href="https://www.tomsguide.com/news/live/computex-2026">Computex</a>]<em>. I mean, just the mountain of people just so that we could reshape this computer to get it ready for Agentic AI.”</em></p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="KHov7AksGqgLMecZDvrM8o" name="Acer Predator Atlas 8" alt="Acer Predator Atlas 8" src="https://cdn.mos.cms.futurecdn.net/KHov7AksGqgLMecZDvrM8o-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Now, there’s a whole lot of talk about the bigger mission here, and it’s clear that while Nvidia is willing to work on handheld gaming, that’s not the key focus here. But he does hint at some clear hurdles here, such as making sure this is an all-in-one platform that works great across everything. </p><p>Specifically calling out anti-cheat compatibility is an interesting side point. When speaking with Team Green separate of this Q&A, the team did say that native Arm anti-cheat is “one of the biggest challenges,” and that they are “working with developers to bring support for major anti-cheats like Easy Anti‑Cheat, BattlEye, and Denuvo among others.”</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:52.75%;"><img id="NhP2B7o57ptrxKS8hYPRK8" name="download" alt="Jason and Jensen happy birthday" src="https://cdn.mos.cms.futurecdn.net/NhP2B7o57ptrxKS8hYPRK8-1920-80.png" mos="" align="middle" fullscreen="" width="1200" height="633" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>And since it’s my birthday today, he decided to do something nice for me, as you can see! </p><h3 class="article-body__section" id="section-why-now"><span>Why now?</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Y4EPhkmk2MhiTRhDkBCJ9N" name="Nvidia" alt="Nvidia" src="https://cdn.mos.cms.futurecdn.net/Y4EPhkmk2MhiTRhDkBCJ9N-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>It’s a fair question. We heard about Nvidia entering the laptop silicon space for years and with the can getting kicked down the road every time, I honestly thought it would just subside. Plus, if we’re being real, the <em>vast </em>majority of Nvidia’s money comes from its data center business. So why now?</p><p>“We don’t really have to choose. The real question is can we make a contribution? If it’s only marginal, we won’t do it,” Huang responded. “If you get the chance to reinvent the single most important tool for humanity, and reinvent it in the age of AI, we’re not going to sit around and not get it done”</p><p>With physical AI only being “only a couple of years away,” he believes having a laptop primed for this will be critical to the future of computing as a whole. It’s a big bet, and the next few years will show whether it pays off.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/gpus/amd-radeon-rx-9070-gre-review">I gamed for 250 hours on AMD Radeon RX 9070 GRE — it’s a $549 nightmare for Nvidia’s RTX 5060 Ti</a></li><li><a href="https://www.tomsguide.com/gaming/handheld-gaming/msi-claw-8-ex-ai-plus-hands-on-review">I just tested the MSI Claw 8 EX AI+ — it leaves ROG Xbox Ally in the dust with breakthrough Intel Arc G3 power</a></li><li><a href="https://www.tomsguide.com/computing/laptops/msi-prestige-14-flip-ai-vincent-van-gogh-edition-hands-on-review">I just held the most beautiful laptop, but I’m not sure Vincent van Gogh would be happy with his name connected to AI</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/i-spoke-to-nvidia-ceo-jensen-huang-about-rtx-spark-he-is-willing-to-work-on-an-rtx-gaming-handheld-n2x-and-n3x-are-already-planned-and-the-chip-is-more-like-r2d2-than-a-laptop-cpu</link>
                                                                            <description>
                            <![CDATA[ I sat down with Nvidia CEO Jensen Huang at Computex 2026 to talk RTX Spark. He confirms N2X/N3X roadmaps and addresses the reality of an RTX gaming handheld. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">FDkwZxsjmdwAWW5KG5ra46</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/rqngRPxENRbTvnwaX25NFN-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 02 Jun 2026 09:46:00 +0000</pubDate>                                                                                                                                <updated>Wed, 03 Jun 2026 03:21:54 +0000</updated>
                                                                                                                                            <category><![CDATA[Computing]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jason England ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/v4fSq5U4uZUEtGY2BwNuJ6-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jason brings a decade of tech and gaming journalism experience to his role as a Managing Editor of Computing at Tom&#039;s Guide. He has previously written for Laptop Mag, Tom&#039;s Hardware, Kotaku, Stuff and BBC Science Focus. In his spare time, you&#039;ll find Jason looking for good dogs to pet or thinking about eating pizza if he isn&#039;t already.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/rqngRPxENRbTvnwaX25NFN-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Nvidia]]></media:description>                                                            <media:text><![CDATA[Nvidia]]></media:text>
                                <media:title type="plain"><![CDATA[Nvidia]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/rqngRPxENRbTvnwaX25NFN-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>So in case you’ve been living under a rock, Nvidia just changed the face of consumer computing with <a href="https://www.tomsguide.com/computing/cpus/nvidia-rtx-spark-is-here-and-no-its-not-called-n1x-everything-you-need-to-know-about-the-super-chip-thats-about-to-change-laptops-forever">RTX Spark</a> — a new all-in-one chip that Team Green aims to “reinvent the PC” with. It’s a bold mission and I wanted to know more, so I talked to CEO Jensen Huang about it in a Q&A at Computex 2026.</p><p>What does reinventing the PC actually look like? What does the future of this silicon look like? How does Huang fancy his chances against Apple silicon? And could we see Nvidia take this, pair it with its gaming handheld expertise with Nintendo Switch chipsets, and make a PC handheld? It was a long conversation, so grab a cuppa and find out what he had to say!</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W0mjMO"></div>                            </div>                            <script src="https://kwizly.com/embed/W0mjMO.js" async></script><h3 class="article-body__section" id="section-jensen-wants-to-turn-your-pc-into-r2-d2"><span>Jensen wants to turn your PC into R2-D2</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="9DZ8Rg3N4MCTkbxMAyvb8N" name="Nvidia" alt="Nvidia" src="https://cdn.mos.cms.futurecdn.net/9DZ8Rg3N4MCTkbxMAyvb8N-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I think the most fascinating part of this talk came down to the grand vision of where Huang and Nvidia see the world of computing going. You’ve already heard about the want to reinvent the PC with agents, but he goes into more detail here.</p><p>“I believe that today, the computer sits there waiting for us to use it. In the future, when we leave it, we’ll be talking with it all the time,” Huang expanded. “I’ll be chatting with my agent on WhatsApp. It’ll be talking back to me. It’ll even call me!</p><p>“That is the personal computer of the future. Tell me that’s not R2-D2. Tell me that’s not robotics. Tell me that’s not cool.”</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="YNp39WLpwfEdq6fT74hGyM" name="Nvidia" alt="Nvidia" src="https://cdn.mos.cms.futurecdn.net/YNp39WLpwfEdq6fT74hGyM-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>And looking back to Nvidia’s keen interest and investment in <a href="https://www.tomsguide.com/ai/i-tested-the-viral-ai-agent-that-could-replace-apps-and-it-made-me-appreciate-my-computer-without-it">OpenClaw</a> and innovating upon it for themselves suggests just how this vision comes together. Agentic AI via the cloud is slow, whereas with the right-trained model built locally into Windows, this could be a breeze. That is what RTX Spark is capable of.</p><p>That being said, Huang did acknowledge that the transition will be tricky, when asked the question about whether this should even be called a PC at all. Nvidia and Microsoft want to keep the foundational experience familiar, and make RTX Spark systems “100% awesome at everything you expect the PC to do,” so you can “go on that journey at your own pace” with the agentic side of things.</p><h3 class="article-body__section" id="section-the-roadmap-has-already-been-set"><span>The roadmap has already been set</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="VavrDU7C56RdmnwhmHkQjM" name="Nvidia" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/VavrDU7C56RdmnwhmHkQjM-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>To clear up any confusion, Huang was quick to confirm that N1X <em>is </em>RTX Spark, saying, “N1X was the project code name.”</p><p>But he went a little further into the family plans for the architecture, and its future too! “N2X and N3X are already planned, and N1X is called N1X because it has a smaller version called N1. We’re going to expand our family. We’re going to extend this architecture for a very long time.</p><p>And pointing back to Nvidia’s historical track record of taking care of its software over a long term, users can expect to keep their RTX Spark systems in their homes for 5-10 years. “Just like my home theater system,” Huang compared in probably one of the more humorous comparisons to home computing I’ve heard.</p><p>But this puts it right in line with what kind of longevity you can expect from Apple Silicon products. Speaking of…</p><h3 class="article-body__section" id="section-rtx-spark-vs-apple-silicon"><span>RTX Spark vs Apple Silicon</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="38ktfWC5JHPxWo7jUrDWuM" name="Nvidia" alt="Nvidia" src="https://cdn.mos.cms.futurecdn.net/38ktfWC5JHPxWo7jUrDWuM-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>In group Q&As like this, it’s best to make friends with the person next to you to double up on what you want to know. Shout-out to <a href="https://www.youtube.com/@ArshGoyal" target="_blank">Arsh Garwal</a> for stating the fact that RTX Spark is “basically entering Apple Silicon’s home turf,” and asking Huang what winning looks like for Nvidia in comparison.</p><p>“Apple’s ecosystem is excellent as you know, and they have a world-class silicon roadmap. But that’s not our focus,” Huang responded. “Our focus is to reinvent the PC. Windows is of course improving, but the basic architecture of a PC has largely been the same now for about 40 years, and we want to reinvent it.”</p><p>Of course, this is a subtle dodge of the question here, as Huang talks about how Apple has the ecosystem advantage (which it really does). But it goes to show the focused mission going on here.</p><h3 class="article-body__section" id="section-can-nvidia-have-its-own-nintendo-switch-now"><span>Can Nvidia have its own Nintendo Switch now?</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="MuqZhMjioFq7Bnu5smpChD" name="Nintendo_Switch2_ 8.JPG" alt="A Nintendo Switch 2 photographed under RGB lighting" src="https://cdn.mos.cms.futurecdn.net/MuqZhMjioFq7Bnu5smpChD-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>I got the chance to ask Huang a question about gaming — specifically handheld gaming. Besides the goal to “reinvent the PC” with Microsoft, this is an Arm chip that has the same graphical capabilities of an RTX 5070 notebook card, while being much more power-efficient. </p><p>Nvidia claims you can get 100 fps in Indiana Jones at 1440p, and with it being the full Team Green silicon, you’ve got access to all that DLSS 4.5 goodness with dynamic multi-frame generation. On top of that, Nvidia’s silicon is inside arguably the best-selling gaming handheld in the <a href="https://www.tomsguide.com/us/best-nintendo-switch-deals,news-26129.html">Nintendo Switch</a> and <a href="https://www.tomsguide.com/gaming/nintendo/nintendo-switch-2-console-review">Switch 2</a>.</p><p>And with <a href="https://www.tomsguide.com/gaming/handheld-gaming/intel-arc-g3-is-here-to-shake-up-handheld-gaming-and-amd-should-be-terrified-acer-predator-atlas-8-is-the-first-out-the-gate">Intel Arc G3</a> taking PC handhelds to the next generation of performance with its beasty integrated GPU and XeSS 3 AI trickery, it got me thinking. So I asked him whether he envisions a future where some form of this RTX Spark silicon comes to a gaming handheld.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6000px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="4EcE3wi48qZ49YUev7cr2N" name="DSC00121.JPG" alt="Paul Antill holding the MSI Claw 8 EX AI+ up for the camera at Computex 2026" src="https://cdn.mos.cms.futurecdn.net/4EcE3wi48qZ49YUev7cr2N-1920-80.jpg" mos="" align="middle" fullscreen="" width="6000" height="3376" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>“If somebody wants to do it, we'll work with them on it,” Huang responded. “But right now, we're really focused on doing something that is just such a big deal — reinventing the PC after 40 years.” Understandable given the lofty goals, but he goes on. I’ll just put the transcript here and analyze afterwards, as he touches on a lot of details.</p><p><em>“This is such a gigantic project. We worked with hundreds of people that worked inside the company for years now. Remember all of these applications in the Windows world and x86 world, we have to prove that they work fantastically. And all the games, they have to have anti-cheat turned on. All of that stuff is really really hard. There's a reason why today's PCs are so fragmented — that things that are great for Adobe aren't great for gaming, or things that are great for gaming aren't great for AI. The world has a very hard time uniting that into one platform, and we felt that we had the ability to do that from a technology perspective, from a software architecture perspective, and an ecosystem reach. And over the course of the last couple years between us and MediaTek, all the PC OEMs and Microsoft, you're going to hear more about it later today </em>[at <a href="https://www.tomsguide.com/news/live/computex-2026">Computex</a>]<em>. I mean, just the mountain of people just so that we could reshape this computer to get it ready for Agentic AI.”</em></p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="KHov7AksGqgLMecZDvrM8o" name="Acer Predator Atlas 8" alt="Acer Predator Atlas 8" src="https://cdn.mos.cms.futurecdn.net/KHov7AksGqgLMecZDvrM8o-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Now, there’s a whole lot of talk about the bigger mission here, and it’s clear that while Nvidia is willing to work on handheld gaming, that’s not the key focus here. But he does hint at some clear hurdles here, such as making sure this is an all-in-one platform that works great across everything. </p><p>Specifically calling out anti-cheat compatibility is an interesting side point. When speaking with Team Green separate of this Q&A, the team did say that native Arm anti-cheat is “one of the biggest challenges,” and that they are “working with developers to bring support for major anti-cheats like Easy Anti‑Cheat, BattlEye, and Denuvo among others.”</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:52.75%;"><img id="NhP2B7o57ptrxKS8hYPRK8" name="download" alt="Jason and Jensen happy birthday" src="https://cdn.mos.cms.futurecdn.net/NhP2B7o57ptrxKS8hYPRK8-1920-80.png" mos="" align="middle" fullscreen="" width="1200" height="633" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>And since it’s my birthday today, he decided to do something nice for me, as you can see! </p><h3 class="article-body__section" id="section-why-now"><span>Why now?</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Y4EPhkmk2MhiTRhDkBCJ9N" name="Nvidia" alt="Nvidia" src="https://cdn.mos.cms.futurecdn.net/Y4EPhkmk2MhiTRhDkBCJ9N-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>It’s a fair question. We heard about Nvidia entering the laptop silicon space for years and with the can getting kicked down the road every time, I honestly thought it would just subside. Plus, if we’re being real, the <em>vast </em>majority of Nvidia’s money comes from its data center business. So why now?</p><p>“We don’t really have to choose. The real question is can we make a contribution? If it’s only marginal, we won’t do it,” Huang responded. “If you get the chance to reinvent the single most important tool for humanity, and reinvent it in the age of AI, we’re not going to sit around and not get it done”</p><p>With physical AI only being “only a couple of years away,” he believes having a laptop primed for this will be critical to the future of computing as a whole. It’s a big bet, and the next few years will show whether it pays off.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/gpus/amd-radeon-rx-9070-gre-review">I gamed for 250 hours on AMD Radeon RX 9070 GRE — it’s a $549 nightmare for Nvidia’s RTX 5060 Ti</a></li><li><a href="https://www.tomsguide.com/gaming/handheld-gaming/msi-claw-8-ex-ai-plus-hands-on-review">I just tested the MSI Claw 8 EX AI+ — it leaves ROG Xbox Ally in the dust with breakthrough Intel Arc G3 power</a></li><li><a href="https://www.tomsguide.com/computing/laptops/msi-prestige-14-flip-ai-vincent-van-gogh-edition-hands-on-review">I just held the most beautiful laptop, but I’m not sure Vincent van Gogh would be happy with his name connected to AI</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ All 8 laptops launching with Nvidia RTX Spark this fall — and what they can do ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Nvidia has stormed <a href="https://www.tomsguide.com/news/live/computex-2026">Computex 2026</a> with the official announcement we all knew was coming: the company's first all-in-one laptop silicon called the <a href="https://www.tomsguide.com/computing/cpus/nvidia-rtx-spark-is-here-and-no-its-not-called-n1x-everything-you-need-to-know-about-the-super-chip-thats-about-to-change-laptops-forever">RTX Spark Super Chip family</a>.</p><p>Analysts are calling this Nvidia's most disruptive move in a decade, and my colleague Jason England likens it to the moment Apple <a href="https://www.tomsguide.com/computing/cpus/apples-m-series-chip-gamble-5-years-later-how-ditching-intel-revolutionized-computing-and-whats-next">unveiled its own M1 chip back in 2020</a>. By moving beyond GPUs into integrated processors, Nvidia is throwing the gauntlet down to Qualcomm, Intel and AMD.</p><p>Nvidia CEO Jensen Huang revealed RTX Spark during his keynote in Taipei, and the first laptops powered by the new chip should arrive in the fall. Beyond that, we can expect to see the RTX Spark appearing in mini PCs and small form-factor desktops from the likes of Dell, HP, Lenovo, Asus, MSI, Acer and Gigabyte.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1035px;"><p class="vanilla-image-block" style="padding-top:56.23%;"><img id="Jr9cN8mjLczEpYQnVpXMBE" name="Spark laptops" alt="Laptops confirmed to launch with Nvidia Spark" src="https://cdn.mos.cms.futurecdn.net/Jr9cN8mjLczEpYQnVpXMBE-1920-80.jpg" mos="" align="middle" fullscreen="" width="1035" height="582" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><div ><table><caption>Nvidia Spark specs</caption><tbody><tr><td class="firstcol " ><p><strong>Architecture</strong></p></td><td  ><p>TSMC’s 3nm process</p></td></tr><tr><td class="firstcol " ><p><strong>CPU</strong></p></td><td  ><p>Up to 20-core Grace CPU</p></td></tr><tr><td class="firstcol " ><p><strong>GPU</strong></p></td><td  ><p>Blackwell architecture with up to 6,144 CUDA cores</p></td></tr><tr><td class="firstcol " ><p><strong>Memory</strong></p></td><td  ><p>16GB-128GB Unified LPDDR5X with 300GB bandwidth</p></td></tr><tr><td class="firstcol " ><p><strong>I/O support</strong></p></td><td  ><p>USB4 and Thunderbolt</p></td></tr><tr><td class="firstcol " ><p><strong>Power</strong></p></td><td  ><p>Up to 80 watts TDP</p></td></tr></tbody></table></div><p>Huang noted that Nvidia and Microsoft have been working away on this for the last three years to "reinvent the PC for the first time in 40 years," aiming to move towards a responsive, proactive AI experience. Microsoft itself is coming out of the gate with an RTX Spark-powered <a href="https://www.tomsguide.com/computing/laptops/microsofts-surface-laptop-ultra-packs-an-nvidia-spark-chip-and-it-could-be-a-macbook-pro-killer">Surface Laptop Ultra that could be a MacBook Pro killer</a>.</p><p>Here's the list of the first eight RTX Spark-equipped laptops, along with a few details we know about them.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-O6PBQe"></div>                            </div>                            <script src="https://kwizly.com/embed/O6PBQe.js" async></script><h2 id="microsoft-surface-ultra">Microsoft Surface Ultra</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="rQDZVnF7DUySf26Asc2LJ3" name="Microsoft Surface Laptop Ultra" alt="Nvidia RTX Spark-equipped laptops" src="https://cdn.mos.cms.futurecdn.net/rQDZVnF7DUySf26Asc2LJ3-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Microsoft hasn't confirmed many details about its upcoming RTX Spark-powered <a href="https://www.tomsguide.com/computing/laptops/microsofts-surface-laptop-ultra-packs-an-nvidia-spark-chip-and-it-could-be-a-macbook-pro-killer">Surface Laptop Ultra</a>, but we know it'll have a 15-inch mini-LED touchscreen with 2,000 nits of peak brightness.</p><p>It will benefit from a large haptic touchpad and all the required ports: HDMI, USB-C, USB-A, SD card and a headphone jack.</p><p>Microsoft claims this will be “the most powerful Surface Laptop ever built” when it arrives later this year. Microsoft also claims it can run AI models locally and that the chip delivers power comparable to a mobile RTX 5070 GPU.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/s1Oj792qc80" allowfullscreen></iframe></div></div><h2 id="asus-proart">Asus ProArt</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="bEyWTfe5Fcrepk4pAUTYP3" name="Asus ProArt" alt="Nvidia RTX Spark-equipped laptops" src="https://cdn.mos.cms.futurecdn.net/bEyWTfe5Fcrepk4pAUTYP3-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Asus is planning to launch two RTX Spark-powered ProArt laptops later this year: the ProArt P16 and the ProArt P14. Both laptops will feature 120Hz OLED touch panels in the 16:10 format (one will be 16-inch, one 14-inch) and be geared towards creative professionals.</p><p>Memory will be up to 128GB LPDDR5X 9400, while storage can be configured up to 2TB on the P16 and 1TB on the P14. Regardless of which model you choose, you'll get a full suite of ports: 3x USB-C, 1x USB-A, 1x HDMI 2.1, 1x headphone jack and 1x standard SD.</p><h2 id="msi-prestige-n16">MSI Prestige N16</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="bGCHEkFjoyQJxfbHjv4LP3" name="MSI Prestige" alt="Nvidia RTX Spark-equipped laptops" src="https://cdn.mos.cms.futurecdn.net/bGCHEkFjoyQJxfbHjv4LP3-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>MSI is set to launch the 2-in-1 Prestige N16 Flip AI Plus, which, it says, will represent "a new generation of premium thin-and-light PCs.”</p><p>Sadly, we've got no further information on the specs, dimensions, or — crucially — the price. All we can say is that this will be a 16-inch laptop with a 3,840 x 2,160 OLED panel and a peak brightness of over 1,000 nits.</p><h2 id="dell-xps-16">Dell XPS 16</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="vej3qMSV4Lnr9AVazEPWK3" name="Dell XPS 16" alt="Nvidia RTX Spark-equipped laptops" src="https://cdn.mos.cms.futurecdn.net/vej3qMSV4Lnr9AVazEPWK3-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Dell will launch an RTX Spark-equipped version of the XPS 16, which likely won't deviate much from the current model in terms of outward design. We can expect an aluminum 16.3-inch workhorse with three USB-C ports, an HDMI port, an SD card slot, and a headphone jack.</p><p>Price and specifications haven't been revealed yet.   </p><h2 id="hp-omnibook-and-ultra-16">HP OmniBook and Ultra 16</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="XUNysUFZiQs4EPAPkyb3P3" name="HP Omnibook" alt="Nvidia RTX Spark-equipped laptops" src="https://cdn.mos.cms.futurecdn.net/XUNysUFZiQs4EPAPkyb3P3-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>HP has confirmed two forthcoming RTX Spark laptops, the OmniBook X 14 and Ultra 16, but stopped short of announcing any specific details. The company says it will create "the world’s thinnest RTX Spark, built for powerful performance" and has confirmed it will follow up on the laptops with a compact desktop in the future.</p><p>“Our expanded portfolio pairs compact, powerful hardware with pre-configured environments and open-source toolchains to eliminate setup friction and accelerate the path from idea to execution," said Samuel Chang, senior vice president and division president, Consumer Personal Systems at HP.</p><h2 id="lenovo-yoga-pro-9n">Lenovo Yoga Pro 9n</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="BocQJyda2Rar8Z9uvJNEL3" name="Lenovo YogaBook" alt="Nvidia RTX Spark-equipped laptops" src="https://cdn.mos.cms.futurecdn.net/BocQJyda2Rar8Z9uvJNEL3-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Lenovo's flagship 16-inch laptop will also be getting the RTX Spark treatment, but we haven't had any details about exactly what changes to expect. Like the other laptops on this list, Lenovo's creator-focused 16-inch machine boasts a durable aluminum chassis and configurable specs tailored to your needs.</p><p>One area ripe for improvement would be battery life, and we'd hope that the RTX Spark-equipped Yoga Pro 9n can surpass the 9.45-hour battery life we recorded on the Intel-powered <a href="https://www.tomsguide.com/computing/laptops/lenovo-yoga-pro-9i-review#section-lenovo-yoga-pro-9i-review-cheat-sheet">Lenovo Yoga Pro 9i</a>.</p><h2 id="bottom-line-2">Bottom line</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="MevHNzJ4a2Nvr6FNz5ZpUN" name="Nvidia Spark" alt="Nvidia RTX Spark chip" src="https://cdn.mos.cms.futurecdn.net/MevHNzJ4a2Nvr6FNz5ZpUN-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>In addition to announcing that over 30 laptops will come with the RTX Spark chip, Nvidia also revealed that Adobe is rebuilding Photoshop and Premiere Pro from the ground up for compatibility.</p><p>Suffice it to say, the above laptops will kick off a silicon war in the fall that could be good news for consumers. Especially for gamers and creative video editors. The Spark's Blackwell-architecture GPU, with 6,144 CUDA cores, brings Windows-on-Arm compatibility with Nvidia's gaming suite, including DLSS 4.5. You're going to get thin, light laptops capable of running triple-A games at 100 FPS with real-time ray tracing.</p><p>Finally, these laptops will be positioned to move Windows into a truly agentic AI future, with RTX Spark delivering 1 Petaflop of local AI performance. In a nutshell, it'll have the power and efficiency to work on the user's behalf across various apps to achieve the desired outcome.</p><p>So we're potentially looking at laptops with a thin-and-light form factor, elite battery life, and the power to crush desktop-class AI development, heavy creative production, or cutting-edge gaming. The only question is: how much will these devices cost when they arrive?</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/gaming/handheld-gaming/msi-claw-8-ex-ai-plus-hands-on-review">I just tested the MSI Claw 8 EX AI+ — Intel Arc G3 is a breakthrough for handheld gaming, but at what cost?</a></li><li><a href="https://www.tomsguide.com/gaming/handheld-gaming/intel-arc-g3-is-here-to-shake-up-handheld-gaming-and-amd-should-be-terrified-acer-predator-atlas-8-is-the-first-out-the-gate">Intel Arc G3 is here to shake up handheld gaming, and AMD should be terrified — Acer Predator Atlas 8, a new MSI Claw and more launching soon</a></li><li><a href="https://www.tomsguide.com/computing/macbooks/im-bored-of-waiting-for-a-touchscreen-macbook-so-i-made-one-myself-with-this-snap-on-magic-screen">I built a touchscreen MacBook Pro using this snap-on accessory, and I'm baffled why Apple hasn't made its own for years</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/gaming-laptops/all-8-laptops-launching-with-nvidia-rtx-spark-this-fall-and-what-they-can-do</link>
                                                                            <description>
                            <![CDATA[ Nvidia's first-ever all-in-one laptop silicon chip is coming to machines this fall and laptops from Dell, Asus, HP and others are already confirmed. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">wkjmr2bhCNoDupip9J63Uo</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/8dRAir4LBiKVdxuGzX63Vd-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 02 Jun 2026 06:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Gaming Laptops]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Laptops]]></category>
                                                                                                <author><![CDATA[ jeff.parsons@futurenet.com (Jeff Parsons) ]]></author>                    <dc:creator><![CDATA[ Jeff Parsons ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/7z3UTGGrmSokMKxTWHmhjX-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jeff is U.K. Editor-in-Chief for Tom’s Guide looking after the day-to-day output of the site’s British contingent. &lt;/p&gt;&lt;p&gt;Rising early and heading straight for the coffee machine, Jeff loves nothing more than dialling into the zeitgeist of the day’s tech news. A journalist for over a decade, he&#039;s travelled around the world testing and reviewing any gadget he can get his hands on.&lt;/p&gt;&lt;p&gt;Before joining the team at Tom’s Guide, Jeff covered technology and science for two of the U.K.’s biggest national news sites: Metro.co.uk and the Daily Mirror. Memorable moments include getting lost in Vienna in an electric Audi, touring Lockheed Martin’s mile-long jet factory in Fort Worth and filming a Netflix documentary about Elon Musk in West London.&lt;/p&gt;&lt;p&gt;When not plugged into the current news agenda, editing or commissioning a series of articles or debating the merits of Apple vs Android, Jeff can usually be found out for a run trying to shave precious seconds off his PB. Or lifting weights in a vain attempt to offset the ageing process.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/8dRAir4LBiKVdxuGzX63Vd-1920-80.jpg">
                                                            <media:credit><![CDATA[Nvidia]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Nvidia RTX Spark]]></media:description>                                                            <media:text><![CDATA[Nvidia RTX Spark]]></media:text>
                                <media:title type="plain"><![CDATA[Nvidia RTX Spark]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/8dRAir4LBiKVdxuGzX63Vd-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Nvidia has stormed <a href="https://www.tomsguide.com/news/live/computex-2026">Computex 2026</a> with the official announcement we all knew was coming: the company's first all-in-one laptop silicon called the <a href="https://www.tomsguide.com/computing/cpus/nvidia-rtx-spark-is-here-and-no-its-not-called-n1x-everything-you-need-to-know-about-the-super-chip-thats-about-to-change-laptops-forever">RTX Spark Super Chip family</a>.</p><p>Analysts are calling this Nvidia's most disruptive move in a decade, and my colleague Jason England likens it to the moment Apple <a href="https://www.tomsguide.com/computing/cpus/apples-m-series-chip-gamble-5-years-later-how-ditching-intel-revolutionized-computing-and-whats-next">unveiled its own M1 chip back in 2020</a>. By moving beyond GPUs into integrated processors, Nvidia is throwing the gauntlet down to Qualcomm, Intel and AMD.</p><p>Nvidia CEO Jensen Huang revealed RTX Spark during his keynote in Taipei, and the first laptops powered by the new chip should arrive in the fall. Beyond that, we can expect to see the RTX Spark appearing in mini PCs and small form-factor desktops from the likes of Dell, HP, Lenovo, Asus, MSI, Acer and Gigabyte.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1035px;"><p class="vanilla-image-block" style="padding-top:56.23%;"><img id="Jr9cN8mjLczEpYQnVpXMBE" name="Spark laptops" alt="Laptops confirmed to launch with Nvidia Spark" src="https://cdn.mos.cms.futurecdn.net/Jr9cN8mjLczEpYQnVpXMBE-1920-80.jpg" mos="" align="middle" fullscreen="" width="1035" height="582" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><div ><table><caption>Nvidia Spark specs</caption><tbody><tr><td class="firstcol " ><p><strong>Architecture</strong></p></td><td  ><p>TSMC’s 3nm process</p></td></tr><tr><td class="firstcol " ><p><strong>CPU</strong></p></td><td  ><p>Up to 20-core Grace CPU</p></td></tr><tr><td class="firstcol " ><p><strong>GPU</strong></p></td><td  ><p>Blackwell architecture with up to 6,144 CUDA cores</p></td></tr><tr><td class="firstcol " ><p><strong>Memory</strong></p></td><td  ><p>16GB-128GB Unified LPDDR5X with 300GB bandwidth</p></td></tr><tr><td class="firstcol " ><p><strong>I/O support</strong></p></td><td  ><p>USB4 and Thunderbolt</p></td></tr><tr><td class="firstcol " ><p><strong>Power</strong></p></td><td  ><p>Up to 80 watts TDP</p></td></tr></tbody></table></div><p>Huang noted that Nvidia and Microsoft have been working away on this for the last three years to "reinvent the PC for the first time in 40 years," aiming to move towards a responsive, proactive AI experience. Microsoft itself is coming out of the gate with an RTX Spark-powered <a href="https://www.tomsguide.com/computing/laptops/microsofts-surface-laptop-ultra-packs-an-nvidia-spark-chip-and-it-could-be-a-macbook-pro-killer">Surface Laptop Ultra that could be a MacBook Pro killer</a>.</p><p>Here's the list of the first eight RTX Spark-equipped laptops, along with a few details we know about them.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-O6PBQe"></div>                            </div>                            <script src="https://kwizly.com/embed/O6PBQe.js" async></script><h2 id="microsoft-surface-ultra">Microsoft Surface Ultra</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="rQDZVnF7DUySf26Asc2LJ3" name="Microsoft Surface Laptop Ultra" alt="Nvidia RTX Spark-equipped laptops" src="https://cdn.mos.cms.futurecdn.net/rQDZVnF7DUySf26Asc2LJ3-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Microsoft hasn't confirmed many details about its upcoming RTX Spark-powered <a href="https://www.tomsguide.com/computing/laptops/microsofts-surface-laptop-ultra-packs-an-nvidia-spark-chip-and-it-could-be-a-macbook-pro-killer">Surface Laptop Ultra</a>, but we know it'll have a 15-inch mini-LED touchscreen with 2,000 nits of peak brightness.</p><p>It will benefit from a large haptic touchpad and all the required ports: HDMI, USB-C, USB-A, SD card and a headphone jack.</p><p>Microsoft claims this will be “the most powerful Surface Laptop ever built” when it arrives later this year. Microsoft also claims it can run AI models locally and that the chip delivers power comparable to a mobile RTX 5070 GPU.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/s1Oj792qc80" allowfullscreen></iframe></div></div><h2 id="asus-proart">Asus ProArt</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="bEyWTfe5Fcrepk4pAUTYP3" name="Asus ProArt" alt="Nvidia RTX Spark-equipped laptops" src="https://cdn.mos.cms.futurecdn.net/bEyWTfe5Fcrepk4pAUTYP3-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Asus is planning to launch two RTX Spark-powered ProArt laptops later this year: the ProArt P16 and the ProArt P14. Both laptops will feature 120Hz OLED touch panels in the 16:10 format (one will be 16-inch, one 14-inch) and be geared towards creative professionals.</p><p>Memory will be up to 128GB LPDDR5X 9400, while storage can be configured up to 2TB on the P16 and 1TB on the P14. Regardless of which model you choose, you'll get a full suite of ports: 3x USB-C, 1x USB-A, 1x HDMI 2.1, 1x headphone jack and 1x standard SD.</p><h2 id="msi-prestige-n16">MSI Prestige N16</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="bGCHEkFjoyQJxfbHjv4LP3" name="MSI Prestige" alt="Nvidia RTX Spark-equipped laptops" src="https://cdn.mos.cms.futurecdn.net/bGCHEkFjoyQJxfbHjv4LP3-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>MSI is set to launch the 2-in-1 Prestige N16 Flip AI Plus, which, it says, will represent "a new generation of premium thin-and-light PCs.”</p><p>Sadly, we've got no further information on the specs, dimensions, or — crucially — the price. All we can say is that this will be a 16-inch laptop with a 3,840 x 2,160 OLED panel and a peak brightness of over 1,000 nits.</p><h2 id="dell-xps-16">Dell XPS 16</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="vej3qMSV4Lnr9AVazEPWK3" name="Dell XPS 16" alt="Nvidia RTX Spark-equipped laptops" src="https://cdn.mos.cms.futurecdn.net/vej3qMSV4Lnr9AVazEPWK3-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Dell will launch an RTX Spark-equipped version of the XPS 16, which likely won't deviate much from the current model in terms of outward design. We can expect an aluminum 16.3-inch workhorse with three USB-C ports, an HDMI port, an SD card slot, and a headphone jack.</p><p>Price and specifications haven't been revealed yet.   </p><h2 id="hp-omnibook-and-ultra-16">HP OmniBook and Ultra 16</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="XUNysUFZiQs4EPAPkyb3P3" name="HP Omnibook" alt="Nvidia RTX Spark-equipped laptops" src="https://cdn.mos.cms.futurecdn.net/XUNysUFZiQs4EPAPkyb3P3-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>HP has confirmed two forthcoming RTX Spark laptops, the OmniBook X 14 and Ultra 16, but stopped short of announcing any specific details. The company says it will create "the world’s thinnest RTX Spark, built for powerful performance" and has confirmed it will follow up on the laptops with a compact desktop in the future.</p><p>“Our expanded portfolio pairs compact, powerful hardware with pre-configured environments and open-source toolchains to eliminate setup friction and accelerate the path from idea to execution," said Samuel Chang, senior vice president and division president, Consumer Personal Systems at HP.</p><h2 id="lenovo-yoga-pro-9n">Lenovo Yoga Pro 9n</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="BocQJyda2Rar8Z9uvJNEL3" name="Lenovo YogaBook" alt="Nvidia RTX Spark-equipped laptops" src="https://cdn.mos.cms.futurecdn.net/BocQJyda2Rar8Z9uvJNEL3-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Lenovo's flagship 16-inch laptop will also be getting the RTX Spark treatment, but we haven't had any details about exactly what changes to expect. Like the other laptops on this list, Lenovo's creator-focused 16-inch machine boasts a durable aluminum chassis and configurable specs tailored to your needs.</p><p>One area ripe for improvement would be battery life, and we'd hope that the RTX Spark-equipped Yoga Pro 9n can surpass the 9.45-hour battery life we recorded on the Intel-powered <a href="https://www.tomsguide.com/computing/laptops/lenovo-yoga-pro-9i-review#section-lenovo-yoga-pro-9i-review-cheat-sheet">Lenovo Yoga Pro 9i</a>.</p><h2 id="bottom-line-2">Bottom line</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="MevHNzJ4a2Nvr6FNz5ZpUN" name="Nvidia Spark" alt="Nvidia RTX Spark chip" src="https://cdn.mos.cms.futurecdn.net/MevHNzJ4a2Nvr6FNz5ZpUN-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>In addition to announcing that over 30 laptops will come with the RTX Spark chip, Nvidia also revealed that Adobe is rebuilding Photoshop and Premiere Pro from the ground up for compatibility.</p><p>Suffice it to say, the above laptops will kick off a silicon war in the fall that could be good news for consumers. Especially for gamers and creative video editors. The Spark's Blackwell-architecture GPU, with 6,144 CUDA cores, brings Windows-on-Arm compatibility with Nvidia's gaming suite, including DLSS 4.5. You're going to get thin, light laptops capable of running triple-A games at 100 FPS with real-time ray tracing.</p><p>Finally, these laptops will be positioned to move Windows into a truly agentic AI future, with RTX Spark delivering 1 Petaflop of local AI performance. In a nutshell, it'll have the power and efficiency to work on the user's behalf across various apps to achieve the desired outcome.</p><p>So we're potentially looking at laptops with a thin-and-light form factor, elite battery life, and the power to crush desktop-class AI development, heavy creative production, or cutting-edge gaming. The only question is: how much will these devices cost when they arrive?</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/gaming/handheld-gaming/msi-claw-8-ex-ai-plus-hands-on-review">I just tested the MSI Claw 8 EX AI+ — Intel Arc G3 is a breakthrough for handheld gaming, but at what cost?</a></li><li><a href="https://www.tomsguide.com/gaming/handheld-gaming/intel-arc-g3-is-here-to-shake-up-handheld-gaming-and-amd-should-be-terrified-acer-predator-atlas-8-is-the-first-out-the-gate">Intel Arc G3 is here to shake up handheld gaming, and AMD should be terrified — Acer Predator Atlas 8, a new MSI Claw and more launching soon</a></li><li><a href="https://www.tomsguide.com/computing/macbooks/im-bored-of-waiting-for-a-touchscreen-macbook-so-i-made-one-myself-with-this-snap-on-magic-screen">I built a touchscreen MacBook Pro using this snap-on accessory, and I'm baffled why Apple hasn't made its own for years</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Nvidia RTX Spark is here, and it's going to 'reinvent the PC' — here's everything you need to know about this all-new laptop chip ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The biggest news at <a href="https://www.tomsguide.com/news/live/computex-2026">Computex</a> is official, as Nvidia’s CEO Jensen Huang just announced RTX Spark Super Chip family — the company's first-ever all-in-one laptop silicon that takes on Intel, AMD, and Qualcomm in a big way with a GPU equivalent to an RTX 5070.</p><p>Set to release this fall, this is not your ordinary ARM chip. The RTX Spark is packed with CUDA cores, which is sure to make that integrated GPU one helluva gaming monster. Plus, Spark is set to change the way you interact with Windows PCs forever with an AI agentic twist. I will be testing the chip extensively during my time out here at Taipei, and talking to a couple of the engineers behind it. </p><p>But for now, I’ve taken a deep dive into the specs tables and found what could be a breakthrough moment similar to when Apple brought the M1 to the world back in 2020.</p><h2 class="article-body__section" id="section-nvidia-rtx-spark-super-chip-specs"><span>Nvidia RTX Spark Super Chip specs</span></h2><div ><table><tbody><tr><td class="firstcol " ><p><strong>Architecture</strong></p></td><td  ><p>TSMC’s 3nm process</p></td></tr><tr><td class="firstcol " ><p><strong>CPU</strong></p></td><td  ><p>Up to 20-core Grace CPU</p></td></tr><tr><td class="firstcol " ><p><strong>GPU</strong></p></td><td  ><p>Blackwell architecture with up to 6,144 CUDA cores</p></td></tr><tr><td class="firstcol " ><p><strong>Memory</strong></p></td><td  ><p>16GB-128GB Unified LPDDR5X with 300GB bandwidth</p></td></tr><tr><td class="firstcol " ><p><strong>I/O support</strong></p></td><td  ><p>USB4 and Thunderbolt</p></td></tr><tr><td class="firstcol " ><p><strong>Power</strong></p></td><td  ><p>Up to 80 watts TDP</p></td></tr></tbody></table></div><h2 class="article-body__section" id="section-nvidia-rtx-super-chip-devices"><span>Nvidia RTX Super Chip devices</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="8dRAir4LBiKVdxuGzX63Vd" name="n1x" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/8dRAir4LBiKVdxuGzX63Vd-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Nvidia is expecting a huge lineup of systems to launch with RTX spark — with plans to release over 30 laptop models and well over 10 desktop variations, targeting a range of price points.</p><p>But as of now, there are a whole lot of devices launching <strong>this fall </strong>with the RTX Spark Super Chip inside. On the laptop side, we have:</p><ul><li>Asus ProArt P14 and P16</li><li>Dell SPX 16</li><li>HP OmniBook</li><li>Lenovo Yoga Pro 9</li><li>Microsoft Surface Ultra</li><li>MSI Prestige N16</li></ul><p>These devices will be as thin as 14 millimeters, and as light as three pounds — a serious upgrade over the chunky Nvidia gaming laptops you're used to.</p><p>But they're not stopping at laptops. In an announcement that probably woke up Anthony Spadafora (our mini PCs king) from his nap, RTX Spark will be coming to small form-factor desktops that are "small enough to disappear on a desk."</p><p>These will be made by Dell, HP, Lenovo, Asus, MSI, Acer, and Gigabyte.</p><h2 class="article-body__section" id="section-explain-it-with-pizza"><span>Explain it with pizza</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="up4MNJ3bvf9ZqWtyrtkfAG" name="n1x6" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/up4MNJ3bvf9ZqWtyrtkfAG-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>This is partly inspired by the tasty ‘za I found while typing this, but also shoutout to Nvidia for specifically pointing out that I just “love to explain stuff with pizza.” You asked for it, and now you’re getting it!</p><p>In the laptop space, you’ve got various ways of serving pizza.</p><ul><li><strong>The standard meal (an x86 SoC):</strong> This is like ordering a plain cheese pizza. It works perfectly fine for everyday eating, but if you want heavy flavor (think intense gaming or AI generation), it lacks all the necessary toppings. Don’t get me wrong, Intel and AMD have been adding some new garnish, but they’re still a little hampered by architectural limitations.</li><li><strong>The combo meal (x86 CPU + dedicated GPU):</strong> For that premium flavor, you have to order the standard pizza plus a massive side of premium toppings. Passing these ingredients back and forth across the table does the job, but it takes up way more space (think thicker gaming laptops) and requires a whole lot of power.</li><li><strong>The efficiency slice (Snapdragon X Elite):</strong> Qualcomm is already dealing in making efficient single-crust pizza using a similar recipe (Arm architecture). It’s great for saving power, but Nvidia's world-famous secret sauces (CUDA and RTX) can’t be matched.</li></ul><p>So in this backdrop, I can only describe the RTX Spark Super chip as a “super pizza.” Instead of ordering a meal with lots of separate sides, this is the all-in-one slice baked onto a single, highly efficient crust. Half of the pizza is that custom CPU, and the other half is loaded with incredibly spicy, high-end toppings in that Blackwell GPU.</p><p>But the magic is in the cheese (the memory). Instead of dividing the cheese between the crust and toppings, Spark uses up to 128GB of “unified cheese” that the entire pizza shares instantly at blazing speeds (five times faster than standard PCIe Gen 5). And because it’s baked so efficiently, you can take this super pizza anywhere without it getting cold (all-day battery life).</p><p>…am I stretching this analogy? Absolutely. Do I regret it? No (hi Nvidia if you’re reading this). </p><h2 class="article-body__section" id="section-going-agentic"><span>Going agentic</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="wHGv5BRaEjbF9GoQcoKyM9" name="n1x4" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/wHGv5BRaEjbF9GoQcoKyM9-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>With this increase in RTX Spark's brute force, Nvidia is working with Microsoft to shift personal computing on Windows from a passive tool to a proactive agent. </p><p>This is a one petaflop AI superchip... For context, some quick math I did while sitting in the keynote, the AMD Ryzen AI Max+ 395 can do around 60 Teraflops. This thing is built differently. To go back to the pizza analogy, not only can it make a mean slice, but it can probably feed it to you, too.</p><p>It can work across apps on your device — stringing together different tools like any user would to get the job done. For example, an artist can provide a sketch and a mood board, then use Photoshop not only to generate the art locally but also to turn it into a 3D image and animate it into a video. And this is all done without ever needing cloud compute.</p><p>Or if you’re a gamer, you can use G-assist to tweak critical settings like monitor optimization, or (if you’re streaming) tell it to operate your lights, mute the mic, and turn on your be right back scene in OBS.</p><p>Essentially, it can take complete control of your system — even the mouse and keyboard to navigate as a human user would. Keeping this all secure is Nvidia OpenShell, which brings enhanced security to ensure your model use works locally and privately. It can even mask personal information before ever using a cloud-based AI model to do anything.</p><h3 class="article-body__section" id="section-for-the-players"><span>For the players</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="y9iqYiXtqt8oxyX2bxJqBL" name="DLSS 4.5" alt="DLSS 4.5" src="https://cdn.mos.cms.futurecdn.net/y9iqYiXtqt8oxyX2bxJqBL-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>But of course, there are big gaming capabilities here too. This is Nvidia, after all. Team Green says this falls into the same performance class as an RTX 5070 laptop GPU but uses significantly less power to reach that level.</p><p>That means you could be playing the likes of Cyberpunk, Doom, or Indiana Jones at 100 FPS at 1440p resolution. And given its ARM, the RTX Super Chip is capable of this level of performance both when plugged and unplugged. </p><p>Of course, battery life will vary based on how much you throw at it, but when I asked Nvidia, a tweak of maximum frame rate and graphics settings can optimize this nicely for long gameplay sessions on flights.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="SZYsiiZMaiCp6Q3A6DPwQ3" name="nvidia DLSS 4.5" alt="nvidia DLSS 4.5" src="https://cdn.mos.cms.futurecdn.net/SZYsiiZMaiCp6Q3A6DPwQ3-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Now, what about the emulation part of it? General apps are included in this, too, but gaming has been the big test for Windows on Arm, and that Prism emulation layer used to translate apps written for other CPUs to this new architecture. Well, Nvidia’s thought of that too.</p><p>The company is working with a large list of developers to either port games natively to Windows on Arm or ensure they run well through the emulator. And with that hefty GPU, anything that’s particularly taxing on that will have almost no negative effect on performance.</p><p>Plus, Nvidia has collaborated with all first- and third-party anti-cheat software providers to ensure competitive multiplayer games launch without a hitch.</p><h2 class="article-body__section" id="section-nvidia-rtx-spark-vs-apple-m-silicon-vs-snapdragon-x2-elite"><span>Nvidia RTX Spark vs Apple M silicon vs Snapdragon X2 Elite</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="WNK5Zs69wY5j94beX98P3A" name="MacBook Pro M5--11" alt="MacBook Pro M5" src="https://cdn.mos.cms.futurecdn.net/WNK5Zs69wY5j94beX98P3A-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>So, since I’m calling this Nvidia’s M1 moment, how does it stack up with Apple laptop silicon? While I’m at it, I'm gonna throw Snapdragon into this comparison too, as they’re all similar-ish in Arm architecture.</p><p>But the crucial differences show that it’s not about the tools you have, but rather how you use them. You see, Apple silicon isn’t just about the brute force of the hardware; it’s also about its tight integration with software that extracts that performance. In gaming, for example, the MetalFX layer has enabled MacBook Pros to do some pretty great things, like run Cyberpunk 2077.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="pWGR4JLPuftmBZMKqfTcna" name="Snapdragon X2 Elite" alt="Snapdragon X2 Elite CPU case" src="https://cdn.mos.cms.futurecdn.net/pWGR4JLPuftmBZMKqfTcna-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future / Tom's Guide)</span></figcaption></figure><p>And while Snapdragon X2 Elite is level pegging in certain benchmarks, there are still some moments where it can feel like a bit of a blunt instrument against Windows 11 — especially in that GPU department.</p><p>But with RTX Spark, this is Nvidia we’re talking about. That integrated GPU supports DLSS 4.5, so you can bet your bottom dollar that the out-of-the-box gaming performance is going to be clearly superior to Apple and Snapdragon. </p><p>On top of that, Team Green and Windows are rewriting the rules on local agentic AI, so you’re getting a heap of AI coworkers too, with those CUDA cores for the raw brunt.</p><h2 class="article-body__section" id="section-nvidia-rtx-spark-vs-intel-core-ultra-series-3-vs-amd-ryzen-ai-400-series"><span>Nvidia RTX Spark vs Intel Core Ultra Series 3 vs AMD Ryzen AI 400 series</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Qti5nhB52AhQbvybhA9spe" name="Intel Panther Lake" alt="Intel Panther Lake" src="https://cdn.mos.cms.futurecdn.net/Qti5nhB52AhQbvybhA9spe-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Why did I put these separate from the face-offs with Snapdragon or M5? Well, it comes down to the different ways these chips compute stuff. Nvidia, Apple and Qualcomm all have Arm architectures, which do things very differently to the x86 chips from Intel and AMD.</p><p>That being said, the 30+-year-old x86 architecture does bring some material benefits over ARM — namely, zero app compatibility issues whatsoever. It’s a challenge that Microsoft and Nvidia are overcoming with a separate Arm-specific version of Windows 11, alongside working closely with developers. That could narrow the library you can play!</p><p>However, for what it may lack in this area, it absolutely makes up for in a sweeter blend of performance and power efficiency. While x86 is all about multitasking its way to doing things you ask it to (not the best on that battery), ARM tackles one task at a time very quickly. That’s easier on the power while bringing high speeds to the table, too.</p><h2 class="article-body__section" id="section-outlook"><span>Outlook</span></h2><p>It’s been a long road since the first time we heard rumblings about this chip. In fact, I even put this in my Computex 2025 predictions! But now it’s here, I think it’s fair to say that RTX Spark is far beyond any expectations I had. </p><p>Not only is it a beastly integrated GPU for monstrous performance and impressive power efficiency (especially in gaming), but the software tie-ins fundamentally change how a Windows laptop works with you. This is going to be an interesting few months as we count down to the fall launch.</p><p>Now the wait is on for an Nvidia RTX Spark gaming handheld…that would slap so hard!</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/gaming/handheld-gaming/msi-claw-8-ex-ai-plus-hands-on-review">I just tested the MSI Claw 8 EX AI+ — Intel Arc G3 is a breakthrough for handheld gaming, but at what cost?</a></li><li><a href="https://www.tomsguide.com/gaming/handheld-gaming/intel-arc-g3-is-here-to-shake-up-handheld-gaming-and-amd-should-be-terrified-acer-predator-atlas-8-is-the-first-out-the-gate">Intel Arc G3 is here to shake up handheld gaming, and AMD should be terrified — Acer Predator Atlas 8, a new MSI Claw and more launching soon</a></li><li><a href="https://www.tomsguide.com/computing/macbooks/im-bored-of-waiting-for-a-touchscreen-macbook-so-i-made-one-myself-with-this-snap-on-magic-screen">I built a touchscreen MacBook Pro using this snap-on accessory, and I'm baffled why Apple hasn't made its own for years</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/cpus/nvidia-rtx-spark-is-here-and-no-its-not-called-n1x-everything-you-need-to-know-about-the-super-chip-thats-about-to-change-laptops-forever</link>
                                                                            <description>
                            <![CDATA[ Nvidia’s CEO Jensen Huang just announced RTX Spark Super Chip family — Team Green’s first-ever all-in-one laptop silicon that takes on Intel, AMD, and Qualcomm in a big way with a GPU equivalent to an RTX 5070. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">YDDWqCc4s4YufbQpbD4T7h</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/MevHNzJ4a2Nvr6FNz5ZpUN-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 01 Jun 2026 04:45:51 +0000</pubDate>                                                                                                                                <updated>Mon, 01 Jun 2026 13:50:03 +0000</updated>
                                                                                                                                            <category><![CDATA[CPUs]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Computing Hardware]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jason England ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/v4fSq5U4uZUEtGY2BwNuJ6-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jason brings a decade of tech and gaming journalism experience to his role as a Managing Editor of Computing at Tom&#039;s Guide. He has previously written for Laptop Mag, Tom&#039;s Hardware, Kotaku, Stuff and BBC Science Focus. In his spare time, you&#039;ll find Jason looking for good dogs to pet or thinking about eating pizza if he isn&#039;t already.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/MevHNzJ4a2Nvr6FNz5ZpUN-1920-80.jpg">
                                                            <media:credit><![CDATA[Nvidia]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Nvidia RTX Spark chip ]]></media:description>                                                            <media:text><![CDATA[Nvidia RTX Spark chip ]]></media:text>
                                <media:title type="plain"><![CDATA[Nvidia RTX Spark chip ]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/MevHNzJ4a2Nvr6FNz5ZpUN-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The biggest news at <a href="https://www.tomsguide.com/news/live/computex-2026">Computex</a> is official, as Nvidia’s CEO Jensen Huang just announced RTX Spark Super Chip family — the company's first-ever all-in-one laptop silicon that takes on Intel, AMD, and Qualcomm in a big way with a GPU equivalent to an RTX 5070.</p><p>Set to release this fall, this is not your ordinary ARM chip. The RTX Spark is packed with CUDA cores, which is sure to make that integrated GPU one helluva gaming monster. Plus, Spark is set to change the way you interact with Windows PCs forever with an AI agentic twist. I will be testing the chip extensively during my time out here at Taipei, and talking to a couple of the engineers behind it. </p><p>But for now, I’ve taken a deep dive into the specs tables and found what could be a breakthrough moment similar to when Apple brought the M1 to the world back in 2020.</p><h2 class="article-body__section" id="section-nvidia-rtx-spark-super-chip-specs"><span>Nvidia RTX Spark Super Chip specs</span></h2><div ><table><tbody><tr><td class="firstcol " ><p><strong>Architecture</strong></p></td><td  ><p>TSMC’s 3nm process</p></td></tr><tr><td class="firstcol " ><p><strong>CPU</strong></p></td><td  ><p>Up to 20-core Grace CPU</p></td></tr><tr><td class="firstcol " ><p><strong>GPU</strong></p></td><td  ><p>Blackwell architecture with up to 6,144 CUDA cores</p></td></tr><tr><td class="firstcol " ><p><strong>Memory</strong></p></td><td  ><p>16GB-128GB Unified LPDDR5X with 300GB bandwidth</p></td></tr><tr><td class="firstcol " ><p><strong>I/O support</strong></p></td><td  ><p>USB4 and Thunderbolt</p></td></tr><tr><td class="firstcol " ><p><strong>Power</strong></p></td><td  ><p>Up to 80 watts TDP</p></td></tr></tbody></table></div><h2 class="article-body__section" id="section-nvidia-rtx-super-chip-devices"><span>Nvidia RTX Super Chip devices</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="8dRAir4LBiKVdxuGzX63Vd" name="n1x" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/8dRAir4LBiKVdxuGzX63Vd-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Nvidia is expecting a huge lineup of systems to launch with RTX spark — with plans to release over 30 laptop models and well over 10 desktop variations, targeting a range of price points.</p><p>But as of now, there are a whole lot of devices launching <strong>this fall </strong>with the RTX Spark Super Chip inside. On the laptop side, we have:</p><ul><li>Asus ProArt P14 and P16</li><li>Dell SPX 16</li><li>HP OmniBook</li><li>Lenovo Yoga Pro 9</li><li>Microsoft Surface Ultra</li><li>MSI Prestige N16</li></ul><p>These devices will be as thin as 14 millimeters, and as light as three pounds — a serious upgrade over the chunky Nvidia gaming laptops you're used to.</p><p>But they're not stopping at laptops. In an announcement that probably woke up Anthony Spadafora (our mini PCs king) from his nap, RTX Spark will be coming to small form-factor desktops that are "small enough to disappear on a desk."</p><p>These will be made by Dell, HP, Lenovo, Asus, MSI, Acer, and Gigabyte.</p><h2 class="article-body__section" id="section-explain-it-with-pizza"><span>Explain it with pizza</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="up4MNJ3bvf9ZqWtyrtkfAG" name="n1x6" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/up4MNJ3bvf9ZqWtyrtkfAG-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>This is partly inspired by the tasty ‘za I found while typing this, but also shoutout to Nvidia for specifically pointing out that I just “love to explain stuff with pizza.” You asked for it, and now you’re getting it!</p><p>In the laptop space, you’ve got various ways of serving pizza.</p><ul><li><strong>The standard meal (an x86 SoC):</strong> This is like ordering a plain cheese pizza. It works perfectly fine for everyday eating, but if you want heavy flavor (think intense gaming or AI generation), it lacks all the necessary toppings. Don’t get me wrong, Intel and AMD have been adding some new garnish, but they’re still a little hampered by architectural limitations.</li><li><strong>The combo meal (x86 CPU + dedicated GPU):</strong> For that premium flavor, you have to order the standard pizza plus a massive side of premium toppings. Passing these ingredients back and forth across the table does the job, but it takes up way more space (think thicker gaming laptops) and requires a whole lot of power.</li><li><strong>The efficiency slice (Snapdragon X Elite):</strong> Qualcomm is already dealing in making efficient single-crust pizza using a similar recipe (Arm architecture). It’s great for saving power, but Nvidia's world-famous secret sauces (CUDA and RTX) can’t be matched.</li></ul><p>So in this backdrop, I can only describe the RTX Spark Super chip as a “super pizza.” Instead of ordering a meal with lots of separate sides, this is the all-in-one slice baked onto a single, highly efficient crust. Half of the pizza is that custom CPU, and the other half is loaded with incredibly spicy, high-end toppings in that Blackwell GPU.</p><p>But the magic is in the cheese (the memory). Instead of dividing the cheese between the crust and toppings, Spark uses up to 128GB of “unified cheese” that the entire pizza shares instantly at blazing speeds (five times faster than standard PCIe Gen 5). And because it’s baked so efficiently, you can take this super pizza anywhere without it getting cold (all-day battery life).</p><p>…am I stretching this analogy? Absolutely. Do I regret it? No (hi Nvidia if you’re reading this). </p><h2 class="article-body__section" id="section-going-agentic"><span>Going agentic</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="wHGv5BRaEjbF9GoQcoKyM9" name="n1x4" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/wHGv5BRaEjbF9GoQcoKyM9-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>With this increase in RTX Spark's brute force, Nvidia is working with Microsoft to shift personal computing on Windows from a passive tool to a proactive agent. </p><p>This is a one petaflop AI superchip... For context, some quick math I did while sitting in the keynote, the AMD Ryzen AI Max+ 395 can do around 60 Teraflops. This thing is built differently. To go back to the pizza analogy, not only can it make a mean slice, but it can probably feed it to you, too.</p><p>It can work across apps on your device — stringing together different tools like any user would to get the job done. For example, an artist can provide a sketch and a mood board, then use Photoshop not only to generate the art locally but also to turn it into a 3D image and animate it into a video. And this is all done without ever needing cloud compute.</p><p>Or if you’re a gamer, you can use G-assist to tweak critical settings like monitor optimization, or (if you’re streaming) tell it to operate your lights, mute the mic, and turn on your be right back scene in OBS.</p><p>Essentially, it can take complete control of your system — even the mouse and keyboard to navigate as a human user would. Keeping this all secure is Nvidia OpenShell, which brings enhanced security to ensure your model use works locally and privately. It can even mask personal information before ever using a cloud-based AI model to do anything.</p><h3 class="article-body__section" id="section-for-the-players"><span>For the players</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="y9iqYiXtqt8oxyX2bxJqBL" name="DLSS 4.5" alt="DLSS 4.5" src="https://cdn.mos.cms.futurecdn.net/y9iqYiXtqt8oxyX2bxJqBL-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>But of course, there are big gaming capabilities here too. This is Nvidia, after all. Team Green says this falls into the same performance class as an RTX 5070 laptop GPU but uses significantly less power to reach that level.</p><p>That means you could be playing the likes of Cyberpunk, Doom, or Indiana Jones at 100 FPS at 1440p resolution. And given its ARM, the RTX Super Chip is capable of this level of performance both when plugged and unplugged. </p><p>Of course, battery life will vary based on how much you throw at it, but when I asked Nvidia, a tweak of maximum frame rate and graphics settings can optimize this nicely for long gameplay sessions on flights.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="SZYsiiZMaiCp6Q3A6DPwQ3" name="nvidia DLSS 4.5" alt="nvidia DLSS 4.5" src="https://cdn.mos.cms.futurecdn.net/SZYsiiZMaiCp6Q3A6DPwQ3-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Now, what about the emulation part of it? General apps are included in this, too, but gaming has been the big test for Windows on Arm, and that Prism emulation layer used to translate apps written for other CPUs to this new architecture. Well, Nvidia’s thought of that too.</p><p>The company is working with a large list of developers to either port games natively to Windows on Arm or ensure they run well through the emulator. And with that hefty GPU, anything that’s particularly taxing on that will have almost no negative effect on performance.</p><p>Plus, Nvidia has collaborated with all first- and third-party anti-cheat software providers to ensure competitive multiplayer games launch without a hitch.</p><h2 class="article-body__section" id="section-nvidia-rtx-spark-vs-apple-m-silicon-vs-snapdragon-x2-elite"><span>Nvidia RTX Spark vs Apple M silicon vs Snapdragon X2 Elite</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="WNK5Zs69wY5j94beX98P3A" name="MacBook Pro M5--11" alt="MacBook Pro M5" src="https://cdn.mos.cms.futurecdn.net/WNK5Zs69wY5j94beX98P3A-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>So, since I’m calling this Nvidia’s M1 moment, how does it stack up with Apple laptop silicon? While I’m at it, I'm gonna throw Snapdragon into this comparison too, as they’re all similar-ish in Arm architecture.</p><p>But the crucial differences show that it’s not about the tools you have, but rather how you use them. You see, Apple silicon isn’t just about the brute force of the hardware; it’s also about its tight integration with software that extracts that performance. In gaming, for example, the MetalFX layer has enabled MacBook Pros to do some pretty great things, like run Cyberpunk 2077.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="pWGR4JLPuftmBZMKqfTcna" name="Snapdragon X2 Elite" alt="Snapdragon X2 Elite CPU case" src="https://cdn.mos.cms.futurecdn.net/pWGR4JLPuftmBZMKqfTcna-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future / Tom's Guide)</span></figcaption></figure><p>And while Snapdragon X2 Elite is level pegging in certain benchmarks, there are still some moments where it can feel like a bit of a blunt instrument against Windows 11 — especially in that GPU department.</p><p>But with RTX Spark, this is Nvidia we’re talking about. That integrated GPU supports DLSS 4.5, so you can bet your bottom dollar that the out-of-the-box gaming performance is going to be clearly superior to Apple and Snapdragon. </p><p>On top of that, Team Green and Windows are rewriting the rules on local agentic AI, so you’re getting a heap of AI coworkers too, with those CUDA cores for the raw brunt.</p><h2 class="article-body__section" id="section-nvidia-rtx-spark-vs-intel-core-ultra-series-3-vs-amd-ryzen-ai-400-series"><span>Nvidia RTX Spark vs Intel Core Ultra Series 3 vs AMD Ryzen AI 400 series</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Qti5nhB52AhQbvybhA9spe" name="Intel Panther Lake" alt="Intel Panther Lake" src="https://cdn.mos.cms.futurecdn.net/Qti5nhB52AhQbvybhA9spe-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Why did I put these separate from the face-offs with Snapdragon or M5? Well, it comes down to the different ways these chips compute stuff. Nvidia, Apple and Qualcomm all have Arm architectures, which do things very differently to the x86 chips from Intel and AMD.</p><p>That being said, the 30+-year-old x86 architecture does bring some material benefits over ARM — namely, zero app compatibility issues whatsoever. It’s a challenge that Microsoft and Nvidia are overcoming with a separate Arm-specific version of Windows 11, alongside working closely with developers. That could narrow the library you can play!</p><p>However, for what it may lack in this area, it absolutely makes up for in a sweeter blend of performance and power efficiency. While x86 is all about multitasking its way to doing things you ask it to (not the best on that battery), ARM tackles one task at a time very quickly. That’s easier on the power while bringing high speeds to the table, too.</p><h2 class="article-body__section" id="section-outlook"><span>Outlook</span></h2><p>It’s been a long road since the first time we heard rumblings about this chip. In fact, I even put this in my Computex 2025 predictions! But now it’s here, I think it’s fair to say that RTX Spark is far beyond any expectations I had. </p><p>Not only is it a beastly integrated GPU for monstrous performance and impressive power efficiency (especially in gaming), but the software tie-ins fundamentally change how a Windows laptop works with you. This is going to be an interesting few months as we count down to the fall launch.</p><p>Now the wait is on for an Nvidia RTX Spark gaming handheld…that would slap so hard!</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/gaming/handheld-gaming/msi-claw-8-ex-ai-plus-hands-on-review">I just tested the MSI Claw 8 EX AI+ — Intel Arc G3 is a breakthrough for handheld gaming, but at what cost?</a></li><li><a href="https://www.tomsguide.com/gaming/handheld-gaming/intel-arc-g3-is-here-to-shake-up-handheld-gaming-and-amd-should-be-terrified-acer-predator-atlas-8-is-the-first-out-the-gate">Intel Arc G3 is here to shake up handheld gaming, and AMD should be terrified — Acer Predator Atlas 8, a new MSI Claw and more launching soon</a></li><li><a href="https://www.tomsguide.com/computing/macbooks/im-bored-of-waiting-for-a-touchscreen-macbook-so-i-made-one-myself-with-this-snap-on-magic-screen">I built a touchscreen MacBook Pro using this snap-on accessory, and I'm baffled why Apple hasn't made its own for years</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Microsoft’s Surface Laptop Ultra packs an Nvidia Spark chip — and it could be a MacBook Pro killer ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The Microsoft Surface Laptop Ultra is the company’s answer to the MacBook Pro. Announced during Nvidia’s <a href="https://www.tomsguide.com/computing/what-to-expect-at-computex-2026-nvidia-n1x-intels-next-gen-gaming-handhelds-and-an-industrys-fightback-against-ramageddon">Computex 2026</a> presentation, this laptop is among the first to feature the newly announced Nvidia RTX Spark chip. It promises to be powerful enough to handle creative workloads, development, local AI use, and gaming.</p><p>Besides the Laptop Studio, Surface devices are generally designed for average use. That won't be the case with the Surface Laptop Ultra, as it will pack up to 128GB of unified memory. Microsoft also claims it can run AI models locally and that the chip delivers power comparable to a mobile RTX 5070 GPU.</p><p>If the Surface Laptop Ultra is everything Microsoft claims, it will easily be the most powerful Surface device yet — and could give the likes of the MacBook Pro stiff competition. Here’s everything you need to know about the Microsoft Surface Laptop Ultra.</p><h2 id="microsoft-surface-laptop-ultra-design">Microsoft Surface Laptop Ultra: Design</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="pfaqsD9urEPKtfmrprzck" name="Surface Laptop Ultra Image" alt="Microsoft Surface Laptop Ultra" src="https://cdn.mos.cms.futurecdn.net/pfaqsD9urEPKtfmrprzck-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>The Microsoft Surface Laptop Ultra will include some of the features you’d expect from a premium notebook. For starters, it has a 15-inch mini-LED PixelSense Ultra display that can reportedly reach 2,000 nits of peak HDR brightness, making it the brightest display of any Surface device ever. Microsoft says it will have strong color accuracy for creative work.</p><p>You’ll also get a full set of ports, including HDMI, USB-C, USB-A, an SD card reader, and a headphone jack. The haptic touchpad is the largest Microsoft has ever used on a Surface, and the laptop is designed to run quietly even under load.</p><p>The Surface Laptop Ultra will reportedly have “all-day” battery life, which is a claim I’m eager to verify in our lab tests. Expect it to come in Platinum and Nightfall finishes.</p><h2 id="microsoft-surface-laptop-ultra-nvidia-rtx-spark">Microsoft Surface Laptop Ultra: Nvidia RTX Spark</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="s5f22pfBckuYNWno3osm7B" name="Surface Laptop Ultra Image 2" alt="Microsoft Surface Laptop Ultra" src="https://cdn.mos.cms.futurecdn.net/s5f22pfBckuYNWno3osm7B-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>The Microsoft Surface Laptop Ultra announcement alone is noteworthy, but it’s even more interesting because it’s one of the first laptops to feature the Nvidia RTX Spark chip. In case you were wondering, yes, it’s the processor long known as the “N1X.” Different moniker aside, the chip should be a major boon for the Surface Laptop Ultra.</p><div ><table><caption>Nvidia Spark specs</caption><tbody><tr><td class="firstcol " ><p><strong>Architecture</strong></p></td><td  ><p>TSMC’s 3nm process</p></td></tr><tr><td class="firstcol " ><p><strong>CPU</strong></p></td><td  ><p>Up to 20-core Grace CPU</p></td></tr><tr><td class="firstcol " ><p><strong>GPU</strong></p></td><td  ><p>Blackwell architecture with up to 6,144 CUDA cores</p></td></tr><tr><td class="firstcol " ><p><strong>Memory</strong></p></td><td  ><p>16GB-128GB Unified LPDDR5X with 300GB bandwidth</p></td></tr><tr><td class="firstcol " ><p><strong>I/O support</strong></p></td><td  ><p>USB4 and Thunderbolt</p></td></tr><tr><td class="firstcol " ><p><strong>Power</strong></p></td><td  ><p>Up to 80 watts TDP</p></td></tr></tbody></table></div><p>The chip packs up to 6,144 Blackwell RTX cores, 20 efficient Arm CPU cores, and up to 128GB of unified memory. That adds up to 1 petaflop of AI performance, enough to run 120-billion-parameter models right on the laptop without choking. The claimed power of an RTX 5070 laptop GPU should mean smoother 3D rendering, faster video exports, and potentially higher-end gaming.</p><p>If all those numbers went over your head, it means the Surface Laptop Ultra should feel like a legitimate workstation you can carry around. We’d need to benchmark this laptop and live with it to see what it can do, but RTX Spark should give it some serious power.</p><h2 id="microsoft-surface-laptop-ultra-outlook">Microsoft Surface Laptop Ultra: Outlook</h2><p>The Microsoft Surface Laptop Ultra is set to launch later this year, so it might be a while until we can go hands-on with this machine. I’m certainly looking forward to that, but given how expensive electronics have become thanks to the RAM crisis, I’m not eager to see how much this thing will cost.</p><p>We’ll have more information on the Microsoft Surface Laptop Ultra as soon as we hear it, so stay tuned!</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/gaming/handheld-gaming/msi-claw-8-ex-ai-plus-hands-on-review">I just tested the MSI Claw 8 EX AI+ — Intel Arc G3 is a breakthrough for handheld gaming, but at what cost?</a></li><li><a href="https://www.tomsguide.com/gaming/handheld-gaming/intel-arc-g3-is-here-to-shake-up-handheld-gaming-and-amd-should-be-terrified-acer-predator-atlas-8-is-the-first-out-the-gate">Intel Arc G3 is here to shake up handheld gaming, and AMD should be terrified — Acer Predator Atlas 8, a new MSI Claw and more launching soon</a></li><li><a href="https://www.tomsguide.com/computing/macbooks/im-bored-of-waiting-for-a-touchscreen-macbook-so-i-made-one-myself-with-this-snap-on-magic-screen">I built a touchscreen MacBook Pro using this snap-on accessory, and I'm baffled why Apple hasn't made its own for years</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/laptops/microsofts-surface-laptop-ultra-packs-an-nvidia-spark-chip-and-it-could-be-a-macbook-pro-killer</link>
                                                                            <description>
                            <![CDATA[ During Computex 2026, we got our first details of the new Microsoft Surface Laptop Ultra. Here's everything you need to know. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">7YhgJztcfMF58M3EdSv2mT</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/jPf82R6ASS76yFSsoeyR4A-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 01 Jun 2026 04:42:33 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Laptops]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                                                                <author><![CDATA[ tony.polanco@futurenet.com (Tony Polanco) ]]></author>                    <dc:creator><![CDATA[ Tony Polanco ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/atzRNqFt5wYgEUPBDahWsD-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/jPf82R6ASS76yFSsoeyR4A-1920-80.jpg">
                                                            <media:credit><![CDATA[Microsoft]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Microsoft Surface Laptop Ultra]]></media:description>                                                            <media:text><![CDATA[Microsoft Surface Laptop Ultra]]></media:text>
                                <media:title type="plain"><![CDATA[Microsoft Surface Laptop Ultra]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/jPf82R6ASS76yFSsoeyR4A-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The Microsoft Surface Laptop Ultra is the company’s answer to the MacBook Pro. Announced during Nvidia’s <a href="https://www.tomsguide.com/computing/what-to-expect-at-computex-2026-nvidia-n1x-intels-next-gen-gaming-handhelds-and-an-industrys-fightback-against-ramageddon">Computex 2026</a> presentation, this laptop is among the first to feature the newly announced Nvidia RTX Spark chip. It promises to be powerful enough to handle creative workloads, development, local AI use, and gaming.</p><p>Besides the Laptop Studio, Surface devices are generally designed for average use. That won't be the case with the Surface Laptop Ultra, as it will pack up to 128GB of unified memory. Microsoft also claims it can run AI models locally and that the chip delivers power comparable to a mobile RTX 5070 GPU.</p><p>If the Surface Laptop Ultra is everything Microsoft claims, it will easily be the most powerful Surface device yet — and could give the likes of the MacBook Pro stiff competition. Here’s everything you need to know about the Microsoft Surface Laptop Ultra.</p><h2 id="microsoft-surface-laptop-ultra-design">Microsoft Surface Laptop Ultra: Design</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="pfaqsD9urEPKtfmrprzck" name="Surface Laptop Ultra Image" alt="Microsoft Surface Laptop Ultra" src="https://cdn.mos.cms.futurecdn.net/pfaqsD9urEPKtfmrprzck-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>The Microsoft Surface Laptop Ultra will include some of the features you’d expect from a premium notebook. For starters, it has a 15-inch mini-LED PixelSense Ultra display that can reportedly reach 2,000 nits of peak HDR brightness, making it the brightest display of any Surface device ever. Microsoft says it will have strong color accuracy for creative work.</p><p>You’ll also get a full set of ports, including HDMI, USB-C, USB-A, an SD card reader, and a headphone jack. The haptic touchpad is the largest Microsoft has ever used on a Surface, and the laptop is designed to run quietly even under load.</p><p>The Surface Laptop Ultra will reportedly have “all-day” battery life, which is a claim I’m eager to verify in our lab tests. Expect it to come in Platinum and Nightfall finishes.</p><h2 id="microsoft-surface-laptop-ultra-nvidia-rtx-spark">Microsoft Surface Laptop Ultra: Nvidia RTX Spark</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="s5f22pfBckuYNWno3osm7B" name="Surface Laptop Ultra Image 2" alt="Microsoft Surface Laptop Ultra" src="https://cdn.mos.cms.futurecdn.net/s5f22pfBckuYNWno3osm7B-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Microsoft)</span></figcaption></figure><p>The Microsoft Surface Laptop Ultra announcement alone is noteworthy, but it’s even more interesting because it’s one of the first laptops to feature the Nvidia RTX Spark chip. In case you were wondering, yes, it’s the processor long known as the “N1X.” Different moniker aside, the chip should be a major boon for the Surface Laptop Ultra.</p><div ><table><caption>Nvidia Spark specs</caption><tbody><tr><td class="firstcol " ><p><strong>Architecture</strong></p></td><td  ><p>TSMC’s 3nm process</p></td></tr><tr><td class="firstcol " ><p><strong>CPU</strong></p></td><td  ><p>Up to 20-core Grace CPU</p></td></tr><tr><td class="firstcol " ><p><strong>GPU</strong></p></td><td  ><p>Blackwell architecture with up to 6,144 CUDA cores</p></td></tr><tr><td class="firstcol " ><p><strong>Memory</strong></p></td><td  ><p>16GB-128GB Unified LPDDR5X with 300GB bandwidth</p></td></tr><tr><td class="firstcol " ><p><strong>I/O support</strong></p></td><td  ><p>USB4 and Thunderbolt</p></td></tr><tr><td class="firstcol " ><p><strong>Power</strong></p></td><td  ><p>Up to 80 watts TDP</p></td></tr></tbody></table></div><p>The chip packs up to 6,144 Blackwell RTX cores, 20 efficient Arm CPU cores, and up to 128GB of unified memory. That adds up to 1 petaflop of AI performance, enough to run 120-billion-parameter models right on the laptop without choking. The claimed power of an RTX 5070 laptop GPU should mean smoother 3D rendering, faster video exports, and potentially higher-end gaming.</p><p>If all those numbers went over your head, it means the Surface Laptop Ultra should feel like a legitimate workstation you can carry around. We’d need to benchmark this laptop and live with it to see what it can do, but RTX Spark should give it some serious power.</p><h2 id="microsoft-surface-laptop-ultra-outlook">Microsoft Surface Laptop Ultra: Outlook</h2><p>The Microsoft Surface Laptop Ultra is set to launch later this year, so it might be a while until we can go hands-on with this machine. I’m certainly looking forward to that, but given how expensive electronics have become thanks to the RAM crisis, I’m not eager to see how much this thing will cost.</p><p>We’ll have more information on the Microsoft Surface Laptop Ultra as soon as we hear it, so stay tuned!</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/gaming/handheld-gaming/msi-claw-8-ex-ai-plus-hands-on-review">I just tested the MSI Claw 8 EX AI+ — Intel Arc G3 is a breakthrough for handheld gaming, but at what cost?</a></li><li><a href="https://www.tomsguide.com/gaming/handheld-gaming/intel-arc-g3-is-here-to-shake-up-handheld-gaming-and-amd-should-be-terrified-acer-predator-atlas-8-is-the-first-out-the-gate">Intel Arc G3 is here to shake up handheld gaming, and AMD should be terrified — Acer Predator Atlas 8, a new MSI Claw and more launching soon</a></li><li><a href="https://www.tomsguide.com/computing/macbooks/im-bored-of-waiting-for-a-touchscreen-macbook-so-i-made-one-myself-with-this-snap-on-magic-screen">I built a touchscreen MacBook Pro using this snap-on accessory, and I'm baffled why Apple hasn't made its own for years</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Computex 2026 preview: Intel Arc G3 handhelds and cheap laptops to fight MacBook Neo confirmed, and I'm hoping for Nvidia N1X ]]></title>
                                                                                                <dc:content><![CDATA[ <p>So a lot has happened since I wrote this Computex 2026 preview, and a couple of my predictions have already come true (really should've put a bet on this)! </p><ul><li><a href="https://www.tomsguide.com/gaming/handheld-gaming/intel-arc-g3-is-here-to-shake-up-handheld-gaming-and-amd-should-be-terrified-acer-predator-atlas-8-is-the-first-out-the-gate">Intel has confirmed the Arc G3</a> gaming handheld chip, which will launch in the Acer Predator Atlas 8, MSI Claw 8 EX AI+ and the OneXPlayer</li><li>The fightback against the <a href="https://www.tomsguide.com/computing/macbooks/apple-macbook-neo-review">MacBook Neo</a> is officially <strong>on </strong>with the <a href="https://www.tomsguide.com/computing/laptops/qualcomms-snapdragon-c-chip-is-here-to-take-on-the-macbook-neo-do-these-usd300-laptops-stand-a-chance">Snapdragon C chip for cheap Windows laptops</a></li></ul><p>We're just days away from the show in Taipei — happening between June 1 and June 5, with an Nvidia keynote kicking off the event,  and I will be on the ground covering and testing all the latest and greatest announcements!</p><p>And while tow of my predictions have come true, there are other trends that I need to set the stage for. Because not only is this set to be the biggest Computex ever, it’s also going to be the most important. There are some huge challenges ahead for consumer computing, and we’re set to see exactly how the industry will rise to them.</p><p>And as Managing Editor of Core Tech, this is my favorite time of the year. So it's time to set the stage and tell you what I predict will be coming out of Taipei.</p><h2 class="article-body__section" id="section-what-to-expect"><span>What to expect</span></h2><p>Computex is my team’s Super Bowl — our season finale, setting the stage for the next 12 months (and further ahead). And what’s becoming clear from the event schedule, rumors, and leaks, four potential announcements look set to dominate the event (and the two that are already confirmed).</p><h2 id="nvidia-enters-the-cpu-silicon-wars-of-2026">Nvidia enters the CPU silicon wars of 2026</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="JguFC7QCyC2XNDyVtNkxZD" name="NVIDIA CEO Jensen Huang Keynote at COMPUTEX 2025 39-8 screenshot" alt="Nvidia Computex 2025" src="https://cdn.mos.cms.futurecdn.net/JguFC7QCyC2XNDyVtNkxZD-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Yes, I know we’ve spoken about <a href="https://www.tomsguide.com/computing/cpus/nvidia-n1x-cpu-everything-we-know-so-far">Nvidia N1X</a> for a while now. We predicted it for <a href="https://www.tomsguide.com/computing/best-of-computex-2025-the-top-15-gadgets-of-the-worlds-biggest-computing-show">Computex 2025</a> and <a href="https://www.tomsguide.com/toms-guide-to/ces-2026">CES 2026</a>, but it didn't happen at either event. But all the stars are aligning rumor-wise, and it’s highly anticipated that Jensen Huang will take the stage at his GTC keynote and announce the new silicon.</p><p>For those uninitiated, this is Team Green’s ARM silicon — inspired by its DGX Spark AI supercomputers but squeezed down into something that can power the latest laptops.</p><p>And yes, since it's Nvidia, you can expect some big gaming chops here, as certain leakers claim it will be the equivalent of an RTX 4070, all on integrated graphics.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:75.00%;"><img id="oUBJGu7jdubGRcWLkBo5Qm" name="NVIDIA Computex 2025" alt="NVIDIA Computex 2025" src="https://cdn.mos.cms.futurecdn.net/oUBJGu7jdubGRcWLkBo5Qm-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="3024" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>And since it’s ARM, you can expect key power efficiency too, which would be significant for the future of gaming laptops. As for who’s looking to run these chips, Dell, Lenovo, and Alienware look like a lock.</p><p>But I want to pose a different prediction… Asus is celebrating the 20th anniversary of ROG, and an integrated-GPU version of the <a href="https://www.tomsguide.com/opinion/i-spent-a-week-testing-the-rog-zephyrus-g14-i-already-love-it-more-than-my-expensive-gaming-pc">Zephyrus G14</a> with Intel’s Panther Lake was quietly pulled from CES. Wouldn’t it be quite a return to form if there were an N1X-armed G14? Food for thought for you!</p><h2 id="asus-back-with-a-new-ally">Asus back with a new Ally!?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="yZSCo3ZySpaF3W7ngtinzY" name="ROG Xbox Ally X" alt="ROG Xbox Ally X" src="https://cdn.mos.cms.futurecdn.net/yZSCo3ZySpaF3W7ngtinzY-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The rumors are beginning to mount that a new Asus ROG Ally 2 gaming handheld may be announced at Computex! <a href="https://videocardz.com/newz/asus-next-gen-rog-ally-handheld-may-appear-at-computex" target="_blank">News first broke</a> by YouTuber Steam Dad, in which he spoke about a "next-gen handheld from Asus" coming to the show.</p><p>If this is true, what will we see inside? For the years it's been around, the Ally has always been on AMD silicon. That being said, Intel's bringing some gaming handheld heat to the party. Could this be one of the devices rocking Arc G3? </p><p>Speaking of...</p><h2 id="confirmed-intel-arc-g3-to-rock-the-gaming-handheld-space">CONFIRMED: Intel Arc G3 to rock the gaming handheld space</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="7hpfymJ9JJUL7GsPrsrwBY" name="MSI Claw 8 AI+" alt="MSI Claw 8 AI+" src="https://cdn.mos.cms.futurecdn.net/7hpfymJ9JJUL7GsPrsrwBY-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Intel’s been pretty clear that a retooled version of its Panther Lake chips is coming to gaming handhelds, and we’re looking ready to roll at Computex. And Team Blue has now confirmed the <a href="https://www.tomsguide.com/gaming/handheld-gaming/watch-out-amd-intels-arc-g3-and-arc-g3-extreme-handheld-chips-expected-for-computex-reveal">Intel Arc G3 and G3 Extreme</a> chipsets are set to launch in three new gaming handhelds.</p><p>For context, this all began when we all found out that the Intel Core Ultra Series 3 CPUs had pretty beastly GPUs — paired with strong <a href="https://www.tomsguide.com/computing/laptops/i-tested-intels-xess-3-multi-frame-generation-on-my-core-ultra-x9-388h-laptop-and-nvidia-should-be-worried-about-the-future-of-gaming-laptops">XeSS 3 scaling and multi-frame generation</a> to deliver seriously impressive fidelity and frame rates. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="gcvvryaccM9BNNoKqC3Ape" name="Intel Panther Lake" alt="Intel Panther Lake" src="https://cdn.mos.cms.futurecdn.net/gcvvryaccM9BNNoKqC3Ape-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Don’t expect them to be cheap, but this looks truly set to be the generational leap in handhelds we’ve been waiting for, and it’ll surely make AMD nervous.</p><h2 id="confirmed-the-fightback-against-macbook-neo-is-on-for-cheap-windows-laptops">CONFIRMED: The fightback against MacBook Neo is on for cheap Windows laptops</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2643px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="DWcSMYEwCbp6frkMTdQ3FU" name="MacBook Neo A18 review-LIST1" alt="MacBook Neo shown on desk" src="https://cdn.mos.cms.futurecdn.net/DWcSMYEwCbp6frkMTdQ3FU-1920-80.jpg" mos="" align="middle" fullscreen="" width="2643" height="1487" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Of all the companies that really bring value for money back to computing, I did <strong>not </strong>expect Apple to be the one to do it. The <a href="https://www.tomsguide.com/computing/macbooks/apple-macbook-neo-review">MacBook Neo</a> has shown that cheap laptops don’t have to be hunks of plastic with bad displays and spongy keyboards. They can actually be great and make you question whether you actually need to spend more (my time <a href="https://www.tomsguide.com/computing/macbooks/macbook-neo-vs-macbook-pro-how-much-power-do-you-need">facing it off with the MacBook Pro</a> proved that).</p><p>And if one thing is clear from asking my sources, it’s that other laptop makers were blindsided by this and rather terrified by the prospect of this premium notebook. So what's the plan to fight back? Qualcomm's shown its hand with <a href="https://www.tomsguide.com/computing/laptops/qualcomms-snapdragon-c-chip-is-here-to-take-on-the-macbook-neo-do-these-usd300-laptops-stand-a-chance">Snapdragon C</a> — silicon targeting laptop prices of just $300.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1600px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="TwH6eKCdAqPKbCy4q5xGMj" name="UniBook Image" alt="Chuwi UniBook on a blue background" src="https://cdn.mos.cms.futurecdn.net/TwH6eKCdAqPKbCy4q5xGMj-1920-80.jpg" mos="" align="middle" fullscreen="" width="1600" height="900" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Chuwi)</span></figcaption></figure><p>But what about <a href="https://www.tomsguide.com/computing/laptops/macbook-neo-finally-has-a-rival-intel-wildcat-lake-laptops-promise-double-the-ram-and-battery-life-for-under-usd600">Intel’s new Wildcat Lake</a> chips? We've heard rumblings about this chip bring laptops with much more attention to detail on the design/build quality front in a big way, and we'll be watching closely.</p><h2 id="ai-everywhere">AI everywhere</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="GejciDWvVeu274ajzByK67" name="computex.jpg" alt="Computex 2024" src="https://cdn.mos.cms.futurecdn.net/GejciDWvVeu274ajzByK67-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Computex)</span></figcaption></figure><p>I mean, it’s obvious at this point, right? Last year’s show was AI-dominated, and reports say that <a href="https://www.notebookcheck.net/Companies-without-AI-products-are-reportedly-being-punished-by-Computex-2026.1269723.0.html" target="_blank">Computex organizers are actively demoting companies</a> that don’t have AI products to show.</p><p>From hardware fueling the AI data center explosion to new gadgets running LLMs locally for the people, you can expect this to be the biggest talking point of the show. And while you’ll see a lot of tech that just has “AI” in the name but doesn’t really offer any real benefits from having AI, there will certainly be some useful devices.</p><p>Google I/O proved just how much consumer-focused agentic AI is coming down the way, and it’s absolutely no surprise that you’ll hear a lot more about the silicon that will power these experiences. No doubt Nvidia’s GTC conference will shed some more light on this AI automation, too. Speaking of…</p><h2 id="the-robots-are-coming">The robots are coming!</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ok27NYeW4YxfXpWrVB7zQd" name="1X Neo Home Robot" alt="1X Neo Home Robot" src="https://cdn.mos.cms.futurecdn.net/ok27NYeW4YxfXpWrVB7zQd-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: 1X)</span></figcaption></figure><p>We’ve heard a lot about robotics and AI over the past few years, but it's all essentially been talk — maybe with some automated production lines for good measure. The idea of having your own personal robot assistant seems a bit pie-in-the-sky.</p><p>But more and more over the course of this year, we’ve been hearing about robotics finally getting the AI compute it needs, from things like Nvidia’s Jetson silicon, to make it work. And I think this may be the first moment we get a proper glimpse of what that humanoid future could look like.</p><p>Will it be a bit Black Mirror? Probably, but as a tech journalist, I can’t deny it is damn cool.</p><h2 class="article-body__section" id="section-how-tom-s-guide-will-cover-computex-2026"><span>How Tom’s Guide will cover Computex 2026</span></h2><p>So long as the tech checks off one (or more) of these boxes, you’ll be reading about it or seeing it in our coverage! These will be the criteria we use to judge the winners of our Best of Computex awards, too.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="25CbN8tcAcNQUeUZ56xSCF" name="JGHdogRNUy2n9s97z2M9XR.jpg" alt="A $200 Apple Vision Pro alternative tested at Computex" src="https://cdn.mos.cms.futurecdn.net/25CbN8tcAcNQUeUZ56xSCF-1920-80.jpg" mos="" align="middle" fullscreen="" width="6000" height="3375" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>We call it “Computing for the rest of us” — our ongoing mission to not write for insiders, but so anyone can feel like the smartest geek in the room. Every year, you’ll read, hear, and see a whole lot of jargon-filled coverage with assumed knowledge coming out of Taiwan. My team and I have challenged that notion and have been rather successful in doing it!</p><p>And in our third iteration of Computex, we’re powering on with this mission but also making clear our three key goals of what we’d love to see (and tell you all about):</p><ul><li><strong>Value: </strong>It’s no real surprise that this is our top priority — we have a <a href="https://www.tomsguide.com/savings-squad">Savings Squad</a> after all! We want to see companies talk less about their data center hardware and more about delivering maximum bang for the buck in consumer products that are well-priced against the backdrop of <a href="https://www.tomsguide.com/computing/ram-price-crisis-2026-everything-you-need-to-know">RAMageddon</a>.</li><li><strong>Actually useful AI: </strong>Computex’s theme this year is “AI together,” and if the past couple of years are anything to go by, you can expect these two letters to be said a lot. We don’t want to see AI stuffed into hardware just because — we want to see actually useful, thoughtful implementations.</li><li><strong>Fascination: </strong>Not only does the show give us a chance to test the cool stuff you’ll be able to buy, but it also gives us a sneak peek at some truly ludicrous cutting-edge tech that sets the stage for the next five years. Internally, we call it “the cool sh*t,” but a more family-friendly way to put it is that we want to be fascinated.</li></ul><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6000px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="vhNi2LNzNEaDRCZo8DgD7K" name="DSC07851.JPG" alt="A PC build seen on the show floor at Computex 2025" src="https://cdn.mos.cms.futurecdn.net/vhNi2LNzNEaDRCZo8DgD7K-1920-80.jpg" mos="" align="middle" fullscreen="" width="6000" height="3376" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><h2 class="article-body__section" id="section-see-y-all-in-taipei"><span>See y’all in Taipei</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="biZeFcHnYLkW6V7MXwVeJK" name="IMG_4028" alt="TG Computing Editors at Computex 2025" src="https://cdn.mos.cms.futurecdn.net/biZeFcHnYLkW6V7MXwVeJK-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Of course, there will be much more — new PC components to talk about, new bleeding-edge silicon, new sim racing gear, new monitors and peripherals. And you best believe we’ll be covering all the best from the show floor as we see it.</p><p>So if you’re looking for a human glance at how Computex is carving out the future of computing, keep it locked on Tom’s Guide for all our written and video coverage from Taipei.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/smart-glasses/xreal-android-xr-project-aura-smart-glasses-hands-on-review">Xreal’s Android XR glasses are an early glimpse of my dream smart glasses</a></li><li><a href="https://www.tomsguide.com/computing/internet/i-hate-that-i-love-googles-new-ai-powered-search-bar-it-makes-the-internet-easier-to-digest-but-my-career-is-cooked-now">I hate that I love Google’s new AI-powered search bar</a></li><li><a href="https://www.tomsguide.com/computing/smart-glasses/latitude-52-n-review">I switched my Ray-Ban Metas for L’Atitude 52°N for a month</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/what-to-expect-at-computex-2026-nvidia-n1x-intels-next-gen-gaming-handhelds-and-an-industrys-fightback-against-ramageddon</link>
                                                                            <description>
                            <![CDATA[ Computex 2026 is almost here, and Tom's Guide will be in Taipei for the event! Here's what to expect, from Nvidia N1X, to the big Windows fightback against MacBook Neo. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">awTmUi5hdU2dwyURc6HSym</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/KaedeAaVVbcPJthb58PNQn-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 25 May 2026 06:00:00 +0000</pubDate>                                                                                                                                <updated>Mon, 08 Jun 2026 13:16:58 +0000</updated>
                                                                                                                                            <category><![CDATA[Computing]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jason England ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/v4fSq5U4uZUEtGY2BwNuJ6-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jason brings a decade of tech and gaming journalism experience to his role as a Managing Editor of Computing at Tom&#039;s Guide. He has previously written for Laptop Mag, Tom&#039;s Hardware, Kotaku, Stuff and BBC Science Focus. In his spare time, you&#039;ll find Jason looking for good dogs to pet or thinking about eating pizza if he isn&#039;t already.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/KaedeAaVVbcPJthb58PNQn-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Computex 2026]]></media:description>                                                            <media:text><![CDATA[Computex 2026]]></media:text>
                                <media:title type="plain"><![CDATA[Computex 2026]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/KaedeAaVVbcPJthb58PNQn-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>So a lot has happened since I wrote this Computex 2026 preview, and a couple of my predictions have already come true (really should've put a bet on this)! </p><ul><li><a href="https://www.tomsguide.com/gaming/handheld-gaming/intel-arc-g3-is-here-to-shake-up-handheld-gaming-and-amd-should-be-terrified-acer-predator-atlas-8-is-the-first-out-the-gate">Intel has confirmed the Arc G3</a> gaming handheld chip, which will launch in the Acer Predator Atlas 8, MSI Claw 8 EX AI+ and the OneXPlayer</li><li>The fightback against the <a href="https://www.tomsguide.com/computing/macbooks/apple-macbook-neo-review">MacBook Neo</a> is officially <strong>on </strong>with the <a href="https://www.tomsguide.com/computing/laptops/qualcomms-snapdragon-c-chip-is-here-to-take-on-the-macbook-neo-do-these-usd300-laptops-stand-a-chance">Snapdragon C chip for cheap Windows laptops</a></li></ul><p>We're just days away from the show in Taipei — happening between June 1 and June 5, with an Nvidia keynote kicking off the event,  and I will be on the ground covering and testing all the latest and greatest announcements!</p><p>And while tow of my predictions have come true, there are other trends that I need to set the stage for. Because not only is this set to be the biggest Computex ever, it’s also going to be the most important. There are some huge challenges ahead for consumer computing, and we’re set to see exactly how the industry will rise to them.</p><p>And as Managing Editor of Core Tech, this is my favorite time of the year. So it's time to set the stage and tell you what I predict will be coming out of Taipei.</p><h2 class="article-body__section" id="section-what-to-expect"><span>What to expect</span></h2><p>Computex is my team’s Super Bowl — our season finale, setting the stage for the next 12 months (and further ahead). And what’s becoming clear from the event schedule, rumors, and leaks, four potential announcements look set to dominate the event (and the two that are already confirmed).</p><h2 id="nvidia-enters-the-cpu-silicon-wars-of-2026">Nvidia enters the CPU silicon wars of 2026</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="JguFC7QCyC2XNDyVtNkxZD" name="NVIDIA CEO Jensen Huang Keynote at COMPUTEX 2025 39-8 screenshot" alt="Nvidia Computex 2025" src="https://cdn.mos.cms.futurecdn.net/JguFC7QCyC2XNDyVtNkxZD-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Yes, I know we’ve spoken about <a href="https://www.tomsguide.com/computing/cpus/nvidia-n1x-cpu-everything-we-know-so-far">Nvidia N1X</a> for a while now. We predicted it for <a href="https://www.tomsguide.com/computing/best-of-computex-2025-the-top-15-gadgets-of-the-worlds-biggest-computing-show">Computex 2025</a> and <a href="https://www.tomsguide.com/toms-guide-to/ces-2026">CES 2026</a>, but it didn't happen at either event. But all the stars are aligning rumor-wise, and it’s highly anticipated that Jensen Huang will take the stage at his GTC keynote and announce the new silicon.</p><p>For those uninitiated, this is Team Green’s ARM silicon — inspired by its DGX Spark AI supercomputers but squeezed down into something that can power the latest laptops.</p><p>And yes, since it's Nvidia, you can expect some big gaming chops here, as certain leakers claim it will be the equivalent of an RTX 4070, all on integrated graphics.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:75.00%;"><img id="oUBJGu7jdubGRcWLkBo5Qm" name="NVIDIA Computex 2025" alt="NVIDIA Computex 2025" src="https://cdn.mos.cms.futurecdn.net/oUBJGu7jdubGRcWLkBo5Qm-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="3024" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>And since it’s ARM, you can expect key power efficiency too, which would be significant for the future of gaming laptops. As for who’s looking to run these chips, Dell, Lenovo, and Alienware look like a lock.</p><p>But I want to pose a different prediction… Asus is celebrating the 20th anniversary of ROG, and an integrated-GPU version of the <a href="https://www.tomsguide.com/opinion/i-spent-a-week-testing-the-rog-zephyrus-g14-i-already-love-it-more-than-my-expensive-gaming-pc">Zephyrus G14</a> with Intel’s Panther Lake was quietly pulled from CES. Wouldn’t it be quite a return to form if there were an N1X-armed G14? Food for thought for you!</p><h2 id="asus-back-with-a-new-ally">Asus back with a new Ally!?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="yZSCo3ZySpaF3W7ngtinzY" name="ROG Xbox Ally X" alt="ROG Xbox Ally X" src="https://cdn.mos.cms.futurecdn.net/yZSCo3ZySpaF3W7ngtinzY-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The rumors are beginning to mount that a new Asus ROG Ally 2 gaming handheld may be announced at Computex! <a href="https://videocardz.com/newz/asus-next-gen-rog-ally-handheld-may-appear-at-computex" target="_blank">News first broke</a> by YouTuber Steam Dad, in which he spoke about a "next-gen handheld from Asus" coming to the show.</p><p>If this is true, what will we see inside? For the years it's been around, the Ally has always been on AMD silicon. That being said, Intel's bringing some gaming handheld heat to the party. Could this be one of the devices rocking Arc G3? </p><p>Speaking of...</p><h2 id="confirmed-intel-arc-g3-to-rock-the-gaming-handheld-space">CONFIRMED: Intel Arc G3 to rock the gaming handheld space</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="7hpfymJ9JJUL7GsPrsrwBY" name="MSI Claw 8 AI+" alt="MSI Claw 8 AI+" src="https://cdn.mos.cms.futurecdn.net/7hpfymJ9JJUL7GsPrsrwBY-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Intel’s been pretty clear that a retooled version of its Panther Lake chips is coming to gaming handhelds, and we’re looking ready to roll at Computex. And Team Blue has now confirmed the <a href="https://www.tomsguide.com/gaming/handheld-gaming/watch-out-amd-intels-arc-g3-and-arc-g3-extreme-handheld-chips-expected-for-computex-reveal">Intel Arc G3 and G3 Extreme</a> chipsets are set to launch in three new gaming handhelds.</p><p>For context, this all began when we all found out that the Intel Core Ultra Series 3 CPUs had pretty beastly GPUs — paired with strong <a href="https://www.tomsguide.com/computing/laptops/i-tested-intels-xess-3-multi-frame-generation-on-my-core-ultra-x9-388h-laptop-and-nvidia-should-be-worried-about-the-future-of-gaming-laptops">XeSS 3 scaling and multi-frame generation</a> to deliver seriously impressive fidelity and frame rates. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="gcvvryaccM9BNNoKqC3Ape" name="Intel Panther Lake" alt="Intel Panther Lake" src="https://cdn.mos.cms.futurecdn.net/gcvvryaccM9BNNoKqC3Ape-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Don’t expect them to be cheap, but this looks truly set to be the generational leap in handhelds we’ve been waiting for, and it’ll surely make AMD nervous.</p><h2 id="confirmed-the-fightback-against-macbook-neo-is-on-for-cheap-windows-laptops">CONFIRMED: The fightback against MacBook Neo is on for cheap Windows laptops</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2643px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="DWcSMYEwCbp6frkMTdQ3FU" name="MacBook Neo A18 review-LIST1" alt="MacBook Neo shown on desk" src="https://cdn.mos.cms.futurecdn.net/DWcSMYEwCbp6frkMTdQ3FU-1920-80.jpg" mos="" align="middle" fullscreen="" width="2643" height="1487" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Of all the companies that really bring value for money back to computing, I did <strong>not </strong>expect Apple to be the one to do it. The <a href="https://www.tomsguide.com/computing/macbooks/apple-macbook-neo-review">MacBook Neo</a> has shown that cheap laptops don’t have to be hunks of plastic with bad displays and spongy keyboards. They can actually be great and make you question whether you actually need to spend more (my time <a href="https://www.tomsguide.com/computing/macbooks/macbook-neo-vs-macbook-pro-how-much-power-do-you-need">facing it off with the MacBook Pro</a> proved that).</p><p>And if one thing is clear from asking my sources, it’s that other laptop makers were blindsided by this and rather terrified by the prospect of this premium notebook. So what's the plan to fight back? Qualcomm's shown its hand with <a href="https://www.tomsguide.com/computing/laptops/qualcomms-snapdragon-c-chip-is-here-to-take-on-the-macbook-neo-do-these-usd300-laptops-stand-a-chance">Snapdragon C</a> — silicon targeting laptop prices of just $300.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1600px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="TwH6eKCdAqPKbCy4q5xGMj" name="UniBook Image" alt="Chuwi UniBook on a blue background" src="https://cdn.mos.cms.futurecdn.net/TwH6eKCdAqPKbCy4q5xGMj-1920-80.jpg" mos="" align="middle" fullscreen="" width="1600" height="900" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Chuwi)</span></figcaption></figure><p>But what about <a href="https://www.tomsguide.com/computing/laptops/macbook-neo-finally-has-a-rival-intel-wildcat-lake-laptops-promise-double-the-ram-and-battery-life-for-under-usd600">Intel’s new Wildcat Lake</a> chips? We've heard rumblings about this chip bring laptops with much more attention to detail on the design/build quality front in a big way, and we'll be watching closely.</p><h2 id="ai-everywhere">AI everywhere</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="GejciDWvVeu274ajzByK67" name="computex.jpg" alt="Computex 2024" src="https://cdn.mos.cms.futurecdn.net/GejciDWvVeu274ajzByK67-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Computex)</span></figcaption></figure><p>I mean, it’s obvious at this point, right? Last year’s show was AI-dominated, and reports say that <a href="https://www.notebookcheck.net/Companies-without-AI-products-are-reportedly-being-punished-by-Computex-2026.1269723.0.html" target="_blank">Computex organizers are actively demoting companies</a> that don’t have AI products to show.</p><p>From hardware fueling the AI data center explosion to new gadgets running LLMs locally for the people, you can expect this to be the biggest talking point of the show. And while you’ll see a lot of tech that just has “AI” in the name but doesn’t really offer any real benefits from having AI, there will certainly be some useful devices.</p><p>Google I/O proved just how much consumer-focused agentic AI is coming down the way, and it’s absolutely no surprise that you’ll hear a lot more about the silicon that will power these experiences. No doubt Nvidia’s GTC conference will shed some more light on this AI automation, too. Speaking of…</p><h2 id="the-robots-are-coming">The robots are coming!</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ok27NYeW4YxfXpWrVB7zQd" name="1X Neo Home Robot" alt="1X Neo Home Robot" src="https://cdn.mos.cms.futurecdn.net/ok27NYeW4YxfXpWrVB7zQd-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: 1X)</span></figcaption></figure><p>We’ve heard a lot about robotics and AI over the past few years, but it's all essentially been talk — maybe with some automated production lines for good measure. The idea of having your own personal robot assistant seems a bit pie-in-the-sky.</p><p>But more and more over the course of this year, we’ve been hearing about robotics finally getting the AI compute it needs, from things like Nvidia’s Jetson silicon, to make it work. And I think this may be the first moment we get a proper glimpse of what that humanoid future could look like.</p><p>Will it be a bit Black Mirror? Probably, but as a tech journalist, I can’t deny it is damn cool.</p><h2 class="article-body__section" id="section-how-tom-s-guide-will-cover-computex-2026"><span>How Tom’s Guide will cover Computex 2026</span></h2><p>So long as the tech checks off one (or more) of these boxes, you’ll be reading about it or seeing it in our coverage! These will be the criteria we use to judge the winners of our Best of Computex awards, too.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="25CbN8tcAcNQUeUZ56xSCF" name="JGHdogRNUy2n9s97z2M9XR.jpg" alt="A $200 Apple Vision Pro alternative tested at Computex" src="https://cdn.mos.cms.futurecdn.net/25CbN8tcAcNQUeUZ56xSCF-1920-80.jpg" mos="" align="middle" fullscreen="" width="6000" height="3375" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>We call it “Computing for the rest of us” — our ongoing mission to not write for insiders, but so anyone can feel like the smartest geek in the room. Every year, you’ll read, hear, and see a whole lot of jargon-filled coverage with assumed knowledge coming out of Taiwan. My team and I have challenged that notion and have been rather successful in doing it!</p><p>And in our third iteration of Computex, we’re powering on with this mission but also making clear our three key goals of what we’d love to see (and tell you all about):</p><ul><li><strong>Value: </strong>It’s no real surprise that this is our top priority — we have a <a href="https://www.tomsguide.com/savings-squad">Savings Squad</a> after all! We want to see companies talk less about their data center hardware and more about delivering maximum bang for the buck in consumer products that are well-priced against the backdrop of <a href="https://www.tomsguide.com/computing/ram-price-crisis-2026-everything-you-need-to-know">RAMageddon</a>.</li><li><strong>Actually useful AI: </strong>Computex’s theme this year is “AI together,” and if the past couple of years are anything to go by, you can expect these two letters to be said a lot. We don’t want to see AI stuffed into hardware just because — we want to see actually useful, thoughtful implementations.</li><li><strong>Fascination: </strong>Not only does the show give us a chance to test the cool stuff you’ll be able to buy, but it also gives us a sneak peek at some truly ludicrous cutting-edge tech that sets the stage for the next five years. Internally, we call it “the cool sh*t,” but a more family-friendly way to put it is that we want to be fascinated.</li></ul><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6000px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="vhNi2LNzNEaDRCZo8DgD7K" name="DSC07851.JPG" alt="A PC build seen on the show floor at Computex 2025" src="https://cdn.mos.cms.futurecdn.net/vhNi2LNzNEaDRCZo8DgD7K-1920-80.jpg" mos="" align="middle" fullscreen="" width="6000" height="3376" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><h2 class="article-body__section" id="section-see-y-all-in-taipei"><span>See y’all in Taipei</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="biZeFcHnYLkW6V7MXwVeJK" name="IMG_4028" alt="TG Computing Editors at Computex 2025" src="https://cdn.mos.cms.futurecdn.net/biZeFcHnYLkW6V7MXwVeJK-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Of course, there will be much more — new PC components to talk about, new bleeding-edge silicon, new sim racing gear, new monitors and peripherals. And you best believe we’ll be covering all the best from the show floor as we see it.</p><p>So if you’re looking for a human glance at how Computex is carving out the future of computing, keep it locked on Tom’s Guide for all our written and video coverage from Taipei.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/smart-glasses/xreal-android-xr-project-aura-smart-glasses-hands-on-review">Xreal’s Android XR glasses are an early glimpse of my dream smart glasses</a></li><li><a href="https://www.tomsguide.com/computing/internet/i-hate-that-i-love-googles-new-ai-powered-search-bar-it-makes-the-internet-easier-to-digest-but-my-career-is-cooked-now">I hate that I love Google’s new AI-powered search bar</a></li><li><a href="https://www.tomsguide.com/computing/smart-glasses/latitude-52-n-review">I switched my Ray-Ban Metas for L’Atitude 52°N for a month</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Update your Nvidia GPU drivers now to protect your PC from 9 "high-severity" vulnerabilities — here's what's at risk ]]></title>
                                                                                                <dc:content><![CDATA[ <p>If your Windows or Linux computer uses one of <a href="https://www.tomsguide.com/computing/gpus/best-graphics-cards">best graphics cards</a> made by Nvidia, you're going to want to make sure you're using the latest drivers. This week, the company <a href="https://nvidia.custhelp.com/app/answers/detail/a_id/5821" target="_blank">issued a security alert</a> and driver updates to combat a variety of vulnerabilities. </p><p>The alert highlights 15 issues, nine of which Nvidia has marked as "high-vulnerability." The high-risk flaws run the gamut of what bad actors can do to your PC. That includes letting hackers get access to your PC kernel, inject malicious code, steal crucial data, or gain administrative access. All the stuff you don't want happening. </p><p>For both Windows and Linux, you can download the driver update <a href="https://www.nvidia.com/en-us/drivers/" target="_blank">directly from Nvidia</a>. On Windows, you'll want to make sure you upgrade to driver version 569.49. </p><p>On Linux, you want to make sure you update to version 590.48.01. The new versions were released about a week ago, so most people who have automatic updates turned on should have the update. But check your driver version just in case.</p><p>According to the alert, all Nvidia drivers before version 596.36 — version 482.53 for GTX 10-series and below — are potentially at risk from these vulnerabilities.</p><h2 id="keep-your-pc-safe-from-malware">Keep your PC safe from malware</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1280px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="tp6SQJXH7qNPosVnCnjnGh" name="TG Screenshot Template_2024 Mo ratio" alt="Futuristic looking data with padlock and shield" src="https://cdn.mos.cms.futurecdn.net/tp6SQJXH7qNPosVnCnjnGh-1920-80.jpg" mos="" align="middle" fullscreen="" width="1280" height="720" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Getty Images)</span></figcaption></figure><p>This is a general reminder to ensure all your drivers are up to date. Most driver releases patch security flaws like the ones outlined by Nvidia.</p><p>To be fair, some driver updates can cause issues, but later this year, <a href="https://www.tomsguide.com/computing/windows-operating-systems/microsoft-will-soon-automatically-uninstall-bad-windows-drivers-and-this-new-tool-could-be-a-game-changer-for-your-pc">Microsoft will automatically roll back bad Windows drivers</a> to the most recent stable version. Still, keeping your drivers up to date is good practice.</p><p>If you're on PC, Microsoft releases new security updates every second Tuesday of each month. </p><p>Additionally, you'll want to ensure that Windows Defender is enabled. It largely does a great job of catching threats before they do damage. </p><p>For extra protection, you should consider the <a href="https://www.tomsguide.com/computing/antivirus/best-antivirus-software">best antivirus software</a>. Paid antivirus solutions usually update regularly, plus you often get access to VPNs, a <a href="https://www.tomsguide.com/us/best-password-managers,review-3785.html">password manager</a> and other security goodies. </p><p>New vulnerabilities crop up all the time, but if you practice good cyber hygiene you devices and data should stay safe.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/ai/nvidia-wants-to-turn-your-home-into-a-mini-ai-data-center-and-its-already-being-tested">Nvidia is teaming up with Span to install mini AI data centers right on the side of your house, turning residential neighborhoods into a distributed supercomputing network that actually pays homeowners for their unused electricity</a></li><li><a href="https://www.tomsguide.com/best-picks/best-gaming-laptops">I test gaming laptops all year — here are the only 8 I recommend in 2026</a></li><li><a href="https://www.tomsguide.com/computing/gaming-laptops/nvidia-rtx-5070-laptop-gpu-officially-has-12gb-of-vram-and-its-about-time">Nvidia RTX 5070 laptop GPU gets 12GB VRAM — here’s why it's a game-changer</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/gpus/update-your-nvidia-gpu-drivers-now-to-protect-your-pc-from-9-high-severity-vulnerabilities-heres-whats-at-risk</link>
                                                                            <description>
                            <![CDATA[ Nvidia is urging users to upgrade their GPU drivers immediately to avoid several "high-severity" vulnerabilities. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">6AWoqcqcqFWizMA89Txo2N</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/V3cKNwFUP2UYBUKCHXZVuT-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 20 May 2026 20:57:39 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[GPUs]]></category>
                                                    <category><![CDATA[Malware & Adware]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Computing Hardware]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                    <category><![CDATA[Online Security]]></category>
                                                                                                <author><![CDATA[ scott.younker@futurenet.com (Scott Younker) ]]></author>                    <dc:creator><![CDATA[ Scott Younker ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/RZsUpqcJ6Uj2q83oCUwNhQ-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Scott Younker is the West Coast Reporter at Tom’s Guide. He covers all the latest tech news, including phones, computing and more. He’s been involved in tech since 2011 covering everything from cameras and swimming pool equipment to the latest gaming consoles and smart TVs. He is on a seemingly never ending hunt to build the easiest to use home media system. &lt;/p&gt;&lt;p&gt;Before Tom’s Guide, Scott worked for publications like &lt;em&gt;Digital Trends, Outdoor Photographer, Dead Beats Panel&lt;/em&gt;, and in a brief detour, &lt;em&gt;America’s Funniest Home Videos&lt;/em&gt;. Yes, he has seen more pratfalls, silly pets and ridiculous home movie fails than is reasonably healthy. &lt;/p&gt;&lt;p&gt;When not writing about the latest devices or advances in chipsets, be sure to ask about Scott about disc golf and sustainability, or just if you’re being cheeky, ask about his noodle arm. If you truly want to get nerdy, bring up board games and his ongoing losing streak. &lt;/p&gt;&lt;p&gt;Scott joined Tom&#039;s Guide in 2024 as the West Coast Reporter. He graduated from the School of Journalism at the University of Oregon with a degree in magazine journalism and a minor in communications. While there he blogged or wrote for several magazines including the Fluxx, Ethos and the Oregon Commentator. He briefly wrote and managed a moderately successful blog focused on web comics. &lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/V3cKNwFUP2UYBUKCHXZVuT-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Nvidia RTX 5060]]></media:description>                                                            <media:text><![CDATA[Nvidia RTX 5060]]></media:text>
                                <media:title type="plain"><![CDATA[Nvidia RTX 5060]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/V3cKNwFUP2UYBUKCHXZVuT-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>If your Windows or Linux computer uses one of <a href="https://www.tomsguide.com/computing/gpus/best-graphics-cards">best graphics cards</a> made by Nvidia, you're going to want to make sure you're using the latest drivers. This week, the company <a href="https://nvidia.custhelp.com/app/answers/detail/a_id/5821" target="_blank">issued a security alert</a> and driver updates to combat a variety of vulnerabilities. </p><p>The alert highlights 15 issues, nine of which Nvidia has marked as "high-vulnerability." The high-risk flaws run the gamut of what bad actors can do to your PC. That includes letting hackers get access to your PC kernel, inject malicious code, steal crucial data, or gain administrative access. All the stuff you don't want happening. </p><p>For both Windows and Linux, you can download the driver update <a href="https://www.nvidia.com/en-us/drivers/" target="_blank">directly from Nvidia</a>. On Windows, you'll want to make sure you upgrade to driver version 569.49. </p><p>On Linux, you want to make sure you update to version 590.48.01. The new versions were released about a week ago, so most people who have automatic updates turned on should have the update. But check your driver version just in case.</p><p>According to the alert, all Nvidia drivers before version 596.36 — version 482.53 for GTX 10-series and below — are potentially at risk from these vulnerabilities.</p><h2 id="keep-your-pc-safe-from-malware">Keep your PC safe from malware</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1280px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="tp6SQJXH7qNPosVnCnjnGh" name="TG Screenshot Template_2024 Mo ratio" alt="Futuristic looking data with padlock and shield" src="https://cdn.mos.cms.futurecdn.net/tp6SQJXH7qNPosVnCnjnGh-1920-80.jpg" mos="" align="middle" fullscreen="" width="1280" height="720" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Getty Images)</span></figcaption></figure><p>This is a general reminder to ensure all your drivers are up to date. Most driver releases patch security flaws like the ones outlined by Nvidia.</p><p>To be fair, some driver updates can cause issues, but later this year, <a href="https://www.tomsguide.com/computing/windows-operating-systems/microsoft-will-soon-automatically-uninstall-bad-windows-drivers-and-this-new-tool-could-be-a-game-changer-for-your-pc">Microsoft will automatically roll back bad Windows drivers</a> to the most recent stable version. Still, keeping your drivers up to date is good practice.</p><p>If you're on PC, Microsoft releases new security updates every second Tuesday of each month. </p><p>Additionally, you'll want to ensure that Windows Defender is enabled. It largely does a great job of catching threats before they do damage. </p><p>For extra protection, you should consider the <a href="https://www.tomsguide.com/computing/antivirus/best-antivirus-software">best antivirus software</a>. Paid antivirus solutions usually update regularly, plus you often get access to VPNs, a <a href="https://www.tomsguide.com/us/best-password-managers,review-3785.html">password manager</a> and other security goodies. </p><p>New vulnerabilities crop up all the time, but if you practice good cyber hygiene you devices and data should stay safe.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/ai/nvidia-wants-to-turn-your-home-into-a-mini-ai-data-center-and-its-already-being-tested">Nvidia is teaming up with Span to install mini AI data centers right on the side of your house, turning residential neighborhoods into a distributed supercomputing network that actually pays homeowners for their unused electricity</a></li><li><a href="https://www.tomsguide.com/best-picks/best-gaming-laptops">I test gaming laptops all year — here are the only 8 I recommend in 2026</a></li><li><a href="https://www.tomsguide.com/computing/gaming-laptops/nvidia-rtx-5070-laptop-gpu-officially-has-12gb-of-vram-and-its-about-time">Nvidia RTX 5070 laptop GPU gets 12GB VRAM — here’s why it's a game-changer</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Nvidia is teaming up with Span to install mini AI data centers right on the side of your house, turning residential neighborhoods into a distributed supercomputing network that actually pays homeowners for their unused electricity ]]></title>
                                                                                                <dc:content><![CDATA[ <p>For the past few years, AI has lived "far away" or at least behind-the-scenes. We ask <a href="https://www.tomsguide.com/news/chatgpt">ChatGPT</a> questions and giant data centers packed with GPUs do the heavy lifting out of sight.</p><p>But Nvidia, the company powering much of the AI revolution, appears to be betting on something very different for the future: an <a href="https://www.nvidia.com/en-us/products/workstations/dgx-spark/" target="_blank">AI supercomputer </a>inside your home. </p><p>At least, that's the idea gaining traction after <a href="https://www.instagram.com/p/DYAfS8sjlh6">viral posts claimed Nvidia wants to turn your house into an AI data center</a>. While the idea might sound a little too sci-fi for most of us to grasp, it's actually rooted in a very real shift happening across the tech industry. Moving AI out of <a href="https://www.tomsguide.com/features/public-vs-private-cloud-storage-which-do-you-need">centralized cloud systems</a> and directly onto <a href="https://arxiv.org/abs/1909.00560" target="_blank">personal devices</a> is closer than we think. </p><h2 id="so-what-s-actually-happening">So what’s actually happening?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="RV4PBZWvfe6YeWVFTejCzS" name="Nvidia" alt="Nvidia" src="https://cdn.mos.cms.futurecdn.net/RV4PBZWvfe6YeWVFTejCzS-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>What seems like an outrageous claim stems from Nvidia’s push into what it calls “personal AI supercomputers,” compact but extremely powerful AI machines designed to run advanced models locally instead of relying entirely on the cloud.</p><p>One example is <a href="https://marketplace.nvidia.com/en-us/enterprise/personal-ai-supercomputers/dgx-spark" target="_blank">Nvidia's DGX Spark</a>, a desktop-sized AI system the company literally describes as an “AI supercomputer on your desk.” It’s capable of running large AI models locally and is aimed at developers, researchers and high-end AI workflows.</p><p>According to Nvidia, these systems are powerful enough that they are designed for local AI inference, robotics, edge AI applications, autonomous agents, computer vision and smart systems. Essentially, AI that runs closer to you instead of inside distant cloud infrastructure.</p><h2 id="why-the-industry-could-be-moving-in-this-direction">Why the industry could be moving in this direction</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="4J32tvQmakFnXcY4UCv3Hj" name="data center.shutterstock_2704406619" alt="data center cooling" src="https://cdn.mos.cms.futurecdn.net/4J32tvQmakFnXcY4UCv3Hj-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>Right now, most AI tools depend heavily on giant cloud providers. That works — but it also creates some major problems such as: </p><ul><li><strong>Expensive AI. </strong>Running large AI models costs<a href="https://www.tomsguide.com/ai/the-ai-boom-is-driving-up-electricity-bills-heres-what-you-need-to-know"> enormous amounts of money </a>and energy. Data centers are expanding at a staggering pace and putting pressure on electrical grids worldwide. Distributing some of that processing onto local devices could reduce cloud costs and ease infrastructure strain.</li><li><strong>Privacy is a major concern. </strong>Local AI means fewer conversations sent to remote servers, better privacy and ultimately better control over your data. This is a huge selling point as people grow more cautious about how AI companies use personal information.</li><li><strong>AI feels faster when it runs locally. </strong>Cloud AI always introduces some delay, but local AI can power instant voice assistants, smart glasses, home robots, security systems and offline AI tools with much lower latency.</li></ul><h2 id="your-future-home-might-quietly-become-an-ai-hub">Your future home might quietly become an AI hub</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="E8koTdEsZT2baaFpVwHhS5" name="G7L4jMsppu7xxqJdzUTw5i.jpg" alt="Man Working from Home" src="https://cdn.mos.cms.futurecdn.net/E8koTdEsZT2baaFpVwHhS5-1920-80.jpg" mos="" align="middle" fullscreen="" width="1200" height="675" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jelena Zelen/Shutterstock)</span></figcaption></figure><p>That idea may sound far-fetched, but it’s actually closer to reality than most people realize. A recent report from <a href="https://www.inc.com/moses-jeanfrancois/nvidia-mini-ai-data-center-house/91340588?" target="_blank">Inc.</a> says NVIDIA is partnering with startup <a href="https://www.span.io/" target="_blank">Span</a> to test “mini” AI data center units attached to homes and small businesses. The goal is to tap into unused residential electrical capacity to help power AI workloads. </p><p>The units, called XFRA nodes, are reportedly designed to sit alongside existing home infrastructure like HVAC systems and electrical panels. Instead of relying entirely on giant centralized facilities, the idea is to distribute computing power across thousands of smaller locations. <br><br>The real reason Nvidia is pushing the DGX Spark and the RTX 50-series isn’t just for faster chatbots. It’s for Autonomous AI Agents. In 2026, we are moving away from simple assistants and toward <a href="https://www.tomsguide.com/ai/i-reclaimed-15-hours-this-week-with-ai-agents-here-is-the-exact-setup-i-used-to-automate-my-workflow">"Agents" </a>that can manage your calendar, handle your finances and even interact with your smart home autonomously. </p><p>To do this safely, the industry is pivoting toward Local Inference for three critical reasons:</p><ul><li><strong>24/7 autonomy:</strong> For an AI agent to monitor your home security or manage your energy grid usage, it needs to stay "awake" even if your internet goes down. Local hardware like the <a href="https://lambda.ai/superclusters" target="_blank">Grace Blackwell superchip</a> allows these systems to run 24/7 without a constant cloud uplink.</li><li><strong>Zero-trace privacy:</strong> Sending your bank statements, private emails and home camera feeds to the cloud for an AI to "analyze" is a massive security risk. By using tools like <a href="https://www.nvidia.com/en-us/ai/nemoclaw/" target="_blank">Nvidia OpenShell</a>, these agents can operate within a "privacy sandbox" inside your own four walls. Your data never leaves your house.</li><li><strong>The 'Digital Twin' hub:</strong> High-end systems like the DGX Spark allow you to run a "Digital Twin" of your entire digital life. This hub acts as a local brain for all your smaller devices like your phone, your smart glasses and your appliances, processing their data in one secure, high-speed location.</li></ul><h2 id="the-takeaway-2">The takeaway</h2><p>Nvidia probably doesn’t expect people to install rows of GPU racks in their basement. But your home could gradually fill with AI-powered systems that process data locally and that's a major shift from the current cloud-first AI model.</p><p>And, Nvidia isn’t alone here. Apple, Microsoft, Google and others are all aggressively pushing “on-device AI” and “edge AI” strategies.</p><p>Apple Intelligence, for example, emphasizes private on-device processing whenever possible. Microsoft is building AI directly into Windows PCs. Qualcomm is racing to create AI-ready chips for laptops and phones. </p><p>Just like gaming PCs slowly evolved from niche enthusiast machines into mainstream household tech, AI hardware may follow a similar path over the next decade. It will be interesting to watch the future of AI move from some distant server farm, to living quietly inside our living rooms instead.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom’s Guide</span></h3><ul><li><a href="https://www.tomsguide.com/ai/i-ditched-cloud-ai-for-a-week-i-had-no-idea-gmail-knew-so-much-about-me">I kept my Gmail address but ditched cloud AI — local AI made me feel far more secure</a></li><li><a href="https://www.tomsguide.com/ai/i-stopped-wasting-ai-prompts-this-simple-high-roi-system-changed-how-i-use-chatgpt">I realized I was wasting money every time I used ChatGPT — this simple system fixed it</a></li><li><a href="https://www.tomsguide.com/ai/i-used-google-notebooklm-to-reduce-my-mental-load-for-a-week-heres-what-i-stopped-stressing-about">I used NotebookLM to offload my mental clutter for a week — here’s what I stopped stressing about</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/ai/nvidia-wants-to-turn-your-home-into-a-mini-ai-data-center-and-its-already-being-tested</link>
                                                                            <description>
                            <![CDATA[ Nvidia is pushing into 'personal AI supercomputers' that run advanced models locally instead of in the cloud. Here’s why your home could become an AI hub. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Jng6sg83Kbkz72ojJhfsVN</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/MFifoDjTTinJpLk8syk8pj-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 07 May 2026 12:37:48 +0000</pubDate>                                                                                                                                <updated>Thu, 14 May 2026 20:58:57 +0000</updated>
                                                                                                                                            <category><![CDATA[AI]]></category>
                                                                                                <author><![CDATA[ amanda.caswell@futurenet.com (Amanda Caswell) ]]></author>                    <dc:creator><![CDATA[ Amanda Caswell ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/zYjevim2q7FjQiefqpjZRB-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/MFifoDjTTinJpLk8syk8pj-1920-80.jpg">
                                                            <media:credit><![CDATA[Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Jensen Huang at CES 2026]]></media:description>                                                            <media:text><![CDATA[Jensen Huang at CES 2026]]></media:text>
                                <media:title type="plain"><![CDATA[Jensen Huang at CES 2026]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/MFifoDjTTinJpLk8syk8pj-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>For the past few years, AI has lived "far away" or at least behind-the-scenes. We ask <a href="https://www.tomsguide.com/news/chatgpt">ChatGPT</a> questions and giant data centers packed with GPUs do the heavy lifting out of sight.</p><p>But Nvidia, the company powering much of the AI revolution, appears to be betting on something very different for the future: an <a href="https://www.nvidia.com/en-us/products/workstations/dgx-spark/" target="_blank">AI supercomputer </a>inside your home. </p><p>At least, that's the idea gaining traction after <a href="https://www.instagram.com/p/DYAfS8sjlh6">viral posts claimed Nvidia wants to turn your house into an AI data center</a>. While the idea might sound a little too sci-fi for most of us to grasp, it's actually rooted in a very real shift happening across the tech industry. Moving AI out of <a href="https://www.tomsguide.com/features/public-vs-private-cloud-storage-which-do-you-need">centralized cloud systems</a> and directly onto <a href="https://arxiv.org/abs/1909.00560" target="_blank">personal devices</a> is closer than we think. </p><h2 id="so-what-s-actually-happening">So what’s actually happening?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="RV4PBZWvfe6YeWVFTejCzS" name="Nvidia" alt="Nvidia" src="https://cdn.mos.cms.futurecdn.net/RV4PBZWvfe6YeWVFTejCzS-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>What seems like an outrageous claim stems from Nvidia’s push into what it calls “personal AI supercomputers,” compact but extremely powerful AI machines designed to run advanced models locally instead of relying entirely on the cloud.</p><p>One example is <a href="https://marketplace.nvidia.com/en-us/enterprise/personal-ai-supercomputers/dgx-spark" target="_blank">Nvidia's DGX Spark</a>, a desktop-sized AI system the company literally describes as an “AI supercomputer on your desk.” It’s capable of running large AI models locally and is aimed at developers, researchers and high-end AI workflows.</p><p>According to Nvidia, these systems are powerful enough that they are designed for local AI inference, robotics, edge AI applications, autonomous agents, computer vision and smart systems. Essentially, AI that runs closer to you instead of inside distant cloud infrastructure.</p><h2 id="why-the-industry-could-be-moving-in-this-direction">Why the industry could be moving in this direction</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="4J32tvQmakFnXcY4UCv3Hj" name="data center.shutterstock_2704406619" alt="data center cooling" src="https://cdn.mos.cms.futurecdn.net/4J32tvQmakFnXcY4UCv3Hj-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>Right now, most AI tools depend heavily on giant cloud providers. That works — but it also creates some major problems such as: </p><ul><li><strong>Expensive AI. </strong>Running large AI models costs<a href="https://www.tomsguide.com/ai/the-ai-boom-is-driving-up-electricity-bills-heres-what-you-need-to-know"> enormous amounts of money </a>and energy. Data centers are expanding at a staggering pace and putting pressure on electrical grids worldwide. Distributing some of that processing onto local devices could reduce cloud costs and ease infrastructure strain.</li><li><strong>Privacy is a major concern. </strong>Local AI means fewer conversations sent to remote servers, better privacy and ultimately better control over your data. This is a huge selling point as people grow more cautious about how AI companies use personal information.</li><li><strong>AI feels faster when it runs locally. </strong>Cloud AI always introduces some delay, but local AI can power instant voice assistants, smart glasses, home robots, security systems and offline AI tools with much lower latency.</li></ul><h2 id="your-future-home-might-quietly-become-an-ai-hub">Your future home might quietly become an AI hub</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="E8koTdEsZT2baaFpVwHhS5" name="G7L4jMsppu7xxqJdzUTw5i.jpg" alt="Man Working from Home" src="https://cdn.mos.cms.futurecdn.net/E8koTdEsZT2baaFpVwHhS5-1920-80.jpg" mos="" align="middle" fullscreen="" width="1200" height="675" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Jelena Zelen/Shutterstock)</span></figcaption></figure><p>That idea may sound far-fetched, but it’s actually closer to reality than most people realize. A recent report from <a href="https://www.inc.com/moses-jeanfrancois/nvidia-mini-ai-data-center-house/91340588?" target="_blank">Inc.</a> says NVIDIA is partnering with startup <a href="https://www.span.io/" target="_blank">Span</a> to test “mini” AI data center units attached to homes and small businesses. The goal is to tap into unused residential electrical capacity to help power AI workloads. </p><p>The units, called XFRA nodes, are reportedly designed to sit alongside existing home infrastructure like HVAC systems and electrical panels. Instead of relying entirely on giant centralized facilities, the idea is to distribute computing power across thousands of smaller locations. <br><br>The real reason Nvidia is pushing the DGX Spark and the RTX 50-series isn’t just for faster chatbots. It’s for Autonomous AI Agents. In 2026, we are moving away from simple assistants and toward <a href="https://www.tomsguide.com/ai/i-reclaimed-15-hours-this-week-with-ai-agents-here-is-the-exact-setup-i-used-to-automate-my-workflow">"Agents" </a>that can manage your calendar, handle your finances and even interact with your smart home autonomously. </p><p>To do this safely, the industry is pivoting toward Local Inference for three critical reasons:</p><ul><li><strong>24/7 autonomy:</strong> For an AI agent to monitor your home security or manage your energy grid usage, it needs to stay "awake" even if your internet goes down. Local hardware like the <a href="https://lambda.ai/superclusters" target="_blank">Grace Blackwell superchip</a> allows these systems to run 24/7 without a constant cloud uplink.</li><li><strong>Zero-trace privacy:</strong> Sending your bank statements, private emails and home camera feeds to the cloud for an AI to "analyze" is a massive security risk. By using tools like <a href="https://www.nvidia.com/en-us/ai/nemoclaw/" target="_blank">Nvidia OpenShell</a>, these agents can operate within a "privacy sandbox" inside your own four walls. Your data never leaves your house.</li><li><strong>The 'Digital Twin' hub:</strong> High-end systems like the DGX Spark allow you to run a "Digital Twin" of your entire digital life. This hub acts as a local brain for all your smaller devices like your phone, your smart glasses and your appliances, processing their data in one secure, high-speed location.</li></ul><h2 id="the-takeaway-2">The takeaway</h2><p>Nvidia probably doesn’t expect people to install rows of GPU racks in their basement. But your home could gradually fill with AI-powered systems that process data locally and that's a major shift from the current cloud-first AI model.</p><p>And, Nvidia isn’t alone here. Apple, Microsoft, Google and others are all aggressively pushing “on-device AI” and “edge AI” strategies.</p><p>Apple Intelligence, for example, emphasizes private on-device processing whenever possible. Microsoft is building AI directly into Windows PCs. Qualcomm is racing to create AI-ready chips for laptops and phones. </p><p>Just like gaming PCs slowly evolved from niche enthusiast machines into mainstream household tech, AI hardware may follow a similar path over the next decade. It will be interesting to watch the future of AI move from some distant server farm, to living quietly inside our living rooms instead.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom’s Guide</span></h3><ul><li><a href="https://www.tomsguide.com/ai/i-ditched-cloud-ai-for-a-week-i-had-no-idea-gmail-knew-so-much-about-me">I kept my Gmail address but ditched cloud AI — local AI made me feel far more secure</a></li><li><a href="https://www.tomsguide.com/ai/i-stopped-wasting-ai-prompts-this-simple-high-roi-system-changed-how-i-use-chatgpt">I realized I was wasting money every time I used ChatGPT — this simple system fixed it</a></li><li><a href="https://www.tomsguide.com/ai/i-used-google-notebooklm-to-reduce-my-mental-load-for-a-week-heres-what-i-stopped-stressing-about">I used NotebookLM to offload my mental clutter for a week — here’s what I stopped stressing about</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Nvidia RTX 5070 laptop GPU gets 12GB VRAM — here’s why it's a game-changer ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Nvidia has officially announced the <a href="https://www.tomsguide.com/computing/gaming-laptops/i-tried-the-asus-tug-gaming-a18-with-an-rtx-5070-and-it-changed-my-mind-about-18-inch-gaming-laptops">GeForce RTX 5070</a> laptop GPU with 12GB of GDDR7 memory. We’ve heard rumors about this GPU for a while, but now it’s the real deal.</p><p>While the company isn’t discontinuing the 8GB model, this spruced-up 12GB variant should give vendors and customers more options. This is especially important as we’re still in the middle of <a href="https://www.tomsguide.com/computing/ram-price-crisis-2026-everything-you-need-to-know">RAMageddon</a>.</p><p>Here’s what we know about the 12GB Nvidia RTX 5070 laptop GPU and why it could potentially be the most important “mid-range” laptop GPU out there.</p><h2 id="from-8gb-to-12gb-of-ram">From 8GB to 12GB of RAM</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1070px;"><p class="vanilla-image-block" style="padding-top:56.17%;"><img id="i9sUKfJUZH6Y2SqsM3uJHF" name="geforce-50-series-laptop-max-q-1920x1080" alt="Nvidia RTX 50 series" src="https://cdn.mos.cms.futurecdn.net/i9sUKfJUZH6Y2SqsM3uJHF-1920-80.jpg" mos="" align="middle" fullscreen="" width="1070" height="601" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>As <a href="https://videocardz.com/newz/nvidia-officially-launches-geforce-rtx-5070-laptop-gpu-with-12gb-gddr7-memory" target="_blank">VideoCardz</a> and <a href="https://wccftech.com/nvidia-bumps-rtx-5070-laptop-gpu-to-12gb-gddr7-memory/" target="_blank">Wccftech</a> report, Nvidia originally planned to stick with 8GB of VRAM for the 5070. Thankfully, the company reconsidered. By moving to a 192-bit memory bus and providing 12GB of VRAM, Nvidia is giving laptops with this GPU more breathing room to better run games at 1440p with high-res textures and ray tracing.</p><p>Moving from 8GB to 12GB is a wise move, since 8GB can impose serious constraints. Now, laptop manufacturers won’t be as restricted.</p><h2 id="gddr7">GDDR7</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="DucJVEzwF4KJNbcg2WW9PJ" name="RAM" alt="RAM" src="https://cdn.mos.cms.futurecdn.net/DucJVEzwF4KJNbcg2WW9PJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: fabrikasimf / Freepik)</span></figcaption></figure><p>More memory is nice, but it’s the fact that we have <em>faster</em> memory that’s really noteworthy. GDDR7 offers higher bandwidth, which means the GPU can swap data in and out of that 12GB buffer much faster than before.</p><p>For the average gamer, this means smoother frame rates in demanding titles and a better experience with AI-driven features like <a href="https://www.tomsguide.com/computing/gpus/i-stress-tested-pragmatas-path-tracing-it-looks-like-a-dream-and-nvidias-dlss-4-makes-it-play-like-one-provided-you-use-it-right">DLSS 4.5</a>. With AI now seeping into everything, that 12GB of GDDR7 should be useful for anyone seeking to run local LLMs on a laptop.</p><h2 id="nvidia-is-listening">Nvidia is listening</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6000px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="kcCDvonZ8kA5DuXZ2EXACU" name="DSC01923.JPG" alt="Nvidia's Jensen Huang on stage at CES 2026" src="https://cdn.mos.cms.futurecdn.net/kcCDvonZ8kA5DuXZ2EXACU-1920-80.jpg" mos="" align="middle" fullscreen="" width="6000" height="3376" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>It’s easy to be cynical about Nvidia, especially after Jensen Huang’s comment about how <a href="https://www.tomshardware.com/tech-industry/artificial-intelligence/nvidia-ceo-huang-declares-i-love-constraints-amid-ongoing-component-shortage-claims-lack-of-options-forces-ai-clients-to-only-choose-the-very-best" target="_blank">RAM scarcity is “fantastic” for the company</a>. However, the RTX 5070 spec sheet suggests that the company realizes it can’t push premium prices on what are otherwise budget laptops.</p><p>By giving the 5070 12GB of VRAM, Nvidia is creating a better value for laptops in the $1,200 to $1,500 range. Hopefully, notebooks with this GPU will remain in that price range and not go up much higher.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OozbzW"></div>                            </div>                            <script src="https://kwizly.com/embed/OozbzW.js" async></script><h2 id="outlook-2">Outlook</h2><p>The GeForce RTX 5070 with 12GB of RAM should be available to manufacturers this year, so expect a fresh batch of laptops packing this mobile GPU. If they can remain relatively affordable, this could offer some welcome relief from all the price hikes we’ve had to suffer since late last year. Stay tuned for more!</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/gaming/i-played-saros-for-a-week-and-it-still-didnt-make-me-a-roguelike-convert">I played Saros for a week and it still didn’t make me a roguelike convert</a></li><li><a href="https://www.tomsguide.com/computing/monitors/at-this-level-those-numbers-arent-for-us-gamers-why-720hz-gaming-monitors-might-be-overkill">Why 720Hz gaming monitors might be overkill</a></li><li><a href="https://www.tomsguide.com/gaming/gaming-peripherals/im-a-lifelong-gamer-and-i-cant-wait-to-try-the-steam-controller-3-reasons-why">I'm a lifelong gamer, and I can't wait to try the Steam Controller — 3 reasons why</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/gaming-laptops/nvidia-rtx-5070-laptop-gpu-officially-has-12gb-of-vram-and-its-about-time</link>
                                                                            <description>
                            <![CDATA[ Nvidia has officially announced the RTX 5070 laptop GPU with 12GB of GDDR7 VRAM. This could be a huge win for mid-range gaming laptops. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">eg3aYmQeviTWdoyP9cPqjG</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/7tpGTH77eahQNYNsMpXkXV-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 28 Apr 2026 15:00:54 +0000</pubDate>                                                                                                                                <updated>Tue, 28 Apr 2026 15:15:46 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming Laptops]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Laptops]]></category>
                                                                                                <author><![CDATA[ tony.polanco@futurenet.com (Tony Polanco) ]]></author>                    <dc:creator><![CDATA[ Tony Polanco ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/atzRNqFt5wYgEUPBDahWsD-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/7tpGTH77eahQNYNsMpXkXV-1920-80.jpg">
                                                            <media:credit><![CDATA[Nvidia]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Nvidia RTX 50-series laptops]]></media:description>                                                            <media:text><![CDATA[Nvidia RTX 50-series laptops]]></media:text>
                                <media:title type="plain"><![CDATA[Nvidia RTX 50-series laptops]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/7tpGTH77eahQNYNsMpXkXV-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Nvidia has officially announced the <a href="https://www.tomsguide.com/computing/gaming-laptops/i-tried-the-asus-tug-gaming-a18-with-an-rtx-5070-and-it-changed-my-mind-about-18-inch-gaming-laptops">GeForce RTX 5070</a> laptop GPU with 12GB of GDDR7 memory. We’ve heard rumors about this GPU for a while, but now it’s the real deal.</p><p>While the company isn’t discontinuing the 8GB model, this spruced-up 12GB variant should give vendors and customers more options. This is especially important as we’re still in the middle of <a href="https://www.tomsguide.com/computing/ram-price-crisis-2026-everything-you-need-to-know">RAMageddon</a>.</p><p>Here’s what we know about the 12GB Nvidia RTX 5070 laptop GPU and why it could potentially be the most important “mid-range” laptop GPU out there.</p><h2 id="from-8gb-to-12gb-of-ram">From 8GB to 12GB of RAM</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1070px;"><p class="vanilla-image-block" style="padding-top:56.17%;"><img id="i9sUKfJUZH6Y2SqsM3uJHF" name="geforce-50-series-laptop-max-q-1920x1080" alt="Nvidia RTX 50 series" src="https://cdn.mos.cms.futurecdn.net/i9sUKfJUZH6Y2SqsM3uJHF-1920-80.jpg" mos="" align="middle" fullscreen="" width="1070" height="601" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>As <a href="https://videocardz.com/newz/nvidia-officially-launches-geforce-rtx-5070-laptop-gpu-with-12gb-gddr7-memory" target="_blank">VideoCardz</a> and <a href="https://wccftech.com/nvidia-bumps-rtx-5070-laptop-gpu-to-12gb-gddr7-memory/" target="_blank">Wccftech</a> report, Nvidia originally planned to stick with 8GB of VRAM for the 5070. Thankfully, the company reconsidered. By moving to a 192-bit memory bus and providing 12GB of VRAM, Nvidia is giving laptops with this GPU more breathing room to better run games at 1440p with high-res textures and ray tracing.</p><p>Moving from 8GB to 12GB is a wise move, since 8GB can impose serious constraints. Now, laptop manufacturers won’t be as restricted.</p><h2 id="gddr7">GDDR7</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="DucJVEzwF4KJNbcg2WW9PJ" name="RAM" alt="RAM" src="https://cdn.mos.cms.futurecdn.net/DucJVEzwF4KJNbcg2WW9PJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: fabrikasimf / Freepik)</span></figcaption></figure><p>More memory is nice, but it’s the fact that we have <em>faster</em> memory that’s really noteworthy. GDDR7 offers higher bandwidth, which means the GPU can swap data in and out of that 12GB buffer much faster than before.</p><p>For the average gamer, this means smoother frame rates in demanding titles and a better experience with AI-driven features like <a href="https://www.tomsguide.com/computing/gpus/i-stress-tested-pragmatas-path-tracing-it-looks-like-a-dream-and-nvidias-dlss-4-makes-it-play-like-one-provided-you-use-it-right">DLSS 4.5</a>. With AI now seeping into everything, that 12GB of GDDR7 should be useful for anyone seeking to run local LLMs on a laptop.</p><h2 id="nvidia-is-listening">Nvidia is listening</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6000px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="kcCDvonZ8kA5DuXZ2EXACU" name="DSC01923.JPG" alt="Nvidia's Jensen Huang on stage at CES 2026" src="https://cdn.mos.cms.futurecdn.net/kcCDvonZ8kA5DuXZ2EXACU-1920-80.jpg" mos="" align="middle" fullscreen="" width="6000" height="3376" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>It’s easy to be cynical about Nvidia, especially after Jensen Huang’s comment about how <a href="https://www.tomshardware.com/tech-industry/artificial-intelligence/nvidia-ceo-huang-declares-i-love-constraints-amid-ongoing-component-shortage-claims-lack-of-options-forces-ai-clients-to-only-choose-the-very-best" target="_blank">RAM scarcity is “fantastic” for the company</a>. However, the RTX 5070 spec sheet suggests that the company realizes it can’t push premium prices on what are otherwise budget laptops.</p><p>By giving the 5070 12GB of VRAM, Nvidia is creating a better value for laptops in the $1,200 to $1,500 range. Hopefully, notebooks with this GPU will remain in that price range and not go up much higher.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OozbzW"></div>                            </div>                            <script src="https://kwizly.com/embed/OozbzW.js" async></script><h2 id="outlook-2">Outlook</h2><p>The GeForce RTX 5070 with 12GB of RAM should be available to manufacturers this year, so expect a fresh batch of laptops packing this mobile GPU. If they can remain relatively affordable, this could offer some welcome relief from all the price hikes we’ve had to suffer since late last year. Stay tuned for more!</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/gaming/i-played-saros-for-a-week-and-it-still-didnt-make-me-a-roguelike-convert">I played Saros for a week and it still didn’t make me a roguelike convert</a></li><li><a href="https://www.tomsguide.com/computing/monitors/at-this-level-those-numbers-arent-for-us-gamers-why-720hz-gaming-monitors-might-be-overkill">Why 720Hz gaming monitors might be overkill</a></li><li><a href="https://www.tomsguide.com/gaming/gaming-peripherals/im-a-lifelong-gamer-and-i-cant-wait-to-try-the-steam-controller-3-reasons-why">I'm a lifelong gamer, and I can't wait to try the Steam Controller — 3 reasons why</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I stress-tested Pragmata’s path tracing — it looks like a dream and Nvidia’s DLSS 4 makes it play like one (provided you use it right) ]]></title>
                                                                                                <dc:content><![CDATA[ <p>As you may have seen, we rather love <a href="https://www.tomsguide.com/gaming/pragmata-review">Pragmata </a>right now, and I can give all you PC gamers out there the lowdown on how well it’ll run on your rigs. Spoiler alert: just like <a href="https://www.tomsguide.com/gaming/pc-gaming/resident-evil-requiem-with-path-tracing-is-horrifying-and-i-mean-that-as-a-compliment-to-nvidia-and-dlss-4">Resident Evil Requiem</a>, path tracing adds a night and day difference.</p><p>So I threw it at my pricey RTX 5080 and mid-range <a href="https://www.tomsguide.com/computing/gpus/nvidia-geforce-rtx-5060-ti-review">RTX 5060 Ti </a>rigs to see how far I can stretch those fidelity settings with DLSS 4, and how well it performs with this incredibly demanding graphical tech running.</p><h2 id="what-settings-should-you-use">What settings should you use?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="cAd2NbVJsFsDYTeHHftGUe" name="PRAGMATA_SS_10" alt="Pragmata" src="https://cdn.mos.cms.futurecdn.net/cAd2NbVJsFsDYTeHHftGUe-1920-80.png" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Capcom)</span></figcaption></figure><p>As I always say, Nvidia’s DLSS is a helluva tool for extracting more gameplay value out of your GPU — provided you use it the right way. Because sure, a game can <em>look </em>smooth, but if you’re adding all the AI trickery on top of a game that is running at 20 FPS, it will not <em>feel </em>smooth to play.</p><p>That’s why you’ll need to go into the settings to tinker the base rate a little before overlaying DLSS features. Just as a general reminder:</p><ul><li>If your game is a slower-paced single-player title, aim for 40 FPS</li><li>Need quick reflexes? Aim for 60 FPS</li><li>For competitive multiplayer, either don’t use it or aim for 120 FPS</li></ul><p>From mine and Tony’s time playing Pragmata, you can safely put it in that <strong>40 FPS target</strong> category. There is combat that requires you to dodge attacks and shoot, but with plenty of time to telegraph enemy moves, the really fun puzzle elements and button-based quick-time events, you’ll still get a game that feels good to play at this level.</p><h2 id="by-the-numbers-2">By the numbers</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="FWossYL79mdN98DFinTXZ7" name="PRAGMATA_SS_Gamescom_05" alt="Pragmata screenshot" src="https://cdn.mos.cms.futurecdn.net/FWossYL79mdN98DFinTXZ7-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Capcom)</span></figcaption></figure><p>So allow me to introduce you to the machines that will be taking this on (quite proud of my rebuilds):</p><ul><li>Remember that PC I built for myself at <a href="scan.co.uk" target="_blank" rel="nofollow">Scan computers</a>? I’ve done a transplant into the gorgeous Micro ATX case you see in the top image — doing some space saving while preserving power. It packs an AMD Ryzen 7 9800X3D, RTX 5080 and 32GB of DDR5 RAM. <a href="https://youtu.be/uZRH_P_qs_I" target="_blank">You can watch the whole big build here</a>.</li><li>The second is a modified <a href="https://www.tomsguide.com/computing/gaming-desktops/ibuypower-rdy-element-9-pro-r07-review">RDY Element 9 Pro R07</a> — sporting an <a href="https://www.tomsguide.com/computing/cpus/intel-core-ultra-7-270k-plus-5-250k-plus-review">Intel Core Ultra 7 270K Plus</a>, RTX 5060 Ti (16GB) and 32GB of DDR5 RAM.</li></ul><p>Same rules apply as my Requiem testing, so I’m stress testing at resolutions fair to each card (4K for the 5080 and 1440p for the 5060 Ti) at maxed out path tracing settings. Of course, as I said above, you can tweak some graphical settings to squeeze even more frames out of the base rate.</p><iframe allow="" height="600px" width="100%" id="" style="width:100%;height:600px;" class="position-center" data-lazy-priority="low" data-lazy-src="https://flo.uri.sh/story/3649145/embed"></iframe><p>And as you can see, the multipliers really start to pile on the additional frames nicely here — making the game look silky smooth. </p><h2 id="latency-checker">Latency checker</h2><iframe allow="" height="600px" width="100%" id="" style="width:100%;height:600px;" class="position-center" data-lazy-priority="low" data-lazy-src="https://flo.uri.sh/visualisation/28554338/embed"></iframe><p>So there’s big frame rates happening up above, but that’s half the story. As I said up above, the game’s got to feel smooth too, and in this stress test (just like what happened with Requiem), this is where it becomes clear that DLSS 4.5 performance is your go-to option if you wanna go all-out in the settings.</p><p>DLSS always comes with a small penalty to that base frame rate, as the GPU’s attention is turned to the AI background work. And while these are mostly playable, Quality or Balanced upscaling does lead to some noticeable latency. <strong>Performance is your sweet spot.</strong></p><h2 id="path-traced-sci-fi-fun">Path traced sci-fi fun</h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/GoqZb8GxwEbnWpufX5zqg8-1920-80.png" alt="Pragmata" /><figcaption>Path tracing<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/iYqZMYdgtFPoGiNjwhgMn8-1920-80.png" alt="Pragmata" /><figcaption>No path tracing<small role="credit">Future</small></figcaption></figure></figure><p>If you follow my advice from up above, you’ll have a great experience with what has become one of my personal surprise favorite games of 2026. Path tracing really does make a material difference to the visual fidelity here and draws you into the immersion of this fascinating sci-fi world.</p><p>I demoed this game a few months ago and immediately fell in love with the hybrid shooter/puzzler gameplay, but I did feel a little nervous about how far this could go before it becomes tiresome. Turns out the answer is it never gets old! New layers of complication are added over time and discoverable elements keep things fresh. Oh, and the boss battles are epic.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/pc-sales-are-up-but-dont-be-fooled-idc-report-warns-ramageddon-is-just-getting-started">PC sales are up, but don’t be fooled — IDC report warns RAMageddon is just getting started</a></li><li><a href="https://www.tomsguide.com/computing/gpus/i-tested-dlss-4-5-dynamic-multi-frame-generation-its-not-just-ai-trickery-its-nvidias-cheat-code-for-4k-240hz-and-a-true-console-killer">I tested DLSS 4.5 Dynamic Multi Frame Generation: It’s not just AI trickery, it’s Nvidia’s cheat code for 4K 240Hz and a true console killer</a></li><li><a href="https://www.tomsguide.com/computing/gaming-laptops/asus-tuf-gaming-a14-2026-review">I really wanted to love the Asus TUF Gaming A14 (2026), but it’s an expensive heartbreaker</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/gpus/i-stress-tested-pragmatas-path-tracing-it-looks-like-a-dream-and-nvidias-dlss-4-makes-it-play-like-one-provided-you-use-it-right</link>
                                                                            <description>
                            <![CDATA[ Can the RTX 5080 and 5060 Ti handle Pragmata at 4K with Path Tracing? See the real-world FPS and latency benchmarks to find your DLSS sweet spot. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">qJrXFqfEsTfDMcJSGjTYAZ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/tYYWxutnbryVKW3kUM72iR-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 16 Apr 2026 12:05:43 +0000</pubDate>                                                                                                                                <updated>Thu, 16 Apr 2026 12:08:23 +0000</updated>
                                                                                                                                            <category><![CDATA[GPUs]]></category>
                                                    <category><![CDATA[PC Gaming]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Computing Hardware]]></category>
                                                    <category><![CDATA[Gaming]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jason England ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/v4fSq5U4uZUEtGY2BwNuJ6-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jason brings a decade of tech and gaming journalism experience to his role as a Managing Editor of Computing at Tom&#039;s Guide. He has previously written for Laptop Mag, Tom&#039;s Hardware, Kotaku, Stuff and BBC Science Focus. In his spare time, you&#039;ll find Jason looking for good dogs to pet or thinking about eating pizza if he isn&#039;t already.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/tYYWxutnbryVKW3kUM72iR-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Pragmata]]></media:description>                                                            <media:text><![CDATA[Pragmata]]></media:text>
                                <media:title type="plain"><![CDATA[Pragmata]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/tYYWxutnbryVKW3kUM72iR-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>As you may have seen, we rather love <a href="https://www.tomsguide.com/gaming/pragmata-review">Pragmata </a>right now, and I can give all you PC gamers out there the lowdown on how well it’ll run on your rigs. Spoiler alert: just like <a href="https://www.tomsguide.com/gaming/pc-gaming/resident-evil-requiem-with-path-tracing-is-horrifying-and-i-mean-that-as-a-compliment-to-nvidia-and-dlss-4">Resident Evil Requiem</a>, path tracing adds a night and day difference.</p><p>So I threw it at my pricey RTX 5080 and mid-range <a href="https://www.tomsguide.com/computing/gpus/nvidia-geforce-rtx-5060-ti-review">RTX 5060 Ti </a>rigs to see how far I can stretch those fidelity settings with DLSS 4, and how well it performs with this incredibly demanding graphical tech running.</p><h2 id="what-settings-should-you-use">What settings should you use?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="cAd2NbVJsFsDYTeHHftGUe" name="PRAGMATA_SS_10" alt="Pragmata" src="https://cdn.mos.cms.futurecdn.net/cAd2NbVJsFsDYTeHHftGUe-1920-80.png" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Capcom)</span></figcaption></figure><p>As I always say, Nvidia’s DLSS is a helluva tool for extracting more gameplay value out of your GPU — provided you use it the right way. Because sure, a game can <em>look </em>smooth, but if you’re adding all the AI trickery on top of a game that is running at 20 FPS, it will not <em>feel </em>smooth to play.</p><p>That’s why you’ll need to go into the settings to tinker the base rate a little before overlaying DLSS features. Just as a general reminder:</p><ul><li>If your game is a slower-paced single-player title, aim for 40 FPS</li><li>Need quick reflexes? Aim for 60 FPS</li><li>For competitive multiplayer, either don’t use it or aim for 120 FPS</li></ul><p>From mine and Tony’s time playing Pragmata, you can safely put it in that <strong>40 FPS target</strong> category. There is combat that requires you to dodge attacks and shoot, but with plenty of time to telegraph enemy moves, the really fun puzzle elements and button-based quick-time events, you’ll still get a game that feels good to play at this level.</p><h2 id="by-the-numbers-2">By the numbers</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="FWossYL79mdN98DFinTXZ7" name="PRAGMATA_SS_Gamescom_05" alt="Pragmata screenshot" src="https://cdn.mos.cms.futurecdn.net/FWossYL79mdN98DFinTXZ7-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Capcom)</span></figcaption></figure><p>So allow me to introduce you to the machines that will be taking this on (quite proud of my rebuilds):</p><ul><li>Remember that PC I built for myself at <a href="scan.co.uk" target="_blank" rel="nofollow">Scan computers</a>? I’ve done a transplant into the gorgeous Micro ATX case you see in the top image — doing some space saving while preserving power. It packs an AMD Ryzen 7 9800X3D, RTX 5080 and 32GB of DDR5 RAM. <a href="https://youtu.be/uZRH_P_qs_I" target="_blank">You can watch the whole big build here</a>.</li><li>The second is a modified <a href="https://www.tomsguide.com/computing/gaming-desktops/ibuypower-rdy-element-9-pro-r07-review">RDY Element 9 Pro R07</a> — sporting an <a href="https://www.tomsguide.com/computing/cpus/intel-core-ultra-7-270k-plus-5-250k-plus-review">Intel Core Ultra 7 270K Plus</a>, RTX 5060 Ti (16GB) and 32GB of DDR5 RAM.</li></ul><p>Same rules apply as my Requiem testing, so I’m stress testing at resolutions fair to each card (4K for the 5080 and 1440p for the 5060 Ti) at maxed out path tracing settings. Of course, as I said above, you can tweak some graphical settings to squeeze even more frames out of the base rate.</p><iframe allow="" height="600px" width="100%" id="" style="width:100%;height:600px;" class="position-center" data-lazy-priority="low" data-lazy-src="https://flo.uri.sh/story/3649145/embed"></iframe><p>And as you can see, the multipliers really start to pile on the additional frames nicely here — making the game look silky smooth. </p><h2 id="latency-checker">Latency checker</h2><iframe allow="" height="600px" width="100%" id="" style="width:100%;height:600px;" class="position-center" data-lazy-priority="low" data-lazy-src="https://flo.uri.sh/visualisation/28554338/embed"></iframe><p>So there’s big frame rates happening up above, but that’s half the story. As I said up above, the game’s got to feel smooth too, and in this stress test (just like what happened with Requiem), this is where it becomes clear that DLSS 4.5 performance is your go-to option if you wanna go all-out in the settings.</p><p>DLSS always comes with a small penalty to that base frame rate, as the GPU’s attention is turned to the AI background work. And while these are mostly playable, Quality or Balanced upscaling does lead to some noticeable latency. <strong>Performance is your sweet spot.</strong></p><h2 id="path-traced-sci-fi-fun">Path traced sci-fi fun</h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/GoqZb8GxwEbnWpufX5zqg8-1920-80.png" alt="Pragmata" /><figcaption>Path tracing<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/iYqZMYdgtFPoGiNjwhgMn8-1920-80.png" alt="Pragmata" /><figcaption>No path tracing<small role="credit">Future</small></figcaption></figure></figure><p>If you follow my advice from up above, you’ll have a great experience with what has become one of my personal surprise favorite games of 2026. Path tracing really does make a material difference to the visual fidelity here and draws you into the immersion of this fascinating sci-fi world.</p><p>I demoed this game a few months ago and immediately fell in love with the hybrid shooter/puzzler gameplay, but I did feel a little nervous about how far this could go before it becomes tiresome. Turns out the answer is it never gets old! New layers of complication are added over time and discoverable elements keep things fresh. Oh, and the boss battles are epic.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/pc-sales-are-up-but-dont-be-fooled-idc-report-warns-ramageddon-is-just-getting-started">PC sales are up, but don’t be fooled — IDC report warns RAMageddon is just getting started</a></li><li><a href="https://www.tomsguide.com/computing/gpus/i-tested-dlss-4-5-dynamic-multi-frame-generation-its-not-just-ai-trickery-its-nvidias-cheat-code-for-4k-240hz-and-a-true-console-killer">I tested DLSS 4.5 Dynamic Multi Frame Generation: It’s not just AI trickery, it’s Nvidia’s cheat code for 4K 240Hz and a true console killer</a></li><li><a href="https://www.tomsguide.com/computing/gaming-laptops/asus-tuf-gaming-a14-2026-review">I really wanted to love the Asus TUF Gaming A14 (2026), but it’s an expensive heartbreaker</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Exclusive: Viture Co-founders are planning ‘invisible’ AI glasses to rival Meta ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The war for your face is heating up. Meta and Snap are betting big on cameras and bulky frames, but Viture is preparing to take a very different path. As the No. 1 ranked company in XR glasses shipments in the U.S., the company is taking its talents to a whole new category — laying a path to merge the worlds of AR and AI glasses in the future.</p><p>In an exclusive interview with Tom’s Guide, Viture’s CMO and co-founder Emily Wang revealed that the company is officially stepping into the "connected lifestyle" category — named <a href="https://www.vonder.ai/" target="_blank">Vonder</a>, and set to launch in Q4 of this year. </p><p>But unlike the <a href="https://www.tomsguide.com/computing/smart-glasses/ray-ban-meta-gen-2-review">Ray-Ban Meta glasses</a>, VITURE is prioritizing two things the current market lacks: <strong>true fashion and absolute privacy.</strong></p><h2 id="viture-s-taking-on-ray-ban-meta-with-something-vonderful">Viture’s taking on Ray-Ban Meta with something Vonderful</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="SWJxfEBbze6wfYQP9EukZQ" name="vonder" alt="vonder" src="https://cdn.mos.cms.futurecdn.net/SWJxfEBbze6wfYQP9EukZQ-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: vonder)</span></figcaption></figure><p>This is the biggest takeaway from my conversation with Viture, so let’s start here. We all know that the future of smart glasses is going to be when AR and AI collides (more on that later in our chat), so it pays to be developing on both sides of this specs chasm now.</p><div><blockquote><p>“We believe smart glasses should feel invisible, not intrusive, and that technology should disappear into a timeless design, not the other way around."</p><p>Emily Wang, Viture</p></blockquote></div><p>I brought up this gap in Viture’s lineup — the daily carry AI wearable like the Ray-Ban Metas, and following a couple of potential leaks and the company’s Series B funding announcement mentioning a “new category of connected lifestyle technology,” I asked whether Viture had plans to fill it?</p><p>Well, I had asked the right question, because Emily had an ever increasing smile on her face. “I think you’re picking up on exactly what we’ve been hinting at,” Wang commented. “With all the display technology, software and AI integration we’ve built over the years, we’re in a unique position to bring that philosophy to a new category — where the glasses are not only smart and capable, but something you’re genuinely proud to wear.”</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6000px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="DpZN8ACQXzqocVbw7apt5U" name="DSC00074.JPG" alt="Ray-Ban Meta Smart Glasses" src="https://cdn.mos.cms.futurecdn.net/DpZN8ACQXzqocVbw7apt5U-1920-80.jpg" mos="" align="middle" fullscreen="" width="6000" height="3376" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>So to have Viture enter the AI glasses space with Vonder is incredibly exciting. With this category ever-expanding, I asked what were the key pain points they see in the industry today that the company plans to tackle. </p><p>“The most obvious one is privacy — current AI glasses have cameras pointing at the world, and people around you know it,” Wang responded. “We believe smart glasses should feel invisible, not intrusive, and that technology should disappear into a timeless design, not the other way around."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="rrGA55fwhtnUk7dadFeJY6" name="Vonder" alt="Vonder" src="https://cdn.mos.cms.futurecdn.net/rrGA55fwhtnUk7dadFeJY6-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Vonder)</span></figcaption></figure><p>And this conversation went exactly in the direction I was hoping for. In all the smart glasses I’ve tested, it always feels like there’s an awkward battle between tech and fashion. For something so present on your face, making them look good almost has to come first followed by the tech.</p><p>“There’s a deeper issue we’ve cared about since day one at Viture: the tension between technology and fashion,” Wang continued. “With AI glasses, you have the freedom to make them as fashionable and personal as you want. That’s a huge unlock because at the end of the day, glasses live on your face — if people don’t want to wear them, none of the technology matters.”</p><h2 id="the-beast-is-almost-ready-for-primetime">The Beast is (almost) ready for primetime</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="x7CgNLDRpbWhuxmkhTdbEG" name="Viture Beast" alt="Viture Beast" src="https://cdn.mos.cms.futurecdn.net/x7CgNLDRpbWhuxmkhTdbEG-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Moving to the here and now, you may know that I’ve been testing the Viture Beast for a while now, but also <a href="https://www.tomsguide.com/computing/smart-glasses/ive-been-testing-the-viture-beast-ar-glasses-for-weeks-heres-why-i-cant-review-them-yet#viafoura-comments">elected to not review them</a>. Simply put, the hardware was sound, but all the features were not present. </p><p>However, as you may have seen on <a href="https://www.reddit.com/r/VITURE/" target="_blank">Viture’s subreddit</a>, it’s a very different story now — several rapidfire updates have brought them to the level where I will be reviewing them <em>very </em>soon. The only feature that’s left is a 1200p picture, which the company confirms will be released “this month.”</p><p>“Our philosophy has always been to build hardware that’s future-ready, delivering a polished experience than rush it,” Wang explained. “The recent firmware updates for image stability, color tuning and 3DoF tracking have been a huge leap forward in the everyday experience.”</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="c2CDXizHwx3YwTTRvmX6EG" name="Viture Beast" alt="Viture Beast" src="https://cdn.mos.cms.futurecdn.net/c2CDXizHwx3YwTTRvmX6EG-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>And I have to say I agree. It’s a night-and-day difference in the experience using these glasses now compared to the drifting images I saw back in January. Viture’s bought my AWE awards winners back to the primetime, and they’re lining up for a big launch.</p><p>“On April 27, the Beast will be fully available on Best Buy, Amazon and our own website simultaneously,” Wang confirmed. “Stay tuned, because what you’ll see is a mature, refined version of the beast, and for the first time, everyone will be able to easily grab what we believe is the best on the market.”</p><p>Those words — “mature” and “refined” — are signaling that the early-adopter era for these XR glasses is over, and the confidence to put them into Best Buy is a positive sign (one that I can vouch for after testing them the past few weeks).</p><h2 id="the-gaming-monitor-killer">The gaming monitor killer</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="hjvdsJuJFBiZ3NFGXWqF99" name="Asus ROG Xreal R1 AR Glasses" alt="Asus ROG Xreal R1 AR Glasses" src="https://cdn.mos.cms.futurecdn.net/hjvdsJuJFBiZ3NFGXWqF99-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>As someone with one eye on the future, I wanted to see where this vision for the Beast goes. This turned my attention to the <a href="https://www.tomsguide.com/computing/smart-glasses/asus-rog-xreal-r1-ar-glasses-hands-on-review">Asus ROG Xreal R1 glasses</a> I tried back at CES 2026: seemingly a prototype (unless they do become a reality — I only say that because the companies have gone real quiet about them ever since January), which brought a 240Hz refresh rate to take on the gaming monitor.</p><p>And then I thought about Viture’s partnership with Nvidia, which is in the AI space at the moment (more on that in a minute), but gearing up with the gaming side of Team Green to provide the kind of glasses that could replace a bulky gaming screen would be hype.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="6xeh3QQaue5wJ4rWuy4dMG" name="Viture Beast" alt="Viture Beast" src="https://cdn.mos.cms.futurecdn.net/6xeh3QQaue5wJ4rWuy4dMG-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>“We believe AR glasses can and should be a viable gaming monitor alternative — high refresh rate, immersive and private,” Wang elaborated. “It’s definitely a space we’re exploring, and I think you’ll see some exciting developments from us on this front.”</p><p>But, this is the part where the company dropped an incredibly intriguing nugget — saying that “the Beast’s display engine was designed with headroom for exactly this kind of use case.” No, that doesn’t mean you’ll see 240Hz in these current gen Beast specs, but it shows a mighty promising future for these glasses if you’re a PC gamer.</p><h2 id="the-future-of-seeing">The future of ‘seeing’</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2177px;"><p class="vanilla-image-block" style="padding-top:61.28%;"><img id="HQdHs5AZAs4enM7nRKCbEa" name="Viture Nvidia XR AI" alt="Viture Nvidia XR AI" src="https://cdn.mos.cms.futurecdn.net/HQdHs5AZAs4enM7nRKCbEa-1920-80.png" mos="" align="middle" fullscreen="" width="2177" height="1334" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: <a href="https://www.viture.com/blog/proudly-collaborating-with-nvidia-and-stanford-pioneering-the-future-of-xr-ai-in-healthcare" target="_blank">Viture</a>)</span></figcaption></figure><p>So for context, <a href="https://www.viture.com/blog/proudly-collaborating-with-nvidia-and-stanford-pioneering-the-future-of-xr-ai-in-healthcare" target="_blank">Viture teamed up with Nvidia and Stanford medicine</a> for a “truly meaningful” partnership — bringing XR together with AI in healthcare to streamline lab workflows, make it agentic and provide hands-free data.</p><p>“As Professor Cong (of Stanford University School of Medicine) shared, years of research work can be compressed into months, and millions of dollars in costs can be reduced to thousands,” Wang explained. </p><p>I asked further as to whether this is an agentic sign of the consumer direction for AI glasses. “The next evolution is exactly what you described: glasses that don’t just show you things, but understand what you’re seeing and act on it,” she responded. “The glasses become the interface layer between the user and an AI that’s always contextually aware.”</p><h2 id="where-this-all-goes-in-the-next-few-years">Where this all goes in the next few years</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="BQiZuqCr26xkccWHjJBHzn" name="Snapchat Spectacles" alt="Snapchat Spectacles" src="https://cdn.mos.cms.futurecdn.net/BQiZuqCr26xkccWHjJBHzn-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>So let’s go back to what I wrote about at the beginning: the merging of AR and AI glasses into one product. Tech like waveguide displays and the AI to make it possible are developing at a rapid rate where we could see this become a reality over the next few years (pending the compression of said tech into something fashionable).</p><p>In my mind, the first real test of whether they are ready for primetime will be <a href="https://www.tomsguide.com/computing/smart-glasses/exclusive-i-asked-snaps-hardware-chief-about-the-companys-next-gen-specs-heres-what-i-found-out">Snap Specs</a> — set to launch this year. Emily agrees, but acknowledges the challenges of jumping straight in.</p><p>“The convergence is inevitable, but I want to be thoughtful here — the path to that all-in-one form factor isn’t as straightforward as it might seem,” Wang continued, bringing up how Waveguide tech is advancing, but field of view, brightness and power demands are challenges. “What you see with products like Snap Specs is exciting, but they're still limited in display capability and daily wearability.”</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="hjTzmS2H5cp52aTPzEhnQk" name="Viture Luma Pro" alt="Viture Luma Pro" src="https://cdn.mos.cms.futurecdn.net/hjTzmS2H5cp52aTPzEhnQk-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>My take after seeing every company’s innovation at AWE last year is that this challenge won’t be solved by one mega product from one company, but rather lots of small ingredients from companies coming together into one eventual dominant pair of specs. And Emily is on the same track here.</p><p>“Our view is that this won't be a single leap — it will be a journey. And the companies that will lead aren't necessarily the ones who rush to cram everything into one device first,” Wang explained. She mentioned the real secret ingredient will be making “the right ecosystem, user base and software foundation” along the way. This means that when the optical tech is ready for the all-in-one form factor, Viture is “not starting from zero.”</p><p>“The biggest challenges between now and then? Optical efficiency in a lightweight frame, thermal management, battery life, and — coming back to what I said earlier — making sure the design is something people actually want to wear every day,” she continued. “Technology alone won't win. It has to be beautiful, it has to be comfortable, and it has to feel like you. That's the bar we're setting for ourselves.”</p><p>It’s going to be an interesting 2026 for smart glasses, as Viture makes its first big foray into AI glasses, and marks a path towards that final form every company’s been hunting for! And with <a href="https://www.tomsguide.com/computing/smart-glasses/apples-ai-smart-glasses-strategy-revealed-how-the-iphone-maker-plans-to-outshine-metas-ray-bans">Apple rumored to be introducing its own glasses too</a>, competition could get fierce.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/smart-glasses/snap-and-qualcomm-team-up-for-the-future-of-specs-aiming-to-make-smart-glasses-more-human-and-grounded-in-the-real-world">Snap and Qualcomm team up for 'the future of Specs' — aiming to make smart glasses 'more human and grounded in the real world'</a></li><li><a href="https://www.tomsguide.com/computing/smart-glasses/i-fed-my-tamagotchi-looked-like-a-d1-athlete-and-fact-checked-my-boss-my-time-with-even-g2s-secret-smart-glasses-app-store">I fed my Tamagotchi, looked like a D1 athlete and fact-checked my boss — my time with Even G2's secret smart glasses app store</a></li><li><a href="https://www.tomsguide.com/computing/smart-glasses/i-went-on-a-sightseeing-run-in-london-with-the-oakley-meta-vanguard-smart-glasses-heres-5-things-i-like-and-2-i-disliked">I went on a sightseeing run in London with the Oakley Meta Vanguard smart glasses — here’s 5 things I like and 2 I disliked</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/smart-glasses/exclusive-viture-co-founders-are-planning-invisible-ai-glasses-to-rival-meta</link>
                                                                            <description>
                            <![CDATA[ Can Viture beat Meta at its own game? We talk to the co-founders about "invisible" AI wearables, retail expansion into Best Buy, and the "Beast" becoming a gaming monitor killer. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">cqXqWSkz8ZwvCQuqPZLWeV</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/S2EvTknzUsHDCc6t2kqYuF-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 15 Apr 2026 12:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Smart Glasses]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[VR & AR]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jason England ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/v4fSq5U4uZUEtGY2BwNuJ6-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jason brings a decade of tech and gaming journalism experience to his role as a Managing Editor of Computing at Tom&#039;s Guide. He has previously written for Laptop Mag, Tom&#039;s Hardware, Kotaku, Stuff and BBC Science Focus. In his spare time, you&#039;ll find Jason looking for good dogs to pet or thinking about eating pizza if he isn&#039;t already.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/S2EvTknzUsHDCc6t2kqYuF-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Viture Beast and Ray-Ban Meta]]></media:description>                                                            <media:text><![CDATA[Viture Beast and Ray-Ban Meta]]></media:text>
                                <media:title type="plain"><![CDATA[Viture Beast and Ray-Ban Meta]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/S2EvTknzUsHDCc6t2kqYuF-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The war for your face is heating up. Meta and Snap are betting big on cameras and bulky frames, but Viture is preparing to take a very different path. As the No. 1 ranked company in XR glasses shipments in the U.S., the company is taking its talents to a whole new category — laying a path to merge the worlds of AR and AI glasses in the future.</p><p>In an exclusive interview with Tom’s Guide, Viture’s CMO and co-founder Emily Wang revealed that the company is officially stepping into the "connected lifestyle" category — named <a href="https://www.vonder.ai/" target="_blank">Vonder</a>, and set to launch in Q4 of this year. </p><p>But unlike the <a href="https://www.tomsguide.com/computing/smart-glasses/ray-ban-meta-gen-2-review">Ray-Ban Meta glasses</a>, VITURE is prioritizing two things the current market lacks: <strong>true fashion and absolute privacy.</strong></p><h2 id="viture-s-taking-on-ray-ban-meta-with-something-vonderful">Viture’s taking on Ray-Ban Meta with something Vonderful</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="SWJxfEBbze6wfYQP9EukZQ" name="vonder" alt="vonder" src="https://cdn.mos.cms.futurecdn.net/SWJxfEBbze6wfYQP9EukZQ-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: vonder)</span></figcaption></figure><p>This is the biggest takeaway from my conversation with Viture, so let’s start here. We all know that the future of smart glasses is going to be when AR and AI collides (more on that later in our chat), so it pays to be developing on both sides of this specs chasm now.</p><div><blockquote><p>“We believe smart glasses should feel invisible, not intrusive, and that technology should disappear into a timeless design, not the other way around."</p><p>Emily Wang, Viture</p></blockquote></div><p>I brought up this gap in Viture’s lineup — the daily carry AI wearable like the Ray-Ban Metas, and following a couple of potential leaks and the company’s Series B funding announcement mentioning a “new category of connected lifestyle technology,” I asked whether Viture had plans to fill it?</p><p>Well, I had asked the right question, because Emily had an ever increasing smile on her face. “I think you’re picking up on exactly what we’ve been hinting at,” Wang commented. “With all the display technology, software and AI integration we’ve built over the years, we’re in a unique position to bring that philosophy to a new category — where the glasses are not only smart and capable, but something you’re genuinely proud to wear.”</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6000px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="DpZN8ACQXzqocVbw7apt5U" name="DSC00074.JPG" alt="Ray-Ban Meta Smart Glasses" src="https://cdn.mos.cms.futurecdn.net/DpZN8ACQXzqocVbw7apt5U-1920-80.jpg" mos="" align="middle" fullscreen="" width="6000" height="3376" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>So to have Viture enter the AI glasses space with Vonder is incredibly exciting. With this category ever-expanding, I asked what were the key pain points they see in the industry today that the company plans to tackle. </p><p>“The most obvious one is privacy — current AI glasses have cameras pointing at the world, and people around you know it,” Wang responded. “We believe smart glasses should feel invisible, not intrusive, and that technology should disappear into a timeless design, not the other way around."</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="rrGA55fwhtnUk7dadFeJY6" name="Vonder" alt="Vonder" src="https://cdn.mos.cms.futurecdn.net/rrGA55fwhtnUk7dadFeJY6-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Vonder)</span></figcaption></figure><p>And this conversation went exactly in the direction I was hoping for. In all the smart glasses I’ve tested, it always feels like there’s an awkward battle between tech and fashion. For something so present on your face, making them look good almost has to come first followed by the tech.</p><p>“There’s a deeper issue we’ve cared about since day one at Viture: the tension between technology and fashion,” Wang continued. “With AI glasses, you have the freedom to make them as fashionable and personal as you want. That’s a huge unlock because at the end of the day, glasses live on your face — if people don’t want to wear them, none of the technology matters.”</p><h2 id="the-beast-is-almost-ready-for-primetime">The Beast is (almost) ready for primetime</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="x7CgNLDRpbWhuxmkhTdbEG" name="Viture Beast" alt="Viture Beast" src="https://cdn.mos.cms.futurecdn.net/x7CgNLDRpbWhuxmkhTdbEG-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Moving to the here and now, you may know that I’ve been testing the Viture Beast for a while now, but also <a href="https://www.tomsguide.com/computing/smart-glasses/ive-been-testing-the-viture-beast-ar-glasses-for-weeks-heres-why-i-cant-review-them-yet#viafoura-comments">elected to not review them</a>. Simply put, the hardware was sound, but all the features were not present. </p><p>However, as you may have seen on <a href="https://www.reddit.com/r/VITURE/" target="_blank">Viture’s subreddit</a>, it’s a very different story now — several rapidfire updates have brought them to the level where I will be reviewing them <em>very </em>soon. The only feature that’s left is a 1200p picture, which the company confirms will be released “this month.”</p><p>“Our philosophy has always been to build hardware that’s future-ready, delivering a polished experience than rush it,” Wang explained. “The recent firmware updates for image stability, color tuning and 3DoF tracking have been a huge leap forward in the everyday experience.”</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="c2CDXizHwx3YwTTRvmX6EG" name="Viture Beast" alt="Viture Beast" src="https://cdn.mos.cms.futurecdn.net/c2CDXizHwx3YwTTRvmX6EG-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>And I have to say I agree. It’s a night-and-day difference in the experience using these glasses now compared to the drifting images I saw back in January. Viture’s bought my AWE awards winners back to the primetime, and they’re lining up for a big launch.</p><p>“On April 27, the Beast will be fully available on Best Buy, Amazon and our own website simultaneously,” Wang confirmed. “Stay tuned, because what you’ll see is a mature, refined version of the beast, and for the first time, everyone will be able to easily grab what we believe is the best on the market.”</p><p>Those words — “mature” and “refined” — are signaling that the early-adopter era for these XR glasses is over, and the confidence to put them into Best Buy is a positive sign (one that I can vouch for after testing them the past few weeks).</p><h2 id="the-gaming-monitor-killer">The gaming monitor killer</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="hjvdsJuJFBiZ3NFGXWqF99" name="Asus ROG Xreal R1 AR Glasses" alt="Asus ROG Xreal R1 AR Glasses" src="https://cdn.mos.cms.futurecdn.net/hjvdsJuJFBiZ3NFGXWqF99-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>As someone with one eye on the future, I wanted to see where this vision for the Beast goes. This turned my attention to the <a href="https://www.tomsguide.com/computing/smart-glasses/asus-rog-xreal-r1-ar-glasses-hands-on-review">Asus ROG Xreal R1 glasses</a> I tried back at CES 2026: seemingly a prototype (unless they do become a reality — I only say that because the companies have gone real quiet about them ever since January), which brought a 240Hz refresh rate to take on the gaming monitor.</p><p>And then I thought about Viture’s partnership with Nvidia, which is in the AI space at the moment (more on that in a minute), but gearing up with the gaming side of Team Green to provide the kind of glasses that could replace a bulky gaming screen would be hype.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="6xeh3QQaue5wJ4rWuy4dMG" name="Viture Beast" alt="Viture Beast" src="https://cdn.mos.cms.futurecdn.net/6xeh3QQaue5wJ4rWuy4dMG-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>“We believe AR glasses can and should be a viable gaming monitor alternative — high refresh rate, immersive and private,” Wang elaborated. “It’s definitely a space we’re exploring, and I think you’ll see some exciting developments from us on this front.”</p><p>But, this is the part where the company dropped an incredibly intriguing nugget — saying that “the Beast’s display engine was designed with headroom for exactly this kind of use case.” No, that doesn’t mean you’ll see 240Hz in these current gen Beast specs, but it shows a mighty promising future for these glasses if you’re a PC gamer.</p><h2 id="the-future-of-seeing">The future of ‘seeing’</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2177px;"><p class="vanilla-image-block" style="padding-top:61.28%;"><img id="HQdHs5AZAs4enM7nRKCbEa" name="Viture Nvidia XR AI" alt="Viture Nvidia XR AI" src="https://cdn.mos.cms.futurecdn.net/HQdHs5AZAs4enM7nRKCbEa-1920-80.png" mos="" align="middle" fullscreen="" width="2177" height="1334" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: <a href="https://www.viture.com/blog/proudly-collaborating-with-nvidia-and-stanford-pioneering-the-future-of-xr-ai-in-healthcare" target="_blank">Viture</a>)</span></figcaption></figure><p>So for context, <a href="https://www.viture.com/blog/proudly-collaborating-with-nvidia-and-stanford-pioneering-the-future-of-xr-ai-in-healthcare" target="_blank">Viture teamed up with Nvidia and Stanford medicine</a> for a “truly meaningful” partnership — bringing XR together with AI in healthcare to streamline lab workflows, make it agentic and provide hands-free data.</p><p>“As Professor Cong (of Stanford University School of Medicine) shared, years of research work can be compressed into months, and millions of dollars in costs can be reduced to thousands,” Wang explained. </p><p>I asked further as to whether this is an agentic sign of the consumer direction for AI glasses. “The next evolution is exactly what you described: glasses that don’t just show you things, but understand what you’re seeing and act on it,” she responded. “The glasses become the interface layer between the user and an AI that’s always contextually aware.”</p><h2 id="where-this-all-goes-in-the-next-few-years">Where this all goes in the next few years</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="BQiZuqCr26xkccWHjJBHzn" name="Snapchat Spectacles" alt="Snapchat Spectacles" src="https://cdn.mos.cms.futurecdn.net/BQiZuqCr26xkccWHjJBHzn-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>So let’s go back to what I wrote about at the beginning: the merging of AR and AI glasses into one product. Tech like waveguide displays and the AI to make it possible are developing at a rapid rate where we could see this become a reality over the next few years (pending the compression of said tech into something fashionable).</p><p>In my mind, the first real test of whether they are ready for primetime will be <a href="https://www.tomsguide.com/computing/smart-glasses/exclusive-i-asked-snaps-hardware-chief-about-the-companys-next-gen-specs-heres-what-i-found-out">Snap Specs</a> — set to launch this year. Emily agrees, but acknowledges the challenges of jumping straight in.</p><p>“The convergence is inevitable, but I want to be thoughtful here — the path to that all-in-one form factor isn’t as straightforward as it might seem,” Wang continued, bringing up how Waveguide tech is advancing, but field of view, brightness and power demands are challenges. “What you see with products like Snap Specs is exciting, but they're still limited in display capability and daily wearability.”</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="hjTzmS2H5cp52aTPzEhnQk" name="Viture Luma Pro" alt="Viture Luma Pro" src="https://cdn.mos.cms.futurecdn.net/hjTzmS2H5cp52aTPzEhnQk-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>My take after seeing every company’s innovation at AWE last year is that this challenge won’t be solved by one mega product from one company, but rather lots of small ingredients from companies coming together into one eventual dominant pair of specs. And Emily is on the same track here.</p><p>“Our view is that this won't be a single leap — it will be a journey. And the companies that will lead aren't necessarily the ones who rush to cram everything into one device first,” Wang explained. She mentioned the real secret ingredient will be making “the right ecosystem, user base and software foundation” along the way. This means that when the optical tech is ready for the all-in-one form factor, Viture is “not starting from zero.”</p><p>“The biggest challenges between now and then? Optical efficiency in a lightweight frame, thermal management, battery life, and — coming back to what I said earlier — making sure the design is something people actually want to wear every day,” she continued. “Technology alone won't win. It has to be beautiful, it has to be comfortable, and it has to feel like you. That's the bar we're setting for ourselves.”</p><p>It’s going to be an interesting 2026 for smart glasses, as Viture makes its first big foray into AI glasses, and marks a path towards that final form every company’s been hunting for! And with <a href="https://www.tomsguide.com/computing/smart-glasses/apples-ai-smart-glasses-strategy-revealed-how-the-iphone-maker-plans-to-outshine-metas-ray-bans">Apple rumored to be introducing its own glasses too</a>, competition could get fierce.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/smart-glasses/snap-and-qualcomm-team-up-for-the-future-of-specs-aiming-to-make-smart-glasses-more-human-and-grounded-in-the-real-world">Snap and Qualcomm team up for 'the future of Specs' — aiming to make smart glasses 'more human and grounded in the real world'</a></li><li><a href="https://www.tomsguide.com/computing/smart-glasses/i-fed-my-tamagotchi-looked-like-a-d1-athlete-and-fact-checked-my-boss-my-time-with-even-g2s-secret-smart-glasses-app-store">I fed my Tamagotchi, looked like a D1 athlete and fact-checked my boss — my time with Even G2's secret smart glasses app store</a></li><li><a href="https://www.tomsguide.com/computing/smart-glasses/i-went-on-a-sightseeing-run-in-london-with-the-oakley-meta-vanguard-smart-glasses-heres-5-things-i-like-and-2-i-disliked">I went on a sightseeing run in London with the Oakley Meta Vanguard smart glasses — here’s 5 things I like and 2 I disliked</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I tested DLSS 4.5 Dynamic Multi Frame Generation: It’s not just AI trickery, it’s Nvidia’s cheat code for 4K 240Hz and a true console killer ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Nvidia has just dropped DLSS 4.5 Dynamic Multi Frame Generation and I’ve been testing it for the past week. This takes the idea of multi-frame generation and adds automation to it, so AI only generates the frames you need rather than going over the top, and in my time using it, Team Green has created a far smoother experience with lower latency because of it.</p><p>It’s a better balance of making sure your GPU’s raw rendering skills and AI trickery work hand-in-hand to deliver more consistently stable gameplay. But while you’ll hear a lot about this being big for 4K 240Hz monitors, I found that this is the missing piece to using your PC as a games console replacement — a dream I’ve had for years. Let me explain.</p><h2 id="what-is-dynamic-multi-frame-generation">What is Dynamic Multi Frame Generation?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="tDJVrbF3btzoYzVNxVkpMh" name="DLSS 4.5" alt="DLSS 4.5" src="https://cdn.mos.cms.futurecdn.net/tDJVrbF3btzoYzVNxVkpMh-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Up until now, Nvidia has dabbled in Multi-Frame Generation — you can think of this like the manual transmission in a car. Each gear has its benefits for more speed, but if you slow down at these higher gears, it’s hard to get back up to speed. This can be felt in the form of latency if you poorly optimize your game from the jump.</p><p>Dynamic Multi Frame Generation switches that out with an automatic transmission, which changes gears (frame multipliers) based on the intensity of the scene — ensuring you’re at the max speed of the display you’re on at all times. This ensures you only get the frames that you <strong>need</strong>, and produces a far smoother experience with less latency.</p><p>In this beta, you’ll see two presets in the Nvidia app:</p><ul><li><strong>Preset A: </strong>The brute force option. This will take a look at literally everything on screen as one frame and generate. Much wider compatibility, but can come with some issues of smearing in-game UI elements with the background.</li><li><strong>Preset B: </strong>In this model, DLSS is able to look at both the in-game visuals and the UI separately. This can help keep your on-screen text razor sharp, but compatibility is limited as it requires developers to isolate the layers.</li></ul><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="5V4mETwBfYUx9HPKdM3ivJ" name="DLSS 4.5 Dynamic Frame Generation" alt="DLSS 4.5 Dynamic Multi Frame Generation" src="https://cdn.mos.cms.futurecdn.net/5V4mETwBfYUx9HPKdM3ivJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>But as I always say (following on from poorly optimizing your game), it’s critical that you use this the right way. I’ve got a <a href="https://www.tomsguide.com/computing/gpus/what-is-nvidia-dlss-explaining-the-ai-tech-transforming-pc-gaming-and-why-its-getting-controversial">full guide on my resolution scaling and frame generation preferences</a>, but to summarize real quick, it’s important that your base frame rate before turning on any AI trickery is strong. </p><p>Because if your game is running at 20 FPS, slapping on this DLSS coat of paint will make it look smoother, but it’ll still feel like 20 FPS.</p><ul><li>If you’re in a single player game with slower pacing, 40 FPS is enough.</li><li>Need faster reflexes? Start at 60 FPS.</li><li>Competitive multiplayer? Don’t use it or build from 120 FPS.</li></ul><p>Got it? Good. Let’s get into the results of my testing.</p><h2 id="by-the-numbers-3">By the numbers</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="jBDWNBZGSk67UHLeUkC9Pf" name="DLSS 4.5 Dynamic Frame Generation" alt="RTX 5080" src="https://cdn.mos.cms.futurecdn.net/jBDWNBZGSk67UHLeUkC9Pf-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>So let’s test what Nvidia has here — starting with its main focus upon making the most of a 4K 240Hz monitor. I’ve got my RTX 5080 rig that I built with Scan computers here in dear old Blighty, and the <a href="https://www.tomsguide.com/computing/monitors/alienware-aw2725q-gaming-monitor-review">Alienware AW2725Q monitor</a>. If you want to see how to build a PC like this for yourself, the guide is just below.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/uZRH_P_qs_I" allowfullscreen></iframe></div></div><p>Anyway, let’s get into it. Put simply, monitors of this caliber are no longer just future-proof hardware — RTX 50-series is able to fully utilize them and get 100% of the experience you pay for.</p><div ><table><thead><tr><th class="firstcol " ><p>Game (and settings)</p></th><th  ><p>Average FPS</p></th><th  ><p>1% Lows (FPS)</p></th><th  ><p>Latency</p></th><th  ><p>Average Dynamic Multi Frame Generation Multiplier</p></th><th  ><p>Base FPS</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Cyberpunk 2077 (4K Ray Tracing Ultra)</strong></p></td><td  ><p>238.99</p></td><td  ><p>167.87</p></td><td  ><p>43.37ms</p></td><td  ><p>4-5x</p></td><td  ><p>58.5 FPS</p></td></tr><tr><td class="firstcol " ><p><strong>Hogwarts Legacy (4K Ultra)</strong></p></td><td  ><p>205.94</p></td><td  ><p>79.51</p></td><td  ><p>36.34ms</p></td><td  ><p>5-6x</p></td><td  ><p>74.02 FPS</p></td></tr><tr><td class="firstcol " ><p><strong>Dragon Age: The Veilguard (4K Ultra)</strong></p></td><td  ><p>237.17</p></td><td  ><p>132.58</p></td><td  ><p>41.47ms</p></td><td  ><p>5-6x</p></td><td  ><p>53.15 FPS</p></td></tr><tr><td class="firstcol " ><p><strong>God of War Ragnarok (4K Ultra)</strong></p></td><td  ><p>211.55</p></td><td  ><p>106.93</p></td><td  ><p>37.5ms</p></td><td  ><p>2-3x</p></td><td  ><p>92.47 FPS</p></td></tr></tbody></table></div><p>In games like “Dragon Age: The Veilguard,” you’re seeing a base frame rate of 53 FPS get effectively upshifted heavily to saturate the monitor’s refresh rate. On the opposite end of this, “God of War Ragnarok” already has a strong base performance, so DFG essentially downshifts to a lower multiplier for the smoothest possible image quality.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6016px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="RaCu24ttHqp7qJ5FMPfYeN" name="DLSS 4.5 Dynamic Frame Generation" alt="DLSS 4.5 Dynamic Multi Frame Generation" src="https://cdn.mos.cms.futurecdn.net/RaCu24ttHqp7qJ5FMPfYeN-1920-80.png" mos="" align="middle" fullscreen="" width="6016" height="3384" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Another way to look at it is those 1% Lows. This is the lowest frame rate you see 1% of the time (as the name suggests), and it’s a good way to track whether the game will visibly stumble at any dramatic rate. </p><p>On average (including some loading scenes, so data is a little bit off), you’re looking at an average of 115 FPS across all my tests, which is an excellent floor of the performance — well above the variable refresh rate threshold and eliminating visible judder.</p><p>The beauty of this restraint is fully realized in the latency, though. Multiple generated frames are often criticized for adding a floaty input lag. Of course, this comes down to how to tame the technology in many ways. But with an average of 33-45ms, my data proves Nvidia has overcome this hurdle.</p><p>To put it in perspective, Cyberpunk 2077 with everything turned up and maintaining only 45ms of latency is a landmark achievement to squeeze up to 240Hz gaming.</p><h2 id="to-my-eyes">To my eyes</h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/BYqpUDUmj446ikNxL2bR9Q-1920-80.png" alt="DLSS 4.5 Dynamic Multi Frame Generation" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/GYBrwMgD7MgQzJRSiSWRUP-1920-80.png" alt="DLSS 4.5 Dynamic Frame Generation" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/cwPRUGUxhjZo3numsedB8Q-1920-80.png" alt="DLSS 4.5 Dynamic Frame Generation" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>As for the visual element of it (numbers are good, but it’s got to look good too), same as I found when going eyes-on back at CES 2026, You’ll struggle to notice when the multiplier shifts — there’s no identifiable switch up or stuttering at all in all the games I tried.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="jJqSstzqtwUAbPb7VwLSV5" name="DLSS 4.5 Dynamic Frame Generation" alt="DLSS 4.5 Dynamic Multi Frame Generation" src="https://cdn.mos.cms.futurecdn.net/jJqSstzqtwUAbPb7VwLSV5-1920-80.jpg" mos="" align="middle" fullscreen="1" width="3840" height="2160" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/jJqSstzqtwUAbPb7VwLSV5-1920-80.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>There are some small ghosting issues I did spot. The most prominent one being in “Hogwarts Legacy” around this teacher’s hair, but most impressively, none of this impacts the UI. One of the most common problems with frame generation is that it can make on-screen elements like a health bar or button prompts smear into the background of the game.</p><p>And that’s the magic of Preset B isolating static elements from the game visuals. Menus in “Spider-Man 2,” “Hogwarts Legacy” and “Forza Horizon 5” remain perfectly clear even as the 3D world is being interpolated at a 4-6x rate.</p><h2 id="tv-time">TV time</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="AonMXnsDvii5zaLWgwZk7f" name="DLSS 4.5 Dynamic Frame Generation" alt="DLSS 4.5 Dynamic Multi Frame Generation" src="https://cdn.mos.cms.futurecdn.net/AonMXnsDvii5zaLWgwZk7f-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Now, you’re going to hear Nvidia talk a whole lot about making the most out of high refresh rate hardware, which Team Green absolutely does here. But I wanted to see whether it could fix one problem I’ve always had — playing PC games on my TV.</p><p>It’s been my dream to have a cheaper RTX 5060 Ti rig plugged into my big screen to replace my console setup. A lot of these single-player games that Dynamic Multi Frame Generation is perfect for usually run at 30 FPS on Fidelity mode and 60 FPS on performance. </p><p>While a PC can smash that barrier already (and latency issues are felt much less with a controller), there are two key issues:</p><ul><li><strong>UI smearing:</strong> The brute force frame generation option has viewed the entire game and its UI as one picture. When blown up to a massive TV, that means you can see the UI elements start to smear and ghost — especially when the picture behind it is moving fast (think like a racing game).</li><li><strong>The VRR stutter: </strong>When framerates can change quite dramatically on a PC game, most HDMI 2.1-armed TVs can suffer from gamma flickering. Without the variable refresh rate of a gaming monitor, the locked refresh rate of the big screen behaves a little weird with this.</li></ul><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/vf38eKnB7U6hyQhdcgmaGP-1920-80.png" alt="DLSS 4.5 Dynamic Multi Frame Generation" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/wZDGuJNWbuFh7wFSQs8zDQ-1920-80.png" alt="DLSS 4.5 Dynamic Frame Generation" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>With Dynamic Multi Frame Generation (and Preset B), it was my hope that beyond the marketing messages, this could be the key to having my PC become the all-in-one gaming desk machine and TV setup. </p><p>And you know what? It absolutely nails it. Of course, if you're looking at this from a keyboard and mouse/your face close to a monitor perspective, some of those latency numbers could be a problem. But for the couch gaming side of things (average response time on a PS5 or Xbox Series X sits between 100ms and 150ms), these numbers are actually a win for the TV rig.</p><div ><table><thead><tr><th class="firstcol " ><p>Game (and settings)</p></th><th  ><p>Average FPS</p></th><th  ><p>1% Lows (FPS)</p></th><th  ><p>Latency</p></th><th  ><p>Average Dynamic Multi Frame Generation Multiplier</p></th><th  ><p>Base FPS</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Cyberpunk 2077 (4K Ray Tracing Ultra)</strong></p></td><td  ><p>123.46</p></td><td  ><p>92.51</p></td><td  ><p>83.69ms</p></td><td  ><p>4-5x</p></td><td  ><p>27.16 FPS</p></td></tr><tr><td class="firstcol " ><p><strong>Hogwarts Legacy (4K High)</strong></p></td><td  ><p>98.43</p></td><td  ><p>30.16</p></td><td  ><p>77.12ms</p></td><td  ><p>5-6x</p></td><td  ><p>31.1 FPS</p></td></tr><tr><td class="firstcol " ><p><strong>Dragon Age: The Veilguard (4K Ultra)</strong></p></td><td  ><p>132.92</p></td><td  ><p>105.26</p></td><td  ><p>58.65ms</p></td><td  ><p>3-4x</p></td><td  ><p>34.42 FPS</p></td></tr></tbody></table></div><p>Of course, it's worth noting that <strong>this is a stress test. </strong>I wanted to see how far I could push this on an RTX 5060 Ti rig with settings turned all the way up — lowering the base frame rate target to what a console hits at 30 FPS and seeing how it fares.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="P6yszGUgQXBzQ9QpMHofo5" name="DLSS 4.5 Dynamic Frame Generation" alt="DLSS 4.5 Dynamic Multi Frame Generation" src="https://cdn.mos.cms.futurecdn.net/P6yszGUgQXBzQ9QpMHofo5-1920-80.jpg" mos="" align="middle" fullscreen="1" width="3840" height="2160" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/P6yszGUgQXBzQ9QpMHofo5-1920-80.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>If you want something more responsive, you can tweak those settings down a tad. But for my time playing with a controller, I certainly didn't notice any input latency at all.</p><p>The UI remains mostly rock solid thanks to preset B isolating the in-game visuals from the on-screen elements, and generating only the frames I <strong>need </strong>keeps things feeling responsive while eliminating any flickering. </p><h2 id="verdict-a-console-killer">Verdict: a console killer?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="rjfdYbKzfgGUr5jZnvCX7f" name="DLSS 4.5 Dynamic Frame Generation" alt="DLSS 4.5 Dynamic Multi Frame Generation" src="https://cdn.mos.cms.futurecdn.net/rjfdYbKzfgGUr5jZnvCX7f-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>So the main thing I want you to take away from this is that Dynamic Multi Frame Generation is not just for the enthusiast with the 240Hz monitor. It’s for the rest of us gamers who want their PC to act like a polished, reliable appliance in the living room.</p><p>For years, my “PC as a console” dream died at the hands of micro-stutters, UI ghosting and the constant need to babysit settings. While the latter of those three could do with some work (looking at you, Microsoft), Nvidia has finally automated the two headaches away.</p><p>It’s the first time that AI hasn’t felt like a “more frames” button, but rather a “better experience” brain. By letting it decide when to push and when to pull back, your PC stops feeling like a hot rod and starts feeling like a refined supercar of a high-performance console.</p><p>Put simply, if you’re on an RTX-50 Series GPU, this isn’t just a toggle — it’s the new standard.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/gaming-laptops/asus-tuf-gaming-a14-2026-review">I really wanted to love the Asus TUF Gaming A14 (2026), but it’s an expensive heartbreaker</a></li><li><a href="https://www.tomsguide.com/computing/hardware/i-thought-the-2026-hardware-crisis-would-spike-laptop-prices-but-here-are-4-reasons-they-could-actually-get-cheaper">Is the RAM price crisis finally ending? I’m starting to see cracks</a></li><li><a href="https://www.tomsguide.com/computing/cpus/intel-core-ultra-7-270k-plus-5-250k-plus-review">I tested the Intel Core Ultra 7 270K Plus and 5 250K Plus against AMD’s best gaming CPUs — this should be a mismatch, but the results shocked me</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/gpus/i-tested-dlss-4-5-dynamic-multi-frame-generation-its-not-just-ai-trickery-its-nvidias-cheat-code-for-4k-240hz-and-a-true-console-killer</link>
                                                                            <description>
                            <![CDATA[ Nvidia has just dropped DLSS 4.5 Dynamic Multi Frame Generation and I’ve been testing it for the past week. Here is why it's a breakthrough, not just for 4K 240Hz monitors but also for turning your PC into the ultimate console replacement. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">2uCCs58wXozMrjsEGccDym</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/vXsp3ZAwDCfeXjBxzRgeKf-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 31 Mar 2026 13:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[GPUs]]></category>
                                                    <category><![CDATA[PC Gaming]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Computing Hardware]]></category>
                                                    <category><![CDATA[Gaming]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jason England ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/v4fSq5U4uZUEtGY2BwNuJ6-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jason brings a decade of tech and gaming journalism experience to his role as a Managing Editor of Computing at Tom&#039;s Guide. He has previously written for Laptop Mag, Tom&#039;s Hardware, Kotaku, Stuff and BBC Science Focus. In his spare time, you&#039;ll find Jason looking for good dogs to pet or thinking about eating pizza if he isn&#039;t already.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/vXsp3ZAwDCfeXjBxzRgeKf-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[DLSS 4.5 Dynamic Frame Generation]]></media:description>                                                            <media:text><![CDATA[DLSS 4.5 Dynamic Frame Generation]]></media:text>
                                <media:title type="plain"><![CDATA[DLSS 4.5 Dynamic Frame Generation]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/vXsp3ZAwDCfeXjBxzRgeKf-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Nvidia has just dropped DLSS 4.5 Dynamic Multi Frame Generation and I’ve been testing it for the past week. This takes the idea of multi-frame generation and adds automation to it, so AI only generates the frames you need rather than going over the top, and in my time using it, Team Green has created a far smoother experience with lower latency because of it.</p><p>It’s a better balance of making sure your GPU’s raw rendering skills and AI trickery work hand-in-hand to deliver more consistently stable gameplay. But while you’ll hear a lot about this being big for 4K 240Hz monitors, I found that this is the missing piece to using your PC as a games console replacement — a dream I’ve had for years. Let me explain.</p><h2 id="what-is-dynamic-multi-frame-generation">What is Dynamic Multi Frame Generation?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="tDJVrbF3btzoYzVNxVkpMh" name="DLSS 4.5" alt="DLSS 4.5" src="https://cdn.mos.cms.futurecdn.net/tDJVrbF3btzoYzVNxVkpMh-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Up until now, Nvidia has dabbled in Multi-Frame Generation — you can think of this like the manual transmission in a car. Each gear has its benefits for more speed, but if you slow down at these higher gears, it’s hard to get back up to speed. This can be felt in the form of latency if you poorly optimize your game from the jump.</p><p>Dynamic Multi Frame Generation switches that out with an automatic transmission, which changes gears (frame multipliers) based on the intensity of the scene — ensuring you’re at the max speed of the display you’re on at all times. This ensures you only get the frames that you <strong>need</strong>, and produces a far smoother experience with less latency.</p><p>In this beta, you’ll see two presets in the Nvidia app:</p><ul><li><strong>Preset A: </strong>The brute force option. This will take a look at literally everything on screen as one frame and generate. Much wider compatibility, but can come with some issues of smearing in-game UI elements with the background.</li><li><strong>Preset B: </strong>In this model, DLSS is able to look at both the in-game visuals and the UI separately. This can help keep your on-screen text razor sharp, but compatibility is limited as it requires developers to isolate the layers.</li></ul><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="5V4mETwBfYUx9HPKdM3ivJ" name="DLSS 4.5 Dynamic Frame Generation" alt="DLSS 4.5 Dynamic Multi Frame Generation" src="https://cdn.mos.cms.futurecdn.net/5V4mETwBfYUx9HPKdM3ivJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>But as I always say (following on from poorly optimizing your game), it’s critical that you use this the right way. I’ve got a <a href="https://www.tomsguide.com/computing/gpus/what-is-nvidia-dlss-explaining-the-ai-tech-transforming-pc-gaming-and-why-its-getting-controversial">full guide on my resolution scaling and frame generation preferences</a>, but to summarize real quick, it’s important that your base frame rate before turning on any AI trickery is strong. </p><p>Because if your game is running at 20 FPS, slapping on this DLSS coat of paint will make it look smoother, but it’ll still feel like 20 FPS.</p><ul><li>If you’re in a single player game with slower pacing, 40 FPS is enough.</li><li>Need faster reflexes? Start at 60 FPS.</li><li>Competitive multiplayer? Don’t use it or build from 120 FPS.</li></ul><p>Got it? Good. Let’s get into the results of my testing.</p><h2 id="by-the-numbers-3">By the numbers</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="jBDWNBZGSk67UHLeUkC9Pf" name="DLSS 4.5 Dynamic Frame Generation" alt="RTX 5080" src="https://cdn.mos.cms.futurecdn.net/jBDWNBZGSk67UHLeUkC9Pf-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>So let’s test what Nvidia has here — starting with its main focus upon making the most of a 4K 240Hz monitor. I’ve got my RTX 5080 rig that I built with Scan computers here in dear old Blighty, and the <a href="https://www.tomsguide.com/computing/monitors/alienware-aw2725q-gaming-monitor-review">Alienware AW2725Q monitor</a>. If you want to see how to build a PC like this for yourself, the guide is just below.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/uZRH_P_qs_I" allowfullscreen></iframe></div></div><p>Anyway, let’s get into it. Put simply, monitors of this caliber are no longer just future-proof hardware — RTX 50-series is able to fully utilize them and get 100% of the experience you pay for.</p><div ><table><thead><tr><th class="firstcol " ><p>Game (and settings)</p></th><th  ><p>Average FPS</p></th><th  ><p>1% Lows (FPS)</p></th><th  ><p>Latency</p></th><th  ><p>Average Dynamic Multi Frame Generation Multiplier</p></th><th  ><p>Base FPS</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Cyberpunk 2077 (4K Ray Tracing Ultra)</strong></p></td><td  ><p>238.99</p></td><td  ><p>167.87</p></td><td  ><p>43.37ms</p></td><td  ><p>4-5x</p></td><td  ><p>58.5 FPS</p></td></tr><tr><td class="firstcol " ><p><strong>Hogwarts Legacy (4K Ultra)</strong></p></td><td  ><p>205.94</p></td><td  ><p>79.51</p></td><td  ><p>36.34ms</p></td><td  ><p>5-6x</p></td><td  ><p>74.02 FPS</p></td></tr><tr><td class="firstcol " ><p><strong>Dragon Age: The Veilguard (4K Ultra)</strong></p></td><td  ><p>237.17</p></td><td  ><p>132.58</p></td><td  ><p>41.47ms</p></td><td  ><p>5-6x</p></td><td  ><p>53.15 FPS</p></td></tr><tr><td class="firstcol " ><p><strong>God of War Ragnarok (4K Ultra)</strong></p></td><td  ><p>211.55</p></td><td  ><p>106.93</p></td><td  ><p>37.5ms</p></td><td  ><p>2-3x</p></td><td  ><p>92.47 FPS</p></td></tr></tbody></table></div><p>In games like “Dragon Age: The Veilguard,” you’re seeing a base frame rate of 53 FPS get effectively upshifted heavily to saturate the monitor’s refresh rate. On the opposite end of this, “God of War Ragnarok” already has a strong base performance, so DFG essentially downshifts to a lower multiplier for the smoothest possible image quality.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6016px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="RaCu24ttHqp7qJ5FMPfYeN" name="DLSS 4.5 Dynamic Frame Generation" alt="DLSS 4.5 Dynamic Multi Frame Generation" src="https://cdn.mos.cms.futurecdn.net/RaCu24ttHqp7qJ5FMPfYeN-1920-80.png" mos="" align="middle" fullscreen="" width="6016" height="3384" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Another way to look at it is those 1% Lows. This is the lowest frame rate you see 1% of the time (as the name suggests), and it’s a good way to track whether the game will visibly stumble at any dramatic rate. </p><p>On average (including some loading scenes, so data is a little bit off), you’re looking at an average of 115 FPS across all my tests, which is an excellent floor of the performance — well above the variable refresh rate threshold and eliminating visible judder.</p><p>The beauty of this restraint is fully realized in the latency, though. Multiple generated frames are often criticized for adding a floaty input lag. Of course, this comes down to how to tame the technology in many ways. But with an average of 33-45ms, my data proves Nvidia has overcome this hurdle.</p><p>To put it in perspective, Cyberpunk 2077 with everything turned up and maintaining only 45ms of latency is a landmark achievement to squeeze up to 240Hz gaming.</p><h2 id="to-my-eyes">To my eyes</h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/BYqpUDUmj446ikNxL2bR9Q-1920-80.png" alt="DLSS 4.5 Dynamic Multi Frame Generation" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/GYBrwMgD7MgQzJRSiSWRUP-1920-80.png" alt="DLSS 4.5 Dynamic Frame Generation" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/cwPRUGUxhjZo3numsedB8Q-1920-80.png" alt="DLSS 4.5 Dynamic Frame Generation" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>As for the visual element of it (numbers are good, but it’s got to look good too), same as I found when going eyes-on back at CES 2026, You’ll struggle to notice when the multiplier shifts — there’s no identifiable switch up or stuttering at all in all the games I tried.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="jJqSstzqtwUAbPb7VwLSV5" name="DLSS 4.5 Dynamic Frame Generation" alt="DLSS 4.5 Dynamic Multi Frame Generation" src="https://cdn.mos.cms.futurecdn.net/jJqSstzqtwUAbPb7VwLSV5-1920-80.jpg" mos="" align="middle" fullscreen="1" width="3840" height="2160" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/jJqSstzqtwUAbPb7VwLSV5-1920-80.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>There are some small ghosting issues I did spot. The most prominent one being in “Hogwarts Legacy” around this teacher’s hair, but most impressively, none of this impacts the UI. One of the most common problems with frame generation is that it can make on-screen elements like a health bar or button prompts smear into the background of the game.</p><p>And that’s the magic of Preset B isolating static elements from the game visuals. Menus in “Spider-Man 2,” “Hogwarts Legacy” and “Forza Horizon 5” remain perfectly clear even as the 3D world is being interpolated at a 4-6x rate.</p><h2 id="tv-time">TV time</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="AonMXnsDvii5zaLWgwZk7f" name="DLSS 4.5 Dynamic Frame Generation" alt="DLSS 4.5 Dynamic Multi Frame Generation" src="https://cdn.mos.cms.futurecdn.net/AonMXnsDvii5zaLWgwZk7f-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Now, you’re going to hear Nvidia talk a whole lot about making the most out of high refresh rate hardware, which Team Green absolutely does here. But I wanted to see whether it could fix one problem I’ve always had — playing PC games on my TV.</p><p>It’s been my dream to have a cheaper RTX 5060 Ti rig plugged into my big screen to replace my console setup. A lot of these single-player games that Dynamic Multi Frame Generation is perfect for usually run at 30 FPS on Fidelity mode and 60 FPS on performance. </p><p>While a PC can smash that barrier already (and latency issues are felt much less with a controller), there are two key issues:</p><ul><li><strong>UI smearing:</strong> The brute force frame generation option has viewed the entire game and its UI as one picture. When blown up to a massive TV, that means you can see the UI elements start to smear and ghost — especially when the picture behind it is moving fast (think like a racing game).</li><li><strong>The VRR stutter: </strong>When framerates can change quite dramatically on a PC game, most HDMI 2.1-armed TVs can suffer from gamma flickering. Without the variable refresh rate of a gaming monitor, the locked refresh rate of the big screen behaves a little weird with this.</li></ul><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/vf38eKnB7U6hyQhdcgmaGP-1920-80.png" alt="DLSS 4.5 Dynamic Multi Frame Generation" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/wZDGuJNWbuFh7wFSQs8zDQ-1920-80.png" alt="DLSS 4.5 Dynamic Frame Generation" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>With Dynamic Multi Frame Generation (and Preset B), it was my hope that beyond the marketing messages, this could be the key to having my PC become the all-in-one gaming desk machine and TV setup. </p><p>And you know what? It absolutely nails it. Of course, if you're looking at this from a keyboard and mouse/your face close to a monitor perspective, some of those latency numbers could be a problem. But for the couch gaming side of things (average response time on a PS5 or Xbox Series X sits between 100ms and 150ms), these numbers are actually a win for the TV rig.</p><div ><table><thead><tr><th class="firstcol " ><p>Game (and settings)</p></th><th  ><p>Average FPS</p></th><th  ><p>1% Lows (FPS)</p></th><th  ><p>Latency</p></th><th  ><p>Average Dynamic Multi Frame Generation Multiplier</p></th><th  ><p>Base FPS</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Cyberpunk 2077 (4K Ray Tracing Ultra)</strong></p></td><td  ><p>123.46</p></td><td  ><p>92.51</p></td><td  ><p>83.69ms</p></td><td  ><p>4-5x</p></td><td  ><p>27.16 FPS</p></td></tr><tr><td class="firstcol " ><p><strong>Hogwarts Legacy (4K High)</strong></p></td><td  ><p>98.43</p></td><td  ><p>30.16</p></td><td  ><p>77.12ms</p></td><td  ><p>5-6x</p></td><td  ><p>31.1 FPS</p></td></tr><tr><td class="firstcol " ><p><strong>Dragon Age: The Veilguard (4K Ultra)</strong></p></td><td  ><p>132.92</p></td><td  ><p>105.26</p></td><td  ><p>58.65ms</p></td><td  ><p>3-4x</p></td><td  ><p>34.42 FPS</p></td></tr></tbody></table></div><p>Of course, it's worth noting that <strong>this is a stress test. </strong>I wanted to see how far I could push this on an RTX 5060 Ti rig with settings turned all the way up — lowering the base frame rate target to what a console hits at 30 FPS and seeing how it fares.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="P6yszGUgQXBzQ9QpMHofo5" name="DLSS 4.5 Dynamic Frame Generation" alt="DLSS 4.5 Dynamic Multi Frame Generation" src="https://cdn.mos.cms.futurecdn.net/P6yszGUgQXBzQ9QpMHofo5-1920-80.jpg" mos="" align="middle" fullscreen="1" width="3840" height="2160" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/P6yszGUgQXBzQ9QpMHofo5-1920-80.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>If you want something more responsive, you can tweak those settings down a tad. But for my time playing with a controller, I certainly didn't notice any input latency at all.</p><p>The UI remains mostly rock solid thanks to preset B isolating the in-game visuals from the on-screen elements, and generating only the frames I <strong>need </strong>keeps things feeling responsive while eliminating any flickering. </p><h2 id="verdict-a-console-killer">Verdict: a console killer?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="rjfdYbKzfgGUr5jZnvCX7f" name="DLSS 4.5 Dynamic Frame Generation" alt="DLSS 4.5 Dynamic Multi Frame Generation" src="https://cdn.mos.cms.futurecdn.net/rjfdYbKzfgGUr5jZnvCX7f-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>So the main thing I want you to take away from this is that Dynamic Multi Frame Generation is not just for the enthusiast with the 240Hz monitor. It’s for the rest of us gamers who want their PC to act like a polished, reliable appliance in the living room.</p><p>For years, my “PC as a console” dream died at the hands of micro-stutters, UI ghosting and the constant need to babysit settings. While the latter of those three could do with some work (looking at you, Microsoft), Nvidia has finally automated the two headaches away.</p><p>It’s the first time that AI hasn’t felt like a “more frames” button, but rather a “better experience” brain. By letting it decide when to push and when to pull back, your PC stops feeling like a hot rod and starts feeling like a refined supercar of a high-performance console.</p><p>Put simply, if you’re on an RTX-50 Series GPU, this isn’t just a toggle — it’s the new standard.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/gaming-laptops/asus-tuf-gaming-a14-2026-review">I really wanted to love the Asus TUF Gaming A14 (2026), but it’s an expensive heartbreaker</a></li><li><a href="https://www.tomsguide.com/computing/hardware/i-thought-the-2026-hardware-crisis-would-spike-laptop-prices-but-here-are-4-reasons-they-could-actually-get-cheaper">Is the RAM price crisis finally ending? I’m starting to see cracks</a></li><li><a href="https://www.tomsguide.com/computing/cpus/intel-core-ultra-7-270k-plus-5-250k-plus-review">I tested the Intel Core Ultra 7 270K Plus and 5 250K Plus against AMD’s best gaming CPUs — this should be a mismatch, but the results shocked me</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Is the RAM price crisis finally ending? I’m starting to see cracks ]]></title>
                                                                                                <dc:content><![CDATA[ <p>For the past few months, buying a PC has felt like trying to buy a house in a hurricane — prices are up and supply is down. The <a href="https://www.tomsguide.com/computing/ram-price-crisis-2026-everything-you-need-to-know">RAM price crisis</a> has been hitting us hard, and while it’s easy to see how bleak the situation is (I see it too), I want to talk about how in March 2026, I believe the atmospheric pressure is finally shifting.</p><p>I looked on <a href="https://pcpartpicker.com/product/kTJp99/corsair-vengeance-rgb-32-gb-2-x-16-gb-ddr5-6000-cl36-memory-cmh32gx5m2e6000c36" target="_blank" rel="nofollow">PC Part Picker</a> and found that the average price of DDR5 had dropped slightly. Yes, it’s the smallest of margins compared to the lows before this all kicked off, but I’m looking for any good news from anywhere. This got me going down a rabbit hole of research and what I found gave me hope.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1864px;"><p class="vanilla-image-block" style="padding-top:54.77%;"><img id="oKCZe8jseN5GW6tRmLWKHD" name="PC Part Picker" alt="PC Part Picker" src="https://cdn.mos.cms.futurecdn.net/oKCZe8jseN5GW6tRmLWKHD-1920-80.png" mos="" align="middle" fullscreen="" width="1864" height="1021" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: PC Part Picker)</span></figcaption></figure><p>Thanks to a perfect storm of a massive legal victory for importers and a sudden pivot in Washington trade policy, this hyper-inflation that defined the hardware dark age of early 2026 is showing its first real cracks. We aren’t out of the woods yet, and there are plenty of reasons to be skeptical (some I’ll go into here). But I look around and I see a hardware thaw beginning.</p><h2 class="article-body__section" id="section-uncle-sam-owes-big-tech-130-billion-and-you-might-get-the-change"><span>Uncle Sam owes Big Tech $130 billion — and you might get the change</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.20%;"><img id="oqbArUbsVDLnAzz3dQnHMF" name="white house.jpg" alt="The White House" src="https://cdn.mos.cms.futurecdn.net/oqbArUbsVDLnAzz3dQnHMF-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1124" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>On <a href="https://www.reuters.com/world/us/judge-orders-trump-administration-finalize-goods-entering-us-without-assessing-2026-03-04/" target="_blank">March 4, 2026</a>, Judge Richard Eaton of The U.S. Court of International Trade issued a sweeping ruling after the Supreme Court found tariffs to be unconstitutional — saying that “every single cent” of the roughly $130 billion to $175 billion collected must be returned to importers.</p><p>This would be a massive injection of money from U.S. Customs and Border Protection (CBP) to companies like Asus, Dell, Nvidia and HP. The <a href="https://www.pwc.com/ca/en/services/tax/publications/tax-insights/us-court-ieepa-tariff-refunds-2026.html" target="_blank">CBP is currently building an automated mass-refund tool</a>, which the court was told should be ready by mid-April 2026.</p><p>On paper, that could mean companies that were pricing in these taxes to protect their margins will have a massive cushion of cash returning to their balance sheets — potentially leading to lower prices.</p><h2 id="skeptical-take-lower-ceiling-but-higher-floor">🤔 Skeptical take: Lower ceiling, but higher floor?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="G2aXiJwBvFyiV7ByRXTLHm" name="Asus zenbook a14" alt="Asus zenbook a14" src="https://cdn.mos.cms.futurecdn.net/G2aXiJwBvFyiV7ByRXTLHm-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Now before you go thinking that refund check is in the mail, the Department of Justice is already setting up to appeal the scope of this ruling. The argument being that only companies who filed individual lawsuits (not every importer) should get paid.</p><p>And even if this automated mass-refund tool goes live and companies line up to use it, legal experts warn that these requests could be tied up in courts for up to four years. </p><p>Plus, there isn’t a legal requirement for a company to pass a tax refund down to the consumer. As Asus’ Director of Technical Marketing, Sascha Krohn said when we asked about the <a href="https://www.tomsguide.com/computing/asus-says-memory-shortage-should-start-to-normalize-by-2027-but-nobody-wants-to-be-the-first-one-to-lower-prices">memory inflation</a>: “nobody wants to be the first one to lower prices.” Maybe companies simply use this to pad their bottom lines after a rough year.</p><p>Oh, and that’s before even mentioning the administration invoking Section 122 — a temporary 10-15% global surcharge to address the balance-of-payments here.</p><p>So while 10% is certainly better than 25%, and I do think that will lower the ceiling of high-end prices, that floor of lowest prices won’t be lowered back to the beforetimes.</p><h2 class="article-body__section" id="section-the-ai-tax-is-getting-a-divorce-from-your-gaming-rig"><span>The AI Tax is getting a divorce from your gaming rig</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="HGFgk2eqboWyZ8DL6AtZZU" name="AWS data center" alt="AWS data center" src="https://cdn.mos.cms.futurecdn.net/HGFgk2eqboWyZ8DL6AtZZU-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: <a href="https://www.aboutamazon.com/news/aws/aws-data-centers-ai-factories" target="_blank" rel="nofollow">Amazon</a>)</span></figcaption></figure><p>This goes to the <a href="https://www.federalregister.gov/documents/2026/01/20/2026-01052/adjusting-imports-of-semiconductors-semiconductor-manufacturing-equipment-and-their-derivative" target="_blank">Presidential Proclamation 11002</a> — signed on January 14, 2026. On the face of it, the headline you’ll have probably read was about a massive 25% tariff on high-end AI silicon. But scratch beneath the surface, and you’ll find a loophole in new White House policies under <a href="https://content.govdelivery.com/bulletins/gd/USDHSCBP-4047318" target="_blank">Section 232</a>.</p><p>This exemption covers “Non-Data Center Consumer Applications,” and it’s a big one. A “get out of jail free” card for gaming PCs, laptops and consoles, which could lead to a significant K-shaped correction. </p><p>Do you see what this means? Enterprise and Consumer Computing are getting a silicon divorce, so while the enterprise side of things remains at premium prices, a carve-out of the consumer end could prevent the total disappearance of cheap laptops and mid-range GPUs.</p><h2 id="skeptical-take-a-technicality">🤔  Skeptical take: A technicality?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="riKZ3Nfv5MPHKGrX3FPERb" name="RTX 50 series GPUs" alt="RTX 50 series GPUs" src="https://cdn.mos.cms.futurecdn.net/riKZ3Nfv5MPHKGrX3FPERb-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>So that consumer shield sounds great on paper, but the technical definitions are rather thin — exempting products based on Total Processing Performance (TPP) and DRAM bandwidth. For full context, here are the triggers for a 25% tariff:</p><ul><li><strong>Tier A:</strong> A Total Processing Performance (TPP) between <strong>14,000 and 17,500</strong> AND a DRAM bandwidth between <strong>4,500 and 5,000 GB/s</strong>.</li><li><strong>Tier B:</strong> A TPP between <strong>20,800 and 21,100</strong> AND a DRAM bandwidth between <strong>5,800 and 6,200 GB/s</strong>.</li></ul><p>For anyone keeping track, the RTX 5090 isn’t just “close” to these triggers, it has actually smashed through the floor of the restricted category of TPP. Of course there’s a memory bandwidth buffer and vastly lower interconnect speeds — saving it for not.</p><p>But the real risk here is of performance creep breaking that consumer shield. Let’s take Nvidia for example. The RTX 50-series is the first generation where the gaming GPU and the AI GPU are <em>technically </em>the same level of power. </p><p>If the next versions (be it RTX 50 SUPER or RTX 60 series) increase memory bandwidth or add even better AI-specialized Tensor cores that push that TPP higher, they could meet both criteria for the hit list. And at that point, the likes of Nvidia and AMD have two choices:</p><ul><li><strong>“Nerf” the cards: </strong>Intentionally slow them down to stay under the limit (think like the Nvidia RTX 4090D that was released for the Chinese market).</li><li><strong>Lobby aggressively: </strong>Petition hard for that TPP ceiling to be raised as technology advances.</li></ul><p>Put simply, while your gaming rig is safe right now, we could be one breakthrough away from the government deciding your GPU’s path tracing capabilities are a national security asset.</p><h2 class="article-body__section" id="section-the-deepseek-effect-continues"><span>The DeepSeek effect continues</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="tRgDGjQNjKJ855Dn8KJApR" name="GettyImages-2195703819" alt="The DeepSeek logo seen on the silhouette of a smartphone" src="https://cdn.mos.cms.futurecdn.net/tRgDGjQNjKJ855Dn8KJApR-1920-80.jpg" mos="" align="middle" fullscreen="" width="4000" height="2250" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Getty Images)</span></figcaption></figure><p>The reason why <a href="https://www.tomsguide.com/ai/it-doesnt-matter-if-deepseek-copied-openai-the-damage-has-already-been-done-in-the-ai-arms-race">DeepSeek R1 shocked the entire market</a> early last year is not because of capability, it was efficiency and low cost. <a href="https://techcrunch.com/2026/03/25/google-turboquant-ai-memory-compression-silicon-valley-pied-piper/" target="_blank">Google recently announced TurboQuant</a>, which is being called the “Pied Piper moment” for AI (<a href="https://www.tomsguide.com/computing/aws-suffered-at-least-two-outages-caused-by-ai-tools-and-now-im-convinced-were-living-inside-a-silicon-valley-episode">“Silicon Valley” is basically real-life now</a>). </p><p>Basically, TurboQuant is able to compress AI’s working memory by at least 6x and make it 8x faster — all with no accuracy loss. On paper, this should ease the overwhelming demand on fast memory processing (which companies have been trying to solve by hoovering up all the DRAM it can possibly get) by making the very thing they’re trying to do so much smaller.</p><p>You saw the impact as <a href="https://www.investing.com/news/stock-market-news/mu-wdc-sndk-fall-why-googles-turboquant-is-rattling-memory-stocks-4580176" target="_blank">memory company stocks fell</a> immediately following this announcement. There’s of course a lot more technical information to this, but I’m just summarizing the impact here.</p><h2 id="skeptical-take-jevons-paradox">🤔  Skeptical take: Jevons paradox</h2><p>In economics, Jevons Paradox argues the opposite of this. When a resource becomes more efficient to use, demand actually increases rather than decreases. So if TurboQuant compresses AI memory by over 6x, every company on earth could very well want to run over 6x more of it. </p><p>Instead of thawing high prices, ruthless efficiency like this could very well trigger a second, even larger wave of hardware buying and keep prices high well into next year.</p><h2 class="article-body__section" id="section-ok-time-for-plan-b"><span>OK, time for Plan B</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="o9hYWLwtpEi4k5Fj4Xhftb" name="Acer Predator Helios Neo 16S AI" alt="Acer Predator Helios Neo 16S AI" src="https://cdn.mos.cms.futurecdn.net/o9hYWLwtpEi4k5Fj4Xhftb-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I found this out while <a href="https://www.tomsguide.com/computing/hardware/you-have-to-work-around-the-supply-chain-acer-exec-on-plans-to-bypass-the-big-three-to-save-us-from-the-ram-price-crisis">speaking to Acer’s EMEA Marketing Director, Manuel Linning</a>, earlier this year, and the switch is incoming. </p><p>“Since this is an industry issue, we're all dealing with it in some different ways,” Linning commented. “What we're doing is we're looking at multiple smaller vendors, and also new vendors.”</p><p>These are Chinese memory producers CXMT and YMTC, and <a href="https://unn.ua/en/news/hp-dell-acer-and-asus-consider-using-chinese-memory-chips-amid-supply-crisis-media" target="_blank">sources told UNN</a> that Acer, alongside Asus, Dell and HP have been testing their silicon for the past few months.</p><p>And in talking to other experts in the area, I’ve found out that these companies are close to certifying these vendors. The transition is happening sooner than you think, and it’s going to change the 'Made in' sticker on your next laptop.</p><h2 id="skeptical-take-the-quality-lottery">🤔  Skeptical take: The quality lottery</h2><p>When alternative supply chains are brought in to keep prices low, the consumer can often pay in reliability. There’s a restaurant near me that has managed to keep their prices the same amid inflation, but over time the quality has fallen off. The same could very well happen here with higher memory failure rates and shorter life spans.</p><p>So sure, that laptop price could be $499, but we may be entering an era where you enter a lottery of which factory your laptop’s RAM came from.</p><h2 class="article-body__section" id="section-an-omen-not-a-guarantee"><span>An omen, not a guarantee</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="qWENtNXiUrQSTDCnjxxdJU" name="iBuyPower RDY Element 9 Pro R07" alt="iBuyPower RDY Element 9 Pro R07" src="https://cdn.mos.cms.futurecdn.net/qWENtNXiUrQSTDCnjxxdJU-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>That being said, this is the first slither of good news that we’ve had in months, and the idea of a hardware thaw is definitely real. However, the path from a courtroom to a price tag in Best Buy is long and riddled with inventory that’s already been priced in at 2025’s peak rates, inevitable appeal battles over that $130 billion refund, and the looming shadow of Jevons Paradox.</p><p><strong>My advice is simple: hold until August 2026. </strong>If you can wait until the end of back-to-school sales, do it. By then, we’ll know if refunds are happening, the RAM bypass has been successful, whether the consumer shield is holding up, and most importantly, whether the manufacturers are willing to share those wins with you.</p><p>We aren’t seeing a fire sale just yet, but the fever has officially broken.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-egPYaW"></div>                            </div>                            <script src="https://kwizly.com/embed/egPYaW.js" async></script><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/gaming-desktops/my-favorite-pre-built-gaming-pc-is-usd400-off-and-its-beating-the-ram-price-crisis">I test gaming PCs for a living — this $400-off deal feels like getting away with something</a></li><li><a href="https://www.tomsguide.com/computing/macbooks/can-macbook-neo-run-windows-11-better-than-a-windows-laptop-yes-but-theres-a-huge-catch">Can the MacBook Neo run Windows 11? Yes, but there's a huge catch</a></li><li><a href="https://www.tomsguide.com/computing/routers/buying-a-new-wi-fi-router-is-about-to-get-even-more-complicated-after-new-fcc-ban-but-you-shouldnt-be-worried-heres-why">FCC just banned sale of all Wi-Fi routers made outside US — what you need to know</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/hardware/i-thought-the-2026-hardware-crisis-would-spike-laptop-prices-but-here-are-4-reasons-they-could-actually-get-cheaper</link>
                                                                            <description>
                            <![CDATA[ I’ve been dreading the 2026 hardware crisis, but a $130B tariff refund and a new "Consumer Shield" might just save our wallets. Here is why the fever has finally broken. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">kWxisg2ZHzwqvnXn7EQSbn</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/4YibtQAHoKKwDCm6y8NNaM-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 27 Mar 2026 12:28:32 +0000</pubDate>                                                                                                                                <updated>Sat, 28 Mar 2026 05:53:09 +0000</updated>
                                                                                                                                            <category><![CDATA[Computing Hardware]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jason England ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/v4fSq5U4uZUEtGY2BwNuJ6-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jason brings a decade of tech and gaming journalism experience to his role as a Managing Editor of Computing at Tom&#039;s Guide. He has previously written for Laptop Mag, Tom&#039;s Hardware, Kotaku, Stuff and BBC Science Focus. In his spare time, you&#039;ll find Jason looking for good dogs to pet or thinking about eating pizza if he isn&#039;t already.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/4YibtQAHoKKwDCm6y8NNaM-1920-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[RAM stick on US dollars]]></media:description>                                                            <media:text><![CDATA[RAM stick on US dollars]]></media:text>
                                <media:title type="plain"><![CDATA[RAM stick on US dollars]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/4YibtQAHoKKwDCm6y8NNaM-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>For the past few months, buying a PC has felt like trying to buy a house in a hurricane — prices are up and supply is down. The <a href="https://www.tomsguide.com/computing/ram-price-crisis-2026-everything-you-need-to-know">RAM price crisis</a> has been hitting us hard, and while it’s easy to see how bleak the situation is (I see it too), I want to talk about how in March 2026, I believe the atmospheric pressure is finally shifting.</p><p>I looked on <a href="https://pcpartpicker.com/product/kTJp99/corsair-vengeance-rgb-32-gb-2-x-16-gb-ddr5-6000-cl36-memory-cmh32gx5m2e6000c36" target="_blank" rel="nofollow">PC Part Picker</a> and found that the average price of DDR5 had dropped slightly. Yes, it’s the smallest of margins compared to the lows before this all kicked off, but I’m looking for any good news from anywhere. This got me going down a rabbit hole of research and what I found gave me hope.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1864px;"><p class="vanilla-image-block" style="padding-top:54.77%;"><img id="oKCZe8jseN5GW6tRmLWKHD" name="PC Part Picker" alt="PC Part Picker" src="https://cdn.mos.cms.futurecdn.net/oKCZe8jseN5GW6tRmLWKHD-1920-80.png" mos="" align="middle" fullscreen="" width="1864" height="1021" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: PC Part Picker)</span></figcaption></figure><p>Thanks to a perfect storm of a massive legal victory for importers and a sudden pivot in Washington trade policy, this hyper-inflation that defined the hardware dark age of early 2026 is showing its first real cracks. We aren’t out of the woods yet, and there are plenty of reasons to be skeptical (some I’ll go into here). But I look around and I see a hardware thaw beginning.</p><h2 class="article-body__section" id="section-uncle-sam-owes-big-tech-130-billion-and-you-might-get-the-change"><span>Uncle Sam owes Big Tech $130 billion — and you might get the change</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.20%;"><img id="oqbArUbsVDLnAzz3dQnHMF" name="white house.jpg" alt="The White House" src="https://cdn.mos.cms.futurecdn.net/oqbArUbsVDLnAzz3dQnHMF-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1124" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>On <a href="https://www.reuters.com/world/us/judge-orders-trump-administration-finalize-goods-entering-us-without-assessing-2026-03-04/" target="_blank">March 4, 2026</a>, Judge Richard Eaton of The U.S. Court of International Trade issued a sweeping ruling after the Supreme Court found tariffs to be unconstitutional — saying that “every single cent” of the roughly $130 billion to $175 billion collected must be returned to importers.</p><p>This would be a massive injection of money from U.S. Customs and Border Protection (CBP) to companies like Asus, Dell, Nvidia and HP. The <a href="https://www.pwc.com/ca/en/services/tax/publications/tax-insights/us-court-ieepa-tariff-refunds-2026.html" target="_blank">CBP is currently building an automated mass-refund tool</a>, which the court was told should be ready by mid-April 2026.</p><p>On paper, that could mean companies that were pricing in these taxes to protect their margins will have a massive cushion of cash returning to their balance sheets — potentially leading to lower prices.</p><h2 id="skeptical-take-lower-ceiling-but-higher-floor">🤔 Skeptical take: Lower ceiling, but higher floor?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="G2aXiJwBvFyiV7ByRXTLHm" name="Asus zenbook a14" alt="Asus zenbook a14" src="https://cdn.mos.cms.futurecdn.net/G2aXiJwBvFyiV7ByRXTLHm-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Now before you go thinking that refund check is in the mail, the Department of Justice is already setting up to appeal the scope of this ruling. The argument being that only companies who filed individual lawsuits (not every importer) should get paid.</p><p>And even if this automated mass-refund tool goes live and companies line up to use it, legal experts warn that these requests could be tied up in courts for up to four years. </p><p>Plus, there isn’t a legal requirement for a company to pass a tax refund down to the consumer. As Asus’ Director of Technical Marketing, Sascha Krohn said when we asked about the <a href="https://www.tomsguide.com/computing/asus-says-memory-shortage-should-start-to-normalize-by-2027-but-nobody-wants-to-be-the-first-one-to-lower-prices">memory inflation</a>: “nobody wants to be the first one to lower prices.” Maybe companies simply use this to pad their bottom lines after a rough year.</p><p>Oh, and that’s before even mentioning the administration invoking Section 122 — a temporary 10-15% global surcharge to address the balance-of-payments here.</p><p>So while 10% is certainly better than 25%, and I do think that will lower the ceiling of high-end prices, that floor of lowest prices won’t be lowered back to the beforetimes.</p><h2 class="article-body__section" id="section-the-ai-tax-is-getting-a-divorce-from-your-gaming-rig"><span>The AI Tax is getting a divorce from your gaming rig</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="HGFgk2eqboWyZ8DL6AtZZU" name="AWS data center" alt="AWS data center" src="https://cdn.mos.cms.futurecdn.net/HGFgk2eqboWyZ8DL6AtZZU-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: <a href="https://www.aboutamazon.com/news/aws/aws-data-centers-ai-factories" target="_blank" rel="nofollow">Amazon</a>)</span></figcaption></figure><p>This goes to the <a href="https://www.federalregister.gov/documents/2026/01/20/2026-01052/adjusting-imports-of-semiconductors-semiconductor-manufacturing-equipment-and-their-derivative" target="_blank">Presidential Proclamation 11002</a> — signed on January 14, 2026. On the face of it, the headline you’ll have probably read was about a massive 25% tariff on high-end AI silicon. But scratch beneath the surface, and you’ll find a loophole in new White House policies under <a href="https://content.govdelivery.com/bulletins/gd/USDHSCBP-4047318" target="_blank">Section 232</a>.</p><p>This exemption covers “Non-Data Center Consumer Applications,” and it’s a big one. A “get out of jail free” card for gaming PCs, laptops and consoles, which could lead to a significant K-shaped correction. </p><p>Do you see what this means? Enterprise and Consumer Computing are getting a silicon divorce, so while the enterprise side of things remains at premium prices, a carve-out of the consumer end could prevent the total disappearance of cheap laptops and mid-range GPUs.</p><h2 id="skeptical-take-a-technicality">🤔  Skeptical take: A technicality?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="riKZ3Nfv5MPHKGrX3FPERb" name="RTX 50 series GPUs" alt="RTX 50 series GPUs" src="https://cdn.mos.cms.futurecdn.net/riKZ3Nfv5MPHKGrX3FPERb-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>So that consumer shield sounds great on paper, but the technical definitions are rather thin — exempting products based on Total Processing Performance (TPP) and DRAM bandwidth. For full context, here are the triggers for a 25% tariff:</p><ul><li><strong>Tier A:</strong> A Total Processing Performance (TPP) between <strong>14,000 and 17,500</strong> AND a DRAM bandwidth between <strong>4,500 and 5,000 GB/s</strong>.</li><li><strong>Tier B:</strong> A TPP between <strong>20,800 and 21,100</strong> AND a DRAM bandwidth between <strong>5,800 and 6,200 GB/s</strong>.</li></ul><p>For anyone keeping track, the RTX 5090 isn’t just “close” to these triggers, it has actually smashed through the floor of the restricted category of TPP. Of course there’s a memory bandwidth buffer and vastly lower interconnect speeds — saving it for not.</p><p>But the real risk here is of performance creep breaking that consumer shield. Let’s take Nvidia for example. The RTX 50-series is the first generation where the gaming GPU and the AI GPU are <em>technically </em>the same level of power. </p><p>If the next versions (be it RTX 50 SUPER or RTX 60 series) increase memory bandwidth or add even better AI-specialized Tensor cores that push that TPP higher, they could meet both criteria for the hit list. And at that point, the likes of Nvidia and AMD have two choices:</p><ul><li><strong>“Nerf” the cards: </strong>Intentionally slow them down to stay under the limit (think like the Nvidia RTX 4090D that was released for the Chinese market).</li><li><strong>Lobby aggressively: </strong>Petition hard for that TPP ceiling to be raised as technology advances.</li></ul><p>Put simply, while your gaming rig is safe right now, we could be one breakthrough away from the government deciding your GPU’s path tracing capabilities are a national security asset.</p><h2 class="article-body__section" id="section-the-deepseek-effect-continues"><span>The DeepSeek effect continues</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="tRgDGjQNjKJ855Dn8KJApR" name="GettyImages-2195703819" alt="The DeepSeek logo seen on the silhouette of a smartphone" src="https://cdn.mos.cms.futurecdn.net/tRgDGjQNjKJ855Dn8KJApR-1920-80.jpg" mos="" align="middle" fullscreen="" width="4000" height="2250" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Getty Images)</span></figcaption></figure><p>The reason why <a href="https://www.tomsguide.com/ai/it-doesnt-matter-if-deepseek-copied-openai-the-damage-has-already-been-done-in-the-ai-arms-race">DeepSeek R1 shocked the entire market</a> early last year is not because of capability, it was efficiency and low cost. <a href="https://techcrunch.com/2026/03/25/google-turboquant-ai-memory-compression-silicon-valley-pied-piper/" target="_blank">Google recently announced TurboQuant</a>, which is being called the “Pied Piper moment” for AI (<a href="https://www.tomsguide.com/computing/aws-suffered-at-least-two-outages-caused-by-ai-tools-and-now-im-convinced-were-living-inside-a-silicon-valley-episode">“Silicon Valley” is basically real-life now</a>). </p><p>Basically, TurboQuant is able to compress AI’s working memory by at least 6x and make it 8x faster — all with no accuracy loss. On paper, this should ease the overwhelming demand on fast memory processing (which companies have been trying to solve by hoovering up all the DRAM it can possibly get) by making the very thing they’re trying to do so much smaller.</p><p>You saw the impact as <a href="https://www.investing.com/news/stock-market-news/mu-wdc-sndk-fall-why-googles-turboquant-is-rattling-memory-stocks-4580176" target="_blank">memory company stocks fell</a> immediately following this announcement. There’s of course a lot more technical information to this, but I’m just summarizing the impact here.</p><h2 id="skeptical-take-jevons-paradox">🤔  Skeptical take: Jevons paradox</h2><p>In economics, Jevons Paradox argues the opposite of this. When a resource becomes more efficient to use, demand actually increases rather than decreases. So if TurboQuant compresses AI memory by over 6x, every company on earth could very well want to run over 6x more of it. </p><p>Instead of thawing high prices, ruthless efficiency like this could very well trigger a second, even larger wave of hardware buying and keep prices high well into next year.</p><h2 class="article-body__section" id="section-ok-time-for-plan-b"><span>OK, time for Plan B</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="o9hYWLwtpEi4k5Fj4Xhftb" name="Acer Predator Helios Neo 16S AI" alt="Acer Predator Helios Neo 16S AI" src="https://cdn.mos.cms.futurecdn.net/o9hYWLwtpEi4k5Fj4Xhftb-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I found this out while <a href="https://www.tomsguide.com/computing/hardware/you-have-to-work-around-the-supply-chain-acer-exec-on-plans-to-bypass-the-big-three-to-save-us-from-the-ram-price-crisis">speaking to Acer’s EMEA Marketing Director, Manuel Linning</a>, earlier this year, and the switch is incoming. </p><p>“Since this is an industry issue, we're all dealing with it in some different ways,” Linning commented. “What we're doing is we're looking at multiple smaller vendors, and also new vendors.”</p><p>These are Chinese memory producers CXMT and YMTC, and <a href="https://unn.ua/en/news/hp-dell-acer-and-asus-consider-using-chinese-memory-chips-amid-supply-crisis-media" target="_blank">sources told UNN</a> that Acer, alongside Asus, Dell and HP have been testing their silicon for the past few months.</p><p>And in talking to other experts in the area, I’ve found out that these companies are close to certifying these vendors. The transition is happening sooner than you think, and it’s going to change the 'Made in' sticker on your next laptop.</p><h2 id="skeptical-take-the-quality-lottery">🤔  Skeptical take: The quality lottery</h2><p>When alternative supply chains are brought in to keep prices low, the consumer can often pay in reliability. There’s a restaurant near me that has managed to keep their prices the same amid inflation, but over time the quality has fallen off. The same could very well happen here with higher memory failure rates and shorter life spans.</p><p>So sure, that laptop price could be $499, but we may be entering an era where you enter a lottery of which factory your laptop’s RAM came from.</p><h2 class="article-body__section" id="section-an-omen-not-a-guarantee"><span>An omen, not a guarantee</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="qWENtNXiUrQSTDCnjxxdJU" name="iBuyPower RDY Element 9 Pro R07" alt="iBuyPower RDY Element 9 Pro R07" src="https://cdn.mos.cms.futurecdn.net/qWENtNXiUrQSTDCnjxxdJU-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>That being said, this is the first slither of good news that we’ve had in months, and the idea of a hardware thaw is definitely real. However, the path from a courtroom to a price tag in Best Buy is long and riddled with inventory that’s already been priced in at 2025’s peak rates, inevitable appeal battles over that $130 billion refund, and the looming shadow of Jevons Paradox.</p><p><strong>My advice is simple: hold until August 2026. </strong>If you can wait until the end of back-to-school sales, do it. By then, we’ll know if refunds are happening, the RAM bypass has been successful, whether the consumer shield is holding up, and most importantly, whether the manufacturers are willing to share those wins with you.</p><p>We aren’t seeing a fire sale just yet, but the fever has officially broken.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-egPYaW"></div>                            </div>                            <script src="https://kwizly.com/embed/egPYaW.js" async></script><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/gaming-desktops/my-favorite-pre-built-gaming-pc-is-usd400-off-and-its-beating-the-ram-price-crisis">I test gaming PCs for a living — this $400-off deal feels like getting away with something</a></li><li><a href="https://www.tomsguide.com/computing/macbooks/can-macbook-neo-run-windows-11-better-than-a-windows-laptop-yes-but-theres-a-huge-catch">Can the MacBook Neo run Windows 11? Yes, but there's a huge catch</a></li><li><a href="https://www.tomsguide.com/computing/routers/buying-a-new-wi-fi-router-is-about-to-get-even-more-complicated-after-new-fcc-ban-but-you-shouldnt-be-worried-heres-why">FCC just banned sale of all Wi-Fi routers made outside US — what you need to know</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 'I think we've achieved AGI' — Nvidia's CEO believes we've finally reached artificial general intelligence ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Nvidia and its CEO Jensen Huang have been in the news a lot lately.</p><p>Gamers haven’t been too kind to the massive tech company, with negative reactions flooding the comments section underneath the Nvidia DLSS 5 <a href="https://www.youtube.com/watch?v=dJACkKbN-Eo" target="_blank">reveal video</a>.  In response, CEO Jensen Huang pushed back during a press Q&A at this year’s GPU Technology Conference, saying gamers are “completely wrong” about the backlash. Huang doubled down in a later interview with “Mad Money’s” Jim Cramer and championed the open-source autonomous AI called OpenClaw, calling it “definitely the next <a href="https://www.tomsguide.com/ai/i-tried-to-break-chatgpt-5-4-with-7-prompts-heres-what-happened">ChatGPT</a>.”</p><p>Huang has popped up on everyone’s tech-themed timelines again to make another bold assertion during an appearance on Lex Fridman’s podcast. And as expected, it speaks to an evolved stage of AI that could even do his job and run an entire multi-trillion-dollar company.</p><h2 id="huang-believes-artificial-general-intelligence-has-finally-arrived">Huang believes artificial general intelligence has finally arrived</h2><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/vif8NQcjVf0" allowfullscreen></iframe></div></div><p>When asked when AGI (artificial general intelligence) might arrive, Nvidia CEO Jensen Huang didn’t hesitate: “I think it’s now. I think we’ve achieved AGI.”</p><p>Put simply, AGI refers to AI that can match — or even surpass — human intelligence across a wide range of cognitive tasks. It’s not just about answering questions or generating text; it’s about systems that can learn, reason and apply knowledge the way humans do.</p><p>Huang suggested this shift could show up in unexpected ways, pointing to the possibility of a breakout app or digital personality. “I wouldn’t be surprised if some social thing happened — like a digital influencer or some kind of app that suddenly becomes an instant success,” he said.</p><p>Still, he stopped short of claiming AI is ready to fully replace human decision-making. Huang acknowledged that today’s AI agents aren’t capable of running a company like Nvidia on their own. “A lot of people use it for a couple of months, and it kind of dies away,” he said. “Now, the odds of 100,000 of those agents building NVIDIA is zero percent.”</p><p>That stance marks a shift from his earlier timeline. At the 2023 New York Times DealBook Summit, Huang said AGI was still about five years away and would eventually be able to outperform humans on intelligence tests.</p><h2 id="bottom-line-3">Bottom line</h2><p>Huang is obviously all-in on AI. With his most recent support of <a href="https://www.tomsguide.com/ai/openclaw-is-the-viral-ai-assistant-that-lives-on-your-device-what-you-need-to-know">OpenClaw</a>, Nvidia's reveal of DLSS 5, and the company’s overall implementation of Agentic AI, it’s clear that he is looking to further modernize and evolve the trending technology. </p><p>Whether or not AGI is truly here and capable of handling the lofty responsibilities that humans are usually entrusted with is not known. Seeing as how Huang walked back his major statement about AGI a bit, it seems that even he thinks we’re not quite there just yet.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom’s Guide</span></h3><ul><li><a href="https://www.tomsguide.com/ai/this-is-definitely-the-next-chatgpt-why-nvidias-ceo-is-betting-big-on-openclaw" target="_blank"><strong>'This is definitely the next ChatGPT' — why Nvidia's CEO is betting big on OpenClaw</strong></a></li><li><a href="https://www.tomsguide.com/ai/people-have-painted-a-doomer-narrative-nvidia-ceo-says-we-shouldnt-talk-badly-about-ai-and-heres-why" target="_blank"><strong>'People have painted a doomer narrative': Nvidia CEO says we shouldn't talk badly about AI, and here’s why</strong></a></li><li><a href="https://www.tomsguide.com/ai/the-way-that-we-see-it-is-that-ai-is-a-tool-to-help-game-developers-make-better-games-razer-ceo-min-liang-tan-champions-ai-in-game-development" target="_blank"><strong>'The way that we see it is that AI is a tool to help game developers make better games': Razer CEO Min-Liang Tan champions AI in game development</strong></a></li></ul><div data-widget-type="comparison" data-model-name="Apple MacBook Neo"></div> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/ai/i-think-weve-achieved-agi-nvidias-ceo-believes-weve-finally-achieved-artificial-general-intelligence</link>
                                                                            <description>
                            <![CDATA[ During a recent podcast interview with Lex Fridman, Nvidia CEO James Huang provided a bold statement regarding the arrival of artificial general intelligence ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">QzEohpJeCzvF8Mm2mewgsP</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/MFifoDjTTinJpLk8syk8pj-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 24 Mar 2026 15:15:11 +0000</pubDate>                                                                                                                                <updated>Tue, 24 Mar 2026 17:11:02 +0000</updated>
                                                                                                                                            <category><![CDATA[AI]]></category>
                                                                                                                    <dc:creator><![CDATA[ Elton Jones ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/qoRE8e6t2nzaNKAhJGDv7g-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/MFifoDjTTinJpLk8syk8pj-1920-80.jpg">
                                                            <media:credit><![CDATA[Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Jensen Huang at CES 2026]]></media:description>                                                            <media:text><![CDATA[Jensen Huang at CES 2026]]></media:text>
                                <media:title type="plain"><![CDATA[Jensen Huang at CES 2026]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/MFifoDjTTinJpLk8syk8pj-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Nvidia and its CEO Jensen Huang have been in the news a lot lately.</p><p>Gamers haven’t been too kind to the massive tech company, with negative reactions flooding the comments section underneath the Nvidia DLSS 5 <a href="https://www.youtube.com/watch?v=dJACkKbN-Eo" target="_blank">reveal video</a>.  In response, CEO Jensen Huang pushed back during a press Q&A at this year’s GPU Technology Conference, saying gamers are “completely wrong” about the backlash. Huang doubled down in a later interview with “Mad Money’s” Jim Cramer and championed the open-source autonomous AI called OpenClaw, calling it “definitely the next <a href="https://www.tomsguide.com/ai/i-tried-to-break-chatgpt-5-4-with-7-prompts-heres-what-happened">ChatGPT</a>.”</p><p>Huang has popped up on everyone’s tech-themed timelines again to make another bold assertion during an appearance on Lex Fridman’s podcast. And as expected, it speaks to an evolved stage of AI that could even do his job and run an entire multi-trillion-dollar company.</p><h2 id="huang-believes-artificial-general-intelligence-has-finally-arrived">Huang believes artificial general intelligence has finally arrived</h2><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/vif8NQcjVf0" allowfullscreen></iframe></div></div><p>When asked when AGI (artificial general intelligence) might arrive, Nvidia CEO Jensen Huang didn’t hesitate: “I think it’s now. I think we’ve achieved AGI.”</p><p>Put simply, AGI refers to AI that can match — or even surpass — human intelligence across a wide range of cognitive tasks. It’s not just about answering questions or generating text; it’s about systems that can learn, reason and apply knowledge the way humans do.</p><p>Huang suggested this shift could show up in unexpected ways, pointing to the possibility of a breakout app or digital personality. “I wouldn’t be surprised if some social thing happened — like a digital influencer or some kind of app that suddenly becomes an instant success,” he said.</p><p>Still, he stopped short of claiming AI is ready to fully replace human decision-making. Huang acknowledged that today’s AI agents aren’t capable of running a company like Nvidia on their own. “A lot of people use it for a couple of months, and it kind of dies away,” he said. “Now, the odds of 100,000 of those agents building NVIDIA is zero percent.”</p><p>That stance marks a shift from his earlier timeline. At the 2023 New York Times DealBook Summit, Huang said AGI was still about five years away and would eventually be able to outperform humans on intelligence tests.</p><h2 id="bottom-line-3">Bottom line</h2><p>Huang is obviously all-in on AI. With his most recent support of <a href="https://www.tomsguide.com/ai/openclaw-is-the-viral-ai-assistant-that-lives-on-your-device-what-you-need-to-know">OpenClaw</a>, Nvidia's reveal of DLSS 5, and the company’s overall implementation of Agentic AI, it’s clear that he is looking to further modernize and evolve the trending technology. </p><p>Whether or not AGI is truly here and capable of handling the lofty responsibilities that humans are usually entrusted with is not known. Seeing as how Huang walked back his major statement about AGI a bit, it seems that even he thinks we’re not quite there just yet.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom’s Guide</span></h3><ul><li><a href="https://www.tomsguide.com/ai/this-is-definitely-the-next-chatgpt-why-nvidias-ceo-is-betting-big-on-openclaw" target="_blank"><strong>'This is definitely the next ChatGPT' — why Nvidia's CEO is betting big on OpenClaw</strong></a></li><li><a href="https://www.tomsguide.com/ai/people-have-painted-a-doomer-narrative-nvidia-ceo-says-we-shouldnt-talk-badly-about-ai-and-heres-why" target="_blank"><strong>'People have painted a doomer narrative': Nvidia CEO says we shouldn't talk badly about AI, and here’s why</strong></a></li><li><a href="https://www.tomsguide.com/ai/the-way-that-we-see-it-is-that-ai-is-a-tool-to-help-game-developers-make-better-games-razer-ceo-min-liang-tan-champions-ai-in-game-development" target="_blank"><strong>'The way that we see it is that AI is a tool to help game developers make better games': Razer CEO Min-Liang Tan champions AI in game development</strong></a></li></ul><div data-widget-type="comparison" data-model-name="Apple MacBook Neo"></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ What is Nvidia DLSS? Explaining the AI tech transforming PC gaming — and why it’s getting controversial ]]></title>
                                                                                                <dc:content><![CDATA[ <p>AI is not just a chatbot you talk to — it’s the primary driver of modern PC gaming performance. Leading this charge is Nvidia’s DLSS, which can unlock high-end fluid visuals without needing top-tier hardware (provided you use it right).</p><p>And that’s why I’m here to break it all down. What is DLSS? How does it work? How can you make the most of it? And what is the deal with the <a href="https://www.tomsguide.com/computing/gpus/deciphering-dlss-5-pc-gaming-breakthrough-or-nvidias-ai-slop-era">DLSS 5</a> controversy? Let’s get into it.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/1-rJcKHc5js" allowfullscreen></iframe></div></div><h2 class="article-body__section" id="section-what-is-dlss"><span>What is DLSS?</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="4XnUsA7mPWrUe6yrBWewQX" name="Nvidia DLSS 4.5" alt="Nvidia DLSS 4.5" src="https://cdn.mos.cms.futurecdn.net/4XnUsA7mPWrUe6yrBWewQX-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Deep Learning Super Sampling (or DLSS for short) first debuted in 2018, and it’s a combination of AI tricks to boost a game’s performance — allowing players to prioritize either high-end visuals, faster frame rates or a balance of both. Neural networks have been fed millions of hours of gameplay and trained on Nvidia’s supercomputers to deliver this.</p><p>Back in 2017, Nvidia saw an AI revolution coming and introduced Tensor Cores into its GPUs. These are engineered to be the bedrock of deep learning and inference, which can essentially allow your graphics card to work <em>smarter </em>not <em>harder </em>in rendering games</p><p>Over the years, many layers have been added onto this AI-fueled cake. But at it’s core, DLSS does business in two ways:</p><ul><li><strong>Super Resolution: </strong>Rendering a complex AAA game at full resolution is a taxing ordeal — especially when you throw things like ray tracing into the mix. So with Super Resolution, the GPU renders the game at a lower resolution, uses AI to look at the picture and upscale it to look like native quality. This can massively reduce the hardware strain.</li><li><strong>Frame generation: </strong>To smooth out the frame rate, DLSS is able to analyze every frame generated by the GPU and fill in the gaps with AI frames. With <a href="https://www.tomsguide.com/gaming/pc-gaming/deciphering-dlss-4-5-i-tested-nvidias-new-upscaler-and-figured-out-when-to-use-model-l-or-m">DLSS 4.5</a>, Nvidia is able to inject up to six additional frames.</li></ul><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/8Ycy1ddgRfA" allowfullscreen></iframe></div></div><p>Beyond that, there are additional things Nvidia has thrown into the mix, such as:</p><ul><li><strong>Dynamic Frame Generation:</strong> Proactively adjusting how many frames it adds to adhere to the maximum refresh rate of your monitor</li><li><strong>Ray Reconstruction: </strong>Instead of having the GPU brute force all the light and reflection calculations in path tracing (a crazy intensive task), Nvidia’s AI model replaces this with a neural network trained on how light works in the real world to do all those calculations instead.</li><li><strong>Nvidia Reflex: </strong>We’ll talk more about latency in the next section, but Reflex is a key technology Nvidia introduced to keep games feeling responsive even when stuffed with AI frames.</li></ul><p>And that in a nutshell is DLSS. But just like any technology, you’ll only get the best results if you use it right.</p><h3 class="article-body__section" id="section-how-to-use-dlss-the-right-way"><span>How to use DLSS the right way</span></h3><p>If you’re looking at this thinking “I’ll just turn everything up to max, slap DLSS on it and call it a day,” stop it. That’s like trying to win a F1 race in a minivan just because you put high-performance racing tires on it. </p><p>And as the guy who has tested all the <a href="https://www.tomsguide.com/computing/gpus/best-graphics-cards">best GPUs</a>, I’ve learned a thing or two about how to tame this beast.</p><h2 id="my-super-resolution-preferences">My Super Resolution preferences</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="jpXR575Z9RWmgwAzS34NDL" name="DLSS 4.5" alt="DLSS 4.5" src="https://cdn.mos.cms.futurecdn.net/jpXR575Z9RWmgwAzS34NDL-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Yes, DLSS 4.5 super resolution is capable of some bonkers things (like upscaling a 240p picture to a better-than-expected 4K image). But as a general rule of thumb in real-world gaming, the more “input pixels” the AI has to work with, the more aggressive you can be with upscaling.</p><p>Here are the four DLSS modes you’ll see in your game settings:</p><ul><li><strong>Quality:</strong> This renders the game closest to native resolution (normally around 66-70% of resolution).</li><li><strong>Balanced: </strong>Finding the mix between getting the best possible textures and frame rates, this will render the game at 58% of your targeted resolution.</li><li><strong>Performance: </strong>One step down to maximize frame rate, this will often go for 50% of the resolution.</li><li><strong>Ultra performance:</strong> If you want to go all out on frames, ultra performance will target 33.3% of the total resolution being rendered by the GPU.</li></ul><p>Now I’m about to start talking about three presets here that you can access from the Nvidia app settings. These presets are three different neural networks Team Green has made to fuel its resolution scaling. Here’s a breakdown of them:</p><ul><li><strong>Model K:</strong> This is DLSS 4 and much better-built for quality and balanced DLSS modes</li><li><strong>Model M:</strong> This is DLSS 4.5 with a model tuned for performance mode</li><li><strong>Model L:</strong> This is an offshoot of DLSS 4.5, which is meant for ultra performance mode</li></ul><p>Got that? Good. Now let’s break down which ones are best for you by the resolution you want to play at.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="MmYxFrvrGR2iqT9yD5h2BL" name="DLSS 4.5" alt="DLSS 4.5" src="https://cdn.mos.cms.futurecdn.net/MmYxFrvrGR2iqT9yD5h2BL-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><ul><li><strong>Gaming at 4K? Use Performance (or Balanced) Mode: </strong>In the Nvidia app, this is labeled as Preset M, and in my own testing, I’ve found it to be the sweet spot at 4K. This will typically render a game at 50% of the resolution (1080p), and given how good this model has become over the years, the difference between this and Quality mode is nearly invisible in motion (unless you’re seriously pixel peeping). But at the same time, the FPS gain is massive.</li><li><strong>1440p or 1080p? Stick to Quality: </strong>Turn on Preset K and stick with Quality (or Balanced at a push). Performance or Ultra Performance can lead to some losses of finer details in complex textures like hair or grass — leading to a soft image. For example, Ultra Performance at 1080p would be trying to upscale from as low as 480p.</li></ul><p>Chances are you can get away most of the time with just sticking to Balanced mode. But there are finer tweaks you can make to get even more out of it.</p><h2 id="my-frame-generation-preferences">My Frame Generation preferences</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6016px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="RGqWQD3bCroM47MUEyRY6T" name="Resident Evil Requiem" alt="Resident Evil Requiem" src="https://cdn.mos.cms.futurecdn.net/RGqWQD3bCroM47MUEyRY6T-1920-80.png" mos="" align="middle" fullscreen="" width="6016" height="3384" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>So this is where I get into latency — the difference between how smooth a game <em>looks </em>and how it <em>feels</em>. Let me break it down.</p><p>Let’s say you’ve got a game playing at 30 FPS before you turn on any AI trickery. If you take that number and divide a thousand by it (1,000 ÷ 30), you’ll get the gap between frames which is 33.33 milliseconds. </p><p>Now if I turn on multi-frame generation at 4X and up that to 120 FPS, it’ll <em>look </em>smoother, but game inputs are locked at that 30 FPS, so it won’t <em>feel </em>as smooth. That’s why it’s incredibly important to start with a solid base rate for the game you’re playing <strong>before </strong>turning on frame generation.</p><p>Over my years of PC gaming, I’ve broken it down into three targets in my mind based on what I’m playing to find that right starting point:</p><ul><li><strong>If your game is a slower-paced single-player title, start at 40 FPS: </strong>Think like linear story-driven games where twitch reflexes are not needed. RPGs like <a href="https://www.tomsguide.com/opinion/baldurs-gate-3-is-a-love-letter-to-dungeons-and-dragons-and-its-all-i-want-to-play-right-now">Baldur’s Gate 3</a> are great examples of this, and if the game you want to play falls in this region, you don’t need a lightning fast base frame rate and can focus on upping the graphics settings.</li><li><strong>If your game requires faster reflexes, aim for at least 60 FPS: </strong>Whether it’s racing in <a href="https://www.tomsguide.com/reviews/forza-horizon-5">Forza Horizon 5</a> or needing to perfectly time parries in <a href="https://www.tomsguide.com/gaming/playstation/black-myth-wukong-is-another-must-play-ps5-game-and-xbox-is-missing-out">Black Myth: Wukong</a>, if faster reflexes are needed, you’ve gotta close that gap between frames rendered before stuffing more AI frames in between them. This would reduce frametime to 16.67 milliseconds — a nice base to build on.</li><li><strong>If you’re in seriously competitive multiplayer, either don’t use it or aim for 120 FPS: </strong>A sub 10 millisecond gap between frames is a critical helping hand to being competitive in online lobbies. If you’re particularly clutch and don’t want a single bit of AI trickery getting in your way, don’t use frame generation and focus on turning your settings down instead. But if frame gen is OK, start with a 120 FPS base.</li></ul><h2 class="article-body__section" id="section-dlss-5-controversy-explained"><span>DLSS 5 controversy explained</span></h2><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/dJACkKbN-Eo" allowfullscreen></iframe></div></div><p>So now that you’ve got a grip on how to best use DLSS in its current form. Let’s look at where Nvidia’s AI tech is going, because <a href="https://www.tomsguide.com/computing/gpus/deciphering-dlss-5-pc-gaming-breakthrough-or-nvidias-ai-slop-era">DLSS 5</a> has caused quite a stir!</p><p>Coming this fall, the fifth generation goes beyond the “predictive” modeling of resolution scaling and frame generation, and fuses it with the “probabilistic” elements of generative AI. CEO Jensen Huang calls it the <a href="https://www.tomsguide.com/computing/hardware/nvidia-just-announced-dlss-5-and-its-reinventing-computer-graphics-once-again">“GPT moment for graphics,”</a> and this comes down to real-time neural rendering.</p><p>Basically, DLSS 5 looks at a game on a frame-by-frame basis, and rather than trying to “show you the game better,” it’s now aiming to “show you a better version of the game.” And the results of this pursuit for extreme photorealism is a bridging of the uncanny valley that has the gaming community worried. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/pJdFoN8v5B2sbEQGuwt54D-1920-80.jpg" alt="DLSS 5" /><figcaption><small role="credit">Nvidia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/xargW55nJBhGzLt6PbXw6D-1920-80.jpg" alt="DLSS 5" /><figcaption><small role="credit">Nvidia</small></figcaption></figure></figure><p>Of course, we’re only looking at very small slithers of demos of an early build, but as you can see from certain screenshots, it looks as if the model is adding details that weren’t there originally — like additional hair, fuller lips or a sharper jawline. </p><p>There’s changes being made to the cinematic lighting and material depth too, which all contribute to another breakthrough, but one that developers are going to have to figure out the right way to use. Nvidia confirms this is an early build of DLSS 5, and probably with sliders turned all the way to max. So between now and the fall, devs will tune it however they wish.</p><h2 class="article-body__section" id="section-outlook"><span>Outlook</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="QCKTTLwmSEEx5S2XAMBXYC" name="RTX 5070 vs RTX 5070 Ti" alt="RTX 5070 vs RTX 5070 Ti" src="https://cdn.mos.cms.futurecdn.net/QCKTTLwmSEEx5S2XAMBXYC-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>It’s not been the smoothest of rides for Nvidia’s DLSS. With each new version, there’s been a backlash of some sort. But every single time, it becomes the default and if you use this technology the right way, it can unlock gaming experiences unlike anything you’d see elsewhere.</p><p>Because more and more, it’s becoming abundantly clear that we’re reaching the limits of how many transistors we can stuff on a chip to make these things work through hardware. So in a moment like this, AI is being used to continue the march forward.</p><p>Is DLSS 5 going to be a moment of overreach? Potentially, but then again this is completely controllable by developers who will hopefully find that right balance. But for the PC gamer of today, DLSS is an essential tool in your arsenal that when tamed can be a breakthrough.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/gpus/i-went-eyes-on-with-nvidias-dlss-4-5-dynamic-multi-frame-generation-launching-march-31-and-its-a-game-changer">I went eyes-on with Nvidia’s DLSS 4.5 Dynamic Multi-Frame Generation launching March 31 — and it’s a game-changer</a></li><li><a href="https://www.tomsguide.com/gaming/pc-gaming/nvidia-just-revealed-3-big-upgrades-to-its-geforce-now-cloud-gaming-service-heres-whats-new">Nvidia just revealed 3 big upgrades to its GeForce Now cloud gaming service — here's what's new</a></li><li><a href="https://www.tomsguide.com/computing/macbooks/we-just-ran-cyberpunk-2077-and-resident-evil-4-remake-on-the-macbook-neo-heres-what-happened">Testing the MacBook Neo: Can an iPhone chip really run Cyberpunk 2077?</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/gpus/what-is-nvidia-dlss-explaining-the-ai-tech-transforming-pc-gaming-and-why-its-getting-controversial</link>
                                                                            <description>
                            <![CDATA[ What is Nvidia DLSS? Learn how to master Super Resolution and Frame Generation to boost your PC's performance, and discover why the new DLSS 5 is sparking controversy in the gaming community. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Kw4yuK4Xmm6Jb9VSDDnEsF</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/jynyHynRrJqeZnrVF22ueL-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 20 Mar 2026 11:47:10 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[GPUs]]></category>
                                                    <category><![CDATA[PC Gaming]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Computing Hardware]]></category>
                                                    <category><![CDATA[Gaming]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jason England ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/v4fSq5U4uZUEtGY2BwNuJ6-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jason brings a decade of tech and gaming journalism experience to his role as a Managing Editor of Computing at Tom&#039;s Guide. He has previously written for Laptop Mag, Tom&#039;s Hardware, Kotaku, Stuff and BBC Science Focus. In his spare time, you&#039;ll find Jason looking for good dogs to pet or thinking about eating pizza if he isn&#039;t already.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/jynyHynRrJqeZnrVF22ueL-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Resident Evil Requiem]]></media:description>                                                            <media:text><![CDATA[Resident Evil Requiem]]></media:text>
                                <media:title type="plain"><![CDATA[Resident Evil Requiem]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/jynyHynRrJqeZnrVF22ueL-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>AI is not just a chatbot you talk to — it’s the primary driver of modern PC gaming performance. Leading this charge is Nvidia’s DLSS, which can unlock high-end fluid visuals without needing top-tier hardware (provided you use it right).</p><p>And that’s why I’m here to break it all down. What is DLSS? How does it work? How can you make the most of it? And what is the deal with the <a href="https://www.tomsguide.com/computing/gpus/deciphering-dlss-5-pc-gaming-breakthrough-or-nvidias-ai-slop-era">DLSS 5</a> controversy? Let’s get into it.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/1-rJcKHc5js" allowfullscreen></iframe></div></div><h2 class="article-body__section" id="section-what-is-dlss"><span>What is DLSS?</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="4XnUsA7mPWrUe6yrBWewQX" name="Nvidia DLSS 4.5" alt="Nvidia DLSS 4.5" src="https://cdn.mos.cms.futurecdn.net/4XnUsA7mPWrUe6yrBWewQX-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Deep Learning Super Sampling (or DLSS for short) first debuted in 2018, and it’s a combination of AI tricks to boost a game’s performance — allowing players to prioritize either high-end visuals, faster frame rates or a balance of both. Neural networks have been fed millions of hours of gameplay and trained on Nvidia’s supercomputers to deliver this.</p><p>Back in 2017, Nvidia saw an AI revolution coming and introduced Tensor Cores into its GPUs. These are engineered to be the bedrock of deep learning and inference, which can essentially allow your graphics card to work <em>smarter </em>not <em>harder </em>in rendering games</p><p>Over the years, many layers have been added onto this AI-fueled cake. But at it’s core, DLSS does business in two ways:</p><ul><li><strong>Super Resolution: </strong>Rendering a complex AAA game at full resolution is a taxing ordeal — especially when you throw things like ray tracing into the mix. So with Super Resolution, the GPU renders the game at a lower resolution, uses AI to look at the picture and upscale it to look like native quality. This can massively reduce the hardware strain.</li><li><strong>Frame generation: </strong>To smooth out the frame rate, DLSS is able to analyze every frame generated by the GPU and fill in the gaps with AI frames. With <a href="https://www.tomsguide.com/gaming/pc-gaming/deciphering-dlss-4-5-i-tested-nvidias-new-upscaler-and-figured-out-when-to-use-model-l-or-m">DLSS 4.5</a>, Nvidia is able to inject up to six additional frames.</li></ul><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/8Ycy1ddgRfA" allowfullscreen></iframe></div></div><p>Beyond that, there are additional things Nvidia has thrown into the mix, such as:</p><ul><li><strong>Dynamic Frame Generation:</strong> Proactively adjusting how many frames it adds to adhere to the maximum refresh rate of your monitor</li><li><strong>Ray Reconstruction: </strong>Instead of having the GPU brute force all the light and reflection calculations in path tracing (a crazy intensive task), Nvidia’s AI model replaces this with a neural network trained on how light works in the real world to do all those calculations instead.</li><li><strong>Nvidia Reflex: </strong>We’ll talk more about latency in the next section, but Reflex is a key technology Nvidia introduced to keep games feeling responsive even when stuffed with AI frames.</li></ul><p>And that in a nutshell is DLSS. But just like any technology, you’ll only get the best results if you use it right.</p><h3 class="article-body__section" id="section-how-to-use-dlss-the-right-way"><span>How to use DLSS the right way</span></h3><p>If you’re looking at this thinking “I’ll just turn everything up to max, slap DLSS on it and call it a day,” stop it. That’s like trying to win a F1 race in a minivan just because you put high-performance racing tires on it. </p><p>And as the guy who has tested all the <a href="https://www.tomsguide.com/computing/gpus/best-graphics-cards">best GPUs</a>, I’ve learned a thing or two about how to tame this beast.</p><h2 id="my-super-resolution-preferences">My Super Resolution preferences</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="jpXR575Z9RWmgwAzS34NDL" name="DLSS 4.5" alt="DLSS 4.5" src="https://cdn.mos.cms.futurecdn.net/jpXR575Z9RWmgwAzS34NDL-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Yes, DLSS 4.5 super resolution is capable of some bonkers things (like upscaling a 240p picture to a better-than-expected 4K image). But as a general rule of thumb in real-world gaming, the more “input pixels” the AI has to work with, the more aggressive you can be with upscaling.</p><p>Here are the four DLSS modes you’ll see in your game settings:</p><ul><li><strong>Quality:</strong> This renders the game closest to native resolution (normally around 66-70% of resolution).</li><li><strong>Balanced: </strong>Finding the mix between getting the best possible textures and frame rates, this will render the game at 58% of your targeted resolution.</li><li><strong>Performance: </strong>One step down to maximize frame rate, this will often go for 50% of the resolution.</li><li><strong>Ultra performance:</strong> If you want to go all out on frames, ultra performance will target 33.3% of the total resolution being rendered by the GPU.</li></ul><p>Now I’m about to start talking about three presets here that you can access from the Nvidia app settings. These presets are three different neural networks Team Green has made to fuel its resolution scaling. Here’s a breakdown of them:</p><ul><li><strong>Model K:</strong> This is DLSS 4 and much better-built for quality and balanced DLSS modes</li><li><strong>Model M:</strong> This is DLSS 4.5 with a model tuned for performance mode</li><li><strong>Model L:</strong> This is an offshoot of DLSS 4.5, which is meant for ultra performance mode</li></ul><p>Got that? Good. Now let’s break down which ones are best for you by the resolution you want to play at.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="MmYxFrvrGR2iqT9yD5h2BL" name="DLSS 4.5" alt="DLSS 4.5" src="https://cdn.mos.cms.futurecdn.net/MmYxFrvrGR2iqT9yD5h2BL-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><ul><li><strong>Gaming at 4K? Use Performance (or Balanced) Mode: </strong>In the Nvidia app, this is labeled as Preset M, and in my own testing, I’ve found it to be the sweet spot at 4K. This will typically render a game at 50% of the resolution (1080p), and given how good this model has become over the years, the difference between this and Quality mode is nearly invisible in motion (unless you’re seriously pixel peeping). But at the same time, the FPS gain is massive.</li><li><strong>1440p or 1080p? Stick to Quality: </strong>Turn on Preset K and stick with Quality (or Balanced at a push). Performance or Ultra Performance can lead to some losses of finer details in complex textures like hair or grass — leading to a soft image. For example, Ultra Performance at 1080p would be trying to upscale from as low as 480p.</li></ul><p>Chances are you can get away most of the time with just sticking to Balanced mode. But there are finer tweaks you can make to get even more out of it.</p><h2 id="my-frame-generation-preferences">My Frame Generation preferences</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6016px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="RGqWQD3bCroM47MUEyRY6T" name="Resident Evil Requiem" alt="Resident Evil Requiem" src="https://cdn.mos.cms.futurecdn.net/RGqWQD3bCroM47MUEyRY6T-1920-80.png" mos="" align="middle" fullscreen="" width="6016" height="3384" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>So this is where I get into latency — the difference between how smooth a game <em>looks </em>and how it <em>feels</em>. Let me break it down.</p><p>Let’s say you’ve got a game playing at 30 FPS before you turn on any AI trickery. If you take that number and divide a thousand by it (1,000 ÷ 30), you’ll get the gap between frames which is 33.33 milliseconds. </p><p>Now if I turn on multi-frame generation at 4X and up that to 120 FPS, it’ll <em>look </em>smoother, but game inputs are locked at that 30 FPS, so it won’t <em>feel </em>as smooth. That’s why it’s incredibly important to start with a solid base rate for the game you’re playing <strong>before </strong>turning on frame generation.</p><p>Over my years of PC gaming, I’ve broken it down into three targets in my mind based on what I’m playing to find that right starting point:</p><ul><li><strong>If your game is a slower-paced single-player title, start at 40 FPS: </strong>Think like linear story-driven games where twitch reflexes are not needed. RPGs like <a href="https://www.tomsguide.com/opinion/baldurs-gate-3-is-a-love-letter-to-dungeons-and-dragons-and-its-all-i-want-to-play-right-now">Baldur’s Gate 3</a> are great examples of this, and if the game you want to play falls in this region, you don’t need a lightning fast base frame rate and can focus on upping the graphics settings.</li><li><strong>If your game requires faster reflexes, aim for at least 60 FPS: </strong>Whether it’s racing in <a href="https://www.tomsguide.com/reviews/forza-horizon-5">Forza Horizon 5</a> or needing to perfectly time parries in <a href="https://www.tomsguide.com/gaming/playstation/black-myth-wukong-is-another-must-play-ps5-game-and-xbox-is-missing-out">Black Myth: Wukong</a>, if faster reflexes are needed, you’ve gotta close that gap between frames rendered before stuffing more AI frames in between them. This would reduce frametime to 16.67 milliseconds — a nice base to build on.</li><li><strong>If you’re in seriously competitive multiplayer, either don’t use it or aim for 120 FPS: </strong>A sub 10 millisecond gap between frames is a critical helping hand to being competitive in online lobbies. If you’re particularly clutch and don’t want a single bit of AI trickery getting in your way, don’t use frame generation and focus on turning your settings down instead. But if frame gen is OK, start with a 120 FPS base.</li></ul><h2 class="article-body__section" id="section-dlss-5-controversy-explained"><span>DLSS 5 controversy explained</span></h2><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/dJACkKbN-Eo" allowfullscreen></iframe></div></div><p>So now that you’ve got a grip on how to best use DLSS in its current form. Let’s look at where Nvidia’s AI tech is going, because <a href="https://www.tomsguide.com/computing/gpus/deciphering-dlss-5-pc-gaming-breakthrough-or-nvidias-ai-slop-era">DLSS 5</a> has caused quite a stir!</p><p>Coming this fall, the fifth generation goes beyond the “predictive” modeling of resolution scaling and frame generation, and fuses it with the “probabilistic” elements of generative AI. CEO Jensen Huang calls it the <a href="https://www.tomsguide.com/computing/hardware/nvidia-just-announced-dlss-5-and-its-reinventing-computer-graphics-once-again">“GPT moment for graphics,”</a> and this comes down to real-time neural rendering.</p><p>Basically, DLSS 5 looks at a game on a frame-by-frame basis, and rather than trying to “show you the game better,” it’s now aiming to “show you a better version of the game.” And the results of this pursuit for extreme photorealism is a bridging of the uncanny valley that has the gaming community worried. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/pJdFoN8v5B2sbEQGuwt54D-1920-80.jpg" alt="DLSS 5" /><figcaption><small role="credit">Nvidia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/xargW55nJBhGzLt6PbXw6D-1920-80.jpg" alt="DLSS 5" /><figcaption><small role="credit">Nvidia</small></figcaption></figure></figure><p>Of course, we’re only looking at very small slithers of demos of an early build, but as you can see from certain screenshots, it looks as if the model is adding details that weren’t there originally — like additional hair, fuller lips or a sharper jawline. </p><p>There’s changes being made to the cinematic lighting and material depth too, which all contribute to another breakthrough, but one that developers are going to have to figure out the right way to use. Nvidia confirms this is an early build of DLSS 5, and probably with sliders turned all the way to max. So between now and the fall, devs will tune it however they wish.</p><h2 class="article-body__section" id="section-outlook"><span>Outlook</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="QCKTTLwmSEEx5S2XAMBXYC" name="RTX 5070 vs RTX 5070 Ti" alt="RTX 5070 vs RTX 5070 Ti" src="https://cdn.mos.cms.futurecdn.net/QCKTTLwmSEEx5S2XAMBXYC-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>It’s not been the smoothest of rides for Nvidia’s DLSS. With each new version, there’s been a backlash of some sort. But every single time, it becomes the default and if you use this technology the right way, it can unlock gaming experiences unlike anything you’d see elsewhere.</p><p>Because more and more, it’s becoming abundantly clear that we’re reaching the limits of how many transistors we can stuff on a chip to make these things work through hardware. So in a moment like this, AI is being used to continue the march forward.</p><p>Is DLSS 5 going to be a moment of overreach? Potentially, but then again this is completely controllable by developers who will hopefully find that right balance. But for the PC gamer of today, DLSS is an essential tool in your arsenal that when tamed can be a breakthrough.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/gpus/i-went-eyes-on-with-nvidias-dlss-4-5-dynamic-multi-frame-generation-launching-march-31-and-its-a-game-changer">I went eyes-on with Nvidia’s DLSS 4.5 Dynamic Multi-Frame Generation launching March 31 — and it’s a game-changer</a></li><li><a href="https://www.tomsguide.com/gaming/pc-gaming/nvidia-just-revealed-3-big-upgrades-to-its-geforce-now-cloud-gaming-service-heres-whats-new">Nvidia just revealed 3 big upgrades to its GeForce Now cloud gaming service — here's what's new</a></li><li><a href="https://www.tomsguide.com/computing/macbooks/we-just-ran-cyberpunk-2077-and-resident-evil-4-remake-on-the-macbook-neo-heres-what-happened">Testing the MacBook Neo: Can an iPhone chip really run Cyberpunk 2077?</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 'This is definitely the next ChatGPT' — why Nvidia's CEO is betting big on OpenClaw ]]></title>
                                                                                                <dc:content><![CDATA[ <p>James Huang, Nvidia’s CEO, has been the focus of attention at this year’s GTC conference, which centers on AI.</p><p>Nvidia’s unveiling of its <a href="https://www.tomsguide.com/gaming/theyre-completely-wrong-nvidia-ceo-jensen-huang-responds-to-dlss-5-criticism" target="_blank">DLSS 5</a> AI software, which relies on generative AI to upgrade the visual fidelity of characters and environments, has gotten a ton of blowback from gamers who think it makes games look infinitely worse. Besides that, Huang has provided some comments about the popular open-source autonomous AI agent called <a href="https://www.tomsguide.com/ai/openclaw-is-the-viral-ai-assistant-that-lives-on-your-device-what-you-need-to-know" target="_blank">OpenClaw</a> and marked it as the next major evolution in how people interact with the growing technology.</p><p>According to Huang, OpenClaw should be recognized by everyone as something as monumental as OpenAI’s <a href="https://www.tomsguide.com/ai/i-tried-to-break-chatgpt-5-4-with-7-prompts-heres-what-happened">ChatGPT</a>.</p><h2 id="huang-sees-openclaw-as-the-next-breakthrough-in-ai">Huang sees OpenClaw as the next breakthrough in AI</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="MFifoDjTTinJpLk8syk8pj" name="Jensen Huang.GettyImages-2254367607" alt="Jensen Huang at CES 2026" src="https://cdn.mos.cms.futurecdn.net/MFifoDjTTinJpLk8syk8pj-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Getty Images)</span></figcaption></figure><p>During this year’s GTC conference, Huang took some time to speak with “Mad Money’s” Jim Cramer about OpenClaw and championed it as a major AI tool that everyone should keep an eye on. “It is now the largest, most popular, the most successful open-sourced project in the history of humanity,” Huang said. “This is definitely the next ChatGPT.”</p><p>For the uninitiated, OpenClaw is an autonomous AI agent that allows users to create their own AI assistants that can then carry out actions such as checking their calendar, answering texts, accessing files, etc. What’s interesting about OpenClaw is how its AI agents don’t need much input from its users to act — it behaves just like humans after being told how to by their programmers, as evidenced by those same AI agents engaging in their own dating service and even creating their own religion.</p><p>Huang spoke more about OpenClaw and noted that it could transform into something grander and greatly expand what humans can do with AI. “In one line of code, you can create for yourself your own agent. Then after that, just ask the agent to do whatever you want,” he went on to say. “They’ll go off and learn how to design a kitchen. It will come back with a design and reflect on that.” </p><p>Huang also stated that OpenClaw will benefit humans’ individual expertise across many talents as they work with their AI agents to create. “Every carpenter can now be an architect. Every plumber will become an architect. We are going to elevate the capabilities of everyone,” he noted.</p><h2 id="nvidia-has-worked-with-openclaw">Nvidia has worked with OpenClaw</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1397px;"><p class="vanilla-image-block" style="padding-top:52.54%;"><img id="RtsKtjHfW5aGc9sNdXZTJL" name="Screenshot 2026-02-03 134351" alt="OpenClaw website" src="https://cdn.mos.cms.futurecdn.net/RtsKtjHfW5aGc9sNdXZTJL-1920-80.png" mos="" align="middle" fullscreen="" width="1397" height="734" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: OpenClaw)</span></figcaption></figure><p>Nvidia is already working closely with OpenClaw to make its AI agents easier to command and more secure. </p><p>The tech giant recently announced NemoClaw, a new and improved version of OpenClaw that incorporates Nvidia’s software tools onto its platform. A <a href="https://www.nvidia.com/en-us/ai/nemoclaw/" target="_blank">press release</a> described how it works: “NemoClaw uses NVIDIA Agent Toolkit software to optimize OpenClaw in a single command. It installs OpenShell to provide open models and an isolated sandbox that adds data privacy and security to autonomous agents. This provides the missing infrastructure layer beneath claws to give them the access they need to be productive, while enforcing policy-based security, network and privacy guardrails.”</p><p>In that same press release, Peter Steinberger, creator of OpenClaw, expressed his excitement over Nvidia’s software stack helping his AI tech improve.  “OpenClaw brings people closer to AI and helps create a world where everyone has their own agents,” he said. “With NVIDIA and the broader ecosystem, we’re building the claws and guardrails that let anyone create powerful, secure AI assistants.”</p><p>With Nvidia now working closely with OpenClaw via NemoClaw, it’s good to know that Nvidia is employing high-grade security measures to make sure the abundance of AI agents that are created can be deployed safely.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom’s Guide</span></h3><ul><li><a href="https://www.tomsguide.com/ai/openclaw-is-the-viral-ai-assistant-that-lives-on-your-device-what-you-need-to-know" target="_blank"><strong>OpenClaw is the viral AI assistant that lives on your device — what you need to know</strong></a></li><li><a href="https://www.tomsguide.com/ai/openai-hires-the-developer-behind-openclaw-this-is-how-ai-agents-grow-up" target="_blank"><strong>OpenAI hires the developer behind OpenClaw — this is how agentic AI grows up</strong></a></li><li><a href="https://www.tomsguide.com/ai/the-6-weirdest-things-to-come-out-of-the-viral-openclaw-ai-assistant" target="_blank"><strong>The 6 weirdest things to come out of the viral OpenClaw AI assistant</strong></a></li></ul><div data-widget-type="comparison" data-model-name="Apple MacBook Neo"></div> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/ai/this-is-definitely-the-next-chatgpt-why-nvidias-ceo-is-betting-big-on-openclaw</link>
                                                                            <description>
                            <![CDATA[ Nvidia CEO James Huang spoke about his excitement regarding OpenClaw and marked it as the next ChatGPT ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">DNtWHRFjEGZzPzYQi3kHX</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/4pGuYUq3ZM2MJwLCaznBXE-1920-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Thu, 19 Mar 2026 15:30:26 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[AI]]></category>
                                                                                                                    <dc:creator><![CDATA[ Elton Jones ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/qoRE8e6t2nzaNKAhJGDv7g-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/png" url="https://cdn.mos.cms.futurecdn.net/4pGuYUq3ZM2MJwLCaznBXE-1920-80.png">
                                                            <media:credit><![CDATA[Nvidia]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[OpenClaw closeup]]></media:description>                                                            <media:text><![CDATA[OpenClaw closeup]]></media:text>
                                <media:title type="plain"><![CDATA[OpenClaw closeup]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/4pGuYUq3ZM2MJwLCaznBXE-1920-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>James Huang, Nvidia’s CEO, has been the focus of attention at this year’s GTC conference, which centers on AI.</p><p>Nvidia’s unveiling of its <a href="https://www.tomsguide.com/gaming/theyre-completely-wrong-nvidia-ceo-jensen-huang-responds-to-dlss-5-criticism" target="_blank">DLSS 5</a> AI software, which relies on generative AI to upgrade the visual fidelity of characters and environments, has gotten a ton of blowback from gamers who think it makes games look infinitely worse. Besides that, Huang has provided some comments about the popular open-source autonomous AI agent called <a href="https://www.tomsguide.com/ai/openclaw-is-the-viral-ai-assistant-that-lives-on-your-device-what-you-need-to-know" target="_blank">OpenClaw</a> and marked it as the next major evolution in how people interact with the growing technology.</p><p>According to Huang, OpenClaw should be recognized by everyone as something as monumental as OpenAI’s <a href="https://www.tomsguide.com/ai/i-tried-to-break-chatgpt-5-4-with-7-prompts-heres-what-happened">ChatGPT</a>.</p><h2 id="huang-sees-openclaw-as-the-next-breakthrough-in-ai">Huang sees OpenClaw as the next breakthrough in AI</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="MFifoDjTTinJpLk8syk8pj" name="Jensen Huang.GettyImages-2254367607" alt="Jensen Huang at CES 2026" src="https://cdn.mos.cms.futurecdn.net/MFifoDjTTinJpLk8syk8pj-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Getty Images)</span></figcaption></figure><p>During this year’s GTC conference, Huang took some time to speak with “Mad Money’s” Jim Cramer about OpenClaw and championed it as a major AI tool that everyone should keep an eye on. “It is now the largest, most popular, the most successful open-sourced project in the history of humanity,” Huang said. “This is definitely the next ChatGPT.”</p><p>For the uninitiated, OpenClaw is an autonomous AI agent that allows users to create their own AI assistants that can then carry out actions such as checking their calendar, answering texts, accessing files, etc. What’s interesting about OpenClaw is how its AI agents don’t need much input from its users to act — it behaves just like humans after being told how to by their programmers, as evidenced by those same AI agents engaging in their own dating service and even creating their own religion.</p><p>Huang spoke more about OpenClaw and noted that it could transform into something grander and greatly expand what humans can do with AI. “In one line of code, you can create for yourself your own agent. Then after that, just ask the agent to do whatever you want,” he went on to say. “They’ll go off and learn how to design a kitchen. It will come back with a design and reflect on that.” </p><p>Huang also stated that OpenClaw will benefit humans’ individual expertise across many talents as they work with their AI agents to create. “Every carpenter can now be an architect. Every plumber will become an architect. We are going to elevate the capabilities of everyone,” he noted.</p><h2 id="nvidia-has-worked-with-openclaw">Nvidia has worked with OpenClaw</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1397px;"><p class="vanilla-image-block" style="padding-top:52.54%;"><img id="RtsKtjHfW5aGc9sNdXZTJL" name="Screenshot 2026-02-03 134351" alt="OpenClaw website" src="https://cdn.mos.cms.futurecdn.net/RtsKtjHfW5aGc9sNdXZTJL-1920-80.png" mos="" align="middle" fullscreen="" width="1397" height="734" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: OpenClaw)</span></figcaption></figure><p>Nvidia is already working closely with OpenClaw to make its AI agents easier to command and more secure. </p><p>The tech giant recently announced NemoClaw, a new and improved version of OpenClaw that incorporates Nvidia’s software tools onto its platform. A <a href="https://www.nvidia.com/en-us/ai/nemoclaw/" target="_blank">press release</a> described how it works: “NemoClaw uses NVIDIA Agent Toolkit software to optimize OpenClaw in a single command. It installs OpenShell to provide open models and an isolated sandbox that adds data privacy and security to autonomous agents. This provides the missing infrastructure layer beneath claws to give them the access they need to be productive, while enforcing policy-based security, network and privacy guardrails.”</p><p>In that same press release, Peter Steinberger, creator of OpenClaw, expressed his excitement over Nvidia’s software stack helping his AI tech improve.  “OpenClaw brings people closer to AI and helps create a world where everyone has their own agents,” he said. “With NVIDIA and the broader ecosystem, we’re building the claws and guardrails that let anyone create powerful, secure AI assistants.”</p><p>With Nvidia now working closely with OpenClaw via NemoClaw, it’s good to know that Nvidia is employing high-grade security measures to make sure the abundance of AI agents that are created can be deployed safely.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom’s Guide</span></h3><ul><li><a href="https://www.tomsguide.com/ai/openclaw-is-the-viral-ai-assistant-that-lives-on-your-device-what-you-need-to-know" target="_blank"><strong>OpenClaw is the viral AI assistant that lives on your device — what you need to know</strong></a></li><li><a href="https://www.tomsguide.com/ai/openai-hires-the-developer-behind-openclaw-this-is-how-ai-agents-grow-up" target="_blank"><strong>OpenAI hires the developer behind OpenClaw — this is how agentic AI grows up</strong></a></li><li><a href="https://www.tomsguide.com/ai/the-6-weirdest-things-to-come-out-of-the-viral-openclaw-ai-assistant" target="_blank"><strong>The 6 weirdest things to come out of the viral OpenClaw AI assistant</strong></a></li></ul><div data-widget-type="comparison" data-model-name="Apple MacBook Neo"></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ ‘These tools may help you create assets, but that won’t help you create hits' — Take Two boss says AI can't create games like 'GTA 6' ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Take-Two Interactive has millions of gamers eagerly anticipating the launch of arguably the biggest game of the year, <a href="https://www.tomsguide.com/news/gta-6" target="_blank">Grand Theft Auto VI</a>. While the video game publisher has a long line of equally major IPs under its belt (<em>NBA 2K</em>, <em>WWE 2K</em>, and <em>Borderlands</em>, among them), the massive open-world experience known as <em>GTA</em> stands above them all. </p><p>And according to Take-Two CEO Strauss Zelnick, the notion that generative AI will be able to produce games on the level of <em>GTA</em> is simply “laughable.”</p><h2 id="creating-assets-but-not-hits">Creating assets but not hits</h2><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/6R4N4diERug" allowfullscreen></iframe></div></div><p>During an extensive sit-down interview with <a href="https://www.thegamebusiness.com/p/take-two-ceo-interview-the-notion" target="_blank">The Game Business Show</a>, Zelnick discussed several topics related to the use of AI in video game development. </p><p>The unveiling of Google Labs’ <a href="https://labs.google/projectgenie" target="_blank">Project Genie</a> tool, which has the power to generate interactive worlds simply by inputting text and image prompts, resulted in major AAA gaming companies like Take-Two’s stock prices dipping—it’s clear that video game investors feared that anyone would be able to make AAA games thanks to AI and begin putting them out at a faster rate compared to major development studios.</p><p>Zelnick made it clear that he’s not worried whatsoever about Project Genie or any other generative AI tools that promise to generate virtual worlds in mere minutes. “These tools may help you create assets, but that won’t help you create hits,” he stated. “There are loads of assets out there now. It doesn’t matter if you push a button to create an asset, or it takes you six weeks, at the end of the day, you have an asset. And thousands of mobile games are launched every year, and there are only a handful of hits.”</p><p>Zelnick also pointed out that AI can assist developers in their creation of standout gaming experiences, but the ever-evolving technology doesn’t have the power to produce anything on the level of interactive entertainment that humans make. “The notion that somehow new tools would allow an individual to push a button and generate a hit and bring it to many millions of consumers around the world, it’s a laughable notion,” Zelnick pointed out. “It’s just never been the case with entertainment.”</p><p>When presented with the idea that Project Genie could increase your everyday AI prompt writer’s capacity to create something on par with Rockstar Studios’ open-world epics, Zelnick recognized that AI could create assets “that might look like <em>NBA 2K</em> or <em>EA Sports FC</em>.” But at the end of the day, he believes that the development of mega franchises like those three "require human engagement [and] human creativity."</p><h2 id="dlss-5-backlash">DLSS 5 backlash</h2><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/OZ60vkCH-o4" allowfullscreen></iframe></div></div><p>Speaking of AI’s continued involvement in the video game industry, Nvidia isn’t getting the most positive feedback for its introduction of AI software that’s meant to improve the visual fidelity of characters and environments. During <a href="https://www.tomsguide.com/gaming/theyre-completely-wrong-nvidia-ceo-jensen-huang-responds-to-dlss-5-criticism" target="_blank">a Q&A session with Nvidia CEO Jensen Huang</a> at this year’s GTC conference, Huang downplayed the criticisms of gamers who weren’t too thrilled with the way <a href="https://www.tomsguide.com/computing/gpus/deciphering-dlss-5-pc-gaming-breakthrough-or-nvidias-ai-slop-era" target="_blank">DLSS 5</a> alters the visual fidelity of their favorite games.</p><p>When asked about the negative comments from gamers online, by Tom's Hardware editor-in-chief Paul Alcorn, Huang had this to say: “Well, first of all, they're completely wrong. The reason for that is because, as I have explained very carefully, DLSS 5 fuses controllability of the geometry and textures and everything about the game with generative AI.”</p><h2 id="ai-in-video-games-outlook">AI in video games: Outlook</h2><p>Zelnick is stern in his belief that human involvement in game creation is far more valuable than generative AI, and the majority of gamers believe that to be true. While major gaming companies such as Ubisoft, Electronic Arts, and Square Enix are implementing AI into their video game development workflow, human creativity and technical know-how are still greatly emphasized in the creation of their AAA projects. </p><p>Zelnick’s statements point to Take-Two still placing importance on experienced human developers having what it takes to craft major hits like <em>GTA</em> and not the latest model of generative AI software.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom’s Guide</span></h3><ul><li><a href="https://www.tomsguide.com/ai/palantir-ceo-why-thinking-differently-is-the-secret-to-winning-the-ai-race-and-how-to-apply-for-the-usd200k-fellowship" target="_blank"><strong>Palantir CEO: Why 'thinking differently' is the secret to winning the AI race</strong></a></li><li><a href="https://www.tomsguide.com/ai/spotifys-new-ai-feature-lets-you-get-even-more-personalized-recommendations-heres-when-its-coming" target="_blank"><strong>Spotify is finally letting you 'talk' to its algorithm to fix your music recommendations — here's what's new</strong></a></li><li><a href="https://www.tomsguide.com/ai/oversight-board-slams-metas-inadequate-deepfake-rules-calls-for-a-total-ai-overhaul" target="_blank"><strong>Oversight Board slams Meta's 'inadequate' deepfake rules — calls for a total AI overhaul</strong></a></li></ul><div data-widget-type="comparison" data-model-name="Apple MacBook Neo"></div> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/ai/these-tools-may-help-you-create-assets-but-that-wont-help-you-create-hits-take-two-boss-says-ai-cant-create-games-like-gta-6</link>
                                                                            <description>
                            <![CDATA[ Take-Two CEO Strauss Zelnick gave his thoughts on generative AI software's ability to create virtual worlds and disagrees with it being able to generate smash hit games ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">6nLDLAsxit4Ja6N88mLjbP</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/XuqwMk2NVuDKupqUQtLYJb-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 18 Mar 2026 16:02:08 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[AI]]></category>
                                                                                                                    <dc:creator><![CDATA[ Elton Jones ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/qoRE8e6t2nzaNKAhJGDv7g-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/XuqwMk2NVuDKupqUQtLYJb-1920-80.jpg">
                                                            <media:credit><![CDATA[Rockstar]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Grand Theft Auto VI screenshot]]></media:description>                                                            <media:text><![CDATA[Grand Theft Auto VI screenshot]]></media:text>
                                <media:title type="plain"><![CDATA[Grand Theft Auto VI screenshot]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/XuqwMk2NVuDKupqUQtLYJb-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Take-Two Interactive has millions of gamers eagerly anticipating the launch of arguably the biggest game of the year, <a href="https://www.tomsguide.com/news/gta-6" target="_blank">Grand Theft Auto VI</a>. While the video game publisher has a long line of equally major IPs under its belt (<em>NBA 2K</em>, <em>WWE 2K</em>, and <em>Borderlands</em>, among them), the massive open-world experience known as <em>GTA</em> stands above them all. </p><p>And according to Take-Two CEO Strauss Zelnick, the notion that generative AI will be able to produce games on the level of <em>GTA</em> is simply “laughable.”</p><h2 id="creating-assets-but-not-hits">Creating assets but not hits</h2><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/6R4N4diERug" allowfullscreen></iframe></div></div><p>During an extensive sit-down interview with <a href="https://www.thegamebusiness.com/p/take-two-ceo-interview-the-notion" target="_blank">The Game Business Show</a>, Zelnick discussed several topics related to the use of AI in video game development. </p><p>The unveiling of Google Labs’ <a href="https://labs.google/projectgenie" target="_blank">Project Genie</a> tool, which has the power to generate interactive worlds simply by inputting text and image prompts, resulted in major AAA gaming companies like Take-Two’s stock prices dipping—it’s clear that video game investors feared that anyone would be able to make AAA games thanks to AI and begin putting them out at a faster rate compared to major development studios.</p><p>Zelnick made it clear that he’s not worried whatsoever about Project Genie or any other generative AI tools that promise to generate virtual worlds in mere minutes. “These tools may help you create assets, but that won’t help you create hits,” he stated. “There are loads of assets out there now. It doesn’t matter if you push a button to create an asset, or it takes you six weeks, at the end of the day, you have an asset. And thousands of mobile games are launched every year, and there are only a handful of hits.”</p><p>Zelnick also pointed out that AI can assist developers in their creation of standout gaming experiences, but the ever-evolving technology doesn’t have the power to produce anything on the level of interactive entertainment that humans make. “The notion that somehow new tools would allow an individual to push a button and generate a hit and bring it to many millions of consumers around the world, it’s a laughable notion,” Zelnick pointed out. “It’s just never been the case with entertainment.”</p><p>When presented with the idea that Project Genie could increase your everyday AI prompt writer’s capacity to create something on par with Rockstar Studios’ open-world epics, Zelnick recognized that AI could create assets “that might look like <em>NBA 2K</em> or <em>EA Sports FC</em>.” But at the end of the day, he believes that the development of mega franchises like those three "require human engagement [and] human creativity."</p><h2 id="dlss-5-backlash">DLSS 5 backlash</h2><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/OZ60vkCH-o4" allowfullscreen></iframe></div></div><p>Speaking of AI’s continued involvement in the video game industry, Nvidia isn’t getting the most positive feedback for its introduction of AI software that’s meant to improve the visual fidelity of characters and environments. During <a href="https://www.tomsguide.com/gaming/theyre-completely-wrong-nvidia-ceo-jensen-huang-responds-to-dlss-5-criticism" target="_blank">a Q&A session with Nvidia CEO Jensen Huang</a> at this year’s GTC conference, Huang downplayed the criticisms of gamers who weren’t too thrilled with the way <a href="https://www.tomsguide.com/computing/gpus/deciphering-dlss-5-pc-gaming-breakthrough-or-nvidias-ai-slop-era" target="_blank">DLSS 5</a> alters the visual fidelity of their favorite games.</p><p>When asked about the negative comments from gamers online, by Tom's Hardware editor-in-chief Paul Alcorn, Huang had this to say: “Well, first of all, they're completely wrong. The reason for that is because, as I have explained very carefully, DLSS 5 fuses controllability of the geometry and textures and everything about the game with generative AI.”</p><h2 id="ai-in-video-games-outlook">AI in video games: Outlook</h2><p>Zelnick is stern in his belief that human involvement in game creation is far more valuable than generative AI, and the majority of gamers believe that to be true. While major gaming companies such as Ubisoft, Electronic Arts, and Square Enix are implementing AI into their video game development workflow, human creativity and technical know-how are still greatly emphasized in the creation of their AAA projects. </p><p>Zelnick’s statements point to Take-Two still placing importance on experienced human developers having what it takes to craft major hits like <em>GTA</em> and not the latest model of generative AI software.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom’s Guide</span></h3><ul><li><a href="https://www.tomsguide.com/ai/palantir-ceo-why-thinking-differently-is-the-secret-to-winning-the-ai-race-and-how-to-apply-for-the-usd200k-fellowship" target="_blank"><strong>Palantir CEO: Why 'thinking differently' is the secret to winning the AI race</strong></a></li><li><a href="https://www.tomsguide.com/ai/spotifys-new-ai-feature-lets-you-get-even-more-personalized-recommendations-heres-when-its-coming" target="_blank"><strong>Spotify is finally letting you 'talk' to its algorithm to fix your music recommendations — here's what's new</strong></a></li><li><a href="https://www.tomsguide.com/ai/oversight-board-slams-metas-inadequate-deepfake-rules-calls-for-a-total-ai-overhaul" target="_blank"><strong>Oversight Board slams Meta's 'inadequate' deepfake rules — calls for a total AI overhaul</strong></a></li></ul><div data-widget-type="comparison" data-model-name="Apple MacBook Neo"></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Nvidia's 'GPT moment' for graphics rejected by gamers; CEO Jensen Huang rushes to defend DLSS 5 ]]></title>
                                                                                                <dc:content><![CDATA[ <p>During the <a href="https://www.tomsguide.com/computing/live/nvidia-gtc-2026-live">Nvidia GTC 2026</a> keynote, CEO Jensen Huang <a href="https://www.tomsguide.com/computing/hardware/nvidia-just-announced-dlss-5-and-its-reinventing-computer-graphics-once-again">debuted DLSS 5 </a>calling it the "fusion of 3D graphics and artificial intelligence." The announcement was met with immediate backlash across social media.</p><p>For the unaware, DLSS is a "deep learning super sampling" feature on Nvidia graphics cards that is used to upscale the resolution of video games. We went <a href="https://www.tomsguide.com/computing/gpus/i-went-eyes-on-with-nvidias-dlss-4-5-dynamic-multi-frame-generation-launching-march-31-and-its-a-game-changer">eyes-on with version 4.5</a> recently and my colleague Jason England said it was "the final piece of the puzzle that brings the vision of smooth, responsive AI fueled gameplay to life."</p><p>DLSS 5 takes those engines and uses AI and neural rendering to infer how games would look in more photorealistic environments, or as one colleague put it, "They added more light."</p><p>Huang faced questions over the criticism of DLSS 5 during a Q&A at GTC 2026. Our friends at <a href="https://www.tomshardware.com/pc-components/gpus/jensen-huang-says-gamers-are-completely-wrong-about-dlss-5-nvidia-ceo-responds-to-dlss-5-backlash#xenforo-comments-3894144">Tom's Hardware</a> were able to ask about the backlash.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XY3GZW"></div>                            </div>                            <script src="https://kwizly.com/embed/XY3GZW.js" async></script><p>"Well, first of all, they're completely wrong," Huang said. </p><p>"The reason for that is because, as I have explained very carefully, DLSS 5 fuses controllability of the of geometry and textures and everything about the game with generative AI," Huang added.</p><p>To be fair to Huang, he was clear about this during the keynote and said nearly the same thing.</p><div><blockquote><p>They're completely wrong. The reason for that is because, as I have explained very carefully, DLSS 5 fuses controllability of the of geometry and textures and everything about the game with generative AI.</p><p>Jensen Huang, Nvidia CEO</p></blockquote></div><p>"DLSS 5 is the GPT moment for graphics — blending hand-crafted rendering with generative AI to deliver a dramatic leap in visual realism while preserving the control artists need for creative expression,” Huang said in his introduction.</p><p>Between the introduction and the Q&A, Huang had been adament that DLSS 5 and its generative capabilities "doesn't change the artistic control."</p><p>"It’s not post-processing, it’s not post-processing at the frame level, it’s generative control at the geometry level," he said.</p><h2 id="the-video-does-no-favors">The video does no favors</h2><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/dJACkKbN-Eo" allowfullscreen></iframe></div></div><p>Part of the problem is that the demonstration video shows DLSS 5 with its max sliders turned on. And as critiques pointed out, just about every "upgrade" from DLSS off to DLSS 5 turned on looks like someone slapped a terrible Instagram filter on top of the game. </p><p>In some cases, as with <a href="https://www.tomsguide.com/reviews/hogwarts-legacy">Hogwarts Legacy</a>, everything received more of a cartoon-y look. The <a href="https://www.tomsguide.com/gaming/resident-evil-requiem-review">Resident Evil: Requiem</a> differences seemed to turn Leon and Grace into looksmaxxing influencers.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="855AFKKTe64uJeuTipVfz3" name="DLSS 5" alt="DLSS 5" src="https://cdn.mos.cms.futurecdn.net/855AFKKTe64uJeuTipVfz3-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I would argue the best use of DLSS5 is actually shown off in <a href="https://www.tomsguide.com/gaming/ea-sports-fc-26-review">EA's FC26</a>. That game is going for a more photorealistic look with the players. The lighting and skintone improvements look particularly impressive on the Netherlands' Virgil van Dijk.</p><p>Again, Tom's Guide's Jason England was able to take a look at more images that <a href="https://www.tomsguide.com/computing/gpus/deciphering-dlss-5-pc-gaming-breakthrough-or-nvidias-ai-slop-era">show off DLSS 5</a> not just on AI faces but also in environments. "DLSS 5 is absolutely a breakthrough," he said. However, he noted that he has questions, and just running DLSS 5 on its own can take away what may have been intentional shading or lighting.</p><p>Huang says it's a tool that developers can choose to use. We'll know more this fall when DLSS 5 is set to launch. And I'm certain more demos will be provided between now and release. </p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/gpus/nvidia-says-pc-gaming-will-look-like-a-film-how-gpus-will-get-to-1-million-times-better-path-tracing-and-why-its-closer-than-you-think">Nvidia says PC gaming will ‘look like a film’ — GTC 2026 could herald 1 million times better path tracing for GPUs</a></li><li><a href="https://www.tomsguide.com/computing/live/nvidia-gtc-2026-live">Nvidia GTC 2026 LIVE — Jensen Huang reveals DLSS 5, OpenClaw partnership, and an Olaf robot</a></li><li><a href="https://www.tomsguide.com/computing/nvidia-wont-release-new-gaming-gpu-for-first-year-in-three-decades-due-to-ram-shortage-and-its-also-slashing-rtx-50-production">Nvidia won't release new gaming GPU for 'first year in three decades' due to RAM shortage — and it's also slashing RTX 50 production</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/gaming/theyre-completely-wrong-nvidia-ceo-jensen-huang-responds-to-dlss-5-criticism</link>
                                                                            <description>
                            <![CDATA[ Nvidia CEO Jensen Huang defends DLSS 5 after social media backlash. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">EtDuYGyzrUZznC6o88JCD3</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/MFifoDjTTinJpLk8syk8pj-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 17 Mar 2026 21:56:02 +0000</pubDate>                                                                                                                                <updated>Wed, 18 Mar 2026 15:55:37 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming]]></category>
                                                                                                <author><![CDATA[ scott.younker@futurenet.com (Scott Younker) ]]></author>                    <dc:creator><![CDATA[ Scott Younker ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/RZsUpqcJ6Uj2q83oCUwNhQ-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Scott Younker is the West Coast Reporter at Tom’s Guide. He covers all the latest tech news, including phones, computing and more. He’s been involved in tech since 2011 covering everything from cameras and swimming pool equipment to the latest gaming consoles and smart TVs. He is on a seemingly never ending hunt to build the easiest to use home media system. &lt;/p&gt;&lt;p&gt;Before Tom’s Guide, Scott worked for publications like &lt;em&gt;Digital Trends, Outdoor Photographer, Dead Beats Panel&lt;/em&gt;, and in a brief detour, &lt;em&gt;America’s Funniest Home Videos&lt;/em&gt;. Yes, he has seen more pratfalls, silly pets and ridiculous home movie fails than is reasonably healthy. &lt;/p&gt;&lt;p&gt;When not writing about the latest devices or advances in chipsets, be sure to ask about Scott about disc golf and sustainability, or just if you’re being cheeky, ask about his noodle arm. If you truly want to get nerdy, bring up board games and his ongoing losing streak. &lt;/p&gt;&lt;p&gt;Scott joined Tom&#039;s Guide in 2024 as the West Coast Reporter. He graduated from the School of Journalism at the University of Oregon with a degree in magazine journalism and a minor in communications. While there he blogged or wrote for several magazines including the Fluxx, Ethos and the Oregon Commentator. He briefly wrote and managed a moderately successful blog focused on web comics. &lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/MFifoDjTTinJpLk8syk8pj-1920-80.jpg">
                                                            <media:credit><![CDATA[Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Jensen Huang at CES 2026]]></media:description>                                                            <media:text><![CDATA[Jensen Huang at CES 2026]]></media:text>
                                <media:title type="plain"><![CDATA[Jensen Huang at CES 2026]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/MFifoDjTTinJpLk8syk8pj-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>During the <a href="https://www.tomsguide.com/computing/live/nvidia-gtc-2026-live">Nvidia GTC 2026</a> keynote, CEO Jensen Huang <a href="https://www.tomsguide.com/computing/hardware/nvidia-just-announced-dlss-5-and-its-reinventing-computer-graphics-once-again">debuted DLSS 5 </a>calling it the "fusion of 3D graphics and artificial intelligence." The announcement was met with immediate backlash across social media.</p><p>For the unaware, DLSS is a "deep learning super sampling" feature on Nvidia graphics cards that is used to upscale the resolution of video games. We went <a href="https://www.tomsguide.com/computing/gpus/i-went-eyes-on-with-nvidias-dlss-4-5-dynamic-multi-frame-generation-launching-march-31-and-its-a-game-changer">eyes-on with version 4.5</a> recently and my colleague Jason England said it was "the final piece of the puzzle that brings the vision of smooth, responsive AI fueled gameplay to life."</p><p>DLSS 5 takes those engines and uses AI and neural rendering to infer how games would look in more photorealistic environments, or as one colleague put it, "They added more light."</p><p>Huang faced questions over the criticism of DLSS 5 during a Q&A at GTC 2026. Our friends at <a href="https://www.tomshardware.com/pc-components/gpus/jensen-huang-says-gamers-are-completely-wrong-about-dlss-5-nvidia-ceo-responds-to-dlss-5-backlash#xenforo-comments-3894144">Tom's Hardware</a> were able to ask about the backlash.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XY3GZW"></div>                            </div>                            <script src="https://kwizly.com/embed/XY3GZW.js" async></script><p>"Well, first of all, they're completely wrong," Huang said. </p><p>"The reason for that is because, as I have explained very carefully, DLSS 5 fuses controllability of the of geometry and textures and everything about the game with generative AI," Huang added.</p><p>To be fair to Huang, he was clear about this during the keynote and said nearly the same thing.</p><div><blockquote><p>They're completely wrong. The reason for that is because, as I have explained very carefully, DLSS 5 fuses controllability of the of geometry and textures and everything about the game with generative AI.</p><p>Jensen Huang, Nvidia CEO</p></blockquote></div><p>"DLSS 5 is the GPT moment for graphics — blending hand-crafted rendering with generative AI to deliver a dramatic leap in visual realism while preserving the control artists need for creative expression,” Huang said in his introduction.</p><p>Between the introduction and the Q&A, Huang had been adament that DLSS 5 and its generative capabilities "doesn't change the artistic control."</p><p>"It’s not post-processing, it’s not post-processing at the frame level, it’s generative control at the geometry level," he said.</p><h2 id="the-video-does-no-favors">The video does no favors</h2><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/dJACkKbN-Eo" allowfullscreen></iframe></div></div><p>Part of the problem is that the demonstration video shows DLSS 5 with its max sliders turned on. And as critiques pointed out, just about every "upgrade" from DLSS off to DLSS 5 turned on looks like someone slapped a terrible Instagram filter on top of the game. </p><p>In some cases, as with <a href="https://www.tomsguide.com/reviews/hogwarts-legacy">Hogwarts Legacy</a>, everything received more of a cartoon-y look. The <a href="https://www.tomsguide.com/gaming/resident-evil-requiem-review">Resident Evil: Requiem</a> differences seemed to turn Leon and Grace into looksmaxxing influencers.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="855AFKKTe64uJeuTipVfz3" name="DLSS 5" alt="DLSS 5" src="https://cdn.mos.cms.futurecdn.net/855AFKKTe64uJeuTipVfz3-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I would argue the best use of DLSS5 is actually shown off in <a href="https://www.tomsguide.com/gaming/ea-sports-fc-26-review">EA's FC26</a>. That game is going for a more photorealistic look with the players. The lighting and skintone improvements look particularly impressive on the Netherlands' Virgil van Dijk.</p><p>Again, Tom's Guide's Jason England was able to take a look at more images that <a href="https://www.tomsguide.com/computing/gpus/deciphering-dlss-5-pc-gaming-breakthrough-or-nvidias-ai-slop-era">show off DLSS 5</a> not just on AI faces but also in environments. "DLSS 5 is absolutely a breakthrough," he said. However, he noted that he has questions, and just running DLSS 5 on its own can take away what may have been intentional shading or lighting.</p><p>Huang says it's a tool that developers can choose to use. We'll know more this fall when DLSS 5 is set to launch. And I'm certain more demos will be provided between now and release. </p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/gpus/nvidia-says-pc-gaming-will-look-like-a-film-how-gpus-will-get-to-1-million-times-better-path-tracing-and-why-its-closer-than-you-think">Nvidia says PC gaming will ‘look like a film’ — GTC 2026 could herald 1 million times better path tracing for GPUs</a></li><li><a href="https://www.tomsguide.com/computing/live/nvidia-gtc-2026-live">Nvidia GTC 2026 LIVE — Jensen Huang reveals DLSS 5, OpenClaw partnership, and an Olaf robot</a></li><li><a href="https://www.tomsguide.com/computing/nvidia-wont-release-new-gaming-gpu-for-first-year-in-three-decades-due-to-ram-shortage-and-its-also-slashing-rtx-50-production">Nvidia won't release new gaming GPU for 'first year in three decades' due to RAM shortage — and it's also slashing RTX 50 production</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I pixel-peeped DLSS 5 — and now I can’t tell if Nvidia just changed gaming or broke it with AI ]]></title>
                                                                                                <dc:content><![CDATA[ <p>For the first time in a long while, <a href="https://www.tomsguide.com/computing/live/nvidia-gtc-2026-live">Nvidia GTC 2026</a> gave us some huge PC gaming news. CEO Jensen Huang introduced <a href="https://www.tomsguide.com/computing/hardware/nvidia-just-announced-dlss-5-and-its-reinventing-computer-graphics-once-again">DLSS 5</a>: the “fusion of 3D graphics and artificial intelligence” in his own words, and the response has been…mixed to say the least.</p><p>From outlets calling it the most impressive tech they’ve seen in a long time to people throwing out AI slop critiques and comparing it to those face filters you get with certain smartphone cameras, opinions are all over the place. And honestly, I didn’t know how to feel at first — like that damn dress meme in 2015, my mind changed every time I looked at the comparison videos!</p>                    <div class= "tiktok-wrapper" style="min-height: 750px;"><blockquote class="tiktok-embed" cite="https://www.tiktok.com/@tomsguide/video/7617960507638615310" data-video-id="7617960507638615310" style="max-width: 605px; min-width: 325px;">                        <section>                            <a target="_blank" title="@tomsguide" href="https://www.tiktok.com/@tomsguide">@tomsguide</a>                            <p></p><a target="_blank" title="♬ original sound - Tom’s Guide" href="https://www.tiktok.com/music/original-sound-7617960530246585102">♬ original sound - Tom’s Guide</a></section>                    </blockquote></div>                <p>So I did what I always do. I followed my late Grandad’s advice to “sleep on it, because you’ll know how you feel in the morning.” And in short, DLSS 5 is absolutely a breakthrough, but game developers have until the fall to find the sweet spot for it in their games. Let me explain.</p><h2 id="what-is-dlss-5-let-s-explain-it-with-pizza">What is DLSS 5? Let’s explain it with pizza</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3337px;"><p class="vanilla-image-block" style="padding-top:40.31%;"><img id="CSEmc2PPDV6NKqUmZtkc2N" name="DLSS 5" alt="DLSS 5" src="https://cdn.mos.cms.futurecdn.net/CSEmc2PPDV6NKqUmZtkc2N-1920-80.jpg" mos="" align="middle" fullscreen="" width="3337" height="1345" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>It feels literally like yesterday that I was talking about DLSS 4.5, but we’re already marching onto the next iteration — and it’s a big one we’ve known was coming for a while now.</p><p>“DLSS 5 is the GPT moment for graphics — blending hand-crafted rendering with generative AI to deliver a dramatic leap in visual realism while preserving the control artists need for creative expression,” Huang commented.</p><p>It’s a fusion of the “predictive” model that’s fueled DLSS for a while now with the “probabilistic” elements of generative AI to bring photorealism to games with cinematic lighting, enhanced material depth, real-time neural rendering and temporal consistency. And all of its capabilities are controllable by the game developers, as they can tune the intensity, color and masking to find an enhancement balance that is right for them.</p><p>To break this down, I’m feeling hungry and you know what that means… Back to the pizzeria I go!</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/dJACkKbN-Eo" allowfullscreen></iframe></div></div><p>Think about previous versions of DLSS as a magic magnifying glass. I love that 8-inch pizza, but I want more of it, so DLSS takes that pizza and stretches it to look like a 16-inch XL — making it bigger without the crust getting too thin or the cheese burning more easily (this is resolution scaling).</p><p>Then every now and again, the chef slides an extra few slices into the box between every real slice you actually order, so it feels like you’re eating more at a faster pace (frame generation).</p><p>Now, with the fifth generation, there’s an AI master chef that doesn’t just stretch the pizza, it re-imagines it. With settings turned up to max, the chef looks at that cheap pepperoni slice and says “I know what you were trying to do here, but I can do better,” and swaps it with artisanal, hand-cured salami and fresh buffalo mozzarella — even though you didn’t order those things.</p><p>Basically, DLSS 5 has stopped trying to “show you the game better,” and is now resorting to “showing you a better version of the game.” </p><h2 id="bridging-the-uncanny-valley">Bridging the uncanny valley</h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/pJdFoN8v5B2sbEQGuwt54D-1920-80.jpg" alt="DLSS 5" /><figcaption><small role="credit">Nvidia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/xargW55nJBhGzLt6PbXw6D-1920-80.jpg" alt="DLSS 5" /><figcaption><small role="credit">Nvidia</small></figcaption></figure></figure><p>We can’t say any of us didn’t see this coming. Jensen himself talked about it at CES 2026 in a <a href="https://www.tomsguide.com/computing/gpus/were-working-on-things-that-are-utterly-shocking-nvidias-ceo-on-pc-gamings-future-solving-the-ram-pricing-crisis-and-the-lore-behind-his-leather-jackets">behind-closed-doors Q&A session</a> and shot his shot at a growing “fusion between rendering and generative AI.”</p><p>“In the future, it is very likely that we'll do more and more computation on fewer and fewer pixels. By doing so, the pixels that we compute are insanely beautiful, and then we use AI to infer what must be around it.” Huang said. He talked about the “utterly shocking and incredible” results he saw in the labs that looked like “basically a photograph interacting with you at 500 frames per second.”</p><p>And now we have our first glimpse at it. In some of the game videos it’s a significant improvement, but in others you can start to spot some creative challenges that will surely be worked out as we close in on an official launch.</p><p>Let's start with the faces (yep, we’ve got to talk about Grace’s face in Resident Evil: Requiem). There was a recent <a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC11957730" target="_blank">brain scan study</a> that showed our brains process “hyper-realistic AI faces” differently than real faces. A sudden spike in activity around 600ms after seeing an image that triggers an internal uneasy mismatch feeling. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/HPcS7QRKY2t4TczRarpgPM-1920-80.jpg" alt="DLSS 5" /><figcaption><small role="credit">Nvidia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Wna9LHrRmYgtRbUcrLoRPM-1920-80.jpg" alt="DLSS 5" /><figcaption><small role="credit">Nvidia</small></figcaption></figure></figure><p>That’s what I believe is happening here, and a lot more of it comes down to the cinematic lighting than I initially thought. Based on my time pixel peeping videos and image comparisons, I’d say about 60% of Grace’s face tweaks here can be explained by lighting and material depth. </p><p>The remaining 40% is neural rendering — there are definitely fuller lips and sharper jawlines (not that Leon Kennedy needs it, being the smokeshow he is).</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/mmejPBHa47qhR5qpJCKy4V-1920-80.jpg" alt="DLSS 5" /><figcaption><small role="credit">Nvidia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/yJ3jTiqSHVt8Ak68ZU7e5V-1920-80.jpg" alt="DLSS 5" /><figcaption><small role="credit">Nvidia</small></figcaption></figure></figure><p>In some places, this photorealism really shines — games like EA Sports FC and Starfield truly benefit from this upgrade. But I can appreciate the view around creative interpretation vs AI creating a jarring effect.</p><p>There are some other things I noticed, too. Surfaces and textures have been given a serious upgrade, but with DLSS’ reinterpretation of lighting, some of it feels less stylized or moody. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/5HPLpR5muFDLNShFXXCz5P-1920-80.jpg" alt="DLSS 5" /><figcaption><small role="credit">Nvidia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/gANBzC6w7p93A5mSvQCd6P-1920-80.jpg" alt="DLSS 5" /><figcaption><small role="credit">Nvidia</small></figcaption></figure></figure><p>Take this scene from Nvidia's Zorah Demo, for example. Before, there was a warmer hue and intentional shadowing to add depth, but that is re-interpreted with the cinematic lighting in a way that I feel loses the vibe a little.</p><p>All-in-all, DLSS 5 is a diamond in the rough. I can see what the intention is, but <strong>this is all completely in the hands of devs</strong> to use however they wish. Maybe Capcom rolls back on the face tech, or Warner Bros. alters the cinematic lighting. It will take time to find the right balance.</p><h2 id="i-ve-got-some-questions">I’ve got some questions</h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/EqvUtwXKy4AP5zzWFP5BzN-1920-80.jpg" alt="DLSS 5" /><figcaption><small role="credit">Nvidia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/g2mBWGd7JSyYRAU95cLC3P-1920-80.jpg" alt="DLSS 5" /><figcaption><small role="credit">Nvidia</small></figcaption></figure></figure><p>But of course, this is one PC gamer who’s tested all the <a href="https://www.tomsguide.com/computing/gpus/best-graphics-cards">best GPUs</a> and the tech that enables them — pixel peeping videos and screenshots. I think it’s something we all have to interact with to get a fuller understanding of DLSS 5.</p><p>And if Nvidia’s reading this (hi btw), before I (hopefully) get some hands (and eyes) on time with it, I do have some questions to get a better understanding of what’s going on under the hood:</p><ul><li>What is that real-time neural rendering and what has it been trained on?</li><li>How big is the DLSS 5 model now, and what is the goal for it by fall? Currently demos showed on 2 RTX 5090s — so optimization/compression is key.</li><li>What are the controls for more stylized games? Titles that don't necessarily benefit from photorealism with cel-shaded or more artistic graphics.</li></ul><h2 id="dlss5-outlook">DLSS5 outlook</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="EL9rF3qyjGoXrh2Q4xbVbJ" name="RTX 5070 vs RTX 5070 Ti" alt="RTX 5070 vs RTX 5070 Ti" src="https://cdn.mos.cms.futurecdn.net/EL9rF3qyjGoXrh2Q4xbVbJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The timing of these announcements always makes me chuckle. I know it may be unintentional, but it just feels like once another GPU company announces an update to its upscaling/frame generation tech, Nvidia just says “hold my beer” and takes another giant step ahead of the pack.</p><p>Intel XeSS 3 with multi-frame generation? How about a little DLSS 4.5. AMD FSR Diamond? Well, here’s DLSS 5. And honestly, it is a breakthrough — but I can totally understand the mixed response.</p><p>In some titles, it is a generational leap forward. In others, it can feel like an AI veneer. But ultimately, the tech is here and devs can turn it up or down however they want. Nvidia isn’t adding slop to games, that team is marching forward to photorealism with another feather in the cap of developers to bring their visions to life.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/gpus/i-went-eyes-on-with-nvidias-dlss-4-5-dynamic-multi-frame-generation-launching-march-31-and-its-a-game-changer">I went eyes-on with Nvidia’s DLSS 4.5 Dynamic Multi-Frame Generation launching March 31 — and it’s a game-changer</a></li><li><a href="https://www.tomsguide.com/gaming/pc-gaming/nvidia-just-revealed-3-big-upgrades-to-its-geforce-now-cloud-gaming-service-heres-whats-new">Nvidia just revealed 3 big upgrades to its GeForce Now cloud gaming service — here's what's new</a></li><li><a href="https://www.tomsguide.com/computing/macbooks/we-just-ran-cyberpunk-2077-and-resident-evil-4-remake-on-the-macbook-neo-heres-what-happened">Testing the MacBook Neo: Can an iPhone chip really run Cyberpunk 2077?</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/gpus/deciphering-dlss-5-pc-gaming-breakthrough-or-nvidias-ai-slop-era</link>
                                                                            <description>
                            <![CDATA[ Nvidia GTC 2026 gave us some huge PC gaming news. CEO Jensen Huang introduced DLSS 5: the “fusion of 3D graphics and artificial intelligence” in his own words, and the response has been…mixed to say the least. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">RgjAbXXnp8qvR3FoBmxQYQ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/855AFKKTe64uJeuTipVfz3-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 17 Mar 2026 12:12:03 +0000</pubDate>                                                                                                                                <updated>Thu, 19 Mar 2026 10:33:34 +0000</updated>
                                                                                                                                            <category><![CDATA[GPUs]]></category>
                                                    <category><![CDATA[PC Gaming]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Computing Hardware]]></category>
                                                    <category><![CDATA[Gaming]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jason England ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/v4fSq5U4uZUEtGY2BwNuJ6-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jason brings a decade of tech and gaming journalism experience to his role as a Managing Editor of Computing at Tom&#039;s Guide. He has previously written for Laptop Mag, Tom&#039;s Hardware, Kotaku, Stuff and BBC Science Focus. In his spare time, you&#039;ll find Jason looking for good dogs to pet or thinking about eating pizza if he isn&#039;t already.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/855AFKKTe64uJeuTipVfz3-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[DLSS 5]]></media:description>                                                            <media:text><![CDATA[DLSS 5]]></media:text>
                                <media:title type="plain"><![CDATA[DLSS 5]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/855AFKKTe64uJeuTipVfz3-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>For the first time in a long while, <a href="https://www.tomsguide.com/computing/live/nvidia-gtc-2026-live">Nvidia GTC 2026</a> gave us some huge PC gaming news. CEO Jensen Huang introduced <a href="https://www.tomsguide.com/computing/hardware/nvidia-just-announced-dlss-5-and-its-reinventing-computer-graphics-once-again">DLSS 5</a>: the “fusion of 3D graphics and artificial intelligence” in his own words, and the response has been…mixed to say the least.</p><p>From outlets calling it the most impressive tech they’ve seen in a long time to people throwing out AI slop critiques and comparing it to those face filters you get with certain smartphone cameras, opinions are all over the place. And honestly, I didn’t know how to feel at first — like that damn dress meme in 2015, my mind changed every time I looked at the comparison videos!</p>                    <div class= "tiktok-wrapper" style="min-height: 750px;"><blockquote class="tiktok-embed" cite="https://www.tiktok.com/@tomsguide/video/7617960507638615310" data-video-id="7617960507638615310" style="max-width: 605px; min-width: 325px;">                        <section>                            <a target="_blank" title="@tomsguide" href="https://www.tiktok.com/@tomsguide">@tomsguide</a>                            <p></p><a target="_blank" title="♬ original sound - Tom’s Guide" href="https://www.tiktok.com/music/original-sound-7617960530246585102">♬ original sound - Tom’s Guide</a></section>                    </blockquote></div>                <p>So I did what I always do. I followed my late Grandad’s advice to “sleep on it, because you’ll know how you feel in the morning.” And in short, DLSS 5 is absolutely a breakthrough, but game developers have until the fall to find the sweet spot for it in their games. Let me explain.</p><h2 id="what-is-dlss-5-let-s-explain-it-with-pizza">What is DLSS 5? Let’s explain it with pizza</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3337px;"><p class="vanilla-image-block" style="padding-top:40.31%;"><img id="CSEmc2PPDV6NKqUmZtkc2N" name="DLSS 5" alt="DLSS 5" src="https://cdn.mos.cms.futurecdn.net/CSEmc2PPDV6NKqUmZtkc2N-1920-80.jpg" mos="" align="middle" fullscreen="" width="3337" height="1345" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>It feels literally like yesterday that I was talking about DLSS 4.5, but we’re already marching onto the next iteration — and it’s a big one we’ve known was coming for a while now.</p><p>“DLSS 5 is the GPT moment for graphics — blending hand-crafted rendering with generative AI to deliver a dramatic leap in visual realism while preserving the control artists need for creative expression,” Huang commented.</p><p>It’s a fusion of the “predictive” model that’s fueled DLSS for a while now with the “probabilistic” elements of generative AI to bring photorealism to games with cinematic lighting, enhanced material depth, real-time neural rendering and temporal consistency. And all of its capabilities are controllable by the game developers, as they can tune the intensity, color and masking to find an enhancement balance that is right for them.</p><p>To break this down, I’m feeling hungry and you know what that means… Back to the pizzeria I go!</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/dJACkKbN-Eo" allowfullscreen></iframe></div></div><p>Think about previous versions of DLSS as a magic magnifying glass. I love that 8-inch pizza, but I want more of it, so DLSS takes that pizza and stretches it to look like a 16-inch XL — making it bigger without the crust getting too thin or the cheese burning more easily (this is resolution scaling).</p><p>Then every now and again, the chef slides an extra few slices into the box between every real slice you actually order, so it feels like you’re eating more at a faster pace (frame generation).</p><p>Now, with the fifth generation, there’s an AI master chef that doesn’t just stretch the pizza, it re-imagines it. With settings turned up to max, the chef looks at that cheap pepperoni slice and says “I know what you were trying to do here, but I can do better,” and swaps it with artisanal, hand-cured salami and fresh buffalo mozzarella — even though you didn’t order those things.</p><p>Basically, DLSS 5 has stopped trying to “show you the game better,” and is now resorting to “showing you a better version of the game.” </p><h2 id="bridging-the-uncanny-valley">Bridging the uncanny valley</h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/pJdFoN8v5B2sbEQGuwt54D-1920-80.jpg" alt="DLSS 5" /><figcaption><small role="credit">Nvidia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/xargW55nJBhGzLt6PbXw6D-1920-80.jpg" alt="DLSS 5" /><figcaption><small role="credit">Nvidia</small></figcaption></figure></figure><p>We can’t say any of us didn’t see this coming. Jensen himself talked about it at CES 2026 in a <a href="https://www.tomsguide.com/computing/gpus/were-working-on-things-that-are-utterly-shocking-nvidias-ceo-on-pc-gamings-future-solving-the-ram-pricing-crisis-and-the-lore-behind-his-leather-jackets">behind-closed-doors Q&A session</a> and shot his shot at a growing “fusion between rendering and generative AI.”</p><p>“In the future, it is very likely that we'll do more and more computation on fewer and fewer pixels. By doing so, the pixels that we compute are insanely beautiful, and then we use AI to infer what must be around it.” Huang said. He talked about the “utterly shocking and incredible” results he saw in the labs that looked like “basically a photograph interacting with you at 500 frames per second.”</p><p>And now we have our first glimpse at it. In some of the game videos it’s a significant improvement, but in others you can start to spot some creative challenges that will surely be worked out as we close in on an official launch.</p><p>Let's start with the faces (yep, we’ve got to talk about Grace’s face in Resident Evil: Requiem). There was a recent <a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC11957730" target="_blank">brain scan study</a> that showed our brains process “hyper-realistic AI faces” differently than real faces. A sudden spike in activity around 600ms after seeing an image that triggers an internal uneasy mismatch feeling. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/HPcS7QRKY2t4TczRarpgPM-1920-80.jpg" alt="DLSS 5" /><figcaption><small role="credit">Nvidia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Wna9LHrRmYgtRbUcrLoRPM-1920-80.jpg" alt="DLSS 5" /><figcaption><small role="credit">Nvidia</small></figcaption></figure></figure><p>That’s what I believe is happening here, and a lot more of it comes down to the cinematic lighting than I initially thought. Based on my time pixel peeping videos and image comparisons, I’d say about 60% of Grace’s face tweaks here can be explained by lighting and material depth. </p><p>The remaining 40% is neural rendering — there are definitely fuller lips and sharper jawlines (not that Leon Kennedy needs it, being the smokeshow he is).</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/mmejPBHa47qhR5qpJCKy4V-1920-80.jpg" alt="DLSS 5" /><figcaption><small role="credit">Nvidia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/yJ3jTiqSHVt8Ak68ZU7e5V-1920-80.jpg" alt="DLSS 5" /><figcaption><small role="credit">Nvidia</small></figcaption></figure></figure><p>In some places, this photorealism really shines — games like EA Sports FC and Starfield truly benefit from this upgrade. But I can appreciate the view around creative interpretation vs AI creating a jarring effect.</p><p>There are some other things I noticed, too. Surfaces and textures have been given a serious upgrade, but with DLSS’ reinterpretation of lighting, some of it feels less stylized or moody. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/5HPLpR5muFDLNShFXXCz5P-1920-80.jpg" alt="DLSS 5" /><figcaption><small role="credit">Nvidia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/gANBzC6w7p93A5mSvQCd6P-1920-80.jpg" alt="DLSS 5" /><figcaption><small role="credit">Nvidia</small></figcaption></figure></figure><p>Take this scene from Nvidia's Zorah Demo, for example. Before, there was a warmer hue and intentional shadowing to add depth, but that is re-interpreted with the cinematic lighting in a way that I feel loses the vibe a little.</p><p>All-in-all, DLSS 5 is a diamond in the rough. I can see what the intention is, but <strong>this is all completely in the hands of devs</strong> to use however they wish. Maybe Capcom rolls back on the face tech, or Warner Bros. alters the cinematic lighting. It will take time to find the right balance.</p><h2 id="i-ve-got-some-questions">I’ve got some questions</h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/EqvUtwXKy4AP5zzWFP5BzN-1920-80.jpg" alt="DLSS 5" /><figcaption><small role="credit">Nvidia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/g2mBWGd7JSyYRAU95cLC3P-1920-80.jpg" alt="DLSS 5" /><figcaption><small role="credit">Nvidia</small></figcaption></figure></figure><p>But of course, this is one PC gamer who’s tested all the <a href="https://www.tomsguide.com/computing/gpus/best-graphics-cards">best GPUs</a> and the tech that enables them — pixel peeping videos and screenshots. I think it’s something we all have to interact with to get a fuller understanding of DLSS 5.</p><p>And if Nvidia’s reading this (hi btw), before I (hopefully) get some hands (and eyes) on time with it, I do have some questions to get a better understanding of what’s going on under the hood:</p><ul><li>What is that real-time neural rendering and what has it been trained on?</li><li>How big is the DLSS 5 model now, and what is the goal for it by fall? Currently demos showed on 2 RTX 5090s — so optimization/compression is key.</li><li>What are the controls for more stylized games? Titles that don't necessarily benefit from photorealism with cel-shaded or more artistic graphics.</li></ul><h2 id="dlss5-outlook">DLSS5 outlook</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="EL9rF3qyjGoXrh2Q4xbVbJ" name="RTX 5070 vs RTX 5070 Ti" alt="RTX 5070 vs RTX 5070 Ti" src="https://cdn.mos.cms.futurecdn.net/EL9rF3qyjGoXrh2Q4xbVbJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The timing of these announcements always makes me chuckle. I know it may be unintentional, but it just feels like once another GPU company announces an update to its upscaling/frame generation tech, Nvidia just says “hold my beer” and takes another giant step ahead of the pack.</p><p>Intel XeSS 3 with multi-frame generation? How about a little DLSS 4.5. AMD FSR Diamond? Well, here’s DLSS 5. And honestly, it is a breakthrough — but I can totally understand the mixed response.</p><p>In some titles, it is a generational leap forward. In others, it can feel like an AI veneer. But ultimately, the tech is here and devs can turn it up or down however they want. Nvidia isn’t adding slop to games, that team is marching forward to photorealism with another feather in the cap of developers to bring their visions to life.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/gpus/i-went-eyes-on-with-nvidias-dlss-4-5-dynamic-multi-frame-generation-launching-march-31-and-its-a-game-changer">I went eyes-on with Nvidia’s DLSS 4.5 Dynamic Multi-Frame Generation launching March 31 — and it’s a game-changer</a></li><li><a href="https://www.tomsguide.com/gaming/pc-gaming/nvidia-just-revealed-3-big-upgrades-to-its-geforce-now-cloud-gaming-service-heres-whats-new">Nvidia just revealed 3 big upgrades to its GeForce Now cloud gaming service — here's what's new</a></li><li><a href="https://www.tomsguide.com/computing/macbooks/we-just-ran-cyberpunk-2077-and-resident-evil-4-remake-on-the-macbook-neo-heres-what-happened">Testing the MacBook Neo: Can an iPhone chip really run Cyberpunk 2077?</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Nvidia says DLSS 5 is the 'GPT moment for graphics' — here's why it could change everything ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Nvidia isn't a company content to sit back and enjoy its wins. Instead, it's always looking to push graphics technology forward, and at its <a href="https://www.tomsguide.com/computing/live/nvidia-gtc-2026-live">GTC 2026 event</a>, the company revealed DLSS 5, a new technology designed to deliver a significant leap in <a href="https://www.tomsguide.com/gaming/pc-gaming/the-rtx-5090-is-the-best-graphics-card-ive-ever-owned-but-theres-a-catch-for-living-room-pc-gamers">video game graphics</a>. </p><p>"Twenty-five years after NVIDIA invented the programmable shader, we are reinventing computer graphics once again," said Jensen Huang, founder and CEO of NVIDIA, in a <a href="https://nvidianews.nvidia.com/news/nvidia-dlss-5-delivers-ai-powered-breakthrough-in-visual-fidelity-for-games" target="_blank">press release</a>. That's exciting for gamers looking for the best visuals, which is why the CEO called it a "GPT moment for graphics."</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/dJACkKbN-Eo" allowfullscreen></iframe></div></div><h2 id="what-is-dlss-5-and-should-you-care">What is DLSS 5 and should you care?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ybW7ArdCgcP56zqTBsKWbM" name="NVIDIA GTC Keynote 2026 49-41 screenshot" alt="Hogwarts Legacy DLSS 5" src="https://cdn.mos.cms.futurecdn.net/ybW7ArdCgcP56zqTBsKWbM-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>According to Huang, DLSS 5 is about "blending handcrafted rendering with generative AI to deliver a dramatic leap in visual realism while preserving the control artists need for creative expression."</p><p>Essentially, it's using AI to enhance game visuals by infusing scenes with photorealistic lighting and materials. It sounds like game artists will still make characters, scenes and other aspects of the game by hand and DLSS 5 will come in and make everything look nicer. </p><p>Nvidia claims that its <a href="https://www.tomsguide.com/ai/its-no-fortnite-but-i-just-created-a-game-using-grok-heres-how">AI technology</a> "uses its deep understanding to generate visually precise images that handle complex elements such as subsurface scattering on skin, the delicate sheen of fabric and light-material interactions on hair, all while retaining the structure and semantics of the original scene." </p><p>That sounds like the stylistic choices made by developers won't change — everything will just look more realistic. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XY3GZW"></div>                            </div>                            <script src="https://kwizly.com/embed/XY3GZW.js" async></script><p>It sounds like big game publishers are excited to use the technology in their games, with Nvidia touting brands like Bethesda, Capcom and Vantage Studios as using it. Other games that will include DLSS 5 support include AION 2, <a href="https://www.tomsguide.com/gaming/i-played-5-hours-of-assassins-creed-shadows-and-i-already-want-more">Assassin’s Creed Shadows</a>, Delta Force, Hogwarts Legacy, Phantom Blade Zero, <a href="https://www.tomsguide.com/gaming/pc-gaming/resident-evil-requiem-with-path-tracing-is-horrifying-and-i-mean-that-as-a-compliment-to-nvidia-and-dlss-4">Resident Evil Requiem</a>, Sea of Remnants, <a href="https://www.tomsguide.com/opinion/starfield-showed-me-the-best-and-worst-parts-of-cloud-gaming">Starfield</a>, The Elder Scrolls IV: Oblivion Remastered, Where Winds Meet and more.</p><p>“Bethesda has such a rich history pushing graphics with NVIDIA, going all the way back to Morrowind, with that incredible water,” said Todd Howard, studio head and executive producer at Bethesda Game Studios, talking up the technology. “When NVIDIA showed us DLSS 5 and we got it running in Starfield, it was amazing how it brought it to life. We’ve played it. We can’t wait for all of you to do so as well.”</p><h2 id="when-will-we-dlss-5-arrive">When will we DLSS 5 arrive?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="wCckHxw68LXgtKj3mm5HqS" name="Nvidia" alt="Nvidia" src="https://cdn.mos.cms.futurecdn.net/wCckHxw68LXgtKj3mm5HqS-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>While Nvidia didn't provide an exact release date, the company said it'll be available in the fall of 2026, so we won't need to wait too long to see how it affects games going forward. </p><p>And with new game consoles on the way from <a href="https://www.tomsguide.com/gaming/playstation/ps6-leaks-and-rumors">Sony</a> and <a href="https://www.tomsguide.com/gaming/xbox/next-xbox-will-play-your-xbox-and-pc-games-new-ceo-promises">Microsoft</a>, it'll be exciting to see how this technology comes into play.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/gpus/i-went-eyes-on-with-nvidias-dlss-4-5-dynamic-multi-frame-generation-launching-march-31-and-its-a-game-changer">I went eyes-on with Nvidia’s DLSS 4.5 Dynamic Multi-Frame Generation launching March 31 — and it’s a game-changer</a></li><li><a href="https://www.tomsguide.com/gaming/pc-gaming/nvidia-just-revealed-3-big-upgrades-to-its-geforce-now-cloud-gaming-service-heres-whats-new">Nvidia just revealed 3 big upgrades to its GeForce Now cloud gaming service — here's what's new</a></li><li><a href="https://www.tomsguide.com/computing/virtual-reality/nvidia-is-bringing-a-killer-app-to-the-apple-vision-pro-and-its-good-news-for-sim-racers">Nvidia is bringing a killer app to the Apple Vision Pro — and it's good news for sim racers</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/hardware/nvidia-just-announced-dlss-5-and-its-reinventing-computer-graphics-once-again</link>
                                                                            <description>
                            <![CDATA[ "DLSS 5 is the GPT moment for graphics," Jensen Huang, founder and CEO of NVIDIA. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">PhAHjhucS6cJ4JU9ACwkWM</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/daPCyQ9bsxdP4gwJEPpQUf-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 16 Mar 2026 19:16:00 +0000</pubDate>                                                                                                                                <updated>Mon, 16 Mar 2026 21:10:59 +0000</updated>
                                                                                                                                            <category><![CDATA[Computing Hardware]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                                                                <author><![CDATA[ dave.leclair@futurenet.com (Dave LeClair) ]]></author>                    <dc:creator><![CDATA[ Dave LeClair ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/fyx7qYdxPMTNBhdnMfNmaB-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Dave LeClair is the Senior News Editor for Tom&#039;s Guide, keeping his finger on the pulse of all things technology. He loves taking the complicated happenings in the tech world and explaining why they matter. Whether Apple is announcing the next big thing in the mobile space or a small startup advancing generative AI, Dave will apply his experience to help you figure out what&#039;s happening and why it&#039;s relevant to your life.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Before Tom&#039;s Guide, Dave worked for publications like PCMag, Pocket-lint, MUO, How-To Geek, Digital Trends, and others. He started writing about technology professionally for MUO in 2011 and hasn&#039;t looked back since. In addition to news, you can find reviews, how-to pieces, shopping guides, and many other types of content with Dave&#039;s name attached.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/daPCyQ9bsxdP4gwJEPpQUf-1920-80.jpg">
                                                            <media:credit><![CDATA[Nvidia]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Nvidia DLSS 5]]></media:description>                                                            <media:text><![CDATA[Nvidia DLSS 5]]></media:text>
                                <media:title type="plain"><![CDATA[Nvidia DLSS 5]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/daPCyQ9bsxdP4gwJEPpQUf-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Nvidia isn't a company content to sit back and enjoy its wins. Instead, it's always looking to push graphics technology forward, and at its <a href="https://www.tomsguide.com/computing/live/nvidia-gtc-2026-live">GTC 2026 event</a>, the company revealed DLSS 5, a new technology designed to deliver a significant leap in <a href="https://www.tomsguide.com/gaming/pc-gaming/the-rtx-5090-is-the-best-graphics-card-ive-ever-owned-but-theres-a-catch-for-living-room-pc-gamers">video game graphics</a>. </p><p>"Twenty-five years after NVIDIA invented the programmable shader, we are reinventing computer graphics once again," said Jensen Huang, founder and CEO of NVIDIA, in a <a href="https://nvidianews.nvidia.com/news/nvidia-dlss-5-delivers-ai-powered-breakthrough-in-visual-fidelity-for-games" target="_blank">press release</a>. That's exciting for gamers looking for the best visuals, which is why the CEO called it a "GPT moment for graphics."</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/dJACkKbN-Eo" allowfullscreen></iframe></div></div><h2 id="what-is-dlss-5-and-should-you-care">What is DLSS 5 and should you care?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ybW7ArdCgcP56zqTBsKWbM" name="NVIDIA GTC Keynote 2026 49-41 screenshot" alt="Hogwarts Legacy DLSS 5" src="https://cdn.mos.cms.futurecdn.net/ybW7ArdCgcP56zqTBsKWbM-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>According to Huang, DLSS 5 is about "blending handcrafted rendering with generative AI to deliver a dramatic leap in visual realism while preserving the control artists need for creative expression."</p><p>Essentially, it's using AI to enhance game visuals by infusing scenes with photorealistic lighting and materials. It sounds like game artists will still make characters, scenes and other aspects of the game by hand and DLSS 5 will come in and make everything look nicer. </p><p>Nvidia claims that its <a href="https://www.tomsguide.com/ai/its-no-fortnite-but-i-just-created-a-game-using-grok-heres-how">AI technology</a> "uses its deep understanding to generate visually precise images that handle complex elements such as subsurface scattering on skin, the delicate sheen of fabric and light-material interactions on hair, all while retaining the structure and semantics of the original scene." </p><p>That sounds like the stylistic choices made by developers won't change — everything will just look more realistic. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XY3GZW"></div>                            </div>                            <script src="https://kwizly.com/embed/XY3GZW.js" async></script><p>It sounds like big game publishers are excited to use the technology in their games, with Nvidia touting brands like Bethesda, Capcom and Vantage Studios as using it. Other games that will include DLSS 5 support include AION 2, <a href="https://www.tomsguide.com/gaming/i-played-5-hours-of-assassins-creed-shadows-and-i-already-want-more">Assassin’s Creed Shadows</a>, Delta Force, Hogwarts Legacy, Phantom Blade Zero, <a href="https://www.tomsguide.com/gaming/pc-gaming/resident-evil-requiem-with-path-tracing-is-horrifying-and-i-mean-that-as-a-compliment-to-nvidia-and-dlss-4">Resident Evil Requiem</a>, Sea of Remnants, <a href="https://www.tomsguide.com/opinion/starfield-showed-me-the-best-and-worst-parts-of-cloud-gaming">Starfield</a>, The Elder Scrolls IV: Oblivion Remastered, Where Winds Meet and more.</p><p>“Bethesda has such a rich history pushing graphics with NVIDIA, going all the way back to Morrowind, with that incredible water,” said Todd Howard, studio head and executive producer at Bethesda Game Studios, talking up the technology. “When NVIDIA showed us DLSS 5 and we got it running in Starfield, it was amazing how it brought it to life. We’ve played it. We can’t wait for all of you to do so as well.”</p><h2 id="when-will-we-dlss-5-arrive">When will we DLSS 5 arrive?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="wCckHxw68LXgtKj3mm5HqS" name="Nvidia" alt="Nvidia" src="https://cdn.mos.cms.futurecdn.net/wCckHxw68LXgtKj3mm5HqS-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>While Nvidia didn't provide an exact release date, the company said it'll be available in the fall of 2026, so we won't need to wait too long to see how it affects games going forward. </p><p>And with new game consoles on the way from <a href="https://www.tomsguide.com/gaming/playstation/ps6-leaks-and-rumors">Sony</a> and <a href="https://www.tomsguide.com/gaming/xbox/next-xbox-will-play-your-xbox-and-pc-games-new-ceo-promises">Microsoft</a>, it'll be exciting to see how this technology comes into play.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/gpus/i-went-eyes-on-with-nvidias-dlss-4-5-dynamic-multi-frame-generation-launching-march-31-and-its-a-game-changer">I went eyes-on with Nvidia’s DLSS 4.5 Dynamic Multi-Frame Generation launching March 31 — and it’s a game-changer</a></li><li><a href="https://www.tomsguide.com/gaming/pc-gaming/nvidia-just-revealed-3-big-upgrades-to-its-geforce-now-cloud-gaming-service-heres-whats-new">Nvidia just revealed 3 big upgrades to its GeForce Now cloud gaming service — here's what's new</a></li><li><a href="https://www.tomsguide.com/computing/virtual-reality/nvidia-is-bringing-a-killer-app-to-the-apple-vision-pro-and-its-good-news-for-sim-racers">Nvidia is bringing a killer app to the Apple Vision Pro — and it's good news for sim racers</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Nvidia GTC 2026 LIVE — Jensen Huang reveals DLSS 5, OpenClaw partnership, and an Olaf robot ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="live-content"><p>It’s officially that time again — GTC 2026 is kicking off in San Jose, and the energy is already through the roof. Jensen Huang is taking the stage today at <strong>11am PT / 2pm ET / 6pm GMT</strong>, and if history is any indication, Team Green isn't planning on holding back.</p><p>We’re looking at a massive shift toward <strong>agentic and physical AI</strong>, but let’s be real: we’re all eyes and ears for more details about Vera Rubin (an enterprise-level sneak peek at <a href="https://www.tomsguide.com/computing/gpus/nvidia-rtx-60-series-gpus-rumors-leaks-and-everything-we-know-so-far">RTX 60-series</a>). Oh, and let's not forget that <a href="https://www.tomsguide.com/computing/gpus/nvidia-says-pc-gaming-will-look-like-a-film-how-gpus-will-get-to-1-million-times-better-path-tracing-and-why-its-closer-than-you-think">glimpse of "the future of real-time rendering"</a> in PC gaming!</p><p>Stick with us from the pre-game hype all the way through the final reveal. We’ll be breaking down every announcement to show you exactly how this tech is going to land in your day-to-day.</p><h3 class="article-body__section" id="section-how-to-watch-nvidia-gtc-2026"><span>How to watch Nvidia GTC 2026</span></h3><p>You can watch the keynote here.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/jw_o0xr8MWU" allowfullscreen></iframe></div></div><h3 class="article-body__section" id="section-nvidia-gtc-2026-every-big-announcement"><span>Nvidia GTC 2026: Every big announcement</span></h3><ul><li><strong>DLSS 5: </strong>DLSS 4.5 just dropped a few months ago, but DLSS 5 is already in the works. We won't know how good it is until we see it in action but online reactions have definitely been in the negative calling it a "Snapchat filter" and worse.</li><li><strong>IBM Watson X and Nvidia: </strong>Nvidia's platforms can "refresh global operations data in minutes" as shown in a partnership with IBM and the company's Watson X.</li><li><strong>Vera Rubin Ultra: </strong>Nvidia's AI data center platform gets a major upgrade that can connect up to 144 GPUs. Its "vertically integrated completely with software" and designed for AI agent systems.</li><li><strong>NemoClaw: </strong>Nemoclaw is an open source partnership between OpenClaw and Nvidia dubbed Nemoclow. Jensen described it as an "opensourced operating system of agentic computers." OpenClaw is shows the future of personal AI agents, Jensen promised.</li><li><strong>Self-driving cars and robots: </strong>At the end, Huang showed off several "physical AI models" that power things like Nvidia's Alpamayo for self-driving cars, warehouse robots. It ended with an Olaf from <em>Frozen</em> robot wandering the stage like a lost child.</li></ul><h3 class="article-body__section" id="section-nvidia-gtc-2026-latest-updates"><span>Nvidia GTC 2026: Latest updates</span></h3></div><div class="live-content"><time datetime="2026-03-16T14:17:04+00:00">March 16, 2026 – 10:17 AM</time><h2 id="welcome-back">Welcome back!</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="sifjn2oLn9AuoZ7HVZmuiG" name="Nvidia" alt="Nvidia" src="https://cdn.mos.cms.futurecdn.net/sifjn2oLn9AuoZ7HVZmuiG-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>It's been a while since the <a href="https://www.tomsguide.com/computing/live/nvidia-gtc-october-2025-live">last GTC event back in October of last year</a> (and the <a href="https://www.tomsguide.com/news/live/nvidia-ces-2026-keynote-live">CES 2026 keynote</a> in January). But Nvidia is back and this looks set to be a big one — with CEO Jensen Huang looking set to lay out the next few years of hardware and AI breakthroughs.</p><p>But one thing we're particularly excited about is a glimpse at <a href="https://www.tomsguide.com/computing/gpus/nvidia-says-pc-gaming-will-look-like-a-film-how-gpus-will-get-to-1-million-times-better-path-tracing-and-why-its-closer-than-you-think">"the future of real-time rendering"</a> for PC gaming. These events are usually super focused on the AI factories of the future, and given the lofty promises made by Team Green back at GDC 2026, we may be seeing a preview of a generation of neural rendering that exceeds even what DLSS is capable of.</p></div><div class="live-content"><time datetime="2026-03-16T14:31:59+00:00">March 16, 2026 – 10:31 AM</time><h2 id="previously-at-gtc-and-ces">Previously at GTC (and CES)</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Kxh6Fgxoc4CRqkFvGU6cMK" name="Nvidia CES 2026" alt="Nvidia CES 2026" src="https://cdn.mos.cms.futurecdn.net/Kxh6Fgxoc4CRqkFvGU6cMK-1920-80.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Each GTC follows a pretty reliable playbook for the year — with March being the event where all the big new stuff is announced. This is what happened last March.</p><ul><li><strong>Nvidia Isaac Groot N1</strong>: A new model for robotics, Groot N1 is set to be "the world’s first open Humanoid Robot foundation model."</li><li><strong>"Blue," Robotics and AI collaboration</strong>: Powered by a new physics engine to simulate robotic movements, Newton was introduced, showcasing a little robot named Blue. It's a collaborative robotics project with Disney Research and Google DeepMind. An open-source model of Newton will arrive later in 2025.</li><li><strong>Blackwell Ultra AI chips</strong>: New chips to be released later this year, aimed at meeting the growing demand for computational power in AI.</li><li><strong>Vera Rubin Architecture</strong>: The next step beyond Blackwell, Vera Rubin will increase bandwidth and perform even faster. It's set for release in late 2026, with Vera Rubin Ultra expected in 2027.</li><li><strong>Nvidia Dynamo</strong>: Nvidia's new open-source software system designed to scale AI models effectively, and it's able to customize a data center far more effectively.</li><li><strong>Self-driving cars</strong>: Nvidia is teaming up with GM to create autonomous cars, developing custom AI systems for autonomous vehicles and putting "AI in the car."</li></ul><p>And you saw these evolve over the year, including Groot N1 making it into more robotics, an Uber partnership for self-driving AI, and Vera Rubin showed in much more detail at <a href="https://www.tomsguide.com/news/live/nvidia-ces-2026-keynote-live">CES 2026</a>.</p></div><div class="live-content"><time datetime="2026-03-16T14:39:33+00:00">March 16, 2026 – 10:39 AM</time><h2 id="more-vera-rubin">More vera rubin?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="RV4PBZWvfe6YeWVFTejCzS" name="Nvidia" alt="Nvidia" src="https://cdn.mos.cms.futurecdn.net/RV4PBZWvfe6YeWVFTejCzS-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>We got a whole lot of info on Vera Rubin at CES 2026, including stats on just how much more powerful this is than the Blackwell GPU tech you see in the RTX 50-series. Namely, 5x more powerful to drive the AI data centers of the future.</p><p>While speaking about data centers can be kinda dull, the main thing to look at is the architecture and what it's capable of from a GPU perspective, because it's looking <em>very </em>likely that the <a href="https://www.tomsguide.com/computing/gpus/nvidia-rtx-60-series-gpus-rumors-leaks-and-everything-we-know-so-far">RTX 60-series</a> will tout the Rubin stylings on the die.</p></div><div class="live-content"><time datetime="2026-03-16T14:50:57+00:00">March 16, 2026 – 10:50 AM</time><h2 id="will-we-see-nvidia-n1-n1x">Will we see Nvidia N1/N1X?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:896px;"><p class="vanilla-image-block" style="padding-top:32.48%;"><img id="whzKrTnoAkWJ3zi9f5Xitj" name="Screenshot 2026-01-23 100627" alt="Screenshot of Lenovo Legion Space support page showing the Legion 7 Nvidia laptop" src="https://cdn.mos.cms.futurecdn.net/whzKrTnoAkWJ3zi9f5Xitj-1920-80.png" mos="" align="middle" fullscreen="" width="896" height="291" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Lenovo)</span></figcaption></figure><p>These chips keep appearing in random spec sheets here and there, so why am I only saying it's a "maybe?"</p><p>Well, the answer comes down to two things. First, I'm not hearing much about it after the swell of reports last month. And second, this show's always been very AI-centric. Of course, we're getting that gaming preview on the keynote stage, which is definitely a change from the norm.</p><p>So it's anyone's guess really, but I hope we do get something here!</p></div><div class="live-content"><time datetime="2026-03-16T14:52:31+00:00">March 16, 2026 – 10:52 AM</time><h2 id="ready-to-pre-game">Ready to pre-game?</h2><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/RTmSrIFZanc" allowfullscreen></iframe></div></div><p>No, I'm not talking about the kind that involves beer, but rather conversations about "accelerated computing beyond AI." We'll be watching with you, so jump in for talks about "one of teh largest infrastructure build-outs in history."</p></div><div class="live-content"><time datetime="2026-03-16T15:04:07+00:00">March 16, 2026 – 11:04 AM</time><h2 id="why-path-tracing-is-important">Why Path Tracing is important</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="jynyHynRrJqeZnrVF22ueL" name="Resident Evil Requiem" alt="Resident Evil Requiem" src="https://cdn.mos.cms.futurecdn.net/jynyHynRrJqeZnrVF22ueL-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>So I tested <a href="https://www.tomsguide.com/gaming/pc-gaming/resident-evil-requiem-with-path-tracing-is-horrifying-and-i-mean-that-as-a-compliment-to-nvidia-and-dlss-4">path tracing in Resident Evil Requiem</a>, and it's truly capable of some spectacular things — really adding immersion to a scene while keep frame rates fast and fluid thanks to DLSS 4.5 AI trickery.</p><p>Path tracing is all about physical accuracy. It’s not just a reflection in a puddle, it’s how light from a neon sign bounces off a wet pavement, hits a character’s chrome jacket and subtly tints their skin red. It’s not just the ray traced shiny surfaces of old; path tracing calculates how light interacts with literally everything in a scene in a realistic way.</p><p>This can be super testing to do entirely through calculations on the GPU itself, but with a neural network trained on billions of surfaces and light sources, it's more efficient to do through AI, as you can see from our numbers.</p><iframe allow="" height="600px" width="100%" id="" style="width:100%;height:600px;" class="position-center" data-lazy-priority="low" data-lazy-src="https://flo.uri.sh/story/3596707/embed"></iframe></div><div class="live-content"><time datetime="2026-03-16T15:28:58+00:00">March 16, 2026 – 11:28 AM</time><h2 id="nvidia-is-bringing-a-killer-app-to-apple-vision-pro">Nvidia is bringing a killer app to Apple Vision Pro!</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="oPVapWuQiJbFgshS4eFdk5" name="Apple Vision Pro Nvidia CloudXR" alt="Apple Vision Pro Nvidia CloudXR" src="https://cdn.mos.cms.futurecdn.net/oPVapWuQiJbFgshS4eFdk5-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I'm a sim racer, and <a href="https://www.tomsguide.com/gaming/ive-started-sim-racing-in-vr-and-ill-never-go-back-heres-why">race often in VR.</a> One of the obstacles has always been the mess of cables for high quality wired VR racing, or the lower picture quality when going wireless.</p><p>But now, <a href="https://www.tomsguide.com/computing/virtual-reality/nvidia-is-bringing-a-killer-app-to-the-apple-vision-pro-and-its-good-news-for-sim-racers">Nvidia's CloudXR software is compatible with Apple Vision Pro</a>, and iRacing (and a flying sim game) are going to be fully playable wirelessly at 4K 120FPS!</p><p>This is a significant development, and a huge step forward for PC VR (and it's tempting me to burn $3,500 on an AVP!)</p></div><div class="live-content"><time datetime="2026-03-16T15:43:23+00:00">March 16, 2026 – 11:43 AM</time><h2 id="current-lowest-prices-on-nvidia-rtx-50-series-gpus">Current lowest prices on Nvidia RTX 50-series GPUs</h2><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/RTmSrIFZanc" allowfullscreen></iframe></div></div><p>While we're watching the pre-amble and interviews with key AI and infrastructure companies that rely on Nvidia, let's bring this back to you. As you may know, the RAM price crisis has sent costs spiraling.</p><p>On top of that, Nvidia did confirm that s<a href="https://www.tomsguide.com/computing/nvidia-exec-warns-gpu-supply-could-be-very-tight-over-following-months">tocking consumer GPUs was going to be a struggle this year</a>, as the focus goes on data center rollout. That has sent prices a little out of control (to say the least).</p><p>If you're committed to getting one, here are the cheapest prices we've found! The UK isn't as <em>hard </em>hit (especially at the mid-range). But prices have gone up across the board.</p><div ><table><thead><tr><th class="firstcol " ><p><strong>GPU</strong></p></th><th  ><p><strong>MSRP (US)</strong></p></th><th  ><p><strong>Lowest price (US)</strong></p></th><th  ><p><strong>RRP (UK)</strong></p></th><th  ><p><strong>Lowest price (UK)</strong></p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Nvidia GeForce RTX 5090</strong></p></td><td  ><p>$1,999</p></td><td  ><p><a href="https://www.newegg.com/gigabyte-gv-n5090gaming-oc-32gd-geforce-rtx-5090-32gb-graphics-card-triple-fans/p/N82E16814932761" target="_blank" rel="nofollow">$3,799</a></p></td><td  ><p>£1,799</p></td><td  ><p><a href="https://www.scan.co.uk/products/gigabyte-nvidia-geforce-rtx-5090-gaming-oc-32gb-graphics-card" target="_blank" rel="nofollow">£2,799</a></p></td></tr><tr><td class="firstcol " ><p><strong>Nvidia GeForce RTX 5080</strong></p></td><td  ><p>$999</p></td><td  ><p><a href="https://www.newegg.com/zotac-gaming-geforce-rtx-5080-solid-core-oc-16gb-graphics-card-triple-fans/p/N82E16814500604" target="_blank" rel="nofollow">$1,349</a></p></td><td  ><p>£979</p></td><td  ><p><a href="https://www.overclockers.co.uk/palit-geforce-rtx-5080-gaming-pro-16gb-gddr7-pci-express-graphics-card-gra-pal-04059.html" target="_blank" rel="nofollow">£1,049</a></p></td></tr><tr><td class="firstcol " ><p><strong>Nvidia GeForce RTX 5070 Ti</strong></p></td><td  ><p>$749</p></td><td  ><p><a href="https://www.newegg.com/zotac-gaming-geforce-rtx-5070-ti-solid-sff-oc-16gb-graphics-card-triple-fans/p/N82E16814500607" target="_blank" rel="nofollow">$999</a></p></td><td  ><p>£729</p></td><td  ><p><a href="https://www.scan.co.uk/products/gigabyte-nvidia-geforce-rtx-5070-ti-windforce-sff-16gb-gddr7-graphics-card-dlss-4-8960-cores-2452-mh" target="_blank" rel="nofollow">£799</a></p></td></tr><tr><td class="firstcol " ><p><strong>Nvidia GeForce RTX 5070</strong></p></td><td  ><p>$549</p></td><td  ><p><a href="https://www.newegg.com/msi-rtx-5070-12g-shadow-2x-oc-geforce-rtx-5070-12gb-graphics-card-double-fans/p/N82E16814137944" target="_blank" rel="nofollow">$649</a></p></td><td  ><p>£539</p></td><td  ><p><a href="https://www.scan.co.uk/products/zotac-nvidia-geforce-rtx-5070-solid-12gb-gddr7-ray-tracing-graphics-card-6144-cores-2512-mhz-boost" target="_blank" rel="nofollow">£539</a></p></td></tr><tr><td class="firstcol " ><p><strong>Nvidia GeForce RTX 5060 Ti (16GB)</strong></p></td><td  ><p>$429</p></td><td  ><p><a href="https://www.newegg.com/msi-rtx-5060-ti-16g-ventus-2x-oc-black-plus-geforce-rtx-5060-ti-16gb-graphics-card-double-fans/p/N82E16814137992" target="_blank" rel="nofollow">$569</a></p></td><td  ><p>£399</p></td><td  ><p><a href="https://www.overclockers.co.uk/gainward-geforce-rtx-5060-ti-python-iii-oc-16gb-gddr7-pci-express-graphics-gra-gnw-04901.html" target="_blank" rel="nofollow">£428</a></p></td></tr></tbody></table></div></div><div class="live-content"><time datetime="2026-03-16T16:02:15+00:00">March 16, 2026 – 12:02 PM</time><h2 id="ai-is-creating-better-safer-jobs">"AI is creating better, safer jobs"</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="anHBZa5hVnPueY6ushAhAH" name="Nvidia GTC" alt="Nvidia GTC" src="https://cdn.mos.cms.futurecdn.net/anHBZa5hVnPueY6ushAhAH-1920-80.png" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>In speaking with an exec at CAT about autonomy in the machinery space, this quote just came out of one of the presenters... Tell that to the <a href="https://invezz.com/pk/news/2026/03/16/ai-layoff-wave-hits-tech-45000-jobs-gone-in-early-2026/" target="_blank">45,000 people who have lost their jobs</a> in the tech space so far in early 2026.</p></div><div class="live-content"><time datetime="2026-03-16T16:18:48+00:00">March 16, 2026 – 12:18 PM</time><h2 id="what-is-the-mystery-chip-jensen-will-surprise-the-world-with">What is the mystery chip Jensen will 'surprise the world' with?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="wCckHxw68LXgtKj3mm5HqS" name="Nvidia" alt="Nvidia" src="https://cdn.mos.cms.futurecdn.net/wCckHxw68LXgtKj3mm5HqS-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>So back in February, CEO <a href="https://www.tomsguide.com/computing/jensen-huang-says-nvidia-will-surprise-the-world-with-a-mystery-chip-heres-what-to-expect">Jensen Huang started hyping up the conference</a> by saying we will see "several new chips the world has never seen before." What are these going to be?</p><p>Well, we have seen the Vera CPU and Rubin GPU that will drive 5x more performance through AI data centers (and probably coming to <a href="https://www.tomsguide.com/computing/gpus/nvidia-rtx-60-series-gpus-rumors-leaks-and-everything-we-know-so-far">RTX 60-series</a>) — <a href="https://www.tomsguide.com/news/live/nvidia-ces-2026-keynote-live">announced at CES 2026. </a>But we're anticipating that Nvidia could be throwing us a curveball by revealing its Feynam architecture for next-gen GPUs.</p><p>This (if ever it came to a consumer GPU) would be way further down the line at RTX 70 or RTX 80-series. The specs are crazy on it — built on a 1.6 nanometer process (smallest at the moment is 3nm), so this would be a real trailblazer in bringing some serious speed boosts.</p></div><div class="live-content"><time datetime="2026-03-16T16:25:11+00:00">March 16, 2026 – 12:25 PM</time><h2 id="there-were-4-sunglass-d-ceos-sitting-in-a-row">There were 4 sunglass'd CEOs sitting in a row</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="rzrECcKXLhvmYxPunLqfzR" name="Nvidia GTC" alt="Nvidia GTC" src="https://cdn.mos.cms.futurecdn.net/rzrECcKXLhvmYxPunLqfzR-1920-80.png" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Perplexity, Mistral, Black Forest Labs and Cohere all here to talk new features... But the shades, guys. Did you all talk backstage about the look you all wanted??</p></div><div class="live-content"><time datetime="2026-03-16T16:34:03+00:00">March 16, 2026 – 12:34 PM</time><h2 id="will-this-year-s-gtc-buck-an-unfortunate-trend">Will this year's GTC buck an unfortunate trend?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1171px;"><p class="vanilla-image-block" style="padding-top:65.67%;"><img id="KyGS8iVMQqrgXk4DHjkBrK" name="Nvidia GTC" alt="Nvidia GTC" src="https://cdn.mos.cms.futurecdn.net/KyGS8iVMQqrgXk4DHjkBrK-1920-80.png" mos="" align="middle" fullscreen="" width="1171" height="769" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Sherwood)</span></figcaption></figure><p><a href="https://sherwood.news/markets/when-jensen-huang-speaks-nvidia-usually-falls-gtc-2026-earnings-ces/" target="_blank">Sherwood</a> has found something interesting. Whenever Jensen Huang speaks at a keynote, the stock price goes down. To clarify, this is probably because of the sky-high expectations people have heading into events like this, rather than the show being disappointing.</p></div><div class="live-content"><time datetime="2026-03-16T16:37:43+00:00">March 16, 2026 – 12:37 PM</time><h2 id="stock-price-check">Stock price check!</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1383px;"><p class="vanilla-image-block" style="padding-top:79.97%;"><img id="xvjJahe6AYXzGHLHw5bYC6" name="Nvidia" alt="Nvidia" src="https://cdn.mos.cms.futurecdn.net/xvjJahe6AYXzGHLHw5bYC6-1920-80.png" mos="" align="middle" fullscreen="" width="1383" height="1106" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Google)</span></figcaption></figure><p>A quick glance suggests it <em>may </em>not happen this year. Stock did take a bounce this morning when markets opened, but we'll see what happens when the keynote starts!</p></div><div class="live-content"><time datetime="2026-03-16T16:41:58+00:00">March 16, 2026 – 12:41 PM</time><h2 id="watch-the-jacket">Watch the jacket...</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="HBZNhALNjXjRetMZPRk6D" name="Nvidia CES 2026" alt="Nvidia CES 2026" src="https://cdn.mos.cms.futurecdn.net/HBZNhALNjXjRetMZPRk6D-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I have a theory — the shinier Jensen's jacket is, the more significant the announcements are. There have been more muted leather jackets that have brought smaller announcements with it. But this shiny number came out at CES for Vera Rubin!</p><p>If we ever end up with rhinestones, expect AGI (or RTX 60-series).</p></div><div class="live-content"><time datetime="2026-03-16T16:57:52+00:00">March 16, 2026 – 12:57 PM</time><h2 id="expect-agentic-ai-to-be-the-biggest-talking-point">Expect Agentic AI to be the biggest talking point</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="7sMYmfK44Q4ZFYbe9rfTz4" name="Nvidia GTC" alt="Nvidia GTC" src="https://cdn.mos.cms.futurecdn.net/7sMYmfK44Q4ZFYbe9rfTz4-1920-80.png" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Nvidia itself says "you can expect 10 million digital workers" to work alongside humans in the future — calling it a revolutionary technology. And the OpenClaw revolution has hit GTC too — Peter Steinberger is here in appropriate attire and talking to Nvidia's CEO!</p></div><div class="live-content"><time datetime="2026-03-16T17:07:06+00:00">March 16, 2026 – 1:07 PM</time><h2 id="a-minus-agentic-intelligence">A-minus agentic intelligence</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1280px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Ze3YVcCrgTRTFQHqJku2dR" name="NVIDIA GTC 2026 Live 2-13-43 screenshot" alt="Guy at Nvidia GTC 2026" src="https://cdn.mos.cms.futurecdn.net/Ze3YVcCrgTRTFQHqJku2dR-1920-80.png" mos="" align="middle" fullscreen="" width="1280" height="720" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: NVidia)</span></figcaption></figure><p>In the pre-show, the Top Gun crew are discussing AI agents at scale and the level of intelligence they are possibly close to achieving. </p><p>Right now, Sam Rodriques predicted that they're at an A-minus grade-wise while they're looking for A-plus grades. Specifically, this is in reference to scientific studies and medicinal studies.</p></div><div class="live-content"><time datetime="2026-03-16T17:15:44+00:00">March 16, 2026 – 1:15 PM</time><h2 id="dlss-4-5-might-get-some-shine">DLSS 4.5 might get some shine</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="8nPradLFnK9bDyNHAU2qbX" name="Nvidia DLSS 4.5" alt="Nvidia DLSS 4.5" src="https://cdn.mos.cms.futurecdn.net/8nPradLFnK9bDyNHAU2qbX-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Nvidia launched DLSS 4.5 in January, but it's been missing <a href="https://www.tomsguide.com/computing/gpus/i-went-eyes-on-with-nvidias-dlss-4-5-dynamic-multi-frame-generation-launching-march-31-and-its-a-game-changer">Dynamic Multi-Frame Generation</a>. That should launch in beta on March 31.</p><p>I'm not expecting Nvidia to spend much time on the frame gen evolution, but I wouldn't be surprised if it gets touched on during today's presentation.</p><p>Once it's actually available, you should see a massive leap in frame rate generation and graphical power.</p></div><div class="live-content"><time datetime="2026-03-16T17:26:25+00:00">March 16, 2026 – 1:26 PM</time><h2 id="30-minute-countdown">30 minute countdown</h2><p>As a new batch of CEOs swap in, we're 30 minutes away from the GTC 2026 keynote. It starts at 2 pm ET/11 am PT. </p><p>We're <a href="https://www.tomsguide.com/computing/nvidia-gtc-2026-the-biggest-reveals-we-expect-to-see">expecting a lot </a>out of the nearly 2-hour presentation including agentic AI, the new N1X chip, a mystery AI chip, potentially a new GPU and more.</p></div><div class="live-content"><time datetime="2026-03-16T17:41:06+00:00">March 16, 2026 – 1:41 PM</time><h2 id="viture-announces-partnership-with-nvidia-and-stanford-labs">Viture announces partnership with Nvidia and Stanford Labs</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2880px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="4anaZvw6oeUQzMBmU2zSvE" name="VITURE GTC 2026 exhibition 7 3K" alt="Viture partnership with Nvidia and the Stanford School of Medicine." src="https://cdn.mos.cms.futurecdn.net/4anaZvw6oeUQzMBmU2zSvE-1920-80.png" mos="" align="middle" fullscreen="" width="2880" height="1620" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Viture)</span></figcaption></figure><p>As part of GTC 2026, Viture announced a partnership with Nvidia and the Stanford School of Medicine. </p><p>The "solution" combines Viture's Luma Ultra glasses, an upgraded version of the<a href="https://www.tomsguide.com/computing/smart-glasses/viture-luma-pro-review"> Luma Pro</a>, in combination with LabOS that brings "hands-free clinical guidance and experimental workflows into real-world research and medical environments."</p><p>LabOS lets researchers use XR smart glassses to interpret experiments and workflows and provide guidance. Nvidia comes into play via GeForce NOW, letting them use the cloud gaming service as an immersive screen to experience 2D content in 3D and help identify spatial relationships.</p></div><div class="live-content"><time datetime="2026-03-16T17:50:32+00:00">March 16, 2026 – 1:50 PM</time><h2 id="the-memory-crisis-is-partly-nvidia-s-fault-will-it-be-acknowledged">The memory crisis is partly Nvidia's fault: will it be acknowledged?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="qwfATbpSNufWiNDRegMPdj" name="RTX 50 Jensen" alt="Jensen Huang holding an Nvidia RTX GPU." src="https://cdn.mos.cms.futurecdn.net/qwfATbpSNufWiNDRegMPdj-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Getty Images)</span></figcaption></figure><p>At the end of February, Nvidia execs <a href="https://www.tomsguide.com/computing/nvidia-exec-warns-gpu-supply-could-be-very-tight-over-following-months">admitted during an earnings call</a> that GPU supply could be constrained specifically because of AI data centers. </p><p>Nvidia has been a major part of the push toward AI and AI data centers, propping up companies like OpenAI through heavy investment. </p><p>That boom has created a global RAM shortage with downstream effects on everything from phones and laptops to the availability of helium and aluminum. </p><p>It'll be interesting to see if Jensen acknowledges this today, skirts around it, or ignores the RAM crisis completely.</p></div><div class="live-content"><time datetime="2026-03-16T17:55:29+00:00">March 16, 2026 – 1:55 PM</time><h2 id="5-minute-countdown">5 minute countdown</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="rdw79f8ynqH5xbCk9xx69Q" name="Nvidia GTC" alt="Nvidia GTC" src="https://cdn.mos.cms.futurecdn.net/rdw79f8ynqH5xbCk9xx69Q-1920-80.png" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>We are entering the final countdown to Jensen Huang's keynote. </p><p>What are you interested in seeing today? Let us know in the comments or shoot me an email at scott.younker@futurenet.com.</p></div><div class="live-content"><time datetime="2026-03-16T18:00:27+00:00">March 16, 2026 – 2:00 PM</time><h2 id="starting-soon">Starting soon</h2><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/jw_o0xr8MWU" allowfullscreen></iframe></div></div><p>As a reminder, you can follow along with the keynote on YouTube, linked above and <a href="https://www.youtube.com/watch?v=jw_o0xr8MWU" target="_blank">here</a>.</p></div><div class="live-content"><time datetime="2026-03-16T18:07:28+00:00">March 16, 2026 – 2:07 PM</time><h2 id="enjoying-the-music">Enjoying the music?</h2><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/SKs80r2Lp34" allowfullscreen></iframe></div></div><p>While we wait for Huang to make his appearance, are we enjoying the music? </p><p>It kind of sounds like AI-generated pop, which says more about the pop industry than AI, I suppose.</p><p>Meanwhile, I'm in, as my son says, my "sadboy guitar" era, so enjoy some new Noah Kahan while we wait.</p></div><div class="live-content"><time datetime="2026-03-16T18:15:27+00:00">March 16, 2026 – 2:15 PM</time><h2 id="honestly-the-wait-screen-makes-a-great-wallpaper">Honestly, the wait screen makes a great wallpaper</h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/FdhAenHLW4sNEZRg3F2huM-1920-80.png" alt="Nvidia wait screen" /><figcaption><small role="credit">Nvidia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/MHHJDqNe7KFCBifbn8trVN-1920-80.png" alt="Nvidia wait screen" /><figcaption><small role="credit">Nvidia</small></figcaption></figure></figure><p>If you're looking for something to refresh your PC wallpaper, maybe check out the light mode and dark mode versions of the wait screen on Nvidia's keynote. </p><p>It does look pretty slick. </p><p>These are 4K versions, if you decided to save them.</p></div><div class="live-content"><time datetime="2026-03-16T18:16:01+00:00">March 16, 2026 – 2:16 PM</time><h2 id="and-we-re-off">...and we're off!</h2><p>Here we go. Things are starting now.</p></div><div class="live-content"><time datetime="2026-03-16T18:19:14+00:00">March 16, 2026 – 2:19 PM</time><h2 id="tokens-in-everything">Tokens in everything</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="vhRivuvWwyxhXzWv2A4DgJ" name="NVIDIA GTC Keynote 2026 36-4 screenshot" alt="Intro about tokens" src="https://cdn.mos.cms.futurecdn.net/vhRivuvWwyxhXzWv2A4DgJ-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>The show is starting with a video about tokens and how they're impacting science, medicine, agriculture, space travel, robotics and more. But also how producing tokens is more "eco friendly."</p><p>And it starts with Nvidia, of course.</p></div><div class="live-content"><time datetime="2026-03-16T18:20:54+00:00">March 16, 2026 – 2:20 PM</time><h2 id="jensen-huang-is-on-stage-now">Jensen Huang is on stage now</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="JcGYGqMVrsubnksajMAxSf" name="NVIDIA GTC Keynote 2026 38-52 screenshot" alt="Jensen Huang walk out" src="https://cdn.mos.cms.futurecdn.net/JcGYGqMVrsubnksajMAxSf-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Jensen is on stage. He notes they will be discussing AI factories, CUDA, and thanks the pre-show panels.</p></div><div class="live-content"><time datetime="2026-03-16T18:23:41+00:00">March 16, 2026 – 2:23 PM</time><h2 id="20-years-of-cuda">20 years of CUDA</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="YJ4x8FyLVW8UvReaFMdqW6" name="NVIDIA GTC Keynote 2026 41-28 screenshot" alt="CUDA flywheel" src="https://cdn.mos.cms.futurecdn.net/YJ4x8FyLVW8UvReaFMdqW6-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>GTC covers the "5 layer cake" of AI. Infrastructure, chips, platforms, models and applications.</p><p>20 years of CUDA from ecosystems to developers and customers. The chart describes "100% of Nvidia's strategies."</p><p>It's taken 20 years to build up millions of GPUs that serve just about every industry.</p></div><div class="live-content"><time datetime="2026-03-16T18:26:26+00:00">March 16, 2026 – 2:26 PM</time><h2 id="lifecycle-is-incredibly-long">Lifecycle is incredibly long</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Po46WL6KCAMo8R6fCdpfFj" name="NVIDIA GTC Keynote 2026 39-38 screenshot" alt="Jensen closeup arms spread" src="https://cdn.mos.cms.futurecdn.net/Po46WL6KCAMo8R6fCdpfFj-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>CUDA is accelerating, the downloads of Nvidia libraries is speeding up. </p><p>Enables infrastructures to have "extraordinary useful life." We support every phase of the AI lifeycle, Huang says.</p><p>Every Nvidia GPU is architecturally compatible, Huang asserts. Lets it expand its reach and growth while driving down computing costs.</p></div><div class="live-content"><time datetime="2026-03-16T18:29:08+00:00">March 16, 2026 – 2:29 PM</time><h2 id="this-is-the-house-that-geforce-made">"This is the house that GeForce made"</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="AoGs5P96RfVKXYHyYHa3Pb" name="NVIDIA GTC Keynote 2026 45-54 screenshot" alt="Jensen with GTX 1080" src="https://cdn.mos.cms.futurecdn.net/AoGs5P96RfVKXYHyYHa3Pb-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>25 years ago we invented the programmable shader, Huang says. </p><p>Let the company explore further and led to CUDA. 13 generations has CUDA installed "everywhere." </p><p>10 years ago, introduced RTX, complete redesign of the architecture. GeForce enabled acceleration of deep learning.</p></div><div class="live-content"><time datetime="2026-03-16T18:32:28+00:00">March 16, 2026 – 2:32 PM</time><h2 id="dlss-5">DLSS 5!</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="zEFFbcVAiL4ScUGdxgHTVF" name="NVIDIA GTC Keynote 2026 49-23 screenshot" alt="DLSS 5 Resident Evil Requiem" src="https://cdn.mos.cms.futurecdn.net/zEFFbcVAiL4ScUGdxgHTVF-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>First look at DLSS 5! Fusion of structured graphics and generative AI.</p><p>A trailer shows off DLSS 5 over games like Resident Evil Requiem, FC 26, Starfield and more.</p><p>What do you think? Some games looked better, while I thought a few looked more cartoon-y, which was worse than the previous look.</p></div><div class="live-content"><time datetime="2026-03-16T18:34:54+00:00">March 16, 2026 – 2:34 PM</time><h2 id="dlss-5-altered-games">DLSS 5 altered games</h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/Dem2XB7FSRYsyFyf6WQ8sW-1920-80.png" alt="EA Sports FC with DLSS 5" /><figcaption><small role="credit">Nvidia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/BSXjZT4j2jeUjNY6gBueaS-1920-80.png" alt="Starfield DLSS 5" /><figcaption><small role="credit">Nvidia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ybW7ArdCgcP56zqTBsKWbM-1920-80.png" alt="Hogwarts Legacy DLSS 5" /><figcaption><small role="credit">Nvidia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/v2S8fciqB5LQDdyLZBigqH-1920-80.png" alt="Leon Kennedy DLSS 5" /><figcaption><small role="credit">Nvidia</small></figcaption></figure></figure><p>Here's how several games look after being hit with DLSS 5.</p><p>It's one we'll have to see in action once we're able.</p></div><div class="live-content"><time datetime="2026-03-16T18:36:34+00:00">March 16, 2026 – 2:36 PM</time><h2 id="structured-data-is-the-ground-truth-of-ai">Structured Data is the Ground Truth of AI</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="XGPVpDNGF42WvSJhF4Gv8b" name="NVIDIA GTC Keynote 2026 51-48 screenshot" alt="Jensen's best slide depicting structured data" src="https://cdn.mos.cms.futurecdn.net/XGPVpDNGF42WvSJhF4Gv8b-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Huang is noting that structured data will be the future of AI as platforms turn AI into actionable structures.</p></div><div class="live-content"><time datetime="2026-03-16T18:39:19+00:00">March 16, 2026 – 2:39 PM</time><h2 id="ibm-watson-x-and-nvidia">IBM Watson X and Nvidia</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Qv4hZKcsHZUmjE9GFfHy75" name="NVIDIA GTC Keynote 2026 55-28 screenshot" alt="IBM x Nvidia" src="https://cdn.mos.cms.futurecdn.net/Qv4hZKcsHZUmjE9GFfHy75-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Nvidia and IBM are partnering to bolster IBM's Watson X AI platform that allegedly lets companies refresh their data multiple times a day at 83% lower costs. </p><p>The goal is to reduce the cost of computing by accelerating data processing.</p></div><div class="live-content"><time datetime="2026-03-16T18:45:21+00:00">March 16, 2026 – 2:45 PM</time><h2 id="we-integrate-into-the-world-s-cloud-services">"We integrate into the world's cloud services"</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ybpHxKJAWmphaYPwt7YXWW" name="NVIDIA GTC Keynote 2026 59-4 screenshot" alt="Nvidia x Google Cloud" src="https://cdn.mos.cms.futurecdn.net/ybpHxKJAWmphaYPwt7YXWW-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Jensen Huang says that Nvidia is an algorithm platform company, which helps it bolster platforms like Google Cloud, Azure and AWS.</p><p>He says it will expand the compute at AWS and through them, OpenAI.</p><p>Currently, the speech is directed at enterprise customers. However, as Nvidia undergirds cloud platforms, that means that systems you use that are cloud-based will be shifted through Nvidia platforms.</p></div><div class="live-content"><time datetime="2026-03-16T18:53:11+00:00">March 16, 2026 – 2:53 PM</time><h2 id="ai-and-the-world">AI and the world</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="dBxwnUXM8BRKnK72S2Pvic" name="NVIDIA GTC Keynote 2026 1-7-40 screenshot" alt="Every vertical Nvidia touches" src="https://cdn.mos.cms.futurecdn.net/dBxwnUXM8BRKnK72S2Pvic-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>As you can see, Nvidia and Huang view its platforms as integral to multiple areas of the world. </p><p>From automotive and healthcare to quantum computing and robotics. </p><p>These include autonomous vehicles and AI physics and AI biology for "drug discovery." Healthcare is going through its "ChatGPT moment."</p><p>For gaming and media that means translation support, live games and live media. </p><p>Retail means AI agents would take over customer service. Robotics of course is robotic systems.</p><p>Telco systems, Huang says, that AI will completely reinvent telecommunications infrastructures. </p></div><div class="live-content"><time datetime="2026-03-16T18:59:15+00:00">March 16, 2026 – 2:59 PM</time><h2 id="simulation-of-a-robotic-future">Simulation of a robotic future</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="AFUaCzhddKVBoHXgRupGL8" name="NVIDIA GTC Keynote 2026 1-17-12 screenshot" alt="Cuda models" src="https://cdn.mos.cms.futurecdn.net/AFUaCzhddKVBoHXgRupGL8-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Nvidia is showing off a simulation where robots and AI control everything from warehouse infrastructure to medical labs and manufacturing.</p><p>In other cases, AI models the world for autonomous driving, weather mapping and understanding elements like fire and aerodynamics.</p><p>The platform is called CudaX.</p></div><div class="live-content"><time datetime="2026-03-16T19:04:03+00:00">March 16, 2026 – 3:04 PM</time><h2 id="ai-natives">AI natives</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="SR9HY5urdu5rMAVzFKSnaG" name="NVIDIA GTC Keynote 2026 1-18-48 screenshot" alt="Nvidia x AI Natives" src="https://cdn.mos.cms.futurecdn.net/SR9HY5urdu5rMAVzFKSnaG-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Huang is discussing small companies that are built solely in AI or utilize AI to tackle different things.</p><p>Consequential companies will arise from this "platform shift," he says. The "Big Bang of AI."</p><p>Tokens and the generation of "accelerated" AI in the last two years has increased exponentially.</p><p>It will change "what is the meaning of computing altogether."</p></div><div class="live-content"><time datetime="2026-03-16T19:05:09+00:00">March 16, 2026 – 3:05 PM</time><h2 id="everyone-should-use-chatgpt">"Everyone should use ChatGPT"</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="LGfe9jXRJyqtqN5eJJ223h" name="ChatGPT" alt="ChatGPT" src="https://cdn.mos.cms.futurecdn.net/LGfe9jXRJyqtqN5eJJ223h-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Getty Images)</span></figcaption></figure><p>Huang says everyone should be using ChatGPT every day andthat he used it this morning.</p></div><div class="live-content"><time datetime="2026-03-16T19:10:46+00:00">March 16, 2026 – 3:10 PM</time><h2 id="computing-demand-has-increased-by-1-million-times-in-the-last-2-years">"Computing demand has increased by 1 million times in the last 2 years"</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="NvhkhvmDSFbiXCQJTFe6Mc" name="NVIDIA GTC Keynote 2026 1-21-58 screenshot" alt="Jensen explaining AI era" src="https://cdn.mos.cms.futurecdn.net/NvhkhvmDSFbiXCQJTFe6Mc-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Here's a hint at the AI greed that created the current RAM shortage. Huang believes that AI usage and computing has exploded since 2023. </p><p>OpenAI and other companies are saying they need the compute power to deal with the massively increased usage and data processing. </p><p>Computing demand will be higher than $1 trillion dollars in growth, Huang says.</p></div><div class="live-content"><time datetime="2026-03-16T19:14:48+00:00">March 16, 2026 – 3:14 PM</time><h2 id="we-are-now-computing-platform-that-runs-all-of-ai">"We are now computing platform that runs all of AI"</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="KTNmAkWhoFhxRr83sHg96g" name="NVIDIA GTC Keynote 2026 1-29-29 screenshot" alt="1 Trillion Dollars" src="https://cdn.mos.cms.futurecdn.net/KTNmAkWhoFhxRr83sHg96g-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>60% of Nvidia's business are hyperscalers. That's everyone building data centers requiring AI GPUs.</p><p>40% is everything else, clouds, enterprise, robotics, gaming, supercomputing, etc.</p></div><div class="live-content"><time datetime="2026-03-16T19:23:55+00:00">March 16, 2026 – 3:23 PM</time><h2 id="tokens-per-watt">Tokens per watt</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="9ZAKCL4xbcrF2V2s5gye6K" name="NVIDIA GTC Keynote 2026 1-40-39 screenshot" alt="Jensen as Token King" src="https://cdn.mos.cms.futurecdn.net/9ZAKCL4xbcrF2V2s5gye6K-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Data centers are constrained by power and power consumption. </p><p>Huang is promoting Nvidia AI GPUs that can quickly get through more tokens than the competition.</p><p>"This is your revenue," Huang tells companies. "Our cost per token is the lowest in the world," he claims.</p><p>Nvidia is the token king, Huang implies.</p></div><div class="live-content"><time datetime="2026-03-16T19:31:46+00:00">March 16, 2026 – 3:31 PM</time><h2 id="new-vera-rubin-program">New Vera Rubin program</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="JuWJoLjaEUHfzaycGycrpC" name="NVIDIA GTC Keynote 2026 1-46-54 screenshot" alt="Vera Rubin" src="https://cdn.mos.cms.futurecdn.net/JuWJoLjaEUHfzaycGycrpC-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>The Vera Rubin platform is Nvidia's latest AI platform for AI data centers that is "vertically integrated completely with software." It's designed for AI agent systems.</p><p>It will affect how AI platforms function going forward.</p><p>Cooled by 45 degree water, which supposedly takes the pressure of the data center. However, rather than reducing water usage it just shifts it to the Rubin architecture. Not exactly eo-friendly.</p></div><div class="live-content"><time datetime="2026-03-16T19:38:04+00:00">March 16, 2026 – 3:38 PM</time><h2 id="rubin-ultra">Rubin Ultra</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="rvbaefaXmQSZa2q2JZj2Qe" name="NVIDIA GTC Keynote 2026 1-50-45 screenshot" alt="Jensen with Vera Rubin, Grok, etc" src="https://cdn.mos.cms.futurecdn.net/rvbaefaXmQSZa2q2JZj2Qe-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Another system designed for data centers. Rubin Ultra can connect up to 144 GPUs. </p></div><div class="live-content"><time datetime="2026-03-16T19:47:46+00:00">March 16, 2026 – 3:47 PM</time><h2 id="increased-tokens">Increased tokens</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="u5QXaVn7pAE6wxq75CE6iG" name="NVIDIA GTC Keynote 2026 2-1-40 screenshot" alt="AI is getting more efficient with Vera Rubin" src="https://cdn.mos.cms.futurecdn.net/u5QXaVn7pAE6wxq75CE6iG-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>I can extrapolate that the expansion of the ability for AI datacenters to provide more tokens and data processing will increase thanks to the new Rubin GPU, but that may not actually solidify until next year as the new system gets installed and running for AI platforms.</p><p>For now, Huang is selling Nvidia's latest system.</p></div><div class="live-content"><time datetime="2026-03-16T19:58:46+00:00">March 16, 2026 – 3:58 PM</time><h2 id="what-about-n1x-or-gaming">What about N1X or gaming?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1115px;"><p class="vanilla-image-block" style="padding-top:96.41%;"><img id="nHue8iLanPgywp2Jb7RaoQ" name="Nvidia N1X FurMark benchmark" alt="Screenshot of leaked Nvidia N1X FurMark benchmark" src="https://cdn.mos.cms.futurecdn.net/nHue8iLanPgywp2Jb7RaoQ-1920-80.jpg" mos="" align="middle" fullscreen="" width="1115" height="1075" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: VideoCardz / FurMark)</span></figcaption></figure><p>While Jensen goes on about AI factories and Nvidia's architecture. Yes, as he mentioned, AI is 60% of Nvidia's business these days, which is worrisome if you believe we are facing a bubble that will pop.</p><p>My question is, will we see anything about the N1X chip or gaming GPUs? What is left for the everyday consumer? </p></div><div class="live-content"><time datetime="2026-03-16T20:03:11+00:00">March 16, 2026 – 4:03 PM</time><h2 id="nvidia-going-to-space">Nvidia going to space?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="HNkZ8NdgYwLzGgG95ofmE7" name="NVIDIA GTC Keynote 2026 2-21-49 screenshot" alt="Vera Rubin in space" src="https://cdn.mos.cms.futurecdn.net/HNkZ8NdgYwLzGgG95ofmE7-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Apparently, Huang plans to start data centers in space and already has a Vera Rubin system being design for space.</p></div><div class="live-content"><time datetime="2026-03-16T20:08:43+00:00">March 16, 2026 – 4:08 PM</time><h2 id="nvidia-and-openclaw-partnership">Nvidia and OpenClaw partnership</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="GudRQSK8ef3EuqSW49UN2C" name="NVIDIA GTC Keynote 2026 2-22-35 screenshot" alt="OpenClaw" src="https://cdn.mos.cms.futurecdn.net/GudRQSK8ef3EuqSW49UN2C-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>OpenClaw has taken the<a href="https://www.tomsguide.com/ai/openclaw-is-the-viral-ai-assistant-that-lives-on-your-device-what-you-need-to-know"> AI world by storm in the last few weeks.</a> And now, the developer has entered a partnership with Nvidia.</p><p>Huang calls it an operating system. "It opensourced the operating system of agentic computers."</p></div><div class="live-content"><time datetime="2026-03-16T20:12:22+00:00">March 16, 2026 – 4:12 PM</time><h2 id="the-implication-is-incredible">"The implication is incredible"</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="aPqhpHRfjmRZ5jsDyri9Qe" name="NVIDIA GTC Keynote 2026 2-26-46 screenshot" alt="Agents" src="https://cdn.mos.cms.futurecdn.net/aPqhpHRfjmRZ5jsDyri9Qe-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Every company in the world needs to have an OpenClaw strategy, Huang insists. Similar to a Linux focus or an HTTP/HTML focus.</p><p>OpenClaw is shows the future of personal AI agents, he says. Post-OpenClaw will turn IT from SaaS into GaaS with AI acting as service. </p></div><div class="live-content"><time datetime="2026-03-16T20:16:20+00:00">March 16, 2026 – 4:16 PM</time><h2 id="nvidia-promotes-open-models">Nvidia promotes open models</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ziSbhqoyQb8nrPcCAhJPDS" name="NVIDIA GTC Keynote 2026 2-31-44 screenshot" alt="Nvidia reference for OpenClaw aka NemoClaw" src="https://cdn.mos.cms.futurecdn.net/ziSbhqoyQb8nrPcCAhJPDS-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Nvidia makes OpenClaw more secure for enterprise. It's not clear how that would actually reflect for customers. It mostly makes it safer for businesses to use.</p><p>Through OpenClaw, Nvidia is making open models for specialized AI models including Groot, Earth 2, deep learning and more.</p><p>They're calling it NemoClaw.</p></div><div class="live-content"><time datetime="2026-03-16T20:20:22+00:00">March 16, 2026 – 4:20 PM</time><h2 id="nemotron-coalition">Nemotron Coalition</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="UWV9Eoyd2WtRE96CGzbFv3" name="NVIDIA GTC Keynote 2026 2-35-34 screenshot" alt="AI models" src="https://cdn.mos.cms.futurecdn.net/UWV9Eoyd2WtRE96CGzbFv3-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>On a practical level, this is a coalition to create AI models across the globe from enterprise to sovereign agents. </p><p>The coalition is made up of companies like Mistral, Perplexity, and Cursor. Several companies like Adobe and IBM are integrating earlier versions of Nemotron.</p><p>The name makes it sounds like they're trying to build Voltron. </p></div><div class="live-content"><time datetime="2026-03-16T20:25:41+00:00">March 16, 2026 – 4:25 PM</time><h2 id="self-driving-cars">Self-driving cars</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="3cF7sjR2FjxP5yVybxdivi" name="NVIDIA GTC Keynote 2026 2-41-40 screenshot" alt="Jensen with Robots" src="https://cdn.mos.cms.futurecdn.net/3cF7sjR2FjxP5yVybxdivi-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Speaking of Voltron, Nvidia is partnering with car manufacturers like Nissan, BYD, and more to add them to Nvidia's Robotaxi platform.</p><p>Plus, other "physical AI models" that are being deployed in robots from T-Mobile, Caterpillar, and others.</p></div><div class="live-content"><time datetime="2026-03-16T20:31:26+00:00">March 16, 2026 – 4:31 PM</time><h2 id="robotic-ai-models">Robotic AI models</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1280px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="isidjqbJtHdvsjasL2zJ66" name="NVIDIA GTC Keynote 2026 2-50-9 screenshot" alt="Jensen and Olaf at GDC 2026" src="https://cdn.mos.cms.futurecdn.net/isidjqbJtHdvsjasL2zJ66-1920-80.png" mos="" align="middle" fullscreen="" width="1280" height="720" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Nvidia is promoting its physical AI models for robotics including Groot, Kamino and Isaac labs.</p><p>The big reveal is how Disney uses the platforms for its characters in animation and imagineering. With the reveal of an Olaf robot from the movie Frozen.</p></div><div class="live-content"><time datetime="2026-03-16T20:33:22+00:00">March 16, 2026 – 4:33 PM</time><h2 id="that-appears-to-be-it">That appears to be it</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="cu35AnYi5WRzvgxGv6cqhE" name="NVIDIA GTC Keynote 2026 2-51-14 screenshot" alt="Robot" src="https://cdn.mos.cms.futurecdn.net/cu35AnYi5WRzvgxGv6cqhE-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>A strange recap is playing now with robots and an animated Jensen sitting around a campfire playing a country song about the keynote.</p><p>The song is probably AI-generated.</p></div><div class="live-content"><time datetime="2026-03-16T20:50:40+00:00">March 16, 2026 – 4:50 PM</time><h2 id=""></h2></div> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/live/nvidia-gtc-2026-live</link>
                                                                            <description>
                            <![CDATA[ Nvidia CEO Jensen Huang's GTC Keynote in Washington D.C. just finished, and we got a glimpse of how Team Green tech is going to bring AI to a whole lot of US companies. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">kHJeBLvTD8GRB78qYABwqe</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/5et6KQiDbwoLdoBRHoGKh5-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 16 Mar 2026 14:24:25 +0000</pubDate>                                                                                                                                <updated>Mon, 16 Mar 2026 20:50:41 +0000</updated>
                                                                                                                                            <category><![CDATA[Computing]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jason England ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/v4fSq5U4uZUEtGY2BwNuJ6-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jason brings a decade of tech and gaming journalism experience to his role as a Managing Editor of Computing at Tom&#039;s Guide. He has previously written for Laptop Mag, Tom&#039;s Hardware, Kotaku, Stuff and BBC Science Focus. In his spare time, you&#039;ll find Jason looking for good dogs to pet or thinking about eating pizza if he isn&#039;t already.&lt;/p&gt; ]]></dc:description>
                                                                                                        <dc:contributor><![CDATA[ Anthony Spadafora ]]></dc:contributor>
                                            <dc:contributor><![CDATA[ Scott Younker ]]></dc:contributor>
                                                                    <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/5et6KQiDbwoLdoBRHoGKh5-1920-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[nvidia presenting]]></media:description>                                                            <media:text><![CDATA[nvidia presenting]]></media:text>
                                <media:title type="plain"><![CDATA[nvidia presenting]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/5et6KQiDbwoLdoBRHoGKh5-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="live-content"><p>It’s officially that time again — GTC 2026 is kicking off in San Jose, and the energy is already through the roof. Jensen Huang is taking the stage today at <strong>11am PT / 2pm ET / 6pm GMT</strong>, and if history is any indication, Team Green isn't planning on holding back.</p><p>We’re looking at a massive shift toward <strong>agentic and physical AI</strong>, but let’s be real: we’re all eyes and ears for more details about Vera Rubin (an enterprise-level sneak peek at <a href="https://www.tomsguide.com/computing/gpus/nvidia-rtx-60-series-gpus-rumors-leaks-and-everything-we-know-so-far">RTX 60-series</a>). Oh, and let's not forget that <a href="https://www.tomsguide.com/computing/gpus/nvidia-says-pc-gaming-will-look-like-a-film-how-gpus-will-get-to-1-million-times-better-path-tracing-and-why-its-closer-than-you-think">glimpse of "the future of real-time rendering"</a> in PC gaming!</p><p>Stick with us from the pre-game hype all the way through the final reveal. We’ll be breaking down every announcement to show you exactly how this tech is going to land in your day-to-day.</p><h3 class="article-body__section" id="section-how-to-watch-nvidia-gtc-2026"><span>How to watch Nvidia GTC 2026</span></h3><p>You can watch the keynote here.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/jw_o0xr8MWU" allowfullscreen></iframe></div></div><h3 class="article-body__section" id="section-nvidia-gtc-2026-every-big-announcement"><span>Nvidia GTC 2026: Every big announcement</span></h3><ul><li><strong>DLSS 5: </strong>DLSS 4.5 just dropped a few months ago, but DLSS 5 is already in the works. We won't know how good it is until we see it in action but online reactions have definitely been in the negative calling it a "Snapchat filter" and worse.</li><li><strong>IBM Watson X and Nvidia: </strong>Nvidia's platforms can "refresh global operations data in minutes" as shown in a partnership with IBM and the company's Watson X.</li><li><strong>Vera Rubin Ultra: </strong>Nvidia's AI data center platform gets a major upgrade that can connect up to 144 GPUs. Its "vertically integrated completely with software" and designed for AI agent systems.</li><li><strong>NemoClaw: </strong>Nemoclaw is an open source partnership between OpenClaw and Nvidia dubbed Nemoclow. Jensen described it as an "opensourced operating system of agentic computers." OpenClaw is shows the future of personal AI agents, Jensen promised.</li><li><strong>Self-driving cars and robots: </strong>At the end, Huang showed off several "physical AI models" that power things like Nvidia's Alpamayo for self-driving cars, warehouse robots. It ended with an Olaf from <em>Frozen</em> robot wandering the stage like a lost child.</li></ul><h3 class="article-body__section" id="section-nvidia-gtc-2026-latest-updates"><span>Nvidia GTC 2026: Latest updates</span></h3></div><div class="live-content"><time datetime="2026-03-16T14:17:04+00:00">March 16, 2026 – 10:17 AM</time><h2 id="welcome-back">Welcome back!</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="sifjn2oLn9AuoZ7HVZmuiG" name="Nvidia" alt="Nvidia" src="https://cdn.mos.cms.futurecdn.net/sifjn2oLn9AuoZ7HVZmuiG-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>It's been a while since the <a href="https://www.tomsguide.com/computing/live/nvidia-gtc-october-2025-live">last GTC event back in October of last year</a> (and the <a href="https://www.tomsguide.com/news/live/nvidia-ces-2026-keynote-live">CES 2026 keynote</a> in January). But Nvidia is back and this looks set to be a big one — with CEO Jensen Huang looking set to lay out the next few years of hardware and AI breakthroughs.</p><p>But one thing we're particularly excited about is a glimpse at <a href="https://www.tomsguide.com/computing/gpus/nvidia-says-pc-gaming-will-look-like-a-film-how-gpus-will-get-to-1-million-times-better-path-tracing-and-why-its-closer-than-you-think">"the future of real-time rendering"</a> for PC gaming. These events are usually super focused on the AI factories of the future, and given the lofty promises made by Team Green back at GDC 2026, we may be seeing a preview of a generation of neural rendering that exceeds even what DLSS is capable of.</p></div><div class="live-content"><time datetime="2026-03-16T14:31:59+00:00">March 16, 2026 – 10:31 AM</time><h2 id="previously-at-gtc-and-ces">Previously at GTC (and CES)</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Kxh6Fgxoc4CRqkFvGU6cMK" name="Nvidia CES 2026" alt="Nvidia CES 2026" src="https://cdn.mos.cms.futurecdn.net/Kxh6Fgxoc4CRqkFvGU6cMK-1920-80.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Each GTC follows a pretty reliable playbook for the year — with March being the event where all the big new stuff is announced. This is what happened last March.</p><ul><li><strong>Nvidia Isaac Groot N1</strong>: A new model for robotics, Groot N1 is set to be "the world’s first open Humanoid Robot foundation model."</li><li><strong>"Blue," Robotics and AI collaboration</strong>: Powered by a new physics engine to simulate robotic movements, Newton was introduced, showcasing a little robot named Blue. It's a collaborative robotics project with Disney Research and Google DeepMind. An open-source model of Newton will arrive later in 2025.</li><li><strong>Blackwell Ultra AI chips</strong>: New chips to be released later this year, aimed at meeting the growing demand for computational power in AI.</li><li><strong>Vera Rubin Architecture</strong>: The next step beyond Blackwell, Vera Rubin will increase bandwidth and perform even faster. It's set for release in late 2026, with Vera Rubin Ultra expected in 2027.</li><li><strong>Nvidia Dynamo</strong>: Nvidia's new open-source software system designed to scale AI models effectively, and it's able to customize a data center far more effectively.</li><li><strong>Self-driving cars</strong>: Nvidia is teaming up with GM to create autonomous cars, developing custom AI systems for autonomous vehicles and putting "AI in the car."</li></ul><p>And you saw these evolve over the year, including Groot N1 making it into more robotics, an Uber partnership for self-driving AI, and Vera Rubin showed in much more detail at <a href="https://www.tomsguide.com/news/live/nvidia-ces-2026-keynote-live">CES 2026</a>.</p></div><div class="live-content"><time datetime="2026-03-16T14:39:33+00:00">March 16, 2026 – 10:39 AM</time><h2 id="more-vera-rubin">More vera rubin?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="RV4PBZWvfe6YeWVFTejCzS" name="Nvidia" alt="Nvidia" src="https://cdn.mos.cms.futurecdn.net/RV4PBZWvfe6YeWVFTejCzS-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>We got a whole lot of info on Vera Rubin at CES 2026, including stats on just how much more powerful this is than the Blackwell GPU tech you see in the RTX 50-series. Namely, 5x more powerful to drive the AI data centers of the future.</p><p>While speaking about data centers can be kinda dull, the main thing to look at is the architecture and what it's capable of from a GPU perspective, because it's looking <em>very </em>likely that the <a href="https://www.tomsguide.com/computing/gpus/nvidia-rtx-60-series-gpus-rumors-leaks-and-everything-we-know-so-far">RTX 60-series</a> will tout the Rubin stylings on the die.</p></div><div class="live-content"><time datetime="2026-03-16T14:50:57+00:00">March 16, 2026 – 10:50 AM</time><h2 id="will-we-see-nvidia-n1-n1x">Will we see Nvidia N1/N1X?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:896px;"><p class="vanilla-image-block" style="padding-top:32.48%;"><img id="whzKrTnoAkWJ3zi9f5Xitj" name="Screenshot 2026-01-23 100627" alt="Screenshot of Lenovo Legion Space support page showing the Legion 7 Nvidia laptop" src="https://cdn.mos.cms.futurecdn.net/whzKrTnoAkWJ3zi9f5Xitj-1920-80.png" mos="" align="middle" fullscreen="" width="896" height="291" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Lenovo)</span></figcaption></figure><p>These chips keep appearing in random spec sheets here and there, so why am I only saying it's a "maybe?"</p><p>Well, the answer comes down to two things. First, I'm not hearing much about it after the swell of reports last month. And second, this show's always been very AI-centric. Of course, we're getting that gaming preview on the keynote stage, which is definitely a change from the norm.</p><p>So it's anyone's guess really, but I hope we do get something here!</p></div><div class="live-content"><time datetime="2026-03-16T14:52:31+00:00">March 16, 2026 – 10:52 AM</time><h2 id="ready-to-pre-game">Ready to pre-game?</h2><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/RTmSrIFZanc" allowfullscreen></iframe></div></div><p>No, I'm not talking about the kind that involves beer, but rather conversations about "accelerated computing beyond AI." We'll be watching with you, so jump in for talks about "one of teh largest infrastructure build-outs in history."</p></div><div class="live-content"><time datetime="2026-03-16T15:04:07+00:00">March 16, 2026 – 11:04 AM</time><h2 id="why-path-tracing-is-important">Why Path Tracing is important</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="jynyHynRrJqeZnrVF22ueL" name="Resident Evil Requiem" alt="Resident Evil Requiem" src="https://cdn.mos.cms.futurecdn.net/jynyHynRrJqeZnrVF22ueL-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>So I tested <a href="https://www.tomsguide.com/gaming/pc-gaming/resident-evil-requiem-with-path-tracing-is-horrifying-and-i-mean-that-as-a-compliment-to-nvidia-and-dlss-4">path tracing in Resident Evil Requiem</a>, and it's truly capable of some spectacular things — really adding immersion to a scene while keep frame rates fast and fluid thanks to DLSS 4.5 AI trickery.</p><p>Path tracing is all about physical accuracy. It’s not just a reflection in a puddle, it’s how light from a neon sign bounces off a wet pavement, hits a character’s chrome jacket and subtly tints their skin red. It’s not just the ray traced shiny surfaces of old; path tracing calculates how light interacts with literally everything in a scene in a realistic way.</p><p>This can be super testing to do entirely through calculations on the GPU itself, but with a neural network trained on billions of surfaces and light sources, it's more efficient to do through AI, as you can see from our numbers.</p><iframe allow="" height="600px" width="100%" id="" style="width:100%;height:600px;" class="position-center" data-lazy-priority="low" data-lazy-src="https://flo.uri.sh/story/3596707/embed"></iframe></div><div class="live-content"><time datetime="2026-03-16T15:28:58+00:00">March 16, 2026 – 11:28 AM</time><h2 id="nvidia-is-bringing-a-killer-app-to-apple-vision-pro">Nvidia is bringing a killer app to Apple Vision Pro!</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="oPVapWuQiJbFgshS4eFdk5" name="Apple Vision Pro Nvidia CloudXR" alt="Apple Vision Pro Nvidia CloudXR" src="https://cdn.mos.cms.futurecdn.net/oPVapWuQiJbFgshS4eFdk5-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I'm a sim racer, and <a href="https://www.tomsguide.com/gaming/ive-started-sim-racing-in-vr-and-ill-never-go-back-heres-why">race often in VR.</a> One of the obstacles has always been the mess of cables for high quality wired VR racing, or the lower picture quality when going wireless.</p><p>But now, <a href="https://www.tomsguide.com/computing/virtual-reality/nvidia-is-bringing-a-killer-app-to-the-apple-vision-pro-and-its-good-news-for-sim-racers">Nvidia's CloudXR software is compatible with Apple Vision Pro</a>, and iRacing (and a flying sim game) are going to be fully playable wirelessly at 4K 120FPS!</p><p>This is a significant development, and a huge step forward for PC VR (and it's tempting me to burn $3,500 on an AVP!)</p></div><div class="live-content"><time datetime="2026-03-16T15:43:23+00:00">March 16, 2026 – 11:43 AM</time><h2 id="current-lowest-prices-on-nvidia-rtx-50-series-gpus">Current lowest prices on Nvidia RTX 50-series GPUs</h2><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/RTmSrIFZanc" allowfullscreen></iframe></div></div><p>While we're watching the pre-amble and interviews with key AI and infrastructure companies that rely on Nvidia, let's bring this back to you. As you may know, the RAM price crisis has sent costs spiraling.</p><p>On top of that, Nvidia did confirm that s<a href="https://www.tomsguide.com/computing/nvidia-exec-warns-gpu-supply-could-be-very-tight-over-following-months">tocking consumer GPUs was going to be a struggle this year</a>, as the focus goes on data center rollout. That has sent prices a little out of control (to say the least).</p><p>If you're committed to getting one, here are the cheapest prices we've found! The UK isn't as <em>hard </em>hit (especially at the mid-range). But prices have gone up across the board.</p><div ><table><thead><tr><th class="firstcol " ><p><strong>GPU</strong></p></th><th  ><p><strong>MSRP (US)</strong></p></th><th  ><p><strong>Lowest price (US)</strong></p></th><th  ><p><strong>RRP (UK)</strong></p></th><th  ><p><strong>Lowest price (UK)</strong></p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Nvidia GeForce RTX 5090</strong></p></td><td  ><p>$1,999</p></td><td  ><p><a href="https://www.newegg.com/gigabyte-gv-n5090gaming-oc-32gd-geforce-rtx-5090-32gb-graphics-card-triple-fans/p/N82E16814932761" target="_blank" rel="nofollow">$3,799</a></p></td><td  ><p>£1,799</p></td><td  ><p><a href="https://www.scan.co.uk/products/gigabyte-nvidia-geforce-rtx-5090-gaming-oc-32gb-graphics-card" target="_blank" rel="nofollow">£2,799</a></p></td></tr><tr><td class="firstcol " ><p><strong>Nvidia GeForce RTX 5080</strong></p></td><td  ><p>$999</p></td><td  ><p><a href="https://www.newegg.com/zotac-gaming-geforce-rtx-5080-solid-core-oc-16gb-graphics-card-triple-fans/p/N82E16814500604" target="_blank" rel="nofollow">$1,349</a></p></td><td  ><p>£979</p></td><td  ><p><a href="https://www.overclockers.co.uk/palit-geforce-rtx-5080-gaming-pro-16gb-gddr7-pci-express-graphics-card-gra-pal-04059.html" target="_blank" rel="nofollow">£1,049</a></p></td></tr><tr><td class="firstcol " ><p><strong>Nvidia GeForce RTX 5070 Ti</strong></p></td><td  ><p>$749</p></td><td  ><p><a href="https://www.newegg.com/zotac-gaming-geforce-rtx-5070-ti-solid-sff-oc-16gb-graphics-card-triple-fans/p/N82E16814500607" target="_blank" rel="nofollow">$999</a></p></td><td  ><p>£729</p></td><td  ><p><a href="https://www.scan.co.uk/products/gigabyte-nvidia-geforce-rtx-5070-ti-windforce-sff-16gb-gddr7-graphics-card-dlss-4-8960-cores-2452-mh" target="_blank" rel="nofollow">£799</a></p></td></tr><tr><td class="firstcol " ><p><strong>Nvidia GeForce RTX 5070</strong></p></td><td  ><p>$549</p></td><td  ><p><a href="https://www.newegg.com/msi-rtx-5070-12g-shadow-2x-oc-geforce-rtx-5070-12gb-graphics-card-double-fans/p/N82E16814137944" target="_blank" rel="nofollow">$649</a></p></td><td  ><p>£539</p></td><td  ><p><a href="https://www.scan.co.uk/products/zotac-nvidia-geforce-rtx-5070-solid-12gb-gddr7-ray-tracing-graphics-card-6144-cores-2512-mhz-boost" target="_blank" rel="nofollow">£539</a></p></td></tr><tr><td class="firstcol " ><p><strong>Nvidia GeForce RTX 5060 Ti (16GB)</strong></p></td><td  ><p>$429</p></td><td  ><p><a href="https://www.newegg.com/msi-rtx-5060-ti-16g-ventus-2x-oc-black-plus-geforce-rtx-5060-ti-16gb-graphics-card-double-fans/p/N82E16814137992" target="_blank" rel="nofollow">$569</a></p></td><td  ><p>£399</p></td><td  ><p><a href="https://www.overclockers.co.uk/gainward-geforce-rtx-5060-ti-python-iii-oc-16gb-gddr7-pci-express-graphics-gra-gnw-04901.html" target="_blank" rel="nofollow">£428</a></p></td></tr></tbody></table></div></div><div class="live-content"><time datetime="2026-03-16T16:02:15+00:00">March 16, 2026 – 12:02 PM</time><h2 id="ai-is-creating-better-safer-jobs">"AI is creating better, safer jobs"</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="anHBZa5hVnPueY6ushAhAH" name="Nvidia GTC" alt="Nvidia GTC" src="https://cdn.mos.cms.futurecdn.net/anHBZa5hVnPueY6ushAhAH-1920-80.png" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>In speaking with an exec at CAT about autonomy in the machinery space, this quote just came out of one of the presenters... Tell that to the <a href="https://invezz.com/pk/news/2026/03/16/ai-layoff-wave-hits-tech-45000-jobs-gone-in-early-2026/" target="_blank">45,000 people who have lost their jobs</a> in the tech space so far in early 2026.</p></div><div class="live-content"><time datetime="2026-03-16T16:18:48+00:00">March 16, 2026 – 12:18 PM</time><h2 id="what-is-the-mystery-chip-jensen-will-surprise-the-world-with">What is the mystery chip Jensen will 'surprise the world' with?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="wCckHxw68LXgtKj3mm5HqS" name="Nvidia" alt="Nvidia" src="https://cdn.mos.cms.futurecdn.net/wCckHxw68LXgtKj3mm5HqS-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>So back in February, CEO <a href="https://www.tomsguide.com/computing/jensen-huang-says-nvidia-will-surprise-the-world-with-a-mystery-chip-heres-what-to-expect">Jensen Huang started hyping up the conference</a> by saying we will see "several new chips the world has never seen before." What are these going to be?</p><p>Well, we have seen the Vera CPU and Rubin GPU that will drive 5x more performance through AI data centers (and probably coming to <a href="https://www.tomsguide.com/computing/gpus/nvidia-rtx-60-series-gpus-rumors-leaks-and-everything-we-know-so-far">RTX 60-series</a>) — <a href="https://www.tomsguide.com/news/live/nvidia-ces-2026-keynote-live">announced at CES 2026. </a>But we're anticipating that Nvidia could be throwing us a curveball by revealing its Feynam architecture for next-gen GPUs.</p><p>This (if ever it came to a consumer GPU) would be way further down the line at RTX 70 or RTX 80-series. The specs are crazy on it — built on a 1.6 nanometer process (smallest at the moment is 3nm), so this would be a real trailblazer in bringing some serious speed boosts.</p></div><div class="live-content"><time datetime="2026-03-16T16:25:11+00:00">March 16, 2026 – 12:25 PM</time><h2 id="there-were-4-sunglass-d-ceos-sitting-in-a-row">There were 4 sunglass'd CEOs sitting in a row</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="rzrECcKXLhvmYxPunLqfzR" name="Nvidia GTC" alt="Nvidia GTC" src="https://cdn.mos.cms.futurecdn.net/rzrECcKXLhvmYxPunLqfzR-1920-80.png" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Perplexity, Mistral, Black Forest Labs and Cohere all here to talk new features... But the shades, guys. Did you all talk backstage about the look you all wanted??</p></div><div class="live-content"><time datetime="2026-03-16T16:34:03+00:00">March 16, 2026 – 12:34 PM</time><h2 id="will-this-year-s-gtc-buck-an-unfortunate-trend">Will this year's GTC buck an unfortunate trend?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1171px;"><p class="vanilla-image-block" style="padding-top:65.67%;"><img id="KyGS8iVMQqrgXk4DHjkBrK" name="Nvidia GTC" alt="Nvidia GTC" src="https://cdn.mos.cms.futurecdn.net/KyGS8iVMQqrgXk4DHjkBrK-1920-80.png" mos="" align="middle" fullscreen="" width="1171" height="769" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Sherwood)</span></figcaption></figure><p><a href="https://sherwood.news/markets/when-jensen-huang-speaks-nvidia-usually-falls-gtc-2026-earnings-ces/" target="_blank">Sherwood</a> has found something interesting. Whenever Jensen Huang speaks at a keynote, the stock price goes down. To clarify, this is probably because of the sky-high expectations people have heading into events like this, rather than the show being disappointing.</p></div><div class="live-content"><time datetime="2026-03-16T16:37:43+00:00">March 16, 2026 – 12:37 PM</time><h2 id="stock-price-check">Stock price check!</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1383px;"><p class="vanilla-image-block" style="padding-top:79.97%;"><img id="xvjJahe6AYXzGHLHw5bYC6" name="Nvidia" alt="Nvidia" src="https://cdn.mos.cms.futurecdn.net/xvjJahe6AYXzGHLHw5bYC6-1920-80.png" mos="" align="middle" fullscreen="" width="1383" height="1106" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Google)</span></figcaption></figure><p>A quick glance suggests it <em>may </em>not happen this year. Stock did take a bounce this morning when markets opened, but we'll see what happens when the keynote starts!</p></div><div class="live-content"><time datetime="2026-03-16T16:41:58+00:00">March 16, 2026 – 12:41 PM</time><h2 id="watch-the-jacket">Watch the jacket...</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="HBZNhALNjXjRetMZPRk6D" name="Nvidia CES 2026" alt="Nvidia CES 2026" src="https://cdn.mos.cms.futurecdn.net/HBZNhALNjXjRetMZPRk6D-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I have a theory — the shinier Jensen's jacket is, the more significant the announcements are. There have been more muted leather jackets that have brought smaller announcements with it. But this shiny number came out at CES for Vera Rubin!</p><p>If we ever end up with rhinestones, expect AGI (or RTX 60-series).</p></div><div class="live-content"><time datetime="2026-03-16T16:57:52+00:00">March 16, 2026 – 12:57 PM</time><h2 id="expect-agentic-ai-to-be-the-biggest-talking-point">Expect Agentic AI to be the biggest talking point</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="7sMYmfK44Q4ZFYbe9rfTz4" name="Nvidia GTC" alt="Nvidia GTC" src="https://cdn.mos.cms.futurecdn.net/7sMYmfK44Q4ZFYbe9rfTz4-1920-80.png" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Nvidia itself says "you can expect 10 million digital workers" to work alongside humans in the future — calling it a revolutionary technology. And the OpenClaw revolution has hit GTC too — Peter Steinberger is here in appropriate attire and talking to Nvidia's CEO!</p></div><div class="live-content"><time datetime="2026-03-16T17:07:06+00:00">March 16, 2026 – 1:07 PM</time><h2 id="a-minus-agentic-intelligence">A-minus agentic intelligence</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1280px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Ze3YVcCrgTRTFQHqJku2dR" name="NVIDIA GTC 2026 Live 2-13-43 screenshot" alt="Guy at Nvidia GTC 2026" src="https://cdn.mos.cms.futurecdn.net/Ze3YVcCrgTRTFQHqJku2dR-1920-80.png" mos="" align="middle" fullscreen="" width="1280" height="720" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: NVidia)</span></figcaption></figure><p>In the pre-show, the Top Gun crew are discussing AI agents at scale and the level of intelligence they are possibly close to achieving. </p><p>Right now, Sam Rodriques predicted that they're at an A-minus grade-wise while they're looking for A-plus grades. Specifically, this is in reference to scientific studies and medicinal studies.</p></div><div class="live-content"><time datetime="2026-03-16T17:15:44+00:00">March 16, 2026 – 1:15 PM</time><h2 id="dlss-4-5-might-get-some-shine">DLSS 4.5 might get some shine</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="8nPradLFnK9bDyNHAU2qbX" name="Nvidia DLSS 4.5" alt="Nvidia DLSS 4.5" src="https://cdn.mos.cms.futurecdn.net/8nPradLFnK9bDyNHAU2qbX-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Nvidia launched DLSS 4.5 in January, but it's been missing <a href="https://www.tomsguide.com/computing/gpus/i-went-eyes-on-with-nvidias-dlss-4-5-dynamic-multi-frame-generation-launching-march-31-and-its-a-game-changer">Dynamic Multi-Frame Generation</a>. That should launch in beta on March 31.</p><p>I'm not expecting Nvidia to spend much time on the frame gen evolution, but I wouldn't be surprised if it gets touched on during today's presentation.</p><p>Once it's actually available, you should see a massive leap in frame rate generation and graphical power.</p></div><div class="live-content"><time datetime="2026-03-16T17:26:25+00:00">March 16, 2026 – 1:26 PM</time><h2 id="30-minute-countdown">30 minute countdown</h2><p>As a new batch of CEOs swap in, we're 30 minutes away from the GTC 2026 keynote. It starts at 2 pm ET/11 am PT. </p><p>We're <a href="https://www.tomsguide.com/computing/nvidia-gtc-2026-the-biggest-reveals-we-expect-to-see">expecting a lot </a>out of the nearly 2-hour presentation including agentic AI, the new N1X chip, a mystery AI chip, potentially a new GPU and more.</p></div><div class="live-content"><time datetime="2026-03-16T17:41:06+00:00">March 16, 2026 – 1:41 PM</time><h2 id="viture-announces-partnership-with-nvidia-and-stanford-labs">Viture announces partnership with Nvidia and Stanford Labs</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2880px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="4anaZvw6oeUQzMBmU2zSvE" name="VITURE GTC 2026 exhibition 7 3K" alt="Viture partnership with Nvidia and the Stanford School of Medicine." src="https://cdn.mos.cms.futurecdn.net/4anaZvw6oeUQzMBmU2zSvE-1920-80.png" mos="" align="middle" fullscreen="" width="2880" height="1620" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Viture)</span></figcaption></figure><p>As part of GTC 2026, Viture announced a partnership with Nvidia and the Stanford School of Medicine. </p><p>The "solution" combines Viture's Luma Ultra glasses, an upgraded version of the<a href="https://www.tomsguide.com/computing/smart-glasses/viture-luma-pro-review"> Luma Pro</a>, in combination with LabOS that brings "hands-free clinical guidance and experimental workflows into real-world research and medical environments."</p><p>LabOS lets researchers use XR smart glassses to interpret experiments and workflows and provide guidance. Nvidia comes into play via GeForce NOW, letting them use the cloud gaming service as an immersive screen to experience 2D content in 3D and help identify spatial relationships.</p></div><div class="live-content"><time datetime="2026-03-16T17:50:32+00:00">March 16, 2026 – 1:50 PM</time><h2 id="the-memory-crisis-is-partly-nvidia-s-fault-will-it-be-acknowledged">The memory crisis is partly Nvidia's fault: will it be acknowledged?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="qwfATbpSNufWiNDRegMPdj" name="RTX 50 Jensen" alt="Jensen Huang holding an Nvidia RTX GPU." src="https://cdn.mos.cms.futurecdn.net/qwfATbpSNufWiNDRegMPdj-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Getty Images)</span></figcaption></figure><p>At the end of February, Nvidia execs <a href="https://www.tomsguide.com/computing/nvidia-exec-warns-gpu-supply-could-be-very-tight-over-following-months">admitted during an earnings call</a> that GPU supply could be constrained specifically because of AI data centers. </p><p>Nvidia has been a major part of the push toward AI and AI data centers, propping up companies like OpenAI through heavy investment. </p><p>That boom has created a global RAM shortage with downstream effects on everything from phones and laptops to the availability of helium and aluminum. </p><p>It'll be interesting to see if Jensen acknowledges this today, skirts around it, or ignores the RAM crisis completely.</p></div><div class="live-content"><time datetime="2026-03-16T17:55:29+00:00">March 16, 2026 – 1:55 PM</time><h2 id="5-minute-countdown">5 minute countdown</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="rdw79f8ynqH5xbCk9xx69Q" name="Nvidia GTC" alt="Nvidia GTC" src="https://cdn.mos.cms.futurecdn.net/rdw79f8ynqH5xbCk9xx69Q-1920-80.png" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>We are entering the final countdown to Jensen Huang's keynote. </p><p>What are you interested in seeing today? Let us know in the comments or shoot me an email at scott.younker@futurenet.com.</p></div><div class="live-content"><time datetime="2026-03-16T18:00:27+00:00">March 16, 2026 – 2:00 PM</time><h2 id="starting-soon">Starting soon</h2><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/jw_o0xr8MWU" allowfullscreen></iframe></div></div><p>As a reminder, you can follow along with the keynote on YouTube, linked above and <a href="https://www.youtube.com/watch?v=jw_o0xr8MWU" target="_blank">here</a>.</p></div><div class="live-content"><time datetime="2026-03-16T18:07:28+00:00">March 16, 2026 – 2:07 PM</time><h2 id="enjoying-the-music">Enjoying the music?</h2><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/SKs80r2Lp34" allowfullscreen></iframe></div></div><p>While we wait for Huang to make his appearance, are we enjoying the music? </p><p>It kind of sounds like AI-generated pop, which says more about the pop industry than AI, I suppose.</p><p>Meanwhile, I'm in, as my son says, my "sadboy guitar" era, so enjoy some new Noah Kahan while we wait.</p></div><div class="live-content"><time datetime="2026-03-16T18:15:27+00:00">March 16, 2026 – 2:15 PM</time><h2 id="honestly-the-wait-screen-makes-a-great-wallpaper">Honestly, the wait screen makes a great wallpaper</h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/FdhAenHLW4sNEZRg3F2huM-1920-80.png" alt="Nvidia wait screen" /><figcaption><small role="credit">Nvidia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/MHHJDqNe7KFCBifbn8trVN-1920-80.png" alt="Nvidia wait screen" /><figcaption><small role="credit">Nvidia</small></figcaption></figure></figure><p>If you're looking for something to refresh your PC wallpaper, maybe check out the light mode and dark mode versions of the wait screen on Nvidia's keynote. </p><p>It does look pretty slick. </p><p>These are 4K versions, if you decided to save them.</p></div><div class="live-content"><time datetime="2026-03-16T18:16:01+00:00">March 16, 2026 – 2:16 PM</time><h2 id="and-we-re-off">...and we're off!</h2><p>Here we go. Things are starting now.</p></div><div class="live-content"><time datetime="2026-03-16T18:19:14+00:00">March 16, 2026 – 2:19 PM</time><h2 id="tokens-in-everything">Tokens in everything</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="vhRivuvWwyxhXzWv2A4DgJ" name="NVIDIA GTC Keynote 2026 36-4 screenshot" alt="Intro about tokens" src="https://cdn.mos.cms.futurecdn.net/vhRivuvWwyxhXzWv2A4DgJ-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>The show is starting with a video about tokens and how they're impacting science, medicine, agriculture, space travel, robotics and more. But also how producing tokens is more "eco friendly."</p><p>And it starts with Nvidia, of course.</p></div><div class="live-content"><time datetime="2026-03-16T18:20:54+00:00">March 16, 2026 – 2:20 PM</time><h2 id="jensen-huang-is-on-stage-now">Jensen Huang is on stage now</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="JcGYGqMVrsubnksajMAxSf" name="NVIDIA GTC Keynote 2026 38-52 screenshot" alt="Jensen Huang walk out" src="https://cdn.mos.cms.futurecdn.net/JcGYGqMVrsubnksajMAxSf-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Jensen is on stage. He notes they will be discussing AI factories, CUDA, and thanks the pre-show panels.</p></div><div class="live-content"><time datetime="2026-03-16T18:23:41+00:00">March 16, 2026 – 2:23 PM</time><h2 id="20-years-of-cuda">20 years of CUDA</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="YJ4x8FyLVW8UvReaFMdqW6" name="NVIDIA GTC Keynote 2026 41-28 screenshot" alt="CUDA flywheel" src="https://cdn.mos.cms.futurecdn.net/YJ4x8FyLVW8UvReaFMdqW6-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>GTC covers the "5 layer cake" of AI. Infrastructure, chips, platforms, models and applications.</p><p>20 years of CUDA from ecosystems to developers and customers. The chart describes "100% of Nvidia's strategies."</p><p>It's taken 20 years to build up millions of GPUs that serve just about every industry.</p></div><div class="live-content"><time datetime="2026-03-16T18:26:26+00:00">March 16, 2026 – 2:26 PM</time><h2 id="lifecycle-is-incredibly-long">Lifecycle is incredibly long</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Po46WL6KCAMo8R6fCdpfFj" name="NVIDIA GTC Keynote 2026 39-38 screenshot" alt="Jensen closeup arms spread" src="https://cdn.mos.cms.futurecdn.net/Po46WL6KCAMo8R6fCdpfFj-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>CUDA is accelerating, the downloads of Nvidia libraries is speeding up. </p><p>Enables infrastructures to have "extraordinary useful life." We support every phase of the AI lifeycle, Huang says.</p><p>Every Nvidia GPU is architecturally compatible, Huang asserts. Lets it expand its reach and growth while driving down computing costs.</p></div><div class="live-content"><time datetime="2026-03-16T18:29:08+00:00">March 16, 2026 – 2:29 PM</time><h2 id="this-is-the-house-that-geforce-made">"This is the house that GeForce made"</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="AoGs5P96RfVKXYHyYHa3Pb" name="NVIDIA GTC Keynote 2026 45-54 screenshot" alt="Jensen with GTX 1080" src="https://cdn.mos.cms.futurecdn.net/AoGs5P96RfVKXYHyYHa3Pb-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>25 years ago we invented the programmable shader, Huang says. </p><p>Let the company explore further and led to CUDA. 13 generations has CUDA installed "everywhere." </p><p>10 years ago, introduced RTX, complete redesign of the architecture. GeForce enabled acceleration of deep learning.</p></div><div class="live-content"><time datetime="2026-03-16T18:32:28+00:00">March 16, 2026 – 2:32 PM</time><h2 id="dlss-5">DLSS 5!</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="zEFFbcVAiL4ScUGdxgHTVF" name="NVIDIA GTC Keynote 2026 49-23 screenshot" alt="DLSS 5 Resident Evil Requiem" src="https://cdn.mos.cms.futurecdn.net/zEFFbcVAiL4ScUGdxgHTVF-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>First look at DLSS 5! Fusion of structured graphics and generative AI.</p><p>A trailer shows off DLSS 5 over games like Resident Evil Requiem, FC 26, Starfield and more.</p><p>What do you think? Some games looked better, while I thought a few looked more cartoon-y, which was worse than the previous look.</p></div><div class="live-content"><time datetime="2026-03-16T18:34:54+00:00">March 16, 2026 – 2:34 PM</time><h2 id="dlss-5-altered-games">DLSS 5 altered games</h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/Dem2XB7FSRYsyFyf6WQ8sW-1920-80.png" alt="EA Sports FC with DLSS 5" /><figcaption><small role="credit">Nvidia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/BSXjZT4j2jeUjNY6gBueaS-1920-80.png" alt="Starfield DLSS 5" /><figcaption><small role="credit">Nvidia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ybW7ArdCgcP56zqTBsKWbM-1920-80.png" alt="Hogwarts Legacy DLSS 5" /><figcaption><small role="credit">Nvidia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/v2S8fciqB5LQDdyLZBigqH-1920-80.png" alt="Leon Kennedy DLSS 5" /><figcaption><small role="credit">Nvidia</small></figcaption></figure></figure><p>Here's how several games look after being hit with DLSS 5.</p><p>It's one we'll have to see in action once we're able.</p></div><div class="live-content"><time datetime="2026-03-16T18:36:34+00:00">March 16, 2026 – 2:36 PM</time><h2 id="structured-data-is-the-ground-truth-of-ai">Structured Data is the Ground Truth of AI</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="XGPVpDNGF42WvSJhF4Gv8b" name="NVIDIA GTC Keynote 2026 51-48 screenshot" alt="Jensen's best slide depicting structured data" src="https://cdn.mos.cms.futurecdn.net/XGPVpDNGF42WvSJhF4Gv8b-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Huang is noting that structured data will be the future of AI as platforms turn AI into actionable structures.</p></div><div class="live-content"><time datetime="2026-03-16T18:39:19+00:00">March 16, 2026 – 2:39 PM</time><h2 id="ibm-watson-x-and-nvidia">IBM Watson X and Nvidia</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Qv4hZKcsHZUmjE9GFfHy75" name="NVIDIA GTC Keynote 2026 55-28 screenshot" alt="IBM x Nvidia" src="https://cdn.mos.cms.futurecdn.net/Qv4hZKcsHZUmjE9GFfHy75-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Nvidia and IBM are partnering to bolster IBM's Watson X AI platform that allegedly lets companies refresh their data multiple times a day at 83% lower costs. </p><p>The goal is to reduce the cost of computing by accelerating data processing.</p></div><div class="live-content"><time datetime="2026-03-16T18:45:21+00:00">March 16, 2026 – 2:45 PM</time><h2 id="we-integrate-into-the-world-s-cloud-services">"We integrate into the world's cloud services"</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ybpHxKJAWmphaYPwt7YXWW" name="NVIDIA GTC Keynote 2026 59-4 screenshot" alt="Nvidia x Google Cloud" src="https://cdn.mos.cms.futurecdn.net/ybpHxKJAWmphaYPwt7YXWW-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Jensen Huang says that Nvidia is an algorithm platform company, which helps it bolster platforms like Google Cloud, Azure and AWS.</p><p>He says it will expand the compute at AWS and through them, OpenAI.</p><p>Currently, the speech is directed at enterprise customers. However, as Nvidia undergirds cloud platforms, that means that systems you use that are cloud-based will be shifted through Nvidia platforms.</p></div><div class="live-content"><time datetime="2026-03-16T18:53:11+00:00">March 16, 2026 – 2:53 PM</time><h2 id="ai-and-the-world">AI and the world</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="dBxwnUXM8BRKnK72S2Pvic" name="NVIDIA GTC Keynote 2026 1-7-40 screenshot" alt="Every vertical Nvidia touches" src="https://cdn.mos.cms.futurecdn.net/dBxwnUXM8BRKnK72S2Pvic-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>As you can see, Nvidia and Huang view its platforms as integral to multiple areas of the world. </p><p>From automotive and healthcare to quantum computing and robotics. </p><p>These include autonomous vehicles and AI physics and AI biology for "drug discovery." Healthcare is going through its "ChatGPT moment."</p><p>For gaming and media that means translation support, live games and live media. </p><p>Retail means AI agents would take over customer service. Robotics of course is robotic systems.</p><p>Telco systems, Huang says, that AI will completely reinvent telecommunications infrastructures. </p></div><div class="live-content"><time datetime="2026-03-16T18:59:15+00:00">March 16, 2026 – 2:59 PM</time><h2 id="simulation-of-a-robotic-future">Simulation of a robotic future</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="AFUaCzhddKVBoHXgRupGL8" name="NVIDIA GTC Keynote 2026 1-17-12 screenshot" alt="Cuda models" src="https://cdn.mos.cms.futurecdn.net/AFUaCzhddKVBoHXgRupGL8-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Nvidia is showing off a simulation where robots and AI control everything from warehouse infrastructure to medical labs and manufacturing.</p><p>In other cases, AI models the world for autonomous driving, weather mapping and understanding elements like fire and aerodynamics.</p><p>The platform is called CudaX.</p></div><div class="live-content"><time datetime="2026-03-16T19:04:03+00:00">March 16, 2026 – 3:04 PM</time><h2 id="ai-natives">AI natives</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="SR9HY5urdu5rMAVzFKSnaG" name="NVIDIA GTC Keynote 2026 1-18-48 screenshot" alt="Nvidia x AI Natives" src="https://cdn.mos.cms.futurecdn.net/SR9HY5urdu5rMAVzFKSnaG-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Huang is discussing small companies that are built solely in AI or utilize AI to tackle different things.</p><p>Consequential companies will arise from this "platform shift," he says. The "Big Bang of AI."</p><p>Tokens and the generation of "accelerated" AI in the last two years has increased exponentially.</p><p>It will change "what is the meaning of computing altogether."</p></div><div class="live-content"><time datetime="2026-03-16T19:05:09+00:00">March 16, 2026 – 3:05 PM</time><h2 id="everyone-should-use-chatgpt">"Everyone should use ChatGPT"</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="LGfe9jXRJyqtqN5eJJ223h" name="ChatGPT" alt="ChatGPT" src="https://cdn.mos.cms.futurecdn.net/LGfe9jXRJyqtqN5eJJ223h-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Getty Images)</span></figcaption></figure><p>Huang says everyone should be using ChatGPT every day andthat he used it this morning.</p></div><div class="live-content"><time datetime="2026-03-16T19:10:46+00:00">March 16, 2026 – 3:10 PM</time><h2 id="computing-demand-has-increased-by-1-million-times-in-the-last-2-years">"Computing demand has increased by 1 million times in the last 2 years"</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="NvhkhvmDSFbiXCQJTFe6Mc" name="NVIDIA GTC Keynote 2026 1-21-58 screenshot" alt="Jensen explaining AI era" src="https://cdn.mos.cms.futurecdn.net/NvhkhvmDSFbiXCQJTFe6Mc-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Here's a hint at the AI greed that created the current RAM shortage. Huang believes that AI usage and computing has exploded since 2023. </p><p>OpenAI and other companies are saying they need the compute power to deal with the massively increased usage and data processing. </p><p>Computing demand will be higher than $1 trillion dollars in growth, Huang says.</p></div><div class="live-content"><time datetime="2026-03-16T19:14:48+00:00">March 16, 2026 – 3:14 PM</time><h2 id="we-are-now-computing-platform-that-runs-all-of-ai">"We are now computing platform that runs all of AI"</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="KTNmAkWhoFhxRr83sHg96g" name="NVIDIA GTC Keynote 2026 1-29-29 screenshot" alt="1 Trillion Dollars" src="https://cdn.mos.cms.futurecdn.net/KTNmAkWhoFhxRr83sHg96g-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>60% of Nvidia's business are hyperscalers. That's everyone building data centers requiring AI GPUs.</p><p>40% is everything else, clouds, enterprise, robotics, gaming, supercomputing, etc.</p></div><div class="live-content"><time datetime="2026-03-16T19:23:55+00:00">March 16, 2026 – 3:23 PM</time><h2 id="tokens-per-watt">Tokens per watt</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="9ZAKCL4xbcrF2V2s5gye6K" name="NVIDIA GTC Keynote 2026 1-40-39 screenshot" alt="Jensen as Token King" src="https://cdn.mos.cms.futurecdn.net/9ZAKCL4xbcrF2V2s5gye6K-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Data centers are constrained by power and power consumption. </p><p>Huang is promoting Nvidia AI GPUs that can quickly get through more tokens than the competition.</p><p>"This is your revenue," Huang tells companies. "Our cost per token is the lowest in the world," he claims.</p><p>Nvidia is the token king, Huang implies.</p></div><div class="live-content"><time datetime="2026-03-16T19:31:46+00:00">March 16, 2026 – 3:31 PM</time><h2 id="new-vera-rubin-program">New Vera Rubin program</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="JuWJoLjaEUHfzaycGycrpC" name="NVIDIA GTC Keynote 2026 1-46-54 screenshot" alt="Vera Rubin" src="https://cdn.mos.cms.futurecdn.net/JuWJoLjaEUHfzaycGycrpC-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>The Vera Rubin platform is Nvidia's latest AI platform for AI data centers that is "vertically integrated completely with software." It's designed for AI agent systems.</p><p>It will affect how AI platforms function going forward.</p><p>Cooled by 45 degree water, which supposedly takes the pressure of the data center. However, rather than reducing water usage it just shifts it to the Rubin architecture. Not exactly eo-friendly.</p></div><div class="live-content"><time datetime="2026-03-16T19:38:04+00:00">March 16, 2026 – 3:38 PM</time><h2 id="rubin-ultra">Rubin Ultra</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="rvbaefaXmQSZa2q2JZj2Qe" name="NVIDIA GTC Keynote 2026 1-50-45 screenshot" alt="Jensen with Vera Rubin, Grok, etc" src="https://cdn.mos.cms.futurecdn.net/rvbaefaXmQSZa2q2JZj2Qe-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Another system designed for data centers. Rubin Ultra can connect up to 144 GPUs. </p></div><div class="live-content"><time datetime="2026-03-16T19:47:46+00:00">March 16, 2026 – 3:47 PM</time><h2 id="increased-tokens">Increased tokens</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="u5QXaVn7pAE6wxq75CE6iG" name="NVIDIA GTC Keynote 2026 2-1-40 screenshot" alt="AI is getting more efficient with Vera Rubin" src="https://cdn.mos.cms.futurecdn.net/u5QXaVn7pAE6wxq75CE6iG-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>I can extrapolate that the expansion of the ability for AI datacenters to provide more tokens and data processing will increase thanks to the new Rubin GPU, but that may not actually solidify until next year as the new system gets installed and running for AI platforms.</p><p>For now, Huang is selling Nvidia's latest system.</p></div><div class="live-content"><time datetime="2026-03-16T19:58:46+00:00">March 16, 2026 – 3:58 PM</time><h2 id="what-about-n1x-or-gaming">What about N1X or gaming?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1115px;"><p class="vanilla-image-block" style="padding-top:96.41%;"><img id="nHue8iLanPgywp2Jb7RaoQ" name="Nvidia N1X FurMark benchmark" alt="Screenshot of leaked Nvidia N1X FurMark benchmark" src="https://cdn.mos.cms.futurecdn.net/nHue8iLanPgywp2Jb7RaoQ-1920-80.jpg" mos="" align="middle" fullscreen="" width="1115" height="1075" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: VideoCardz / FurMark)</span></figcaption></figure><p>While Jensen goes on about AI factories and Nvidia's architecture. Yes, as he mentioned, AI is 60% of Nvidia's business these days, which is worrisome if you believe we are facing a bubble that will pop.</p><p>My question is, will we see anything about the N1X chip or gaming GPUs? What is left for the everyday consumer? </p></div><div class="live-content"><time datetime="2026-03-16T20:03:11+00:00">March 16, 2026 – 4:03 PM</time><h2 id="nvidia-going-to-space">Nvidia going to space?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="HNkZ8NdgYwLzGgG95ofmE7" name="NVIDIA GTC Keynote 2026 2-21-49 screenshot" alt="Vera Rubin in space" src="https://cdn.mos.cms.futurecdn.net/HNkZ8NdgYwLzGgG95ofmE7-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Apparently, Huang plans to start data centers in space and already has a Vera Rubin system being design for space.</p></div><div class="live-content"><time datetime="2026-03-16T20:08:43+00:00">March 16, 2026 – 4:08 PM</time><h2 id="nvidia-and-openclaw-partnership">Nvidia and OpenClaw partnership</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="GudRQSK8ef3EuqSW49UN2C" name="NVIDIA GTC Keynote 2026 2-22-35 screenshot" alt="OpenClaw" src="https://cdn.mos.cms.futurecdn.net/GudRQSK8ef3EuqSW49UN2C-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>OpenClaw has taken the<a href="https://www.tomsguide.com/ai/openclaw-is-the-viral-ai-assistant-that-lives-on-your-device-what-you-need-to-know"> AI world by storm in the last few weeks.</a> And now, the developer has entered a partnership with Nvidia.</p><p>Huang calls it an operating system. "It opensourced the operating system of agentic computers."</p></div><div class="live-content"><time datetime="2026-03-16T20:12:22+00:00">March 16, 2026 – 4:12 PM</time><h2 id="the-implication-is-incredible">"The implication is incredible"</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="aPqhpHRfjmRZ5jsDyri9Qe" name="NVIDIA GTC Keynote 2026 2-26-46 screenshot" alt="Agents" src="https://cdn.mos.cms.futurecdn.net/aPqhpHRfjmRZ5jsDyri9Qe-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Every company in the world needs to have an OpenClaw strategy, Huang insists. Similar to a Linux focus or an HTTP/HTML focus.</p><p>OpenClaw is shows the future of personal AI agents, he says. Post-OpenClaw will turn IT from SaaS into GaaS with AI acting as service. </p></div><div class="live-content"><time datetime="2026-03-16T20:16:20+00:00">March 16, 2026 – 4:16 PM</time><h2 id="nvidia-promotes-open-models">Nvidia promotes open models</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ziSbhqoyQb8nrPcCAhJPDS" name="NVIDIA GTC Keynote 2026 2-31-44 screenshot" alt="Nvidia reference for OpenClaw aka NemoClaw" src="https://cdn.mos.cms.futurecdn.net/ziSbhqoyQb8nrPcCAhJPDS-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Nvidia makes OpenClaw more secure for enterprise. It's not clear how that would actually reflect for customers. It mostly makes it safer for businesses to use.</p><p>Through OpenClaw, Nvidia is making open models for specialized AI models including Groot, Earth 2, deep learning and more.</p><p>They're calling it NemoClaw.</p></div><div class="live-content"><time datetime="2026-03-16T20:20:22+00:00">March 16, 2026 – 4:20 PM</time><h2 id="nemotron-coalition">Nemotron Coalition</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="UWV9Eoyd2WtRE96CGzbFv3" name="NVIDIA GTC Keynote 2026 2-35-34 screenshot" alt="AI models" src="https://cdn.mos.cms.futurecdn.net/UWV9Eoyd2WtRE96CGzbFv3-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>On a practical level, this is a coalition to create AI models across the globe from enterprise to sovereign agents. </p><p>The coalition is made up of companies like Mistral, Perplexity, and Cursor. Several companies like Adobe and IBM are integrating earlier versions of Nemotron.</p><p>The name makes it sounds like they're trying to build Voltron. </p></div><div class="live-content"><time datetime="2026-03-16T20:25:41+00:00">March 16, 2026 – 4:25 PM</time><h2 id="self-driving-cars">Self-driving cars</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="3cF7sjR2FjxP5yVybxdivi" name="NVIDIA GTC Keynote 2026 2-41-40 screenshot" alt="Jensen with Robots" src="https://cdn.mos.cms.futurecdn.net/3cF7sjR2FjxP5yVybxdivi-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Speaking of Voltron, Nvidia is partnering with car manufacturers like Nissan, BYD, and more to add them to Nvidia's Robotaxi platform.</p><p>Plus, other "physical AI models" that are being deployed in robots from T-Mobile, Caterpillar, and others.</p></div><div class="live-content"><time datetime="2026-03-16T20:31:26+00:00">March 16, 2026 – 4:31 PM</time><h2 id="robotic-ai-models">Robotic AI models</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1280px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="isidjqbJtHdvsjasL2zJ66" name="NVIDIA GTC Keynote 2026 2-50-9 screenshot" alt="Jensen and Olaf at GDC 2026" src="https://cdn.mos.cms.futurecdn.net/isidjqbJtHdvsjasL2zJ66-1920-80.png" mos="" align="middle" fullscreen="" width="1280" height="720" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Nvidia is promoting its physical AI models for robotics including Groot, Kamino and Isaac labs.</p><p>The big reveal is how Disney uses the platforms for its characters in animation and imagineering. With the reveal of an Olaf robot from the movie Frozen.</p></div><div class="live-content"><time datetime="2026-03-16T20:33:22+00:00">March 16, 2026 – 4:33 PM</time><h2 id="that-appears-to-be-it">That appears to be it</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="cu35AnYi5WRzvgxGv6cqhE" name="NVIDIA GTC Keynote 2026 2-51-14 screenshot" alt="Robot" src="https://cdn.mos.cms.futurecdn.net/cu35AnYi5WRzvgxGv6cqhE-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>A strange recap is playing now with robots and an animated Jensen sitting around a campfire playing a country song about the keynote.</p><p>The song is probably AI-generated.</p></div><div class="live-content"><time datetime="2026-03-16T20:50:40+00:00">March 16, 2026 – 4:50 PM</time><h2 id=""></h2></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Nvidia says PC gaming will ‘look like a film’ — GTC 2026 could herald 1 million times better path tracing for GPUs ]]></title>
                                                                                                <dc:content><![CDATA[ <p>In tech, a 2x improvement is great and 10x is generational. So for Nvidia to claim its future <a href="https://www.tomsguide.com/computing/gpus/best-graphics-cards">gaming GPUs</a> will be 1,000,000x better at path tracing sounds like pure science fiction. But that’s exactly what the company said at GDC 2026, and what’s even crazier is that I think it’s closer than any of us think.</p><p>Because today, Nvidia has confirmed you will see the “future of real-time rendering” in CEO Jensen Huang’s GTC 2026 keynote — I think a sneak peek is possible. The obstacle to this at the moment is current GPU hardware is hitting a physical wall where we can’t just throw more electricity at the problem. And the fix? Well, it’s Nvidia’s bread and butter: AI.</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2033317319670219262"><p lang="en" dir="ltr">Catch the future of real-time rendering in Jensen’s keynote tomorrow👀 https://t.co/KFv1JoTsDu<a href="https://twitter.com/cantworkitout/status/2033317319670219262">March 15, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><h2 id="what-is-path-tracing">What is Path Tracing?</h2><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/YwsiMOzB2rc?start=163" allowfullscreen></iframe></div></div><p>This has been the new hotness in PC gaming. I tested it in Resident Evil: Requiem, and it’s rather incredible. But what it is and how to get there is an impossible-level challenge if using the old ways.</p><p>Put simply, it’s physical accuracy. It’s not just a reflection in a puddle, it’s how light from a neon sign bounces off a wet pavement, hits a character’s chrome jacket and subtly tints their skin red. It’s not just the ray traced shiny surfaces of old; path tracing calculates how light interacts with literally everything in a scene in a realistic way.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/Qp2KjeJmLCeve684PitQQg-1920-80.jpg" alt="Resident Evil Requiem" /><figcaption>Path tracing<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/WWXvPZQCRk4v4mt8LZHaZg-1920-80.jpg" alt="Resident Evil Requiem" /><figcaption>No path tracing<small role="credit">Future</small></figcaption></figure></figure><p>The end result is probably going to be subtle in some games, but in others (like Requiem) where the finer details really matter in building up the fear, it can be a game changer. </p><h2 id="the-death-of-brute-force">The death of brute force</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="QCKTTLwmSEEx5S2XAMBXYC" name="RTX 5070 vs RTX 5070 Ti" alt="RTX 5070 vs RTX 5070 Ti" src="https://cdn.mos.cms.futurecdn.net/QCKTTLwmSEEx5S2XAMBXYC-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Like I said, it’s an impossible challenge through raw hardware power. If you had your GPU just brute force full path tracing, your PC would probably melt before it rendered a single frame of <a href="https://www.tomsguide.com/reviews/cyberpunk-2077">Cyberpunk 2077</a>. But as you may have seen reading my Requiem test, Nvidia bridges that gap with DLSS 4 — AI trickery with Ray Reconstruction. </p><p>Basically, instead of making the GPU seriously sweat trying to track a single ping-pong ball thrown in a room filled with a billion mirrors, these neural rendering technologies bring in an expert who has seen billions of balls thrown into that maze. They can just look at where you threw it and draw exactly where it’s going to land.</p><p>By offloading that demanding task to AI, path tracing becomes much more efficient to do, and then that 1 million time jump starts to sound more possible.</p><h2 id="neural-rendering-is-the-whole-thing">Neural rendering is the whole thing</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="wCckHxw68LXgtKj3mm5HqS" name="Nvidia" alt="Nvidia" src="https://cdn.mos.cms.futurecdn.net/wCckHxw68LXgtKj3mm5HqS-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>In our time <a href="https://www.tomsguide.com/computing/gpus/were-working-on-things-that-are-utterly-shocking-nvidias-ceo-on-pc-gamings-future-solving-the-ram-pricing-crisis-and-the-lore-behind-his-leather-jackets">speaking with Jensen Huang</a>, it’s clear that DLSS is just the start of AI’s impact on PC gaming. The limits of how much more complex GPU hardware can get are starting to be reached, and neural rendering will be the thing that fills in the gap — turning your graphics card into less of a calculator and more of an imagination machine.</p><p>“In the future, it is very likely that we'll do more and more computation on fewer and fewer pixels. By doing so, the pixels that we compute are insanely beautiful, and then we use AI to infer what must be around it.” Huang said.</p><p>And the results in his words are “utterly shocking and incredible.” He talks about it looking like “basically a photograph interacting with you at 500 frames per second.” And this ties in with what John Spitzer, vice president of developer and performance, said when talking about the future of PC gaming graphics at GDC 2026.</p><p>"We're still not where we want to be. We want the real-time images to look indistinguishable from reality. We want them to look like a film,” Spitzer commented.</p><h2 id="gtc-2026-is-the-starting-pistol">GTC 2026 is the starting pistol</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="uNbCQTZK9QkMgBU6JsoM7m" name="Nvidia GTC" alt="Nvidia GTC" src="https://cdn.mos.cms.futurecdn.net/uNbCQTZK9QkMgBU6JsoM7m-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>And as these stars align around everything Nvidia is saying, that brings me back around to this “future of real-time rendering” promise for Huang’s keynote today. To be clear, this is <strong>not </strong>going to mean new gaming GPUs. </p><p>We already know that much from the supply issues around the current RTX 50-series, as Nvidia’s attention is being turned to building the picks and shovels for the AI gold race (<a href="https://www.tomsguide.com/ai/i-just-watched-stephen-hawking-win-an-f1-race-in-sora-2-and-now-i-think-ai-may-be-a-bubble">or bubble</a>…whichever way you look at it). But Team Green continues to march on in the gaming space, and this announcement should get PC players hyped.</p><p>I don’t think it’ll be a finish line, it’ll be a look at the next steps where we could go. After all, Vera Rubin is an architectural glimpse of what gains we may see in RTX 60-series, and that could fuel these big ideas.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/gpus/i-went-eyes-on-with-nvidias-dlss-4-5-dynamic-multi-frame-generation-launching-march-31-and-its-a-game-changer">I went eyes-on with Nvidia’s DLSS 4.5 Dynamic Multi-Frame Generation launching March 31 — and it’s a game-changer</a></li><li><a href="https://www.tomsguide.com/gaming/pc-gaming/nvidia-just-revealed-3-big-upgrades-to-its-geforce-now-cloud-gaming-service-heres-whats-new">Nvidia just revealed 3 big upgrades to its GeForce Now cloud gaming service — here's what's new</a></li><li><a href="https://www.tomsguide.com/computing/virtual-reality/nvidia-is-bringing-a-killer-app-to-the-apple-vision-pro-and-its-good-news-for-sim-racers">Nvidia is bringing a killer app to the Apple Vision Pro — and it's good news for sim racers</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/gpus/nvidia-says-pc-gaming-will-look-like-a-film-how-gpus-will-get-to-1-million-times-better-path-tracing-and-why-its-closer-than-you-think</link>
                                                                            <description>
                            <![CDATA[ Nvidia looks set to reveal the "future of real-time rendering" at GTC 2026. We break down the shift to neural rendering and the hunt for film-quality gaming graphics. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">ZDLfQQsgCRAZyVNyYcoW9J</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/MFifoDjTTinJpLk8syk8pj-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 16 Mar 2026 11:52:58 +0000</pubDate>                                                                                                                                <updated>Mon, 16 Mar 2026 13:27:25 +0000</updated>
                                                                                                                                            <category><![CDATA[GPUs]]></category>
                                                    <category><![CDATA[PC Gaming]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Computing Hardware]]></category>
                                                    <category><![CDATA[Gaming]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jason England ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/v4fSq5U4uZUEtGY2BwNuJ6-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jason brings a decade of tech and gaming journalism experience to his role as a Managing Editor of Computing at Tom&#039;s Guide. He has previously written for Laptop Mag, Tom&#039;s Hardware, Kotaku, Stuff and BBC Science Focus. In his spare time, you&#039;ll find Jason looking for good dogs to pet or thinking about eating pizza if he isn&#039;t already.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/MFifoDjTTinJpLk8syk8pj-1920-80.jpg">
                                                            <media:credit><![CDATA[Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Jensen Huang at CES 2026]]></media:description>                                                            <media:text><![CDATA[Jensen Huang at CES 2026]]></media:text>
                                <media:title type="plain"><![CDATA[Jensen Huang at CES 2026]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/MFifoDjTTinJpLk8syk8pj-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>In tech, a 2x improvement is great and 10x is generational. So for Nvidia to claim its future <a href="https://www.tomsguide.com/computing/gpus/best-graphics-cards">gaming GPUs</a> will be 1,000,000x better at path tracing sounds like pure science fiction. But that’s exactly what the company said at GDC 2026, and what’s even crazier is that I think it’s closer than any of us think.</p><p>Because today, Nvidia has confirmed you will see the “future of real-time rendering” in CEO Jensen Huang’s GTC 2026 keynote — I think a sneak peek is possible. The obstacle to this at the moment is current GPU hardware is hitting a physical wall where we can’t just throw more electricity at the problem. And the fix? Well, it’s Nvidia’s bread and butter: AI.</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2033317319670219262"><p lang="en" dir="ltr">Catch the future of real-time rendering in Jensen’s keynote tomorrow👀 https://t.co/KFv1JoTsDu<a href="https://twitter.com/cantworkitout/status/2033317319670219262">March 15, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><h2 id="what-is-path-tracing">What is Path Tracing?</h2><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/YwsiMOzB2rc?start=163" allowfullscreen></iframe></div></div><p>This has been the new hotness in PC gaming. I tested it in Resident Evil: Requiem, and it’s rather incredible. But what it is and how to get there is an impossible-level challenge if using the old ways.</p><p>Put simply, it’s physical accuracy. It’s not just a reflection in a puddle, it’s how light from a neon sign bounces off a wet pavement, hits a character’s chrome jacket and subtly tints their skin red. It’s not just the ray traced shiny surfaces of old; path tracing calculates how light interacts with literally everything in a scene in a realistic way.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/Qp2KjeJmLCeve684PitQQg-1920-80.jpg" alt="Resident Evil Requiem" /><figcaption>Path tracing<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/WWXvPZQCRk4v4mt8LZHaZg-1920-80.jpg" alt="Resident Evil Requiem" /><figcaption>No path tracing<small role="credit">Future</small></figcaption></figure></figure><p>The end result is probably going to be subtle in some games, but in others (like Requiem) where the finer details really matter in building up the fear, it can be a game changer. </p><h2 id="the-death-of-brute-force">The death of brute force</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="QCKTTLwmSEEx5S2XAMBXYC" name="RTX 5070 vs RTX 5070 Ti" alt="RTX 5070 vs RTX 5070 Ti" src="https://cdn.mos.cms.futurecdn.net/QCKTTLwmSEEx5S2XAMBXYC-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Like I said, it’s an impossible challenge through raw hardware power. If you had your GPU just brute force full path tracing, your PC would probably melt before it rendered a single frame of <a href="https://www.tomsguide.com/reviews/cyberpunk-2077">Cyberpunk 2077</a>. But as you may have seen reading my Requiem test, Nvidia bridges that gap with DLSS 4 — AI trickery with Ray Reconstruction. </p><p>Basically, instead of making the GPU seriously sweat trying to track a single ping-pong ball thrown in a room filled with a billion mirrors, these neural rendering technologies bring in an expert who has seen billions of balls thrown into that maze. They can just look at where you threw it and draw exactly where it’s going to land.</p><p>By offloading that demanding task to AI, path tracing becomes much more efficient to do, and then that 1 million time jump starts to sound more possible.</p><h2 id="neural-rendering-is-the-whole-thing">Neural rendering is the whole thing</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="wCckHxw68LXgtKj3mm5HqS" name="Nvidia" alt="Nvidia" src="https://cdn.mos.cms.futurecdn.net/wCckHxw68LXgtKj3mm5HqS-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>In our time <a href="https://www.tomsguide.com/computing/gpus/were-working-on-things-that-are-utterly-shocking-nvidias-ceo-on-pc-gamings-future-solving-the-ram-pricing-crisis-and-the-lore-behind-his-leather-jackets">speaking with Jensen Huang</a>, it’s clear that DLSS is just the start of AI’s impact on PC gaming. The limits of how much more complex GPU hardware can get are starting to be reached, and neural rendering will be the thing that fills in the gap — turning your graphics card into less of a calculator and more of an imagination machine.</p><p>“In the future, it is very likely that we'll do more and more computation on fewer and fewer pixels. By doing so, the pixels that we compute are insanely beautiful, and then we use AI to infer what must be around it.” Huang said.</p><p>And the results in his words are “utterly shocking and incredible.” He talks about it looking like “basically a photograph interacting with you at 500 frames per second.” And this ties in with what John Spitzer, vice president of developer and performance, said when talking about the future of PC gaming graphics at GDC 2026.</p><p>"We're still not where we want to be. We want the real-time images to look indistinguishable from reality. We want them to look like a film,” Spitzer commented.</p><h2 id="gtc-2026-is-the-starting-pistol">GTC 2026 is the starting pistol</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="uNbCQTZK9QkMgBU6JsoM7m" name="Nvidia GTC" alt="Nvidia GTC" src="https://cdn.mos.cms.futurecdn.net/uNbCQTZK9QkMgBU6JsoM7m-1920-80.png" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>And as these stars align around everything Nvidia is saying, that brings me back around to this “future of real-time rendering” promise for Huang’s keynote today. To be clear, this is <strong>not </strong>going to mean new gaming GPUs. </p><p>We already know that much from the supply issues around the current RTX 50-series, as Nvidia’s attention is being turned to building the picks and shovels for the AI gold race (<a href="https://www.tomsguide.com/ai/i-just-watched-stephen-hawking-win-an-f1-race-in-sora-2-and-now-i-think-ai-may-be-a-bubble">or bubble</a>…whichever way you look at it). But Team Green continues to march on in the gaming space, and this announcement should get PC players hyped.</p><p>I don’t think it’ll be a finish line, it’ll be a look at the next steps where we could go. After all, Vera Rubin is an architectural glimpse of what gains we may see in RTX 60-series, and that could fuel these big ideas.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/gpus/i-went-eyes-on-with-nvidias-dlss-4-5-dynamic-multi-frame-generation-launching-march-31-and-its-a-game-changer">I went eyes-on with Nvidia’s DLSS 4.5 Dynamic Multi-Frame Generation launching March 31 — and it’s a game-changer</a></li><li><a href="https://www.tomsguide.com/gaming/pc-gaming/nvidia-just-revealed-3-big-upgrades-to-its-geforce-now-cloud-gaming-service-heres-whats-new">Nvidia just revealed 3 big upgrades to its GeForce Now cloud gaming service — here's what's new</a></li><li><a href="https://www.tomsguide.com/computing/virtual-reality/nvidia-is-bringing-a-killer-app-to-the-apple-vision-pro-and-its-good-news-for-sim-racers">Nvidia is bringing a killer app to the Apple Vision Pro — and it's good news for sim racers</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Nvidia is bringing a killer app to the Apple Vision Pro — and it's good news for sim racers ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Nvidia’s going big at GDC before going even bigger at <a href="https://www.tomsguide.com/computing/nvidia-gtc-2026-the-biggest-reveals-we-expect-to-see">GTC</a>. But there’s one quiet announcement amidst <a href="https://www.tomsguide.com/computing/gpus/i-went-eyes-on-with-nvidias-dlss-4-5-dynamic-multi-frame-generation-launching-march-31-and-its-a-game-changer">DLSS 4.5 dynamic multi-frame generation</a> and <a href="https://www.tomsguide.com/gaming/pc-gaming/nvidia-just-revealed-3-big-upgrades-to-its-geforce-now-cloud-gaming-service-heres-whats-new">GeForce Now upgrades</a> that could be a massive one for anyone who owns an <a href="https://www.tomsguide.com/computing/augmented-reality/apple-vision-pro-m5-2025-review">Apple Vision Pro</a> — looking for reasons to use it.</p><p>Team Green’s CloudXR technology is able to stream PC VR games wirelessly from your gaming PC to the Vision Pro in glorious 4K 120 FPS, and their first target is the ultimate sim rig experience with support for iRacing and X-Plane 12.</p><p>Obviously, good news for sim pilots (shout-out), but as you may already know about me, I’m the sim racing guy on the Tom’s Guide team (my bachelor party is literally dedicated to it). One thing is clear: this is a breakthrough for VR drivers like me. Let me explain.</p><h2 id="what-is-nvidia-s-cloudxr">What is Nvidia’s CloudXR?</h2><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/wgARBIHHGW4" allowfullscreen></iframe></div></div><p>One thing I have to make clear here  is that CloudXR is a very different thing to GeForce Now. Both are game streaming, but while GFN is from Nvidia’s cloud servers, CloudXR streams directly from your own hardware. You’ll need a beauty tower too, because its capabilities are significant.</p><p>Think of CloudXR as me vs a strong person taking in a bunch of groceries from the car. I can handle two bags, but if I try to handle more, it becomes a struggle. So my muscly friend comes in and takes the remaining eight bags. We’re <em>technically </em>working together, but let’s be real — they’re doing the heavy lifting (literally).</p><p>It’s GPU-accelerated VR delivered wirelessly to a headset with low-latency, which brings a serious graphical turboboost of that Nvidia GPU that you wouldn’t be able to do on the silicon of that standalone set. </p><p>And while some people have been talking about beta testing this new feature on the Vision Pro subreddit, this is the first time Nvidia’s officially letting the cat out the bag.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="e7EYBWFHwwvDNwdDqF9UPJ" name="synapse-screenshot (3).jpg" alt="Synapse screenshot" src="https://cdn.mos.cms.futurecdn.net/e7EYBWFHwwvDNwdDqF9UPJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: nDreams)</span></figcaption></figure><p>The big win here is foveated PC streaming. Basically, thanks to Apple Vision Pro’s eye-tracking capability, Nvidia’s CloudXR tech can see where you’re looking and render that part of your vision in full glorious detail — while leaving stuff in your peripheral vision and beyond less so. PSVR 2 does something similar with rendering graphics on the PS5, but it doesn’t hold a candle to this.</p><p>It’s a huge efficiency gain for your GPU, and provides much more headroom to be able to achieve up to full 4K gaming at 120 FPS in VR.</p><h2 id="the-vision-pro-s-killer-app">The Vision Pro’s killer app?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="WJBaa7XkDtmnWBCiSCi7He" name="Pimax Dream Air" alt="Pimax Dream Air" src="https://cdn.mos.cms.futurecdn.net/WJBaa7XkDtmnWBCiSCi7He-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>That question is a tricky one to answer — it’s a $3,500 headset after all. But any new features are warmly welcomed to try and get more value from what has quickly become the beta test device for the version of visionOS that will run on a future pair of smart glasses.</p><p>But take it from a VR sim racer: there’s no experience quite like it (…except maybe actually driving a race car, but there’s no risk factor here). </p><p>I know we’re all quick to talk about the “immersion” of something, and don’t get me wrong, it absolutely is. But there’s something here about it that actually makes you a better driver. </p><p>Take trail-braking for example (instead of hammering on the brakes to slow down for a corner, using a more gentle combination of brake and acceleration to maximize corner speed). It’s a tricky technique to learn and while I’m absolutely getting the feedback I need from my sim rig to ensure I’m not over-driving, being able to see the path of a corner is also critical.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="YhKC7iyiwwgCtxT35T9PuD" name="sim racing vr.jpg" alt="Sim racing in VR" src="https://cdn.mos.cms.futurecdn.net/YhKC7iyiwwgCtxT35T9PuD-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Now, on the flat screen of a TV or monitor, that can be next to impossible on long-swooping turns or oddly-angled hairpins that disappear off the side. In VR, I can look to the apex and corner exit and aim my car for it.</p><p>Yes, I know this sounds small and that I’m getting really geeky here (sim racing is extremely my thing). But it’s oh-so critical to extracting the slight performance improvements that are the difference between a win and a loss.</p><h2 id="not-the-only-xr-upgrade">Not the only XR upgrade</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:800px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="TCXxpHzVxZLe8AAcCh6Ccf" name="Meta Quest 3S" alt="Meta Quest 3S" src="https://cdn.mos.cms.futurecdn.net/TCXxpHzVxZLe8AAcCh6Ccf-1920-80.gif" mos="" align="middle" fullscreen="" width="800" height="450" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>For the other update, we look over to Nvidia GeForce Now, where on March 19, Apple Vision Pro and Meta Quest headsets are getting a streaming upgrade to 90 FPS. It’s great to see these platforms continue to get supported — nothing quite like throwing on my Quest 3S in bed and playing PC games on a gigantic screen on my ceiling.</p><p>And as the subreddit community seems to confirm about beta tests, CloudXR is something that can be used across multiple games, which would be huge for the future of PC VR gaming. Getting those cables outta the way is a step towards true plug and play simplicity that can be the biggest thing holding potential players back.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/smart-glasses/2026-is-the-year-smart-glasses-will-finally-stop-being-cringe-but-has-their-moment-come-too-late">2026 is the year smart glasses will finally stop being cringe, but has their moment come too late?</a></li><li><a href="https://www.tomsguide.com/gaming/gaming-peripherals/i-raced-an-entire-f1-season-in-this-sim-racing-seat-and-its-the-ultimate-upgrade">I sim-raced an F1 season and dethroned Verstappen — thanks to the ultimate sim seat</a></li><li><a href="https://www.tomsguide.com/gaming/gaming-peripherals/i-felt-like-i-was-driving-a-real-racing-car-when-testing-this-sim-racing-rig-this-is-next-level-simulation-tech">I felt like I was driving a real racing car when testing this sim racing rig — this is next-level simulation tech</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/virtual-reality/nvidia-is-bringing-a-killer-app-to-the-apple-vision-pro-and-its-good-news-for-sim-racers</link>
                                                                            <description>
                            <![CDATA[ I’m a VR sim racer, and Nvidia is making the Apple Vision Pro more tempting to buy with this one huge feature — here’s why ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">RSpyY9tuNkMgt98LD3g2V5</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/oPVapWuQiJbFgshS4eFdk5-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 10 Mar 2026 15:43:06 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Virtual Reality]]></category>
                                                    <category><![CDATA[GPUs]]></category>
                                                    <category><![CDATA[PC Gaming]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[VR & AR]]></category>
                                                    <category><![CDATA[Computing Hardware]]></category>
                                                    <category><![CDATA[Gaming]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jason England ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/v4fSq5U4uZUEtGY2BwNuJ6-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jason brings a decade of tech and gaming journalism experience to his role as a Managing Editor of Computing at Tom&#039;s Guide. He has previously written for Laptop Mag, Tom&#039;s Hardware, Kotaku, Stuff and BBC Science Focus. In his spare time, you&#039;ll find Jason looking for good dogs to pet or thinking about eating pizza if he isn&#039;t already.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/oPVapWuQiJbFgshS4eFdk5-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Apple Vision Pro Nvidia CloudXR]]></media:description>                                                            <media:text><![CDATA[Apple Vision Pro Nvidia CloudXR]]></media:text>
                                <media:title type="plain"><![CDATA[Apple Vision Pro Nvidia CloudXR]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/oPVapWuQiJbFgshS4eFdk5-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Nvidia’s going big at GDC before going even bigger at <a href="https://www.tomsguide.com/computing/nvidia-gtc-2026-the-biggest-reveals-we-expect-to-see">GTC</a>. But there’s one quiet announcement amidst <a href="https://www.tomsguide.com/computing/gpus/i-went-eyes-on-with-nvidias-dlss-4-5-dynamic-multi-frame-generation-launching-march-31-and-its-a-game-changer">DLSS 4.5 dynamic multi-frame generation</a> and <a href="https://www.tomsguide.com/gaming/pc-gaming/nvidia-just-revealed-3-big-upgrades-to-its-geforce-now-cloud-gaming-service-heres-whats-new">GeForce Now upgrades</a> that could be a massive one for anyone who owns an <a href="https://www.tomsguide.com/computing/augmented-reality/apple-vision-pro-m5-2025-review">Apple Vision Pro</a> — looking for reasons to use it.</p><p>Team Green’s CloudXR technology is able to stream PC VR games wirelessly from your gaming PC to the Vision Pro in glorious 4K 120 FPS, and their first target is the ultimate sim rig experience with support for iRacing and X-Plane 12.</p><p>Obviously, good news for sim pilots (shout-out), but as you may already know about me, I’m the sim racing guy on the Tom’s Guide team (my bachelor party is literally dedicated to it). One thing is clear: this is a breakthrough for VR drivers like me. Let me explain.</p><h2 id="what-is-nvidia-s-cloudxr">What is Nvidia’s CloudXR?</h2><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/wgARBIHHGW4" allowfullscreen></iframe></div></div><p>One thing I have to make clear here  is that CloudXR is a very different thing to GeForce Now. Both are game streaming, but while GFN is from Nvidia’s cloud servers, CloudXR streams directly from your own hardware. You’ll need a beauty tower too, because its capabilities are significant.</p><p>Think of CloudXR as me vs a strong person taking in a bunch of groceries from the car. I can handle two bags, but if I try to handle more, it becomes a struggle. So my muscly friend comes in and takes the remaining eight bags. We’re <em>technically </em>working together, but let’s be real — they’re doing the heavy lifting (literally).</p><p>It’s GPU-accelerated VR delivered wirelessly to a headset with low-latency, which brings a serious graphical turboboost of that Nvidia GPU that you wouldn’t be able to do on the silicon of that standalone set. </p><p>And while some people have been talking about beta testing this new feature on the Vision Pro subreddit, this is the first time Nvidia’s officially letting the cat out the bag.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="e7EYBWFHwwvDNwdDqF9UPJ" name="synapse-screenshot (3).jpg" alt="Synapse screenshot" src="https://cdn.mos.cms.futurecdn.net/e7EYBWFHwwvDNwdDqF9UPJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: nDreams)</span></figcaption></figure><p>The big win here is foveated PC streaming. Basically, thanks to Apple Vision Pro’s eye-tracking capability, Nvidia’s CloudXR tech can see where you’re looking and render that part of your vision in full glorious detail — while leaving stuff in your peripheral vision and beyond less so. PSVR 2 does something similar with rendering graphics on the PS5, but it doesn’t hold a candle to this.</p><p>It’s a huge efficiency gain for your GPU, and provides much more headroom to be able to achieve up to full 4K gaming at 120 FPS in VR.</p><h2 id="the-vision-pro-s-killer-app">The Vision Pro’s killer app?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="WJBaa7XkDtmnWBCiSCi7He" name="Pimax Dream Air" alt="Pimax Dream Air" src="https://cdn.mos.cms.futurecdn.net/WJBaa7XkDtmnWBCiSCi7He-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>That question is a tricky one to answer — it’s a $3,500 headset after all. But any new features are warmly welcomed to try and get more value from what has quickly become the beta test device for the version of visionOS that will run on a future pair of smart glasses.</p><p>But take it from a VR sim racer: there’s no experience quite like it (…except maybe actually driving a race car, but there’s no risk factor here). </p><p>I know we’re all quick to talk about the “immersion” of something, and don’t get me wrong, it absolutely is. But there’s something here about it that actually makes you a better driver. </p><p>Take trail-braking for example (instead of hammering on the brakes to slow down for a corner, using a more gentle combination of brake and acceleration to maximize corner speed). It’s a tricky technique to learn and while I’m absolutely getting the feedback I need from my sim rig to ensure I’m not over-driving, being able to see the path of a corner is also critical.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="YhKC7iyiwwgCtxT35T9PuD" name="sim racing vr.jpg" alt="Sim racing in VR" src="https://cdn.mos.cms.futurecdn.net/YhKC7iyiwwgCtxT35T9PuD-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Now, on the flat screen of a TV or monitor, that can be next to impossible on long-swooping turns or oddly-angled hairpins that disappear off the side. In VR, I can look to the apex and corner exit and aim my car for it.</p><p>Yes, I know this sounds small and that I’m getting really geeky here (sim racing is extremely my thing). But it’s oh-so critical to extracting the slight performance improvements that are the difference between a win and a loss.</p><h2 id="not-the-only-xr-upgrade">Not the only XR upgrade</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:800px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="TCXxpHzVxZLe8AAcCh6Ccf" name="Meta Quest 3S" alt="Meta Quest 3S" src="https://cdn.mos.cms.futurecdn.net/TCXxpHzVxZLe8AAcCh6Ccf-1920-80.gif" mos="" align="middle" fullscreen="" width="800" height="450" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>For the other update, we look over to Nvidia GeForce Now, where on March 19, Apple Vision Pro and Meta Quest headsets are getting a streaming upgrade to 90 FPS. It’s great to see these platforms continue to get supported — nothing quite like throwing on my Quest 3S in bed and playing PC games on a gigantic screen on my ceiling.</p><p>And as the subreddit community seems to confirm about beta tests, CloudXR is something that can be used across multiple games, which would be huge for the future of PC VR gaming. Getting those cables outta the way is a step towards true plug and play simplicity that can be the biggest thing holding potential players back.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/smart-glasses/2026-is-the-year-smart-glasses-will-finally-stop-being-cringe-but-has-their-moment-come-too-late">2026 is the year smart glasses will finally stop being cringe, but has their moment come too late?</a></li><li><a href="https://www.tomsguide.com/gaming/gaming-peripherals/i-raced-an-entire-f1-season-in-this-sim-racing-seat-and-its-the-ultimate-upgrade">I sim-raced an F1 season and dethroned Verstappen — thanks to the ultimate sim seat</a></li><li><a href="https://www.tomsguide.com/gaming/gaming-peripherals/i-felt-like-i-was-driving-a-real-racing-car-when-testing-this-sim-racing-rig-this-is-next-level-simulation-tech">I felt like I was driving a real racing car when testing this sim racing rig — this is next-level simulation tech</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I went eyes-on with Nvidia’s DLSS 4.5 Dynamic Multi-Frame Generation launching March 31 — and it’s a game-changer ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Nvidia launched DLSS 4.5 back in the middle of January and (spoiler alert) <a href="https://www.tomsguide.com/gaming/pc-gaming/deciphering-dlss-4-5-i-tested-nvidias-new-upscaler-and-figured-out-when-to-use-model-l-or-m">I’ve been really impressed</a> with just how much detail is AI-infused upscaler is able to get from a rendered picture from just 25% the resolution. It feels like a real value booster for mid-range GPUs!</p><p>But there’s one feature that we’ve all been waiting for — Dynamic Multi-Frame Generation — the evolution of the frame gen we have right now. Basically, instead of just packing an arbitrary amount of AI-generated frames in between frames rendered by your GPU, dynamic frame gen is able to see what the max refresh rate of your screen is, and only generate the frames it needs to max that out.</p><p>We now have a launch date of March 31st (starting in beta), and I got some eyes-on time with the tech. And I gotta be honest with you, this feels like the frame gen tech that tackles the problems PC gamers have head on. Let me explain.</p><h2 id="how-does-dynamic-multi-frame-generation-work">How does Dynamic Multi-Frame Generation work?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="tDJVrbF3btzoYzVNxVkpMh" name="DLSS 4.5" alt="DLSS 4.5" src="https://cdn.mos.cms.futurecdn.net/tDJVrbF3btzoYzVNxVkpMh-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Think about it like driving up a steep mountain, and you’re in a car with a manual transmission. To maintain speed, you’ve got to manually shift your gears (like shifting between the different multi-frame gen options), and those gear shifts can cause a clunky pause in your momentum.</p><p>Dynamic multi-frame gen works like a car with automatic transmission — intelligently monitoring how hard the engine is working (your system load) and automatically shifting gears (the frame multiplier) up or down depending on what the terrain demands.</p><p>And when the road flattens out and the workload lightens, the frame multiplier seamlessly downshifts so your system computes exactly what is needed in every scenario. The end result of this in my testing is an uninterrupted gaming experience, where you’ll really struggle to notice when that multiplier changes, and virtually eliminates any tiny hints of latency.</p><h2 id="gamesmaxxing">Gamesmaxxing</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="8nPradLFnK9bDyNHAU2qbX" name="Nvidia DLSS 4.5" alt="Nvidia DLSS 4.5" src="https://cdn.mos.cms.futurecdn.net/8nPradLFnK9bDyNHAU2qbX-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>So I saw Black Myth: Wukong running on an RTX 5080 machine with multi-frame generation cranked up manually to 6X, and then The Outer Worlds 2 with RTX 5060 Ti with that dynamic frame gen turned on. </p><p>The first observation when it comes to Black Myth is just how minimal the latency impact is at full 6X. We are talking only a few milliseconds here, which I didn’t feel at all in the controller inputs — all while showing off exactly what DLSS 4.5 is able to do here.</p><p>For example, while toggling to DLSS 4 shows that some of the finer particle details and distant textures are smoothed out/removed, switching to 4.5 really brings these intricacies back to life. You can see it just by looking at the sparks of light around your weapon.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="gJRDGvZdeEnqJh4tEP9kdX" name="Nvidia DLSS 4.5" alt="Nvidia DLSS 4.5" src="https://cdn.mos.cms.futurecdn.net/gJRDGvZdeEnqJh4tEP9kdX-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Then, here comes dynamic frame gen, which targets the max frame rate (240Hz) of the monitor. I got the help of an Nvidia rep to hide the stats in the top corner of the screen with his hand — so I can try to guess when the frame multiplier changes based on feeling alone.</p><p>Because visually, I could take an educated guess, right? Like, when the screen is not so busy, that multiplier would go down, but when there’s much more textures and characters to render, it’ll go back up. But the transitions felt oh-so-smooth that I didn’t notice a change to the speed of my inputs whatsoever.</p><p>That comes down to three key things:</p><ul><li><strong>Eliminating wasteful latency: </strong>Let’s say you’ve got a 144Hz monitor, and you’ve got DLSS running a game at 240 FPS. Those extra 96 frames are never seen, but the GPU still spends time computing them. This can create an interpolation gap — you’re over-exhausting your GPU with AI tasks it doesn’t need to do. By aiming for the max frame rate, the backlog is cleared and waste is eliminated.</li><li><strong>Smoother frame pacing: </strong>Another side-effect of aiming squarely for your monitor’s exact frame rate is a consistent delivery of said frames. If you manually set to a certain multiplier, there can be a jittery feeling as you go between GPU-intensive levels and calmer ones. This stops the over-delivery of frames in those quieter moments and has it all running at the same pace.</li><li><strong>Prioritizing the base frame rate: </strong>Any AI game frame generation is only as good as the base rate of how fast your GPU can render a game. Sometimes your game can look fast, but feel slow, and sometimes that can be exacerbated by clogging it with AI tasks. With Dynamic MFG shifting from 6X down to 2 or even 0X (native), this ensures that the card focuses more on rendering real frames faster.</li></ul><p>The end result is a more tamed DLSS frame generation — only using its AI witchcraft when it’s absolutely necessary and making a game feel smoother and more responsive for it.</p><h2 id="outlook-3">Outlook</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Vr6mvKRLNnpwNpPfTm93XX" name="Nvidia DLSS 4.5" alt="Nvidia DLSS 4.5" src="https://cdn.mos.cms.futurecdn.net/Vr6mvKRLNnpwNpPfTm93XX-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>So ahead of its March 31st debut (launching as part of an opt-in Nvidia app beta that you can turn on as an override), should you use it? Based on my time testing it, the answer is “absolutely,” but results may vary.</p><p>Of course, this is going to start life as a beta, so there’s that disclaimer out the way. Plus, I tested it in a very specific space ship environment in The Outer Worlds 2 — what would happen if I was to be in the throws of combat on a planet? How will results change across different games?</p><p>The answer, as we all explore this tech together, will change on a game-by-game basis — as more and more optimizations are made to work around it. </p><p>That being said, if <em>this </em>is what we can look forward to across the over 200 titles that support DLSS 4.5 (and the 20 native integrations currently in the works for upcoming games), this is the final piece of the puzzle that brings the vision of smooth, responsive AI fueled gameplay to life.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/gpus/its-been-25-years-since-nvidia-geforce-3-and-i-think-gamers-accidentally-built-the-ai-era">It’s been 25 years since Nvidia GeForce 3 — and I think gamers accidentally built the AI era</a></li><li><a href="https://www.tomsguide.com/gaming/pc-gaming/resident-evil-requiem-with-path-tracing-is-horrifying-and-i-mean-that-as-a-compliment-to-nvidia-and-dlss-4">Resident Evil Requiem turned me into a path tracing believer — and Nvidia's DLSS 4 made it terrifying</a></li><li><a href="https://www.tomsguide.com/computing/gpus/dlss-4-5-wins-big-48-percent-of-gamers-pick-nvidia-over-amd-fsr-and-native-in-blind-gaming-test">DLSS 4.5 wins big: 48% of gamers pick Nvidia over AMD FSR (and native) in blind gaming test</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/gpus/i-went-eyes-on-with-nvidias-dlss-4-5-dynamic-multi-frame-generation-launching-march-31-and-its-a-game-changer</link>
                                                                            <description>
                            <![CDATA[ Nvidia DLSS 4.5 Dynamic Multi-Frame Generation is launching on March 31st, and I got to go eyes-on before its grand debut. Here are my thoughts! ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">ApBM7Mq9dXUPYQeFexLc7D</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/4XnUsA7mPWrUe6yrBWewQX-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 10 Mar 2026 15:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[GPUs]]></category>
                                                    <category><![CDATA[PC Gaming]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Computing Hardware]]></category>
                                                    <category><![CDATA[Gaming]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jason England ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/v4fSq5U4uZUEtGY2BwNuJ6-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jason brings a decade of tech and gaming journalism experience to his role as a Managing Editor of Computing at Tom&#039;s Guide. He has previously written for Laptop Mag, Tom&#039;s Hardware, Kotaku, Stuff and BBC Science Focus. In his spare time, you&#039;ll find Jason looking for good dogs to pet or thinking about eating pizza if he isn&#039;t already.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/4XnUsA7mPWrUe6yrBWewQX-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Nvidia DLSS 4.5]]></media:description>                                                            <media:text><![CDATA[Nvidia DLSS 4.5]]></media:text>
                                <media:title type="plain"><![CDATA[Nvidia DLSS 4.5]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/4XnUsA7mPWrUe6yrBWewQX-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Nvidia launched DLSS 4.5 back in the middle of January and (spoiler alert) <a href="https://www.tomsguide.com/gaming/pc-gaming/deciphering-dlss-4-5-i-tested-nvidias-new-upscaler-and-figured-out-when-to-use-model-l-or-m">I’ve been really impressed</a> with just how much detail is AI-infused upscaler is able to get from a rendered picture from just 25% the resolution. It feels like a real value booster for mid-range GPUs!</p><p>But there’s one feature that we’ve all been waiting for — Dynamic Multi-Frame Generation — the evolution of the frame gen we have right now. Basically, instead of just packing an arbitrary amount of AI-generated frames in between frames rendered by your GPU, dynamic frame gen is able to see what the max refresh rate of your screen is, and only generate the frames it needs to max that out.</p><p>We now have a launch date of March 31st (starting in beta), and I got some eyes-on time with the tech. And I gotta be honest with you, this feels like the frame gen tech that tackles the problems PC gamers have head on. Let me explain.</p><h2 id="how-does-dynamic-multi-frame-generation-work">How does Dynamic Multi-Frame Generation work?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="tDJVrbF3btzoYzVNxVkpMh" name="DLSS 4.5" alt="DLSS 4.5" src="https://cdn.mos.cms.futurecdn.net/tDJVrbF3btzoYzVNxVkpMh-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nvidia)</span></figcaption></figure><p>Think about it like driving up a steep mountain, and you’re in a car with a manual transmission. To maintain speed, you’ve got to manually shift your gears (like shifting between the different multi-frame gen options), and those gear shifts can cause a clunky pause in your momentum.</p><p>Dynamic multi-frame gen works like a car with automatic transmission — intelligently monitoring how hard the engine is working (your system load) and automatically shifting gears (the frame multiplier) up or down depending on what the terrain demands.</p><p>And when the road flattens out and the workload lightens, the frame multiplier seamlessly downshifts so your system computes exactly what is needed in every scenario. The end result of this in my testing is an uninterrupted gaming experience, where you’ll really struggle to notice when that multiplier changes, and virtually eliminates any tiny hints of latency.</p><h2 id="gamesmaxxing">Gamesmaxxing</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="8nPradLFnK9bDyNHAU2qbX" name="Nvidia DLSS 4.5" alt="Nvidia DLSS 4.5" src="https://cdn.mos.cms.futurecdn.net/8nPradLFnK9bDyNHAU2qbX-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>So I saw Black Myth: Wukong running on an RTX 5080 machine with multi-frame generation cranked up manually to 6X, and then The Outer Worlds 2 with RTX 5060 Ti with that dynamic frame gen turned on. </p><p>The first observation when it comes to Black Myth is just how minimal the latency impact is at full 6X. We are talking only a few milliseconds here, which I didn’t feel at all in the controller inputs — all while showing off exactly what DLSS 4.5 is able to do here.</p><p>For example, while toggling to DLSS 4 shows that some of the finer particle details and distant textures are smoothed out/removed, switching to 4.5 really brings these intricacies back to life. You can see it just by looking at the sparks of light around your weapon.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="gJRDGvZdeEnqJh4tEP9kdX" name="Nvidia DLSS 4.5" alt="Nvidia DLSS 4.5" src="https://cdn.mos.cms.futurecdn.net/gJRDGvZdeEnqJh4tEP9kdX-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Then, here comes dynamic frame gen, which targets the max frame rate (240Hz) of the monitor. I got the help of an Nvidia rep to hide the stats in the top corner of the screen with his hand — so I can try to guess when the frame multiplier changes based on feeling alone.</p><p>Because visually, I could take an educated guess, right? Like, when the screen is not so busy, that multiplier would go down, but when there’s much more textures and characters to render, it’ll go back up. But the transitions felt oh-so-smooth that I didn’t notice a change to the speed of my inputs whatsoever.</p><p>That comes down to three key things:</p><ul><li><strong>Eliminating wasteful latency: </strong>Let’s say you’ve got a 144Hz monitor, and you’ve got DLSS running a game at 240 FPS. Those extra 96 frames are never seen, but the GPU still spends time computing them. This can create an interpolation gap — you’re over-exhausting your GPU with AI tasks it doesn’t need to do. By aiming for the max frame rate, the backlog is cleared and waste is eliminated.</li><li><strong>Smoother frame pacing: </strong>Another side-effect of aiming squarely for your monitor’s exact frame rate is a consistent delivery of said frames. If you manually set to a certain multiplier, there can be a jittery feeling as you go between GPU-intensive levels and calmer ones. This stops the over-delivery of frames in those quieter moments and has it all running at the same pace.</li><li><strong>Prioritizing the base frame rate: </strong>Any AI game frame generation is only as good as the base rate of how fast your GPU can render a game. Sometimes your game can look fast, but feel slow, and sometimes that can be exacerbated by clogging it with AI tasks. With Dynamic MFG shifting from 6X down to 2 or even 0X (native), this ensures that the card focuses more on rendering real frames faster.</li></ul><p>The end result is a more tamed DLSS frame generation — only using its AI witchcraft when it’s absolutely necessary and making a game feel smoother and more responsive for it.</p><h2 id="outlook-3">Outlook</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Vr6mvKRLNnpwNpPfTm93XX" name="Nvidia DLSS 4.5" alt="Nvidia DLSS 4.5" src="https://cdn.mos.cms.futurecdn.net/Vr6mvKRLNnpwNpPfTm93XX-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>So ahead of its March 31st debut (launching as part of an opt-in Nvidia app beta that you can turn on as an override), should you use it? Based on my time testing it, the answer is “absolutely,” but results may vary.</p><p>Of course, this is going to start life as a beta, so there’s that disclaimer out the way. Plus, I tested it in a very specific space ship environment in The Outer Worlds 2 — what would happen if I was to be in the throws of combat on a planet? How will results change across different games?</p><p>The answer, as we all explore this tech together, will change on a game-by-game basis — as more and more optimizations are made to work around it. </p><p>That being said, if <em>this </em>is what we can look forward to across the over 200 titles that support DLSS 4.5 (and the 20 native integrations currently in the works for upcoming games), this is the final piece of the puzzle that brings the vision of smooth, responsive AI fueled gameplay to life.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/gpus/its-been-25-years-since-nvidia-geforce-3-and-i-think-gamers-accidentally-built-the-ai-era">It’s been 25 years since Nvidia GeForce 3 — and I think gamers accidentally built the AI era</a></li><li><a href="https://www.tomsguide.com/gaming/pc-gaming/resident-evil-requiem-with-path-tracing-is-horrifying-and-i-mean-that-as-a-compliment-to-nvidia-and-dlss-4">Resident Evil Requiem turned me into a path tracing believer — and Nvidia's DLSS 4 made it terrifying</a></li><li><a href="https://www.tomsguide.com/computing/gpus/dlss-4-5-wins-big-48-percent-of-gamers-pick-nvidia-over-amd-fsr-and-native-in-blind-gaming-test">DLSS 4.5 wins big: 48% of gamers pick Nvidia over AMD FSR (and native) in blind gaming test</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Gaming PCs could become unaffordable by 2028 — and Nvidia's 'fantastic' AI boom is pricing us out ]]></title>
                                                                                                <dc:content><![CDATA[ <p>I’ve been covering Apple’s <a href="https://www.tomsguide.com/computing/macbooks/macbook-neo-is-official-for-usd599-specs-colors-and-latest-news">MacBook Neo</a> all week, and it’s great being able to tell folks about such an affordable laptop. Unfortunately, I can’t do the same with PC gaming. Thanks to the ongoing RAM crisis, it seems the days of the budget gaming rig are officially numbered. While Apple has found a way to bring costs down (at least with the Neo), the world of PC gaming is heading in the opposite direction.</p><p>If current trends continue, PC gaming enthusiasts who love building, tweaking, and upgrading their kits could be priced out in the next couple of years. We’re not just talking about a slight bump in inflation — we could see a future where an “entry-level” gaming PC starts at $2,000 or more.</p><p>Here’s why PC gaming could become an even more exclusive club.</p><h2 id="ramageddon-strikes-again">RAMageddon strikes again</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6820px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="4YibtQAHoKKwDCm6y8NNaM" name="RAM Memory credit Shutterstock-2 (1)" alt="RAM stick on US dollars" src="https://cdn.mos.cms.futurecdn.net/4YibtQAHoKKwDCm6y8NNaM-1920-80.jpg" mos="" align="middle" fullscreen="" width="6820" height="3836" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>As <a href="https://www.gartner.com/en/newsroom/press-releases/2026-02-26-gartner-says-surging-memory-costs-will-reduce-global-pc-and-smartphone-shipments-in-2026" target="_blank">Gartner reports</a>, surging memory costs are already choking the market. The firm predicts that skyrocketing DRAM and NAND flash prices will lead to a significant reduction in global PC and smartphone shipments throughout 2026.</p><p>This is a double-whammy for PC gamers. Not only do we need memory for our system RAM, but we also need it for our GPUs and high-end NVMe drives. With the cost of raw materials rising, manufacturers pass those increases directly to consumers.</p><p>We’re already seeing "budget" GPUs ship with less VRAM just to keep prices somewhat stable, and Gartner’s data suggests that even those compromised cards are about to get a lot more expensive.</p><h2 id="scarcity-is-fantastic">Scarcity is “fantastic”</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="qwfATbpSNufWiNDRegMPdj" name="RTX 50 Jensen" alt="Jensen Huang holding an Nvidia RTX GPU." src="https://cdn.mos.cms.futurecdn.net/qwfATbpSNufWiNDRegMPdj-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Getty Images)</span></figcaption></figure><p>Don’t expect any of the big manufacturers to come in and save the day. Speaking at a recent conference, Nvidia CEO Jensen Huang said the current supply scarcity is “fantastic” for the company (via <a href="https://videocardz.com/newz/nvidia-ceo-jensen-huang-says-supply-scarcity-is-fantastic-for-the-company" target="_blank">VideoCardz</a>). While that’s certainly true from a corporate perspective, it’s not good for the ordinary gamer.</p><p>Huang was discussing this in the context of AI infrastructure rather than gaming products specifically, but it’s still disheartening to hear. It could be viewed as confirmation that high prices aren’t a temporary fluke and may reflect a business model that prioritizes high-margin enterprise and AI markets over consumers. You need only look at <a href="https://www.tomsguide.com/computing/hardware/ram-crisis-continues-to-worsen-micron-kills-crucial-consumer-memory-in-favor-of-ai-data-centers">Micron’s decision to leave the consumer RAM market</a> as an example.</p><p>While this benefits Nvidia's enterprise focus, it highlights the growing tension between AI demands and consumer accessibility.</p><h2 id="a-bleak-future-for-pc-gaming">A bleak future for PC gaming</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1021px;"><p class="vanilla-image-block" style="padding-top:69.44%;"><img id="TvpnEuRUomYrwLA2hPXivb" name="photo-1605876516612-a04e21021ead.jpg" alt="Cooling system inside PC" src="https://cdn.mos.cms.futurecdn.net/TvpnEuRUomYrwLA2hPXivb-1920-80.jpg" mos="" align="middle" fullscreen="" width="1021" height="709" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Unsplash)</span></figcaption></figure><p>Based on the Gartner report, <a href="https://metro.co.uk/2026/03/05/gaming-pcs-will-expensive-ordinary-people-2028-predicts-report-27244889/" target="_blank">Metro UK</a> has a grim prediction: by 2028, gaming PCs will be “too expensive for ordinary people.” Based on Gartner's report and the reality on the ground, I agree with this assessment.</p><p>Metro UK believes we’re moving toward a bifurcated market. On one side, you’ll have low-power devices and consoles for the masses. On the other hand, you’ll have the enthusiast PC market, where the barrier to entry could rise from $800 to nearly $2,500. </p><p>By 2028, the components required to run the latest AAA titles at 4K, let alone 8K, will be so specialized and in such high demand (thanks to the AI boom) that the average consumer may simply be priced out of the DIY market entirely.</p><p>While there has always been a divide between low-end and high-end gaming in the PC world, that gap could grow even wider. And that’s the best-case scenario. The way things are going, budget or entry-level rigs and components might just cease to exist.</p><h2 id="outlook-4">Outlook</h2><p>If $2,000 becomes the floor for a functional gaming PC, where does that leave the average gamer?</p><p>The only choices might be the upcoming <a href="https://www.tomsguide.com/gaming/playstation/ps6-leaks-and-rumors">PS6</a> or <a href="https://www.tomsguide.com/gaming/xbox/next-xbox-will-play-your-xbox-and-pc-games-new-ceo-promises">Xbox Project Helix</a>. It’s also possible that those who prefer the PC experience might gravitate toward cloud gaming services like <a href="https://www.tomsguide.com/news/nvidia-geforce-now-games-pricing-connectivity-and-everything-you-need-to-know">GeForce Now</a>. While I’m not a fan of subscription services, paying a monthly fee could be more affordable than shelling out thousands for a gaming rig.</p><p><a href="https://www.tomsguide.com/computing/gaming-desktops/how-to-build-a-pc">Building your own PC</a> has always been one of the most rewarding (and empowering) parts of being a PC gamer. However, with Gartner’s memory warnings, Huang’s statement, and 2028 price predictions, it seems that era may be winding down. I don’t see PC gaming going away, but it’s rapidly shifting from a relatively mainstream hobby to a luxury pursuit.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-X1AbwX"></div>                            </div>                            <script src="https://kwizly.com/embed/X1AbwX.js" async></script><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/the-ram-crisis-is-so-much-bigger-than-pcs-heres-the-rest-of-the-products-caught-in-the-crossfire">The RAM crisis is out of control: Here's the most alarming tech products affected</a></li><li><a href="https://www.tomsguide.com/computing/hardware/ddr5-ram-kit-deals-that-beat-the-price-crisis">RAM prices are rough right now, but I found 5 DDR5 kits that beat the crisis</a></li><li><a href="https://www.tomsguide.com/computing/someone-asked-me-today-how-long-the-dram-supply-shortage-would-last-i-may-need-to-revise-that-answer-analyst-predicts-bleak-future-for-ram-crisis">Analyst predicts bleak future for RAM crisis</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/gaming-pcs-could-become-unaffordable-by-2028-and-nvidias-fantastic-ai-boom-is-pricing-us-out</link>
                                                                            <description>
                            <![CDATA[ Rising RAM prices are killing budget PC gaming. A new report predicts entry-level rigs at $2,000+ by 2028, potentially pushing gamers to consoles or cloud. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">twihH3vqscygG7NEjBLw9K</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/7xxNVgupdEREdaWThdaFt3-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 06 Mar 2026 18:11:14 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Computing]]></category>
                                                                                                <author><![CDATA[ tony.polanco@futurenet.com (Tony Polanco) ]]></author>                    <dc:creator><![CDATA[ Tony Polanco ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/atzRNqFt5wYgEUPBDahWsD-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/7xxNVgupdEREdaWThdaFt3-1920-80.jpg">
                                                            <media:credit><![CDATA[Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Gaming PC build images]]></media:description>                                                            <media:text><![CDATA[Gaming PC build images]]></media:text>
                                <media:title type="plain"><![CDATA[Gaming PC build images]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/7xxNVgupdEREdaWThdaFt3-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I’ve been covering Apple’s <a href="https://www.tomsguide.com/computing/macbooks/macbook-neo-is-official-for-usd599-specs-colors-and-latest-news">MacBook Neo</a> all week, and it’s great being able to tell folks about such an affordable laptop. Unfortunately, I can’t do the same with PC gaming. Thanks to the ongoing RAM crisis, it seems the days of the budget gaming rig are officially numbered. While Apple has found a way to bring costs down (at least with the Neo), the world of PC gaming is heading in the opposite direction.</p><p>If current trends continue, PC gaming enthusiasts who love building, tweaking, and upgrading their kits could be priced out in the next couple of years. We’re not just talking about a slight bump in inflation — we could see a future where an “entry-level” gaming PC starts at $2,000 or more.</p><p>Here’s why PC gaming could become an even more exclusive club.</p><h2 id="ramageddon-strikes-again">RAMageddon strikes again</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6820px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="4YibtQAHoKKwDCm6y8NNaM" name="RAM Memory credit Shutterstock-2 (1)" alt="RAM stick on US dollars" src="https://cdn.mos.cms.futurecdn.net/4YibtQAHoKKwDCm6y8NNaM-1920-80.jpg" mos="" align="middle" fullscreen="" width="6820" height="3836" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>As <a href="https://www.gartner.com/en/newsroom/press-releases/2026-02-26-gartner-says-surging-memory-costs-will-reduce-global-pc-and-smartphone-shipments-in-2026" target="_blank">Gartner reports</a>, surging memory costs are already choking the market. The firm predicts that skyrocketing DRAM and NAND flash prices will lead to a significant reduction in global PC and smartphone shipments throughout 2026.</p><p>This is a double-whammy for PC gamers. Not only do we need memory for our system RAM, but we also need it for our GPUs and high-end NVMe drives. With the cost of raw materials rising, manufacturers pass those increases directly to consumers.</p><p>We’re already seeing "budget" GPUs ship with less VRAM just to keep prices somewhat stable, and Gartner’s data suggests that even those compromised cards are about to get a lot more expensive.</p><h2 id="scarcity-is-fantastic">Scarcity is “fantastic”</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="qwfATbpSNufWiNDRegMPdj" name="RTX 50 Jensen" alt="Jensen Huang holding an Nvidia RTX GPU." src="https://cdn.mos.cms.futurecdn.net/qwfATbpSNufWiNDRegMPdj-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Getty Images)</span></figcaption></figure><p>Don’t expect any of the big manufacturers to come in and save the day. Speaking at a recent conference, Nvidia CEO Jensen Huang said the current supply scarcity is “fantastic” for the company (via <a href="https://videocardz.com/newz/nvidia-ceo-jensen-huang-says-supply-scarcity-is-fantastic-for-the-company" target="_blank">VideoCardz</a>). While that’s certainly true from a corporate perspective, it’s not good for the ordinary gamer.</p><p>Huang was discussing this in the context of AI infrastructure rather than gaming products specifically, but it’s still disheartening to hear. It could be viewed as confirmation that high prices aren’t a temporary fluke and may reflect a business model that prioritizes high-margin enterprise and AI markets over consumers. You need only look at <a href="https://www.tomsguide.com/computing/hardware/ram-crisis-continues-to-worsen-micron-kills-crucial-consumer-memory-in-favor-of-ai-data-centers">Micron’s decision to leave the consumer RAM market</a> as an example.</p><p>While this benefits Nvidia's enterprise focus, it highlights the growing tension between AI demands and consumer accessibility.</p><h2 id="a-bleak-future-for-pc-gaming">A bleak future for PC gaming</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1021px;"><p class="vanilla-image-block" style="padding-top:69.44%;"><img id="TvpnEuRUomYrwLA2hPXivb" name="photo-1605876516612-a04e21021ead.jpg" alt="Cooling system inside PC" src="https://cdn.mos.cms.futurecdn.net/TvpnEuRUomYrwLA2hPXivb-1920-80.jpg" mos="" align="middle" fullscreen="" width="1021" height="709" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Unsplash)</span></figcaption></figure><p>Based on the Gartner report, <a href="https://metro.co.uk/2026/03/05/gaming-pcs-will-expensive-ordinary-people-2028-predicts-report-27244889/" target="_blank">Metro UK</a> has a grim prediction: by 2028, gaming PCs will be “too expensive for ordinary people.” Based on Gartner's report and the reality on the ground, I agree with this assessment.</p><p>Metro UK believes we’re moving toward a bifurcated market. On one side, you’ll have low-power devices and consoles for the masses. On the other hand, you’ll have the enthusiast PC market, where the barrier to entry could rise from $800 to nearly $2,500. </p><p>By 2028, the components required to run the latest AAA titles at 4K, let alone 8K, will be so specialized and in such high demand (thanks to the AI boom) that the average consumer may simply be priced out of the DIY market entirely.</p><p>While there has always been a divide between low-end and high-end gaming in the PC world, that gap could grow even wider. And that’s the best-case scenario. The way things are going, budget or entry-level rigs and components might just cease to exist.</p><h2 id="outlook-4">Outlook</h2><p>If $2,000 becomes the floor for a functional gaming PC, where does that leave the average gamer?</p><p>The only choices might be the upcoming <a href="https://www.tomsguide.com/gaming/playstation/ps6-leaks-and-rumors">PS6</a> or <a href="https://www.tomsguide.com/gaming/xbox/next-xbox-will-play-your-xbox-and-pc-games-new-ceo-promises">Xbox Project Helix</a>. It’s also possible that those who prefer the PC experience might gravitate toward cloud gaming services like <a href="https://www.tomsguide.com/news/nvidia-geforce-now-games-pricing-connectivity-and-everything-you-need-to-know">GeForce Now</a>. While I’m not a fan of subscription services, paying a monthly fee could be more affordable than shelling out thousands for a gaming rig.</p><p><a href="https://www.tomsguide.com/computing/gaming-desktops/how-to-build-a-pc">Building your own PC</a> has always been one of the most rewarding (and empowering) parts of being a PC gamer. However, with Gartner’s memory warnings, Huang’s statement, and 2028 price predictions, it seems that era may be winding down. I don’t see PC gaming going away, but it’s rapidly shifting from a relatively mainstream hobby to a luxury pursuit.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-X1AbwX"></div>                            </div>                            <script src="https://kwizly.com/embed/X1AbwX.js" async></script><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/the-ram-crisis-is-so-much-bigger-than-pcs-heres-the-rest-of-the-products-caught-in-the-crossfire">The RAM crisis is out of control: Here's the most alarming tech products affected</a></li><li><a href="https://www.tomsguide.com/computing/hardware/ddr5-ram-kit-deals-that-beat-the-price-crisis">RAM prices are rough right now, but I found 5 DDR5 kits that beat the crisis</a></li><li><a href="https://www.tomsguide.com/computing/someone-asked-me-today-how-long-the-dram-supply-shortage-would-last-i-may-need-to-revise-that-answer-analyst-predicts-bleak-future-for-ram-crisis">Analyst predicts bleak future for RAM crisis</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
            </channel>
</rss>