<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
     xmlns:content="http://purl.org/rss/1.0/modules/content/"
     xmlns:dc="http://purl.org/dc/elements/1.1/"
     xmlns:dcterms="http://purl.org/dc/terms/"
     xmlns:media="http://search.yahoo.com/mrss/"
     xmlns:atom="http://www.w3.org/2005/Atom"
     xmlns:cf="https://www.futureplc.com/rss/content-flags"
>
    <channel>
                    <atom:link href="https://www.tomsguide.com/feeds/tag/nvidia" rel="self" type="application/rss+xml" />
                            <title><![CDATA[ Latest from Tom's Guide in Nvidia ]]></title>
                <link>https://www.tomsguide.com/tag/nvidia</link>
        <description><![CDATA[ All the latest nvidia content from the Tom's Guide team ]]></description>
                                    <lastBuildDate>Thu, 22 Oct 2026 10:30:00 +0000</lastBuildDate>
                            <language>en</language>
                                <item>
                                                            <title><![CDATA[ Ditch the data center: I fired my cloud chatbot and built a free local AI agent to run on my PC — and you can too ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Right now, you are probably paying a monthly subscription to rent a sliver of a server farm in middle America. You ask a cloud chatbot to write an email, it pings a data center and you get an answer.</p><p>It’s fast, magical and a <strong>massive trap.</strong></p><p>We are handing our personal data, our workflows and our wallets over to massive tech conglomerates, and for what? To prop up a cloud AI bubble that looks ripe for bursting, encourage more aggressive build-outs of data centers nobody wants, and feed an ever-learning black box with more and more of our sensitive information.</p><p>But there’s a different way. It’s a way I’ve always believed in. <strong>The future of AI is local.</strong></p><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="smbPnamxm3PGHaCLBJQsR9" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/smbPnamxm3PGHaCLBJQsR9-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>After spending the past two weeks stress-testing the new <a href="https://www.tomsguide.com/computing/cpus/ive-been-living-with-nvidias-rtx-spark-for-a-week-on-surface-laptop-ultra-its-not-a-macbook-pro-killer-but-something-much-weirder-and-wildly-powerful">Nvidia RTX Spark laptops</a> — and with <a href="https://www.tomsguide.com/computing/macbooks/macbook-pro-oled-all-the-expected-features">Apple’s M6 MacBook Pro</a> rumored to arrive next week with vast AI acceleration — the hardware has finally crossed the threshold.</p><p>You no longer need the cloud. It’s time to build your own personal, local moat. But to do so the <em>right </em>way is different to what you’re used to. And I’m going to start from the beginning and break some things down for you.</p><h2 class="article-body__section" id="section-what-is-an-ai-agent"><span>What is an AI agent?</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="dKVDgYKCQMbbRLyrUpNXQU" name="shutterstock_2615992757-2" alt="ai agents" src="https://cdn.mos.cms.futurecdn.net/dKVDgYKCQMbbRLyrUpNXQU-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: Shutterstock)</span></figcaption></figure><p>A standard chatbot waits for you to ask a question. An <em>agentic </em>AI has autonomy.</p><p>You give it a goal, a set of tools (like access to your file system or a web browser) and permission to execute tasks on its own using a ReAct (Reason + Act) loop. It thinks, acts, checks its work, and continues until the job is done.</p><p>Now, this is all fair and good, and you see cloud options available like <a href="https://www.tomsguide.com/ai/i-used-meta-muse-as-an-ai-house-manager-for-my-family-of-five-heres-what-happened">Meta Muse</a>. But I’ll be real, the difference in control and privacy between a zippy cloud agent and a local agent makes the time you’ll wait for your on-device one to get things done well worth the wait.</p><p><strong>P.S.</strong> you can make time for other fun things while it works away, but I’ll get to that.</p><h2 class="article-body__section" id="section-how-to-set-it-up-the-hermes-agent-method"><span>How to set it up (the Hermes Agent method)</span></h2><p>Now I know there’s going to be several enthusiasts out there who may have a debate about which is best between the likes of <a href="https://www.tomsguide.com/computing/cpus/ive-been-living-with-nvidias-rtx-spark-for-a-week-on-surface-laptop-ultra-its-not-a-macbook-pro-killer-but-something-much-weirder-and-wildly-powerful">Hermes Agent</a>, <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> or <a href="https://www.tomsguide.com/ai/i-tested-local-ai-vs-chatgpt-side-by-side-here-are-the-7-biggest-differences">LM Studio Bionic</a>. Ultimately, this is personal taste and (in my opinion) the easiest to transition to from using a cloud AI like my Gemini Pro subscription.</p><section class="howto-block">                    <h3>Download Hermes Agent</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/gMAtfsupYFiQjuJMfwCWPN.jpg"                                        alt="Hermes Agent"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/gMAtfsupYFiQjuJMfwCWPN.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Future)</div></figure>                    <p><p>It’s a clean, open-source local installation that runs on Windows and Mac. Just <a href="https://www.hermes-agent.org/" target="_blank">download the package and install.</a></p></p>                </section><section class="howto-block">                    <h3>Set it up</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/oaktGZ8yyAFCDeTQG7fFPN.jpg"                                        alt="Hermes Agent"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/oaktGZ8yyAFCDeTQG7fFPN.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Future)</div></figure>                    <p><p>Hermes Agent has a simple setup process where it’ll ask your name, what app connectors you want to download (the things it can see and interact with), and a color for your app’s overall theme.</p></p>                </section><section class="howto-block">                    <h3>Pick your brain</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/WKF5nQXH5HLcUDZwxM23yM.jpg"                                        alt="Hermes Agent"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/WKF5nQXH5HLcUDZwxM23yM.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Future)</div></figure>                    <p><p>Go into settings > provider and select “local.” From there, head to model and download a local one to act as the agent’s brain.</p></p>                </section><p>Your choice here will depend entirely on your laptop’s memory:</p><ul><li><strong>8-16GB RAM: </strong>Stick to smaller 7-8B parameter models like<strong> Llama 3.1 8B </strong>(as of the time of writing this). They are lightweight and fast for quick tasks, but prone to getting confused if you throw anything complex at it.</li><li><strong>32-64GB RAM: </strong>The sweet spot. You can run 30B-70B parameter models like the<strong> Qwen 3.8 27B </strong>option I’ve been running on this Asus ProArt P14 I’m testing.</li><li><strong>128GB+ RAM: </strong>The monster tier. Chances are you already know full well what you aim to do with AI with this much memory. But to catch everyone else up, you can run massive, enterprise-grade models like<strong> Qwen 3.8 Flash-Next </strong>— that can rival GPT-4, completely offline.</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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="JJNziVZ2JqeXM5WcnKUYNN" name="Hermes Agent" alt="Hermes Agent" src="https://cdn.mos.cms.futurecdn.net/JJNziVZ2JqeXM5WcnKUYNN-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>Now this is the world of open source, so there’s <em>so </em>many to choose from. A great source of reference is going to be <a href="http://modelfit.io" target="_blank">modelfit.io</a>. I used it when I got properly started!</p><h3 class="article-body__section" id="section-how-to-shrink-a-brain-quantization"><span>How to shrink a brain (quantization)</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="nkmr599UYtxFv3rRMmYQK9" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/nkmr599UYtxFv3rRMmYQK9-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>Now, there is an extra wrinkle to this that you need to pay attention to. There are some models that sound like massive, multi-billion parameter options that usually require a refrigerator-sized server rack. How does it fit on your laptop?</p><p>The secret is a process called <strong>quantization.</strong></p><p>Think of quantization like shrinking down a massive, uncompressed RAW photograph into a JPEG. The AI engineers take the incredibly precise, memory-hogging mathematical weights of a model and round them down. You lose a microscopic fraction of absolute precision, but the file size shrinks drastically.</p><p>For the ProArt P14, I am downloading a model called Qwen3.8-27b-gguf Q3_K_XL. To translate that alphabet soup: it’s a brilliant 27-billion parameter model that has been quantized (that’s the Q3 part) so perfectly that it fits entirely within the 32GB of RAM.</p><p><strong>Pro tip: </strong>When you go to download your models, look for those “GGUF” and “Q” tags — they are the cheat codes that let massive AI brains run on consumer hardware.</p><h2 class="article-body__section" id="section-cloud-vs-local-the-coffee-break-rule"><span>Cloud vs. Local: the coffee break rule</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="agfTw54oiM8zjbm6XiaCPN" name="Hermes Agent" alt="Hermes Agent" src="https://cdn.mos.cms.futurecdn.net/agfTw54oiM8zjbm6XiaCPN-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>There are two big differences I found between using cloud and local AI. The first is speed. </p><p>Cloud AI is instantaneous — throwing vast data center computing power at your prompt to give you a millisecond response. Local AI runs on your laptop’s silicon, so naturally it’s slower.</p><p>If I ask my local agent to parse a 50-page PDF and cross-reference it with my calendar, it might take three to four minutes, whereas on cloud that’d happen in 30-60 seconds. </p><p>It’s slower for sure, but a trade-off I’d absolutely make for the reasons I spoke about up top: privacy, and the ability to build my own personal brain without spending a penny for the tokens I burn.</p><p>And when it gets more complex — like me tasking my team of agents to go through my emails and calendar, take note of the previous meetings I had, understand the context of the wider world of tech news, track any analytical trends in the site’s traffic and craft my day of work, it can take a little bit of time.</p><p>The trick is to treat it like a real assistant: give it the task that would’ve normally taken you a while to do yourself, and spend that time doing something else. For me, it’s that calm breakfast in the morning or a walk around the park. And by the time you sit back down at your desk, the work is done.</p><h3 class="article-body__section" id="section-the-4-rules-of-parenting-a-local-ai"><span>The 4 rules of “parenting” a local AI</span></h3><p>Beyond that speed difference, you have to completely rewire how you talk to your computer. Cloud AIs are designed to be frictionless, constantly updated by engineers behind the scenes. Local AI is like a raw blank slate. It’s only as useful as what you give it, so follow these four rules:</p><h2 id="you-are-the-sole-provider-of-its-data-diet">You are the sole provider of its data diet</h2><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="dDfGksj4sSxc4oD3k5Ffu8" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/dDfGksj4sSxc4oD3k5Ffu8-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>Cloud AI is constantly scraping the internet and updating its worldview. Your local AI is completely isolated. It only knows what you feed it. </p><p>If you want it to understand how you format invoices, or the specific tone you use in emails, you have to explicitly provide those documents. It isn’t going to magically know you from the get-go.</p><h2 id="make-your-prompts-hyper-specific">Make your prompts hyper-specific</h2><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="CMvweX3ByQqQGuBRKXQ6PN" name="Hermes Agent" alt="Hermes Agent" src="https://cdn.mos.cms.futurecdn.net/CMvweX3ByQqQGuBRKXQ6PN-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>Since cloud AIs have billions (maybe trillions) of data points of context, they can read between the lines of those vague, half-baked questions you have. </p><p>Local AI is intensely literal. If you give it sparse instructions, it will give you a sparse, unhelpful output. Instead of “organize my downloads,” think “organize my downloads by file type and rename them to be more contextual with what they are.”</p><h2 id="the-carrot-not-the-stick-reinforcement">The carrot, not the stick (reinforcement)</h2><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="xfNXrR3xfBFpSjYWU3w6AD" name="Hermes Agent" alt="Hermes Agent" src="https://cdn.mos.cms.futurecdn.net/xfNXrR3xfBFpSjYWU3w6AD-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>To highlight, I don’t mean the “reinforcement learning” AI engineers are doing across the globe on frontier AI, I mean like I learned from teaching my nephew new skills. Something more human. You have to tell local AI to remember the victory. </p><p>If it nails that spreadsheet format exactly as you wanted it, reply with: “This is perfect. Save the way you did this into your memory.” Give it a treat so it repeats the behavior.</p><p>BTW, you don't need to give the agents names like I did. It just helps me organize them.</p><h2 id="build-its-mind-map-in-obsidian">Build its mind map in Obsidian</h2><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="YKbzTpLjz827z2kgb4NsfM" name="Hermes Agent" alt="Hermes Agent" src="https://cdn.mos.cms.futurecdn.net/YKbzTpLjz827z2kgb4NsfM-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>An AI without a long-term memory is just a calculator. To make it genuinely useful, give it a digital filing cabinet. I use <a href="https://obsidian.md/" target="_blank">Obsidian</a>, a free markdown note-taking app that saves files locally to your storage. </p><p>Just point your Hermes agent at Obsidian with a prompt like “can you take everything you’ve learned about me over our past interactions and put it into an Obsidian vault?” And from there, you’ll see the synapses start to form and connect.</p><h2 class="article-body__section" id="section-the-economics-of-owning-your-own-brain"><span>The economics of owning your own brain</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="yDsc4To3fThmCezy6SBUL8" name="Nvidia-2" alt="Nvidia RTX Spark laptop" src="https://cdn.mos.cms.futurecdn.net/yDsc4To3fThmCezy6SBUL8-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><p>Now, before I sign off on part one, let’s address the elephant in the room: hardware is expensive. It’s actually one of the reasons I believe the future of AI is local, because these damn cloud AI infrastructures have jacked up the price of memory!</p><p>But you have to look at the math of the cloud tax. Right now, you’re probably paying $20 a month for a mid-premium tier service, and if you try to do anything more adventurous, you’re met with limitations.</p><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="auFZPRTucNhgQGbSsg5SYg" name="Nvidia RTX Spark for a week" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/auFZPRTucNhgQGbSsg5SYg-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><p>That’s hundreds of dollars a year in digital rent just to borrow someone else’s server. When you run local AI, the ongoing cost is <strong>zero. </strong>That means no limitations on what you can do, no restrictions on the amount of images and videos you can generate in Comfy UI. You buy the hardware once, and the open-source software is free.</p><p>It’s the difference between renting a cramped apartment where your landlord reads your mail, versus owning your own house. Over a two-to-three-year laptop upgrade cycle, this machine pays for itself in canceled subscriptions — provided you know how to use it.</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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="fzLwFVKeCvJejaXimCGG3G" name="Hermes Agent" alt="Hermes Agent" src="https://cdn.mos.cms.futurecdn.net/fzLwFVKeCvJejaXimCGG3G-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>And that’s what I’m here to do. Over the next few weeks, I’ll give you a look into my local AI workspace, introduce you to my first agent “Jeeves” and the rest of my team, and show you how to extract the most value out of it really easily.</p><p>It’s going to be a journey, and I can’t wait to see what you come up with. But any questions whatsoever, throw them in the comments.</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/would-you-give-up-chatgpt-to-stop-ai-data-centers-reddits-answer-was-brutal"><strong>Would you give up ChatGPT to stop AI data centers? Reddit's answer was brutal</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/ai/chatbots-and-agents-like-muse-are-getting-a-face-but-does-that-make-us-trust-them-more-heres-what-this-ai-expert-had-to-say"><strong>Chatbots and agents like Muse are getting a face — but does that make us trust them more? Here's what this AI expert had to say</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/ai/joseph-gordon-levitt-warns-the-real-ai-threat-isnt-killer-robots-its-the-companies-building-them"><strong>Joseph Gordon-Levitt warns the real AI threat isn’t killer robots — it’s the companies building them</strong></a><strong></strong></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/ai/ditch-the-data-center-i-fired-my-cloud-chatbot-and-built-a-free-local-ai-agent-to-run-on-my-pc-and-you-can-too</link>
                                                                            <description>
                            <![CDATA[ Ditch the cloud subscription tax. Here is how I fired my cloud chatbot, built a free local AI agent on my PC with Hermes, and took back my data privacy. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Bi44wEkAihvUhRFFUb7ZTn</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/doqhdCzqgVbj6K7mL5m6L8-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 22 Oct 2026 10:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[AI]]></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/doqhdCzqgVbj6K7mL5m6L8-1920-80.jpg">
                                                            <media:credit><![CDATA[Tom&amp;#39;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Nvidia RTX Spark laptop]]></media:description>                                                            <media:text><![CDATA[Nvidia RTX Spark laptop]]></media:text>
                                <media:title type="plain"><![CDATA[Nvidia RTX Spark laptop]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/doqhdCzqgVbj6K7mL5m6L8-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Right now, you are probably paying a monthly subscription to rent a sliver of a server farm in middle America. You ask a cloud chatbot to write an email, it pings a data center and you get an answer.</p><p>It’s fast, magical and a <strong>massive trap.</strong></p><p>We are handing our personal data, our workflows and our wallets over to massive tech conglomerates, and for what? To prop up a cloud AI bubble that looks ripe for bursting, encourage more aggressive build-outs of data centers nobody wants, and feed an ever-learning black box with more and more of our sensitive information.</p><p>But there’s a different way. It’s a way I’ve always believed in. <strong>The future of AI is local.</strong></p><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="smbPnamxm3PGHaCLBJQsR9" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/smbPnamxm3PGHaCLBJQsR9-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>After spending the past two weeks stress-testing the new <a href="https://www.tomsguide.com/computing/cpus/ive-been-living-with-nvidias-rtx-spark-for-a-week-on-surface-laptop-ultra-its-not-a-macbook-pro-killer-but-something-much-weirder-and-wildly-powerful">Nvidia RTX Spark laptops</a> — and with <a href="https://www.tomsguide.com/computing/macbooks/macbook-pro-oled-all-the-expected-features">Apple’s M6 MacBook Pro</a> rumored to arrive next week with vast AI acceleration — the hardware has finally crossed the threshold.</p><p>You no longer need the cloud. It’s time to build your own personal, local moat. But to do so the <em>right </em>way is different to what you’re used to. And I’m going to start from the beginning and break some things down for you.</p><h2 class="article-body__section" id="section-what-is-an-ai-agent"><span>What is an AI agent?</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="dKVDgYKCQMbbRLyrUpNXQU" name="shutterstock_2615992757-2" alt="ai agents" src="https://cdn.mos.cms.futurecdn.net/dKVDgYKCQMbbRLyrUpNXQU-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: Shutterstock)</span></figcaption></figure><p>A standard chatbot waits for you to ask a question. An <em>agentic </em>AI has autonomy.</p><p>You give it a goal, a set of tools (like access to your file system or a web browser) and permission to execute tasks on its own using a ReAct (Reason + Act) loop. It thinks, acts, checks its work, and continues until the job is done.</p><p>Now, this is all fair and good, and you see cloud options available like <a href="https://www.tomsguide.com/ai/i-used-meta-muse-as-an-ai-house-manager-for-my-family-of-five-heres-what-happened">Meta Muse</a>. But I’ll be real, the difference in control and privacy between a zippy cloud agent and a local agent makes the time you’ll wait for your on-device one to get things done well worth the wait.</p><p><strong>P.S.</strong> you can make time for other fun things while it works away, but I’ll get to that.</p><h2 class="article-body__section" id="section-how-to-set-it-up-the-hermes-agent-method"><span>How to set it up (the Hermes Agent method)</span></h2><p>Now I know there’s going to be several enthusiasts out there who may have a debate about which is best between the likes of <a href="https://www.tomsguide.com/computing/cpus/ive-been-living-with-nvidias-rtx-spark-for-a-week-on-surface-laptop-ultra-its-not-a-macbook-pro-killer-but-something-much-weirder-and-wildly-powerful">Hermes Agent</a>, <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> or <a href="https://www.tomsguide.com/ai/i-tested-local-ai-vs-chatgpt-side-by-side-here-are-the-7-biggest-differences">LM Studio Bionic</a>. Ultimately, this is personal taste and (in my opinion) the easiest to transition to from using a cloud AI like my Gemini Pro subscription.</p><section class="howto-block">                    <h3>Download Hermes Agent</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/gMAtfsupYFiQjuJMfwCWPN.jpg"                                        alt="Hermes Agent"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/gMAtfsupYFiQjuJMfwCWPN.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Future)</div></figure>                    <p><p>It’s a clean, open-source local installation that runs on Windows and Mac. Just <a href="https://www.hermes-agent.org/" target="_blank">download the package and install.</a></p></p>                </section><section class="howto-block">                    <h3>Set it up</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/oaktGZ8yyAFCDeTQG7fFPN.jpg"                                        alt="Hermes Agent"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/oaktGZ8yyAFCDeTQG7fFPN.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Future)</div></figure>                    <p><p>Hermes Agent has a simple setup process where it’ll ask your name, what app connectors you want to download (the things it can see and interact with), and a color for your app’s overall theme.</p></p>                </section><section class="howto-block">                    <h3>Pick your brain</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/WKF5nQXH5HLcUDZwxM23yM.jpg"                                        alt="Hermes Agent"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/WKF5nQXH5HLcUDZwxM23yM.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Future)</div></figure>                    <p><p>Go into settings > provider and select “local.” From there, head to model and download a local one to act as the agent’s brain.</p></p>                </section><p>Your choice here will depend entirely on your laptop’s memory:</p><ul><li><strong>8-16GB RAM: </strong>Stick to smaller 7-8B parameter models like<strong> Llama 3.1 8B </strong>(as of the time of writing this). They are lightweight and fast for quick tasks, but prone to getting confused if you throw anything complex at it.</li><li><strong>32-64GB RAM: </strong>The sweet spot. You can run 30B-70B parameter models like the<strong> Qwen 3.8 27B </strong>option I’ve been running on this Asus ProArt P14 I’m testing.</li><li><strong>128GB+ RAM: </strong>The monster tier. Chances are you already know full well what you aim to do with AI with this much memory. But to catch everyone else up, you can run massive, enterprise-grade models like<strong> Qwen 3.8 Flash-Next </strong>— that can rival GPT-4, completely offline.</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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="JJNziVZ2JqeXM5WcnKUYNN" name="Hermes Agent" alt="Hermes Agent" src="https://cdn.mos.cms.futurecdn.net/JJNziVZ2JqeXM5WcnKUYNN-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>Now this is the world of open source, so there’s <em>so </em>many to choose from. A great source of reference is going to be <a href="http://modelfit.io" target="_blank">modelfit.io</a>. I used it when I got properly started!</p><h3 class="article-body__section" id="section-how-to-shrink-a-brain-quantization"><span>How to shrink a brain (quantization)</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="nkmr599UYtxFv3rRMmYQK9" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/nkmr599UYtxFv3rRMmYQK9-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>Now, there is an extra wrinkle to this that you need to pay attention to. There are some models that sound like massive, multi-billion parameter options that usually require a refrigerator-sized server rack. How does it fit on your laptop?</p><p>The secret is a process called <strong>quantization.</strong></p><p>Think of quantization like shrinking down a massive, uncompressed RAW photograph into a JPEG. The AI engineers take the incredibly precise, memory-hogging mathematical weights of a model and round them down. You lose a microscopic fraction of absolute precision, but the file size shrinks drastically.</p><p>For the ProArt P14, I am downloading a model called Qwen3.8-27b-gguf Q3_K_XL. To translate that alphabet soup: it’s a brilliant 27-billion parameter model that has been quantized (that’s the Q3 part) so perfectly that it fits entirely within the 32GB of RAM.</p><p><strong>Pro tip: </strong>When you go to download your models, look for those “GGUF” and “Q” tags — they are the cheat codes that let massive AI brains run on consumer hardware.</p><h2 class="article-body__section" id="section-cloud-vs-local-the-coffee-break-rule"><span>Cloud vs. Local: the coffee break rule</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="agfTw54oiM8zjbm6XiaCPN" name="Hermes Agent" alt="Hermes Agent" src="https://cdn.mos.cms.futurecdn.net/agfTw54oiM8zjbm6XiaCPN-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>There are two big differences I found between using cloud and local AI. The first is speed. </p><p>Cloud AI is instantaneous — throwing vast data center computing power at your prompt to give you a millisecond response. Local AI runs on your laptop’s silicon, so naturally it’s slower.</p><p>If I ask my local agent to parse a 50-page PDF and cross-reference it with my calendar, it might take three to four minutes, whereas on cloud that’d happen in 30-60 seconds. </p><p>It’s slower for sure, but a trade-off I’d absolutely make for the reasons I spoke about up top: privacy, and the ability to build my own personal brain without spending a penny for the tokens I burn.</p><p>And when it gets more complex — like me tasking my team of agents to go through my emails and calendar, take note of the previous meetings I had, understand the context of the wider world of tech news, track any analytical trends in the site’s traffic and craft my day of work, it can take a little bit of time.</p><p>The trick is to treat it like a real assistant: give it the task that would’ve normally taken you a while to do yourself, and spend that time doing something else. For me, it’s that calm breakfast in the morning or a walk around the park. And by the time you sit back down at your desk, the work is done.</p><h3 class="article-body__section" id="section-the-4-rules-of-parenting-a-local-ai"><span>The 4 rules of “parenting” a local AI</span></h3><p>Beyond that speed difference, you have to completely rewire how you talk to your computer. Cloud AIs are designed to be frictionless, constantly updated by engineers behind the scenes. Local AI is like a raw blank slate. It’s only as useful as what you give it, so follow these four rules:</p><h2 id="you-are-the-sole-provider-of-its-data-diet">You are the sole provider of its data diet</h2><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="dDfGksj4sSxc4oD3k5Ffu8" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/dDfGksj4sSxc4oD3k5Ffu8-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>Cloud AI is constantly scraping the internet and updating its worldview. Your local AI is completely isolated. It only knows what you feed it. </p><p>If you want it to understand how you format invoices, or the specific tone you use in emails, you have to explicitly provide those documents. It isn’t going to magically know you from the get-go.</p><h2 id="make-your-prompts-hyper-specific">Make your prompts hyper-specific</h2><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="CMvweX3ByQqQGuBRKXQ6PN" name="Hermes Agent" alt="Hermes Agent" src="https://cdn.mos.cms.futurecdn.net/CMvweX3ByQqQGuBRKXQ6PN-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>Since cloud AIs have billions (maybe trillions) of data points of context, they can read between the lines of those vague, half-baked questions you have. </p><p>Local AI is intensely literal. If you give it sparse instructions, it will give you a sparse, unhelpful output. Instead of “organize my downloads,” think “organize my downloads by file type and rename them to be more contextual with what they are.”</p><h2 id="the-carrot-not-the-stick-reinforcement">The carrot, not the stick (reinforcement)</h2><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="xfNXrR3xfBFpSjYWU3w6AD" name="Hermes Agent" alt="Hermes Agent" src="https://cdn.mos.cms.futurecdn.net/xfNXrR3xfBFpSjYWU3w6AD-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>To highlight, I don’t mean the “reinforcement learning” AI engineers are doing across the globe on frontier AI, I mean like I learned from teaching my nephew new skills. Something more human. You have to tell local AI to remember the victory. </p><p>If it nails that spreadsheet format exactly as you wanted it, reply with: “This is perfect. Save the way you did this into your memory.” Give it a treat so it repeats the behavior.</p><p>BTW, you don't need to give the agents names like I did. It just helps me organize them.</p><h2 id="build-its-mind-map-in-obsidian">Build its mind map in Obsidian</h2><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="YKbzTpLjz827z2kgb4NsfM" name="Hermes Agent" alt="Hermes Agent" src="https://cdn.mos.cms.futurecdn.net/YKbzTpLjz827z2kgb4NsfM-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>An AI without a long-term memory is just a calculator. To make it genuinely useful, give it a digital filing cabinet. I use <a href="https://obsidian.md/" target="_blank">Obsidian</a>, a free markdown note-taking app that saves files locally to your storage. </p><p>Just point your Hermes agent at Obsidian with a prompt like “can you take everything you’ve learned about me over our past interactions and put it into an Obsidian vault?” And from there, you’ll see the synapses start to form and connect.</p><h2 class="article-body__section" id="section-the-economics-of-owning-your-own-brain"><span>The economics of owning your own brain</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="yDsc4To3fThmCezy6SBUL8" name="Nvidia-2" alt="Nvidia RTX Spark laptop" src="https://cdn.mos.cms.futurecdn.net/yDsc4To3fThmCezy6SBUL8-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><p>Now, before I sign off on part one, let’s address the elephant in the room: hardware is expensive. It’s actually one of the reasons I believe the future of AI is local, because these damn cloud AI infrastructures have jacked up the price of memory!</p><p>But you have to look at the math of the cloud tax. Right now, you’re probably paying $20 a month for a mid-premium tier service, and if you try to do anything more adventurous, you’re met with limitations.</p><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="auFZPRTucNhgQGbSsg5SYg" name="Nvidia RTX Spark for a week" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/auFZPRTucNhgQGbSsg5SYg-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><p>That’s hundreds of dollars a year in digital rent just to borrow someone else’s server. When you run local AI, the ongoing cost is <strong>zero. </strong>That means no limitations on what you can do, no restrictions on the amount of images and videos you can generate in Comfy UI. You buy the hardware once, and the open-source software is free.</p><p>It’s the difference between renting a cramped apartment where your landlord reads your mail, versus owning your own house. Over a two-to-three-year laptop upgrade cycle, this machine pays for itself in canceled subscriptions — provided you know how to use it.</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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="fzLwFVKeCvJejaXimCGG3G" name="Hermes Agent" alt="Hermes Agent" src="https://cdn.mos.cms.futurecdn.net/fzLwFVKeCvJejaXimCGG3G-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>And that’s what I’m here to do. Over the next few weeks, I’ll give you a look into my local AI workspace, introduce you to my first agent “Jeeves” and the rest of my team, and show you how to extract the most value out of it really easily.</p><p>It’s going to be a journey, and I can’t wait to see what you come up with. But any questions whatsoever, throw them in the comments.</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/would-you-give-up-chatgpt-to-stop-ai-data-centers-reddits-answer-was-brutal"><strong>Would you give up ChatGPT to stop AI data centers? Reddit's answer was brutal</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/ai/chatbots-and-agents-like-muse-are-getting-a-face-but-does-that-make-us-trust-them-more-heres-what-this-ai-expert-had-to-say"><strong>Chatbots and agents like Muse are getting a face — but does that make us trust them more? Here's what this AI expert had to say</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/ai/joseph-gordon-levitt-warns-the-real-ai-threat-isnt-killer-robots-its-the-companies-building-them"><strong>Joseph Gordon-Levitt warns the real AI threat isn’t killer robots — it’s the companies building them</strong></a><strong></strong></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 'These are outside the budget and needs of mainstream users, for now': I asked a tech expert who RTX Spark laptops are actually for ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Nvidia and Microsoft just introduced a new laptop category: 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 platform</a>. While the <a href="https://www.tomsguide.com/computing/laptops/best-laptops">best laptops</a> are designed for productivity or gaming, these new notebooks give creators and AI coders powerful machines that let them work on the go.</p><p>The promise of offline AI work will certainly appeal to some customers, but it also makes RTX Spark laptops a relatively niche offering. That was my main takeaway from testing the <a href="https://www.tomsguide.com/computing/laptops/hp-omnibook-ultra-16-review">HP OmniBook Ultra 16</a>. While impressive, it’s too overpowered for everyday work and relatively underpowered for gaming. Due to that, RTX Spark laptops might struggle to compete with their more popular direct competitor, high-end MacBook Pros.</p><p>To better understand who these machines are actually for, I reached out to Tom Mainelli, Group Vice President of Device & Consumer Research at IDC, for his take on where RTX Spark fits right now and where it might go from here.</p><h2 id="early-adopters-developers-and-creators">Early adopters, developers, and creators</h2><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="GT2NWhhg5qKV3jyGmEH6pb" name="RTX Spark audience" alt="RTX Spark audience" src="https://cdn.mos.cms.futurecdn.net/GT2NWhhg5qKV3jyGmEH6pb-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><p>RTX Spark laptops target a narrow group: AI developers, content creators, and early adopters. These are premium notebooks built for people who already understand what the platform offers and why the price is what it is.</p><div><blockquote><p>“These are outside the budget and needs of mainstream users, for now.”</p><p>Tom Mainelli, IDC</p></blockquote></div><p>“These are outside the budget and needs of mainstream users, for now,” Mainelli said. At the same time, he sees them as a preview of where the PC industry is headed. The various configurations support different workloads, but the overall pitch is the same: a high-end Windows machine that can handle local AI work in a way previous laptops couldn’t.</p><h2 id="competing-with-macbook-pro-and-gaming-laptops">Competing with MacBook Pro and gaming 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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Y5K749GPx6ny2gkn4QkXbg" name="Nvidia RTX Spark for a week4" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/Y5K749GPx6ny2gkn4QkXbg-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><p>Mainelli positions RTX Spark notebooks as competitors to similarly configured MacBook Pros. Both platforms use unified memory, which makes them better suited to running larger models locally than traditional Windows laptops with discrete GPUs.</p><p>The difference is that this is an Nvidia system-on-chip, so it brings native CUDA support to Windows on Arm — something Windows laptops haven’t had before. Windows has also added new setup features that make it easier to install and run local agent platforms such as <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>, <a href="https://www.tomsguide.com/computing/cpus/ive-been-living-with-nvidias-rtx-spark-for-a-week-on-surface-laptop-ultra-its-not-a-macbook-pro-killer-but-something-much-weirder-and-wildly-powerful">Hermes</a>, and <a href="https://www.tomsguide.com/ai/perplexitys-new-local-first-ai-runs-on-your-pc-and-asks-before-using-the-cloud">Perplexity Computer</a> in a more secure, managed way.</p><p>Though Nvidia didn't market them directly as gaming laptops, it did show games running on RTX Spark systems. And given Nvidia’s gaming origins, it’s natural to wonder how these machines function as gaming systems. “Few vendors are marketing their RTX Spark systems as gaming systems, which typically have high-end discrete GPUs, but they appear to offer a solid gameplay experience,” Mainelli said.</p><div><blockquote><p>"Few vendors are marketing their RTX Spark systems as gaming systems."</p><p>Tom Mainelli, IDC</p></blockquote></div><p>My team and I noted that sentiment in our reviews of RTX Spark laptops, which tend to offer performance on par with RTX 5070 gaming laptops. Still, these aren’t — and shouldn’t be considered — gaming laptops. Gaming is simply an option, not a primary function.</p><h2 id="unified-memory-architecture">Unified memory architecture</h2><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="auFZPRTucNhgQGbSsg5SYg" name="Nvidia RTX Spark for a week" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/auFZPRTucNhgQGbSsg5SYg-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><p>The unified memory design could change the value proposition. On the high-end 128GB configurations, you can allocate up to 96GB to the GPU. That’s far more than you can get with a discrete GPU in a laptop, and it means you can load sizable models into memory and potentially run more AI inference workloads locally.</p><p>“Because the unified memory architecture makes it possible to allocate more memory to the GPU than you can buy in a system with a discrete GPU, it could change the value proposition,” Mainelli said.</p><p>In theory, that could reduce what AI developers spend on cloud-based tokens. In practice, Mainelli said it’s still early. It requires a savvy user who’s willing to spend up front on the hardware and then experiment with local models to get the best results.</p><h2 id="cost-is-the-biggest-barrier">Cost is the biggest barrier</h2><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="qaK2LNXYk9Ue4n3xcRv2cP" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/qaK2LNXYk9Ue4n3xcRv2cP-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>When I asked about the practical limitations that could slow adoption, Mainelli pointed to cost first. “Today, it is cost,” he said. “And the fact that to run some of the larger AI models locally, you need to buy higher-memory configurations.”</p><div><blockquote><p>“Today, it is cost.”</p><p>Tom Mainelli, IDC</p></blockquote></div><p>Some buyers may still hesitate about Windows on Arm, though he noted that Microsoft, Qualcomm, and the PC vendors have done a lot of work over the last few years to address most of those concerns.</p><p>Compatibility issues aside, I can see RTX Spark laptops potentially paying for themselves over time if they can speed up the work of AI developers and creators. Still, with the initial asking price being as “low” as $2,599 for a machine like the Microsoft Surface Laptop Ultra, even the target customer might have reservations.</p><h2 id="more-products-are-coming">More products 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="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>Looking ahead 12 to 18 months, Mainelli expects more systems based on the RTX Spark platform. He doesn’t see Nvidia and its partners shifting focus away from the premium segment anytime soon, and commercial products could also appear. For now, though, these remain specialized machines aimed at people who already know why they want the combination of unified memory, CUDA, and local AI capability on Windows.</p><p>“I’m confident we’ll see additional products ship leveraging the RTX Spark platform in the future,” Mainelli said. “I expect NVIDIA and its partners to remain focused on the premium and potentially commercial segments in the nearer term.”</p><p>To be clear, RTX Spark isn’t trying to be the next mainstream Windows laptop. It’s a high-end option for a specific kind of buyer. Whether that audience grows beyond early adopters and developers will depend on how useful the local AI and memory advantages prove in everyday work — and whether that’s worth the cost of entry.</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-benchmarks"><strong>I benchmarked Nvidia's RTX Spark: Apple wins the CPU war, but Nvidia's GPU just broke my testing charts</strong></a></li><li><a href="https://www.tomsguide.com/computing/cpus/ive-been-living-with-nvidias-rtx-spark-for-a-week-on-surface-laptop-ultra-its-not-a-macbook-pro-killer-but-something-much-weirder-and-wildly-powerful"><strong>I’ve been living with Nvidia’s RTX Spark for a week — it’s not a MacBook Pro killer but something much weirder and wildly powerful</strong></a></li><li><a href="https://www.tomsguide.com/computing/laptops/they-are-new-to-the-laptop-market-amd-issues-a-reality-check-to-nvidias-rtx-spark-and-fires-a-warning-shot-at-arm"><strong>'They are new to the laptop market': AMD issues a reality check to Nvidia’s RTX Spark and fires a warning shot at Arm</strong></a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/laptops/these-are-outside-the-budget-and-needs-of-mainstream-users-for-now-i-asked-a-tech-expert-who-rtx-spark-laptops-are-actually-for</link>
                                                                            <description>
                            <![CDATA[ RTX Spark laptops target AI developers and creators, not mainstream users. An IDC analyst explains who they’re for and why cost remains the biggest barrier. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">pQgyhBWfnMJY9evGMjSeL8</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/LJFZwcRDpBvWTc5cNkS8u9-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 18 Oct 2026 07:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Laptops]]></category>
                                                    <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/LJFZwcRDpBvWTc5cNkS8u9-1920-80.jpg">
                                                            <media:credit><![CDATA[Future / Tom&amp;#39;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Asus ProArt P16 (RTX Spark) laptop]]></media:description>                                                            <media:text><![CDATA[Asus ProArt P16 (RTX Spark) laptop]]></media:text>
                                <media:title type="plain"><![CDATA[Asus ProArt P16 (RTX Spark) laptop]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/LJFZwcRDpBvWTc5cNkS8u9-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Nvidia and Microsoft just introduced a new laptop category: 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 platform</a>. While the <a href="https://www.tomsguide.com/computing/laptops/best-laptops">best laptops</a> are designed for productivity or gaming, these new notebooks give creators and AI coders powerful machines that let them work on the go.</p><p>The promise of offline AI work will certainly appeal to some customers, but it also makes RTX Spark laptops a relatively niche offering. That was my main takeaway from testing the <a href="https://www.tomsguide.com/computing/laptops/hp-omnibook-ultra-16-review">HP OmniBook Ultra 16</a>. While impressive, it’s too overpowered for everyday work and relatively underpowered for gaming. Due to that, RTX Spark laptops might struggle to compete with their more popular direct competitor, high-end MacBook Pros.</p><p>To better understand who these machines are actually for, I reached out to Tom Mainelli, Group Vice President of Device & Consumer Research at IDC, for his take on where RTX Spark fits right now and where it might go from here.</p><h2 id="early-adopters-developers-and-creators">Early adopters, developers, and creators</h2><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="GT2NWhhg5qKV3jyGmEH6pb" name="RTX Spark audience" alt="RTX Spark audience" src="https://cdn.mos.cms.futurecdn.net/GT2NWhhg5qKV3jyGmEH6pb-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><p>RTX Spark laptops target a narrow group: AI developers, content creators, and early adopters. These are premium notebooks built for people who already understand what the platform offers and why the price is what it is.</p><div><blockquote><p>“These are outside the budget and needs of mainstream users, for now.”</p><p>Tom Mainelli, IDC</p></blockquote></div><p>“These are outside the budget and needs of mainstream users, for now,” Mainelli said. At the same time, he sees them as a preview of where the PC industry is headed. The various configurations support different workloads, but the overall pitch is the same: a high-end Windows machine that can handle local AI work in a way previous laptops couldn’t.</p><h2 id="competing-with-macbook-pro-and-gaming-laptops">Competing with MacBook Pro and gaming 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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Y5K749GPx6ny2gkn4QkXbg" name="Nvidia RTX Spark for a week4" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/Y5K749GPx6ny2gkn4QkXbg-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><p>Mainelli positions RTX Spark notebooks as competitors to similarly configured MacBook Pros. Both platforms use unified memory, which makes them better suited to running larger models locally than traditional Windows laptops with discrete GPUs.</p><p>The difference is that this is an Nvidia system-on-chip, so it brings native CUDA support to Windows on Arm — something Windows laptops haven’t had before. Windows has also added new setup features that make it easier to install and run local agent platforms such as <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>, <a href="https://www.tomsguide.com/computing/cpus/ive-been-living-with-nvidias-rtx-spark-for-a-week-on-surface-laptop-ultra-its-not-a-macbook-pro-killer-but-something-much-weirder-and-wildly-powerful">Hermes</a>, and <a href="https://www.tomsguide.com/ai/perplexitys-new-local-first-ai-runs-on-your-pc-and-asks-before-using-the-cloud">Perplexity Computer</a> in a more secure, managed way.</p><p>Though Nvidia didn't market them directly as gaming laptops, it did show games running on RTX Spark systems. And given Nvidia’s gaming origins, it’s natural to wonder how these machines function as gaming systems. “Few vendors are marketing their RTX Spark systems as gaming systems, which typically have high-end discrete GPUs, but they appear to offer a solid gameplay experience,” Mainelli said.</p><div><blockquote><p>"Few vendors are marketing their RTX Spark systems as gaming systems."</p><p>Tom Mainelli, IDC</p></blockquote></div><p>My team and I noted that sentiment in our reviews of RTX Spark laptops, which tend to offer performance on par with RTX 5070 gaming laptops. Still, these aren’t — and shouldn’t be considered — gaming laptops. Gaming is simply an option, not a primary function.</p><h2 id="unified-memory-architecture">Unified memory architecture</h2><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="auFZPRTucNhgQGbSsg5SYg" name="Nvidia RTX Spark for a week" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/auFZPRTucNhgQGbSsg5SYg-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><p>The unified memory design could change the value proposition. On the high-end 128GB configurations, you can allocate up to 96GB to the GPU. That’s far more than you can get with a discrete GPU in a laptop, and it means you can load sizable models into memory and potentially run more AI inference workloads locally.</p><p>“Because the unified memory architecture makes it possible to allocate more memory to the GPU than you can buy in a system with a discrete GPU, it could change the value proposition,” Mainelli said.</p><p>In theory, that could reduce what AI developers spend on cloud-based tokens. In practice, Mainelli said it’s still early. It requires a savvy user who’s willing to spend up front on the hardware and then experiment with local models to get the best results.</p><h2 id="cost-is-the-biggest-barrier">Cost is the biggest barrier</h2><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="qaK2LNXYk9Ue4n3xcRv2cP" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/qaK2LNXYk9Ue4n3xcRv2cP-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>When I asked about the practical limitations that could slow adoption, Mainelli pointed to cost first. “Today, it is cost,” he said. “And the fact that to run some of the larger AI models locally, you need to buy higher-memory configurations.”</p><div><blockquote><p>“Today, it is cost.”</p><p>Tom Mainelli, IDC</p></blockquote></div><p>Some buyers may still hesitate about Windows on Arm, though he noted that Microsoft, Qualcomm, and the PC vendors have done a lot of work over the last few years to address most of those concerns.</p><p>Compatibility issues aside, I can see RTX Spark laptops potentially paying for themselves over time if they can speed up the work of AI developers and creators. Still, with the initial asking price being as “low” as $2,599 for a machine like the Microsoft Surface Laptop Ultra, even the target customer might have reservations.</p><h2 id="more-products-are-coming">More products 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="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>Looking ahead 12 to 18 months, Mainelli expects more systems based on the RTX Spark platform. He doesn’t see Nvidia and its partners shifting focus away from the premium segment anytime soon, and commercial products could also appear. For now, though, these remain specialized machines aimed at people who already know why they want the combination of unified memory, CUDA, and local AI capability on Windows.</p><p>“I’m confident we’ll see additional products ship leveraging the RTX Spark platform in the future,” Mainelli said. “I expect NVIDIA and its partners to remain focused on the premium and potentially commercial segments in the nearer term.”</p><p>To be clear, RTX Spark isn’t trying to be the next mainstream Windows laptop. It’s a high-end option for a specific kind of buyer. Whether that audience grows beyond early adopters and developers will depend on how useful the local AI and memory advantages prove in everyday work — and whether that’s worth the cost of entry.</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-benchmarks"><strong>I benchmarked Nvidia's RTX Spark: Apple wins the CPU war, but Nvidia's GPU just broke my testing charts</strong></a></li><li><a href="https://www.tomsguide.com/computing/cpus/ive-been-living-with-nvidias-rtx-spark-for-a-week-on-surface-laptop-ultra-its-not-a-macbook-pro-killer-but-something-much-weirder-and-wildly-powerful"><strong>I’ve been living with Nvidia’s RTX Spark for a week — it’s not a MacBook Pro killer but something much weirder and wildly powerful</strong></a></li><li><a href="https://www.tomsguide.com/computing/laptops/they-are-new-to-the-laptop-market-amd-issues-a-reality-check-to-nvidias-rtx-spark-and-fires-a-warning-shot-at-arm"><strong>'They are new to the laptop market': AMD issues a reality check to Nvidia’s RTX Spark and fires a warning shot at Arm</strong></a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I broke up with my MacBook Pro for Microsoft Surface Laptop Ultra — RTX Spark surprised me ]]></title>
                                                                                                <dc:content><![CDATA[ <p>After telling you about <a href="https://www.tomsguide.com/computing/cpus/ive-been-living-with-nvidias-rtx-spark-for-a-week-on-surface-laptop-ultra-its-not-a-macbook-pro-killer-but-something-much-weirder-and-wildly-powerful">my week living with Nvidia RTX Spark</a>, now I can tell you about the laptop housing it. Microsoft’s Surface Laptop Ultra is easily the most powerful Surface to come out of Redmond, and this is a badass-looking utilitarian notebook to match that energy.</p><p>The aluminum shell housing all the internals feels satisfyingly ultra-premium, while opening it up reveals that sharp mini-LED display — not as vivid as OLED, but bright, buttery smooth and color accurate all the same. And those ergonomics are stellar with a great-feeling keyboard and a touchpad that can talk back to you with haptics when you do things around Windows 11.</p><p>Then there’s the tweaks to Windows 11 itself. Beyond what you see in <a href="https://www.tomsguide.com/computing/windows-operating-systems/i-just-tested-windows-11-26h2-heres-how-to-update-now-and-why-microsoft-finally-fixed-the-two-worst-things-about-windows-11">version 26H2</a>, setting up an agent is now simpler than ever as part of the startup process. And powering all of this is that RTX Spark — turboboosting a lot of those agentic workflows I created to free up my personal time, alongside the moments of creativity in ComfyUI.</p><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="smbPnamxm3PGHaCLBJQsR9" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/smbPnamxm3PGHaCLBJQsR9-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 top of that, it eliminates the compromise between either being a good creator notebook or good at gaming, and just giving you the best of both worlds.</p><p>Don’t fall for the marketing hype, though. I know Microsoft is welcoming you to “break up with your MacBook Pro,” and inviting the comparison. And across a few stats, Apple does dominate — like battery life, surface temperatures and raw CPU performance. If you came in looking for this, that high price tag will feel like a sharp sting.</p><p>But if you understand what this is — a different species of laptop that focuses on beefing up the GPU grunt — then the story changes. This isn’t a MacBook Pro killer. It’s a creator laptop by day, gaming system by night, and a glimpse at the local future of AI.</p><h2 class="article-body__section" id="section-microsoft-surface-laptop-ultra-cheat-sheet"><span>Microsoft Surface Laptop Ultra: Cheat sheet</span></h2><ul><li><strong>What is it? </strong>Microsoft’s new flagship 15-inch workstation laptop, powered by Nvidia’s RTX Spark chipset.</li><li><strong>Who is it for? </strong>This is for the high-end creators, AI developers, and PC gamers who want a boat load of power, alongside local agentic AI capabilities in a portable chassis.<strong> </strong></li><li><strong>What does it cost? </strong><a href="https://www.microsoft.com/en-us/store/configure/surface-laptop-ultra/8wg5vqp0x4b8" target="_blank" rel="nofollow">Pricing starts at $2,599</a>. The price of the model I tested is a whopping $5,899.</li><li><strong>What do we like? </strong>The utilitarian design feels completely in charge, that magnetic USB-C port is the smartest charging solution I’ve seen in years, it’s an ergonomic joy to use, and the RTX Spark chip obliterates creative workflows and modern PC games, while ushering in a local agentic future for computing.</li><li><strong>What don’t we like? </strong>Battery life and CPU performance is underwhelming compared to Apple’s MacBook Pros. And in our lab testing, the Surface Laptop Ultra does fall slightly behind other RTX Spark laptops.</li></ul><h2 class="article-body__section" id="section-microsoft-surface-laptop-ultra-specs"><span>Microsoft Surface Laptop Ultra: Specs</span></h2><div ><table><thead><tr><th class="firstcol " ><p>Spec</p></th><th  ><p>Microsoft Surface Laptop Ultra (base model)</p></th><th  ><p>Microsoft Surface Laptop Ultra (as tested)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>CPU</strong></p></td><td  ><p>Nvidia RTX Spark N1X (18-core CPU / 5120-core GPU)</p></td><td  ><p>Nvidia RTX Spark N1X (20-core CPU / 6144-core GPU)</p></td></tr><tr><td class="firstcol " ><p><strong>RAM</strong></p></td><td  ><p>24GB unified memory</p></td><td  ><p>128GB unified memory</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>Display</strong></p></td><td  ><p>15-inch PixelSense Ultra display, 3270 x 2180 pixels, 120Hz refresh rate</p></td><td  ><p>15-inch PixelSense Ultra display, 3270 x 2180 pixels, 120Hz refresh rate</p></td></tr><tr><td class="firstcol " ><p><strong>Ports</strong></p></td><td  ><p>2x USB4, 1x magnetic USB4, HDMI 2.1, USB-A 3.1, SD card reader, 3.5mm audio jack</p></td><td  ><p>2x USB4, 1x magnetic USB4, HDMI 2.1, USB-A 3.1, SD card reader, 3.5mm audio jack</p></td></tr><tr><td class="firstcol " ><p><strong>Wireless connectivity</strong></p></td><td  ><p>Wi-Fi 7</p></td><td  ><p>Wi-Fi 7</p></td></tr><tr><td class="firstcol " ><p><strong>Battery</strong></p></td><td  ><p>92 Wh</p></td><td  ><p>92 Wh</p></td></tr><tr><td class="firstcol " ><p><strong>Dimensions</strong></p></td><td  ><p>13 x 9.4 x 0.7 inches</p></td><td  ><p>13 x 9.4 x 0.7 inches</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>4.4 pounds</p></td><td  ><p>4.5 pounds</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p>$2,599</p></td><td  ><p>$5,899</p></td></tr></tbody></table></div><h2 class="article-body__section" id="section-microsoft-surface-laptop-ultra-the-ups"><span>Microsoft Surface Laptop Ultra: The ups</span></h2><p>So as I started daily-driving the Surface Laptop Ultra, I was waiting for the moment I started feeling like I missed my MacBook Pro. That moment never came.</p><h2 id="looking-like-it-s-in-charge">Looking like it’s in charge</h2><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="448bHs72w5P3JhhmM5JHpd" name="Microsoft Surface Laptop Ultra" alt="Microsoft Surface Laptop Ultra" src="https://cdn.mos.cms.futurecdn.net/448bHs72w5P3JhhmM5JHpd-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The first obvious thing you’ll notice is that sharp, uniform design language. This thing looks like it can do some serious work, and you can see all the Surface's attention to the finer details around the frame too.</p><p>There is no lip to get your finger in to lift the laptop screen, but it’s simple to do with one hand. The keyboard feels fantastic to use with a nice satisfying tactile click to each key and a soft landing. </p><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="oiyC67TJa4fSQEEKRyHtfd" name="Microsoft Surface Laptop Ultra" alt="Microsoft Surface Laptop Ultra" src="https://cdn.mos.cms.futurecdn.net/oiyC67TJa4fSQEEKRyHtfd-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>That massive haptic touchpad feels graceful across Windows 11, but the tap backs you get from things like snapping windows to the sides of the screen make it a two-way conversation.</p><p>And then there’s the magnetic USB-C port — giving you the MagSafe connectivity without the need to give up a standard port. Obviously, you can see from my TikTok below that I loveed it, but I did hear the feedback: what’s the durability when you whip it out vertically rather than horizontally?</p>                    <div class= "tiktok-wrapper" style="min-height: 750px;"><blockquote class="tiktok-embed" cite="https://www.tiktok.com/@tomsguide/video/7694044027208994062" data-video-id="7694044027208994062" 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="♬ Cyberpunk Dark Bass - Ganger Baster" href="https://www.tiktok.com/music/Cyberpunk-Dark-Bass-7105151122943264770">♬ Cyberpunk Dark Bass - Ganger Baster</a></section>                    </blockquote></div>                <p>Well, after doing that several times, that reduced height of the USB-C male connector means it pulls out just as easily with the connector safely intact. This is a durable solution, and I hope we see this come to phones in the near future!</p><h2 id="rtx-spark-drags-windows-11-into-the-agentic-era">RTX Spark drags Windows 11 into the agentic era</h2><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="CxvjAewa4xS3be2otk3Neg" name="Nvidia RTX Spark for a week2" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/CxvjAewa4xS3be2otk3Neg-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><p>As I noted in my “week in the life” diary, this laptop is a beast for local AI. Out of the box, Windows 11 makes setting up agents like Hermes or OpenClaw incredibly simple. On top of that, the power-user centric additions to the UI like moving the taskbar to the side and removing all the pointless start menu widgets is a joy to use.</p><p>But at its core, it’s that Team Green silicon and full Nvidia CUDA support that gives this a massive advantage. Most open-source AI models are optimized for CUDA first, meaning that with a little reinforcement learning on Hermes, this laptop was able to autonomously manage my email and task list admin — giving me time to make myself breakfast.</p><div ><table><caption>RTX Spark AI test</caption><thead><tr><th class="firstcol " ><p>Benchmark</p></th><th  ><p>Time to first token</p></th><th  ><p>Tokens per second</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Phi 3.5 text generation</strong></p></td><td  ><p>0.28s</p></td><td  ><p>74.4</p></td></tr><tr><td class="firstcol " ><p><strong>Mistral 7B text generation</strong></p></td><td  ><p>0.49s</p></td><td  ><p>54.2</p></td></tr><tr><td class="firstcol " ><p><strong>Llama 3.1 text generation</strong></p></td><td  ><p>0.44s</p></td><td  ><p>50.9</p></td></tr><tr><td class="firstcol " ><p><strong>Llama 2 text generation</strong></p></td><td  ><p>0.95s</p></td><td  ><p>27.8</p></td></tr></tbody></table></div><p>As for the performance itself, you can see this advantage at play in generating text and images — all with zero cloud subscription fees. </p><p>While the TG lab doesn't normally run these tests (we will going forward), I've reached out to my friends in the industry to ask about these numbers. And the opinion is unanimous: RTX Spark breezes past M5 Pro, AMD Ryzen AI Max 395+ and demolishes Intel Core Ultra X9 in AI token generation.</p><p>But to give myself more context, I faced it off with my <a href="https://www.tomsguide.com/computing/gpus/nvidia-geforce-rtx-5060-ti-review">RTX 5060 Ti 16GB desktop GPU</a>.</p><div ><table><thead><tr><th class="firstcol " ><p>Chip</p></th><th  ><p>Phi 3.5</p></th><th  ><p>Llama 3.1 8B</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Microsoft Surface Laptop Ultra (RTX Spark)</strong></p></td><td  ><p>2631</p></td><td  ><p>2173</p></td></tr><tr><td class="firstcol " ><p><strong>RTX 5060 Ti 16GB desktop GPU</strong></p></td><td  ><p>3084</p></td><td  ><p>2642</p></td></tr></tbody></table></div><p>I wasn't expecting it to beat a desktop graphics card. The difference in wattage going to each of these chips is insane! However, the Spark does get impressively close here.</p><h2 id="ending-the-macbook-dilemma">Ending the MacBook dilemma</h2><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.29%;"><img id="9AdEEzfzTc2yMr8BQhy2XC" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/9AdEEzfzTc2yMr8BQhy2XC-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1441" attribution="" endorsement="" 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 years, creatives have carried a MacBook Pro for work and a separate system for gaming. Either its a gaming tower at home, a second gaming laptop or a handheld. The Surface Laptop Ultra ends that compromise, and that comes courtesy of the fact that GPU bolted onto RTX Spark is a real monster.</p><div ><table><thead><tr><th class="firstcol " ><p>Chip</p></th><th  ><p>Photoshop PugetBench score</p></th><th  ><p>Premiere Pro PugetBench score</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Microsoft Surface Laptop Ultra (RTX Spark)</strong></p></td><td  ><p>11762</p></td><td  ><p>87098</p></td></tr><tr><td class="firstcol " ><p><strong>MacBook Pro 16-inch (M5 Pro)</strong></p></td><td  ><p>15204</p></td><td  ><p>105580</p></td></tr><tr><td class="firstcol " ><p><strong>Asus ProArt PX13 GoPro Edition (AMD Ryzen AI Max 395+)</strong></p></td><td  ><p>11077</p></td><td  ><p>52945</p></td></tr><tr><td class="firstcol " ><p><strong>Asus Zenbook Duo (Intel Core Ultra X9)</strong></p></td><td  ><p>8823</p></td><td  ><p>51726</p></td></tr></tbody></table></div><p>M5 Pro does pull quite a lead in terms of Adobe Creative Suite workloads, but, you can get supreme gaming here. Numbers-wise, this is close to an RTX 5070 gaming laptop, which Apple can only dream of.</p><div ><table><thead><tr><th class="firstcol " ><p>3DMark test</p></th><th  ><p>Microsoft Surface Laptop Ultra (RTX Spark)</p></th><th  ><p>MacBook Pro 16-inch (M5 Pro)</p></th><th  ><p>Asus ProArt PX13 GoPro Edition (AMD Ryzen AI Max 395+)</p></th><th  ><p>Asus Zenbook Duo (Intel Core Ultra X9)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Fire Strike Ultra (x64)</strong></p></td><td  ><p>7492</p></td><td  ><p>n/a</p></td><td  ><p>6050</p></td><td  ><p>3555</p></td></tr><tr><td class="firstcol " ><p><strong>Time Spy Extreme (x64)</strong></p></td><td  ><p>6060</p></td><td  ><p>n/a</p></td><td  ><p>4689</p></td><td  ><p>3226</p></td></tr><tr><td class="firstcol " ><p><strong>Steel Nomad</strong></p></td><td  ><p>2912</p></td><td  ><p>2335</p></td><td  ><p>1895</p></td><td  ><p>1483</p></td></tr><tr><td class="firstcol " ><p><strong>Solar Bay Extreme</strong></p></td><td  ><p>10594</p></td><td  ><p>9108</p></td><td  ><p>6047</p></td><td  ><p>4015</p></td></tr></tbody></table></div><p>Apple's GPU is strong, but it doesn't have the game support that Windows does. Throw in the vast improvements to prism emulation that support anti-cheat software for multiplayer games, and this becomes an enticing option for working by day and playing by night.</p><p>Even before any upscaling tech, it’s a night and day difference in the gaming department. Throw in RTX technologies and it’s a runaway victory.</p><div ><table><tbody><tr><td class="firstcol " ><p><strong>Game</strong></p></td><td  ><p><strong>Microsoft Surface Laptop Ultra (RTX Spark)</strong></p></td><td  ><p><strong>RTX 5060 laptop GPU</strong></p></td><td  ><p><strong>RTX 5070 laptop GPU</strong></p></td><td  ><p><strong>RTX 5090 laptop GPU</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Cyberpunk 2077 1080p Extreme + RT DLSS</strong></p></td><td  ><p>80 FPS</p></td><td  ><p>31 FPS</p></td><td  ><p>81 FPS</p></td><td  ><p>182 FPS</p></td></tr><tr><td class="firstcol " ><p><strong>Black Myth: Wukong (1080p Cinematic NO DLSS)</strong></p></td><td  ><p>36 FPS</p></td><td  ><p>24 FPS</p></td><td  ><p>30 FPS</p></td><td  ><p>65 FPS</p></td></tr></tbody></table></div><p>Oh, and that whole other thing MacBooks did well — running as fast both on and off the charger — yea, the Surface Laptop Ultra does that too.</p><div ><table><thead><tr><th class="firstcol " ><p>3DMark test</p></th><th  ><p>Plugged in</p></th><th  ><p>Unplugged (Best performance)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Fire Strike Ultra (x64)</strong></p></td><td  ><p>7492</p></td><td  ><p>7970</p></td></tr><tr><td class="firstcol " ><p><strong>Time Spy Extreme (x64)</strong></p></td><td  ><p>6060</p></td><td  ><p>5897</p></td></tr><tr><td class="firstcol " ><p><strong>Steel Nomad</strong></p></td><td  ><p>2912</p></td><td  ><p>3160</p></td></tr><tr><td class="firstcol " ><p><strong>Solar Bay Extreme</strong></p></td><td  ><p>10594</p></td><td  ><p>10900</p></td></tr></tbody></table></div><h2 class="article-body__section" id="section-microsoft-surface-laptop-ultra-the-downs"><span>Microsoft Surface Laptop Ultra: The downs</span></h2><p>Nvidia’s first foray into an all-in-one chip isn’t without some issues. The laptop’s not the problem, but rather a couple cracks in the armor and defining who RTX Spark is actually for.</p><h2 id="the-macbook-pro-reality-check">The MacBook Pro reality 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:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="5jsbAXhogUzmnuzcd5jTCR" name="MacBook Pro 16-inch M5 Pro review-LIST" alt="MacBook Pro 16-inch M5 Pro on a desk" src="https://cdn.mos.cms.futurecdn.net/5jsbAXhogUzmnuzcd5jTCR-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>A lot of folks came into the RTX Spark launch hoping for it to be a MacBook Pro killer. If you measure by the CPU, creator performance and battery life, it isn’t.</p><div ><table><thead><tr><th class="firstcol " ><p>Chip</p></th><th  ><p>Geekbench 7 single-core</p></th><th  ><p>Geekbench 7 multi-core</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Nvidia RTX Spark (20-core CPU)</strong></p></td><td  ><p>2604</p></td><td  ><p>23610</p></td></tr><tr><td class="firstcol " ><p><strong>Apple M5 Pro</strong></p></td><td  ><p>3690</p></td><td  ><p>29659</p></td></tr><tr><td class="firstcol " ><p><strong>Qualcomm Snapdragon X2 Elite Extreme</strong></p></td><td  ><p>3214</p></td><td  ><p>23645</p></td></tr><tr><td class="firstcol " ><p><strong>AMD Ryzen AI Max 395+</strong></p></td><td  ><p>2407</p></td><td  ><p>20856</p></td></tr><tr><td class="firstcol " ><p><strong>Intel Core Ultra x9 388H</strong></p></td><td  ><p>2574</p></td><td  ><p>17223</p></td></tr></tbody></table></div><p>In multi-core metrics, the Nvidia chip in here performs at the top of its class for Windows laptops, but the M5 Pro does peek ahead. </p><p>And the same can be said for creative tasks like transcoding video or working across Photoshop or Premiere Pro, as you saw above. It does end the MacBook dilemma as I mentioned above, but if you have a specific use case, you’ll get faster speeds by going for Apple here.</p><p>And then there’s that stamina portion of things. Don’t get me wrong — the claim of “all day battery life” is technically true, but Surface Laptop Ultra barely touches the sides of the efficiency of Apple silicon.</p><div ><table><thead><tr><th class="firstcol " ><p>Chip (laptop)</p></th><th  ><p>Web browsing battery life test result (hh:mm)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>RTX Spark (Microsoft Surface Laptop Ultra)</strong></p></td><td  ><p>10:15</p></td></tr><tr><td class="firstcol " ><p><strong>M5 Pro (16-inch MacBook Pro)</strong></p></td><td  ><p>21:25</p></td></tr><tr><td class="firstcol " ><p><strong>Snapdragon X2 Elite (Zenbook A16)</strong></p></td><td  ><p>10:26</p></td></tr><tr><td class="firstcol " ><p><strong>Intel Core Ultra X9 (Asus Zenbook Duo one screen)</strong></p></td><td  ><p>14:23</p></td></tr><tr><td class="firstcol " ><p><strong>AMD Ryzen AI Max 395+ (ProArt Go Pro Edition PX13)</strong></p></td><td  ><p>11:12</p></td></tr></tbody></table></div><p>When it comes to gaming, at just over 1.5 hours, you can think of your RTX Spark running at full pelt in AAA titles (or AI tasks) lasting just a little bit longer than your standard issue gaming laptop. </p><p>The performance overall is impressive (if you know what to do with it…more on that in a bit), but make sure you bring that 140W charger with you.</p><h2 id="popping-the-hype-bubble-with-a-few-reality-checks">Popping the hype bubble with a few reality checks</h2><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="ftiLGugNDsBVyPeH7jMitd" name="Microsoft Surface Laptop Ultra" alt="Microsoft Surface Laptop Ultra" src="https://cdn.mos.cms.futurecdn.net/ftiLGugNDsBVyPeH7jMitd-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’ll be upfront. This laptop is not for everyone. An RTX 50-series gaming laptop could do a lot of what you see here, and if gaming isn’t your main focus, a MacBook Pro could be the move. </p><p>So let’s get down to brass tacks here with some reality checks on who this is for:</p><ul><li><strong>The big differentiator is unified memory: </strong>With one giant pool of memory to share across all the internals, that’s capable of running far larger local AI models than your standard gaming laptop.</li><li><strong>The Nvidia advantage in AI: </strong>Thanks to the AI software stack being almost overwhelmingly Nvidia-optimized, you’ll get the fastest local performance of any laptop.</li><li><strong>The PixelSense mini LED display: </strong>It's bright and color accurate, but it lacks the pop of OLED RTX Spark options like the <a href="https://www.tomsguide.com/computing/laptops/hp-omnibook-ultra-16-review">Asus ProArt P16</a> or the <a href="https://www.tomsguide.com/computing/laptops/hp-omnibook-ultra-16-review">HP OmniBook Ultra 16</a>.</li></ul><p>Of course, I can talk about this being the everything machine it is, but when you break down the big things that give RTX Spark the edge here in any buying decision, it starts to level the market in your mind and give clarity to who should buy this.</p><p><strong>If you are an AI enthusiast/developer, or you’re keen to jump into the field of agentic AI/AI creative, </strong>this is the laptop for you.</p><p><strong>If you want good gaming on-the-go, </strong>a gaming laptop is the way to go.</p><p><strong>If you want portable creator performance, </strong>the MacBook Pro reigns supreme.</p><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="6aNk3jfBjVCsSGZLkH7JZg" name="Nvidia RTX Spark for a week3" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/6aNk3jfBjVCsSGZLkH7JZg-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><p>The Spark does touch on all these things, and it does them well. But at those kinds of prices? If you have clear intentions around what work you’re doing but nothing specific in mind for embracing AI agents (as you’ll see from some of our reviews), this is an investment you may regret.</p><h2 class="article-body__section" id="section-microsoft-surface-laptop-ultra-verdict"><span>Microsoft Surface Laptop Ultra: 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="8BMgPRQSUFFHjzxrFkyUmC" name="Microsoft Surface Laptop Ultra" alt="Microsoft Surface Laptop Ultra" src="https://cdn.mos.cms.futurecdn.net/8BMgPRQSUFFHjzxrFkyUmC-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 Surface Laptop Ultra is a remarkable piece of hardware. The utilitarian design, brilliantly clever magnetic USB-C port and communicative haptic touchpad prove that Microsoft’s hardware engineering is operating at the highest level.</p><p>And as it should, because the RTX Spark chip inside is a bit of a breakthrough for the local agentic future of computing, as well as a monster for creators, developers and gamers alike.</p><p>But to be clear: this isn’t a MacBook Pro killer. You’ll notice that in CPU and battery life. Instead the sheer force of that chip and unified memory makes it a weapon for pro workloads — housed in a mean-looking chassis.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/laptops/microsoft-surface-laptop-ultra-rtx-spark-review</link>
                                                                            <description>
                            <![CDATA[ Microsoft’s Surface Laptop Ultra is an uncompromising, utilitarian beast built for local AI and high-end creators, featuring the best touchpad on any Windows laptop and an incredibly clever magnetic charging port. Just don't stray too far from a wall outlet. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">KXEN3qUraXjUcHBoRZnkoi</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/kVYpaw77hw9vBRXuiX26iA-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 16 Oct 2026 12:00:00 +0000</pubDate>                                                                                                                                <updated>Fri, 16 Oct 2026 14:13:57 +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/kVYpaw77hw9vBRXuiX26iA-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/kVYpaw77hw9vBRXuiX26iA-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>After telling you about <a href="https://www.tomsguide.com/computing/cpus/ive-been-living-with-nvidias-rtx-spark-for-a-week-on-surface-laptop-ultra-its-not-a-macbook-pro-killer-but-something-much-weirder-and-wildly-powerful">my week living with Nvidia RTX Spark</a>, now I can tell you about the laptop housing it. Microsoft’s Surface Laptop Ultra is easily the most powerful Surface to come out of Redmond, and this is a badass-looking utilitarian notebook to match that energy.</p><p>The aluminum shell housing all the internals feels satisfyingly ultra-premium, while opening it up reveals that sharp mini-LED display — not as vivid as OLED, but bright, buttery smooth and color accurate all the same. And those ergonomics are stellar with a great-feeling keyboard and a touchpad that can talk back to you with haptics when you do things around Windows 11.</p><p>Then there’s the tweaks to Windows 11 itself. Beyond what you see in <a href="https://www.tomsguide.com/computing/windows-operating-systems/i-just-tested-windows-11-26h2-heres-how-to-update-now-and-why-microsoft-finally-fixed-the-two-worst-things-about-windows-11">version 26H2</a>, setting up an agent is now simpler than ever as part of the startup process. And powering all of this is that RTX Spark — turboboosting a lot of those agentic workflows I created to free up my personal time, alongside the moments of creativity in ComfyUI.</p><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="smbPnamxm3PGHaCLBJQsR9" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/smbPnamxm3PGHaCLBJQsR9-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 top of that, it eliminates the compromise between either being a good creator notebook or good at gaming, and just giving you the best of both worlds.</p><p>Don’t fall for the marketing hype, though. I know Microsoft is welcoming you to “break up with your MacBook Pro,” and inviting the comparison. And across a few stats, Apple does dominate — like battery life, surface temperatures and raw CPU performance. If you came in looking for this, that high price tag will feel like a sharp sting.</p><p>But if you understand what this is — a different species of laptop that focuses on beefing up the GPU grunt — then the story changes. This isn’t a MacBook Pro killer. It’s a creator laptop by day, gaming system by night, and a glimpse at the local future of AI.</p><h2 class="article-body__section" id="section-microsoft-surface-laptop-ultra-cheat-sheet"><span>Microsoft Surface Laptop Ultra: Cheat sheet</span></h2><ul><li><strong>What is it? </strong>Microsoft’s new flagship 15-inch workstation laptop, powered by Nvidia’s RTX Spark chipset.</li><li><strong>Who is it for? </strong>This is for the high-end creators, AI developers, and PC gamers who want a boat load of power, alongside local agentic AI capabilities in a portable chassis.<strong> </strong></li><li><strong>What does it cost? </strong><a href="https://www.microsoft.com/en-us/store/configure/surface-laptop-ultra/8wg5vqp0x4b8" target="_blank" rel="nofollow">Pricing starts at $2,599</a>. The price of the model I tested is a whopping $5,899.</li><li><strong>What do we like? </strong>The utilitarian design feels completely in charge, that magnetic USB-C port is the smartest charging solution I’ve seen in years, it’s an ergonomic joy to use, and the RTX Spark chip obliterates creative workflows and modern PC games, while ushering in a local agentic future for computing.</li><li><strong>What don’t we like? </strong>Battery life and CPU performance is underwhelming compared to Apple’s MacBook Pros. And in our lab testing, the Surface Laptop Ultra does fall slightly behind other RTX Spark laptops.</li></ul><h2 class="article-body__section" id="section-microsoft-surface-laptop-ultra-specs"><span>Microsoft Surface Laptop Ultra: Specs</span></h2><div ><table><thead><tr><th class="firstcol " ><p>Spec</p></th><th  ><p>Microsoft Surface Laptop Ultra (base model)</p></th><th  ><p>Microsoft Surface Laptop Ultra (as tested)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>CPU</strong></p></td><td  ><p>Nvidia RTX Spark N1X (18-core CPU / 5120-core GPU)</p></td><td  ><p>Nvidia RTX Spark N1X (20-core CPU / 6144-core GPU)</p></td></tr><tr><td class="firstcol " ><p><strong>RAM</strong></p></td><td  ><p>24GB unified memory</p></td><td  ><p>128GB unified memory</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>Display</strong></p></td><td  ><p>15-inch PixelSense Ultra display, 3270 x 2180 pixels, 120Hz refresh rate</p></td><td  ><p>15-inch PixelSense Ultra display, 3270 x 2180 pixels, 120Hz refresh rate</p></td></tr><tr><td class="firstcol " ><p><strong>Ports</strong></p></td><td  ><p>2x USB4, 1x magnetic USB4, HDMI 2.1, USB-A 3.1, SD card reader, 3.5mm audio jack</p></td><td  ><p>2x USB4, 1x magnetic USB4, HDMI 2.1, USB-A 3.1, SD card reader, 3.5mm audio jack</p></td></tr><tr><td class="firstcol " ><p><strong>Wireless connectivity</strong></p></td><td  ><p>Wi-Fi 7</p></td><td  ><p>Wi-Fi 7</p></td></tr><tr><td class="firstcol " ><p><strong>Battery</strong></p></td><td  ><p>92 Wh</p></td><td  ><p>92 Wh</p></td></tr><tr><td class="firstcol " ><p><strong>Dimensions</strong></p></td><td  ><p>13 x 9.4 x 0.7 inches</p></td><td  ><p>13 x 9.4 x 0.7 inches</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>4.4 pounds</p></td><td  ><p>4.5 pounds</p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p>$2,599</p></td><td  ><p>$5,899</p></td></tr></tbody></table></div><h2 class="article-body__section" id="section-microsoft-surface-laptop-ultra-the-ups"><span>Microsoft Surface Laptop Ultra: The ups</span></h2><p>So as I started daily-driving the Surface Laptop Ultra, I was waiting for the moment I started feeling like I missed my MacBook Pro. That moment never came.</p><h2 id="looking-like-it-s-in-charge">Looking like it’s in charge</h2><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="448bHs72w5P3JhhmM5JHpd" name="Microsoft Surface Laptop Ultra" alt="Microsoft Surface Laptop Ultra" src="https://cdn.mos.cms.futurecdn.net/448bHs72w5P3JhhmM5JHpd-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The first obvious thing you’ll notice is that sharp, uniform design language. This thing looks like it can do some serious work, and you can see all the Surface's attention to the finer details around the frame too.</p><p>There is no lip to get your finger in to lift the laptop screen, but it’s simple to do with one hand. The keyboard feels fantastic to use with a nice satisfying tactile click to each key and a soft landing. </p><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="oiyC67TJa4fSQEEKRyHtfd" name="Microsoft Surface Laptop Ultra" alt="Microsoft Surface Laptop Ultra" src="https://cdn.mos.cms.futurecdn.net/oiyC67TJa4fSQEEKRyHtfd-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>That massive haptic touchpad feels graceful across Windows 11, but the tap backs you get from things like snapping windows to the sides of the screen make it a two-way conversation.</p><p>And then there’s the magnetic USB-C port — giving you the MagSafe connectivity without the need to give up a standard port. Obviously, you can see from my TikTok below that I loveed it, but I did hear the feedback: what’s the durability when you whip it out vertically rather than horizontally?</p>                    <div class= "tiktok-wrapper" style="min-height: 750px;"><blockquote class="tiktok-embed" cite="https://www.tiktok.com/@tomsguide/video/7694044027208994062" data-video-id="7694044027208994062" 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="♬ Cyberpunk Dark Bass - Ganger Baster" href="https://www.tiktok.com/music/Cyberpunk-Dark-Bass-7105151122943264770">♬ Cyberpunk Dark Bass - Ganger Baster</a></section>                    </blockquote></div>                <p>Well, after doing that several times, that reduced height of the USB-C male connector means it pulls out just as easily with the connector safely intact. This is a durable solution, and I hope we see this come to phones in the near future!</p><h2 id="rtx-spark-drags-windows-11-into-the-agentic-era">RTX Spark drags Windows 11 into the agentic era</h2><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="CxvjAewa4xS3be2otk3Neg" name="Nvidia RTX Spark for a week2" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/CxvjAewa4xS3be2otk3Neg-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><p>As I noted in my “week in the life” diary, this laptop is a beast for local AI. Out of the box, Windows 11 makes setting up agents like Hermes or OpenClaw incredibly simple. On top of that, the power-user centric additions to the UI like moving the taskbar to the side and removing all the pointless start menu widgets is a joy to use.</p><p>But at its core, it’s that Team Green silicon and full Nvidia CUDA support that gives this a massive advantage. Most open-source AI models are optimized for CUDA first, meaning that with a little reinforcement learning on Hermes, this laptop was able to autonomously manage my email and task list admin — giving me time to make myself breakfast.</p><div ><table><caption>RTX Spark AI test</caption><thead><tr><th class="firstcol " ><p>Benchmark</p></th><th  ><p>Time to first token</p></th><th  ><p>Tokens per second</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Phi 3.5 text generation</strong></p></td><td  ><p>0.28s</p></td><td  ><p>74.4</p></td></tr><tr><td class="firstcol " ><p><strong>Mistral 7B text generation</strong></p></td><td  ><p>0.49s</p></td><td  ><p>54.2</p></td></tr><tr><td class="firstcol " ><p><strong>Llama 3.1 text generation</strong></p></td><td  ><p>0.44s</p></td><td  ><p>50.9</p></td></tr><tr><td class="firstcol " ><p><strong>Llama 2 text generation</strong></p></td><td  ><p>0.95s</p></td><td  ><p>27.8</p></td></tr></tbody></table></div><p>As for the performance itself, you can see this advantage at play in generating text and images — all with zero cloud subscription fees. </p><p>While the TG lab doesn't normally run these tests (we will going forward), I've reached out to my friends in the industry to ask about these numbers. And the opinion is unanimous: RTX Spark breezes past M5 Pro, AMD Ryzen AI Max 395+ and demolishes Intel Core Ultra X9 in AI token generation.</p><p>But to give myself more context, I faced it off with my <a href="https://www.tomsguide.com/computing/gpus/nvidia-geforce-rtx-5060-ti-review">RTX 5060 Ti 16GB desktop GPU</a>.</p><div ><table><thead><tr><th class="firstcol " ><p>Chip</p></th><th  ><p>Phi 3.5</p></th><th  ><p>Llama 3.1 8B</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Microsoft Surface Laptop Ultra (RTX Spark)</strong></p></td><td  ><p>2631</p></td><td  ><p>2173</p></td></tr><tr><td class="firstcol " ><p><strong>RTX 5060 Ti 16GB desktop GPU</strong></p></td><td  ><p>3084</p></td><td  ><p>2642</p></td></tr></tbody></table></div><p>I wasn't expecting it to beat a desktop graphics card. The difference in wattage going to each of these chips is insane! However, the Spark does get impressively close here.</p><h2 id="ending-the-macbook-dilemma">Ending the MacBook dilemma</h2><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.29%;"><img id="9AdEEzfzTc2yMr8BQhy2XC" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/9AdEEzfzTc2yMr8BQhy2XC-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1441" attribution="" endorsement="" 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 years, creatives have carried a MacBook Pro for work and a separate system for gaming. Either its a gaming tower at home, a second gaming laptop or a handheld. The Surface Laptop Ultra ends that compromise, and that comes courtesy of the fact that GPU bolted onto RTX Spark is a real monster.</p><div ><table><thead><tr><th class="firstcol " ><p>Chip</p></th><th  ><p>Photoshop PugetBench score</p></th><th  ><p>Premiere Pro PugetBench score</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Microsoft Surface Laptop Ultra (RTX Spark)</strong></p></td><td  ><p>11762</p></td><td  ><p>87098</p></td></tr><tr><td class="firstcol " ><p><strong>MacBook Pro 16-inch (M5 Pro)</strong></p></td><td  ><p>15204</p></td><td  ><p>105580</p></td></tr><tr><td class="firstcol " ><p><strong>Asus ProArt PX13 GoPro Edition (AMD Ryzen AI Max 395+)</strong></p></td><td  ><p>11077</p></td><td  ><p>52945</p></td></tr><tr><td class="firstcol " ><p><strong>Asus Zenbook Duo (Intel Core Ultra X9)</strong></p></td><td  ><p>8823</p></td><td  ><p>51726</p></td></tr></tbody></table></div><p>M5 Pro does pull quite a lead in terms of Adobe Creative Suite workloads, but, you can get supreme gaming here. Numbers-wise, this is close to an RTX 5070 gaming laptop, which Apple can only dream of.</p><div ><table><thead><tr><th class="firstcol " ><p>3DMark test</p></th><th  ><p>Microsoft Surface Laptop Ultra (RTX Spark)</p></th><th  ><p>MacBook Pro 16-inch (M5 Pro)</p></th><th  ><p>Asus ProArt PX13 GoPro Edition (AMD Ryzen AI Max 395+)</p></th><th  ><p>Asus Zenbook Duo (Intel Core Ultra X9)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Fire Strike Ultra (x64)</strong></p></td><td  ><p>7492</p></td><td  ><p>n/a</p></td><td  ><p>6050</p></td><td  ><p>3555</p></td></tr><tr><td class="firstcol " ><p><strong>Time Spy Extreme (x64)</strong></p></td><td  ><p>6060</p></td><td  ><p>n/a</p></td><td  ><p>4689</p></td><td  ><p>3226</p></td></tr><tr><td class="firstcol " ><p><strong>Steel Nomad</strong></p></td><td  ><p>2912</p></td><td  ><p>2335</p></td><td  ><p>1895</p></td><td  ><p>1483</p></td></tr><tr><td class="firstcol " ><p><strong>Solar Bay Extreme</strong></p></td><td  ><p>10594</p></td><td  ><p>9108</p></td><td  ><p>6047</p></td><td  ><p>4015</p></td></tr></tbody></table></div><p>Apple's GPU is strong, but it doesn't have the game support that Windows does. Throw in the vast improvements to prism emulation that support anti-cheat software for multiplayer games, and this becomes an enticing option for working by day and playing by night.</p><p>Even before any upscaling tech, it’s a night and day difference in the gaming department. Throw in RTX technologies and it’s a runaway victory.</p><div ><table><tbody><tr><td class="firstcol " ><p><strong>Game</strong></p></td><td  ><p><strong>Microsoft Surface Laptop Ultra (RTX Spark)</strong></p></td><td  ><p><strong>RTX 5060 laptop GPU</strong></p></td><td  ><p><strong>RTX 5070 laptop GPU</strong></p></td><td  ><p><strong>RTX 5090 laptop GPU</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Cyberpunk 2077 1080p Extreme + RT DLSS</strong></p></td><td  ><p>80 FPS</p></td><td  ><p>31 FPS</p></td><td  ><p>81 FPS</p></td><td  ><p>182 FPS</p></td></tr><tr><td class="firstcol " ><p><strong>Black Myth: Wukong (1080p Cinematic NO DLSS)</strong></p></td><td  ><p>36 FPS</p></td><td  ><p>24 FPS</p></td><td  ><p>30 FPS</p></td><td  ><p>65 FPS</p></td></tr></tbody></table></div><p>Oh, and that whole other thing MacBooks did well — running as fast both on and off the charger — yea, the Surface Laptop Ultra does that too.</p><div ><table><thead><tr><th class="firstcol " ><p>3DMark test</p></th><th  ><p>Plugged in</p></th><th  ><p>Unplugged (Best performance)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Fire Strike Ultra (x64)</strong></p></td><td  ><p>7492</p></td><td  ><p>7970</p></td></tr><tr><td class="firstcol " ><p><strong>Time Spy Extreme (x64)</strong></p></td><td  ><p>6060</p></td><td  ><p>5897</p></td></tr><tr><td class="firstcol " ><p><strong>Steel Nomad</strong></p></td><td  ><p>2912</p></td><td  ><p>3160</p></td></tr><tr><td class="firstcol " ><p><strong>Solar Bay Extreme</strong></p></td><td  ><p>10594</p></td><td  ><p>10900</p></td></tr></tbody></table></div><h2 class="article-body__section" id="section-microsoft-surface-laptop-ultra-the-downs"><span>Microsoft Surface Laptop Ultra: The downs</span></h2><p>Nvidia’s first foray into an all-in-one chip isn’t without some issues. The laptop’s not the problem, but rather a couple cracks in the armor and defining who RTX Spark is actually for.</p><h2 id="the-macbook-pro-reality-check">The MacBook Pro reality 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:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="5jsbAXhogUzmnuzcd5jTCR" name="MacBook Pro 16-inch M5 Pro review-LIST" alt="MacBook Pro 16-inch M5 Pro on a desk" src="https://cdn.mos.cms.futurecdn.net/5jsbAXhogUzmnuzcd5jTCR-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>A lot of folks came into the RTX Spark launch hoping for it to be a MacBook Pro killer. If you measure by the CPU, creator performance and battery life, it isn’t.</p><div ><table><thead><tr><th class="firstcol " ><p>Chip</p></th><th  ><p>Geekbench 7 single-core</p></th><th  ><p>Geekbench 7 multi-core</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Nvidia RTX Spark (20-core CPU)</strong></p></td><td  ><p>2604</p></td><td  ><p>23610</p></td></tr><tr><td class="firstcol " ><p><strong>Apple M5 Pro</strong></p></td><td  ><p>3690</p></td><td  ><p>29659</p></td></tr><tr><td class="firstcol " ><p><strong>Qualcomm Snapdragon X2 Elite Extreme</strong></p></td><td  ><p>3214</p></td><td  ><p>23645</p></td></tr><tr><td class="firstcol " ><p><strong>AMD Ryzen AI Max 395+</strong></p></td><td  ><p>2407</p></td><td  ><p>20856</p></td></tr><tr><td class="firstcol " ><p><strong>Intel Core Ultra x9 388H</strong></p></td><td  ><p>2574</p></td><td  ><p>17223</p></td></tr></tbody></table></div><p>In multi-core metrics, the Nvidia chip in here performs at the top of its class for Windows laptops, but the M5 Pro does peek ahead. </p><p>And the same can be said for creative tasks like transcoding video or working across Photoshop or Premiere Pro, as you saw above. It does end the MacBook dilemma as I mentioned above, but if you have a specific use case, you’ll get faster speeds by going for Apple here.</p><p>And then there’s that stamina portion of things. Don’t get me wrong — the claim of “all day battery life” is technically true, but Surface Laptop Ultra barely touches the sides of the efficiency of Apple silicon.</p><div ><table><thead><tr><th class="firstcol " ><p>Chip (laptop)</p></th><th  ><p>Web browsing battery life test result (hh:mm)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>RTX Spark (Microsoft Surface Laptop Ultra)</strong></p></td><td  ><p>10:15</p></td></tr><tr><td class="firstcol " ><p><strong>M5 Pro (16-inch MacBook Pro)</strong></p></td><td  ><p>21:25</p></td></tr><tr><td class="firstcol " ><p><strong>Snapdragon X2 Elite (Zenbook A16)</strong></p></td><td  ><p>10:26</p></td></tr><tr><td class="firstcol " ><p><strong>Intel Core Ultra X9 (Asus Zenbook Duo one screen)</strong></p></td><td  ><p>14:23</p></td></tr><tr><td class="firstcol " ><p><strong>AMD Ryzen AI Max 395+ (ProArt Go Pro Edition PX13)</strong></p></td><td  ><p>11:12</p></td></tr></tbody></table></div><p>When it comes to gaming, at just over 1.5 hours, you can think of your RTX Spark running at full pelt in AAA titles (or AI tasks) lasting just a little bit longer than your standard issue gaming laptop. </p><p>The performance overall is impressive (if you know what to do with it…more on that in a bit), but make sure you bring that 140W charger with you.</p><h2 id="popping-the-hype-bubble-with-a-few-reality-checks">Popping the hype bubble with a few reality checks</h2><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="ftiLGugNDsBVyPeH7jMitd" name="Microsoft Surface Laptop Ultra" alt="Microsoft Surface Laptop Ultra" src="https://cdn.mos.cms.futurecdn.net/ftiLGugNDsBVyPeH7jMitd-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’ll be upfront. This laptop is not for everyone. An RTX 50-series gaming laptop could do a lot of what you see here, and if gaming isn’t your main focus, a MacBook Pro could be the move. </p><p>So let’s get down to brass tacks here with some reality checks on who this is for:</p><ul><li><strong>The big differentiator is unified memory: </strong>With one giant pool of memory to share across all the internals, that’s capable of running far larger local AI models than your standard gaming laptop.</li><li><strong>The Nvidia advantage in AI: </strong>Thanks to the AI software stack being almost overwhelmingly Nvidia-optimized, you’ll get the fastest local performance of any laptop.</li><li><strong>The PixelSense mini LED display: </strong>It's bright and color accurate, but it lacks the pop of OLED RTX Spark options like the <a href="https://www.tomsguide.com/computing/laptops/hp-omnibook-ultra-16-review">Asus ProArt P16</a> or the <a href="https://www.tomsguide.com/computing/laptops/hp-omnibook-ultra-16-review">HP OmniBook Ultra 16</a>.</li></ul><p>Of course, I can talk about this being the everything machine it is, but when you break down the big things that give RTX Spark the edge here in any buying decision, it starts to level the market in your mind and give clarity to who should buy this.</p><p><strong>If you are an AI enthusiast/developer, or you’re keen to jump into the field of agentic AI/AI creative, </strong>this is the laptop for you.</p><p><strong>If you want good gaming on-the-go, </strong>a gaming laptop is the way to go.</p><p><strong>If you want portable creator performance, </strong>the MacBook Pro reigns supreme.</p><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="6aNk3jfBjVCsSGZLkH7JZg" name="Nvidia RTX Spark for a week3" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/6aNk3jfBjVCsSGZLkH7JZg-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><p>The Spark does touch on all these things, and it does them well. But at those kinds of prices? If you have clear intentions around what work you’re doing but nothing specific in mind for embracing AI agents (as you’ll see from some of our reviews), this is an investment you may regret.</p><h2 class="article-body__section" id="section-microsoft-surface-laptop-ultra-verdict"><span>Microsoft Surface Laptop Ultra: 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="8BMgPRQSUFFHjzxrFkyUmC" name="Microsoft Surface Laptop Ultra" alt="Microsoft Surface Laptop Ultra" src="https://cdn.mos.cms.futurecdn.net/8BMgPRQSUFFHjzxrFkyUmC-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 Surface Laptop Ultra is a remarkable piece of hardware. The utilitarian design, brilliantly clever magnetic USB-C port and communicative haptic touchpad prove that Microsoft’s hardware engineering is operating at the highest level.</p><p>And as it should, because the RTX Spark chip inside is a bit of a breakthrough for the local agentic future of computing, as well as a monster for creators, developers and gamers alike.</p><p>But to be clear: this isn’t a MacBook Pro killer. You’ll notice that in CPU and battery life. Instead the sheer force of that chip and unified memory makes it a weapon for pro workloads — housed in a mean-looking chassis.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I tested the Asus ProArt P16 with Nvidia RTX Spark and it's the ultimate AI creator laptop (with a price to match) ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Nvidia's RTX Spark chip has been my most anticipated product of the year, and now, it's finally landed in laptops. With RTX graphics to power through 3D work, video and even a side of gaming, along with Team Green's CUDA stack to run AI models and agents locally, what better way to show this off than on a creator-focused laptop: the Asus ProArt P16 with RTX Spark. </p><p>Carrying on its legacy of being an AI-infused laptop for creatives from the <a href="https://www.tomsguide.com/computing/laptops/asus-proart-p16-review" target="_blank">ProArt P16 2025</a>, this ProArt P16 steps up and delivers an even sleeker, lightweight 16-inch machine with greater battery life and an OLED touchscreen (finally) featuring a smooth 120Hz refresh rate. Along with its varied selection of ports, including an SD card reader, this laptop is geared up to be the ultimate portable notebook for photo and video editing, creative work and more.</p><p>More than anything, though, the main draw here is its capabilities for running your own on-device AI agent. No subscriptions or prompt fees here, just an assistant that can adapt to your routines (after a few goes). It's wicked to see in action, and while the Asus- exclusive StoryCube and MuseTree apps are fun to check out, I imagine video editors, 3D designers, game developers and coders will go beyond this to take full advantage of this chip, with apps like Hermes Agent. This has up to a whopping 128GB of RAM to power it all, after all!</p><p>But it will take <strong>a lot</strong> out of wallets, and its premium standard won't be worth the creative power it boasts unless you're an AI power user or a 3D creative. It's also worth noting that this is Windows on Arm, meaning apps and games can either run natively or through Microsoft's Prism emulation, so some may not run exactly as expected (even though <a href="https://www.windowscentral.com/hardware/laptops/nvidia-ceo-jensen-huang-promises-new-rtx-spark-windows-on-arm-chips-will-run-every-windows-app-ever-made" target="_blank">Nvidia CEO Jensen Huang says</a> "every single application that Windows has ever run" will work). Oh, and it can still get quite loud when put under pressure and a little hot. </p><p>While it's certainly one of the <a href="https://www.tomsguide.com/best-picks/best-ai-laptop">best AI laptops</a>, it's no MacBook Pro killer when it comes to pure performance. But when it comes to AI, it shines in a different way. </p><h3 class="article-body__section" id="section-asus-proart-p16-rtx-spark-review-cheat-sheet"><span>Asus ProArt P16 (RTX Spark) review: Cheat sheet</span></h3><ul><li><strong>What is it?</strong> An elite creator laptop with Nvidia's RTX Spark N1X chip for 3D creative work and local AI tasks.</li><li><strong>Who is it for?</strong> Power users looking for a slim, lightweight machine for 4K (and beyond) video editing, 3D graphics work, game design, coding, and to utilize local AI agents.</li><li><strong>What does it cost?</strong> Prepare your wallet. The Asus ProArt P16 (RTX Spark) is available for <a href="https://www.bestbuy.com/product/asus-proart-p16-16-4k-oled-touchscreen-laptop-nvidia-rtx-spark-n1x-18-core-2026-24gb-memory-512gb-storage-nano-black/JJGHGSKG3Y" target="_blank" rel="nofollow">$2,799 in the U.S. at Best Buy</a> and <a href="https://www.currys.co.uk/products/asus-proart-p16-oled-16-laptop-nvidia-rtx-spark-24-gb-ram-1-tb-ssd-neo-white-10307660.html" target="_blank" rel="nofollow">£3,099 in the U.K. at Currys</a>, and that's just the starting prices. <a href="https://www.asus.com/uk/laptops/for-creators/proart/proart-p16-h7607/" target="_blank" rel="nofollow">Asus' official website</a> notes prices starting at $4,399 / £3,899, but you can find it for less at third-party retailers. For the highest spec? Expect to pay <a href="https://eshop.asus.com/us/31150-us-cnf-auto.html" target="_blank" rel="nofollow">$6,999</a> / <a href="https://www.currys.co.uk/products/asus-proart-p16-oled-16-laptop-nvidia-rtx-spark-n1x-128-gb-ram-2-tb-ssd-nano-black-10306503.html" target="_blank" rel="nofollow">£5,999</a>.</li><li><strong>What do we like?</strong> Its superb performance across the board (from speedy local AI tasks to gaming), the still-gorgeous 16-inch OLED display now with a smooth 120Hz refresh rate, battery life that actually lasts and great port selection for creators — all wrapped up in a slick, premium design.</li><li><strong>What don’t we like?</strong> This is a <em>huge</em> investment with AI in focus, so know what to take advantage of with this chip. And this can get loud and a little hot when pushed.</li></ul><h3 class="article-body__section" id="section-asus-proart-p16-rtx-spark-review-specs"><span>Asus ProArt P16 (RTX Spark) review: Specs</span></h3><div ><table><thead><tr><th class="firstcol empty" ></th><th  ><p><strong>Asus ProArt P16 (RTX Spark) (starting)</strong></p></th><th  ><p><strong>Asus ProArt P16 (RTX Spark) (tested)</strong></p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p><a href="https://www.bestbuy.com/product/asus-proart-p16-16-4k-oled-touchscreen-laptop-nvidia-rtx-spark-n1x-2026-24gb-memory-512gb-storage-copilot-pc-nano-black/JJGHGSKG3Y" target="_blank" rel="nofollow">$2,799</a> / <a href="https://www.currys.co.uk/products/asus-proart-p16-oled-16-laptop-nvidia-rtx-spark-n1x-32-gb-ram-1-tb-ssd-nano-black-10306500.html" target="_blank" rel="nofollow">£3,299</a></p></td><td  ><p><a href="https://eshop.asus.com/us/31150-us-cnf-auto.html" target="_blank" rel="nofollow">$6,999</a> / <a href="https://www.currys.co.uk/products/asus-proart-p16-oled-16-laptop-nvidia-rtx-spark-n1x-128-gb-ram-2-tb-ssd-nano-black-10306503.html" target="_blank" rel="nofollow">£5,999</a></p></td></tr><tr><td class="firstcol " ><p><strong>CPU</strong></p></td><td  ><p>Nvidia RTX Spark N1X (18-core)</p></td><td  ><p>Nvidia RTX Spark N1X (20-core)</p></td></tr><tr><td class="firstcol " ><p><strong>GPU</strong></p></td><td  ><p>Nvidia RTX Spark N1X (5120-core)</p></td><td  ><p>Nvidia RTX Spark N1X (6144-core)</p></td></tr><tr><td class="firstcol " ><p><strong>Display</strong></p></td><td  ><p>16-inch UHD+ (3840 x 2400) OLED touchscreen | 120Hz</p></td><td  ><p>16-inch UHD+ (3840 x 2400) OLED touchscreen | 120Hz</p></td></tr><tr><td class="firstcol " ><p><strong>Memory</strong></p></td><td  ><p>24GB LPDDR5X</p></td><td  ><p>128GB LPDDR5X</p></td></tr><tr><td class="firstcol " ><p><strong>Storage</strong></p></td><td  ><p>512GB</p></td><td  ><p>2TB</p></td></tr><tr><td class="firstcol " ><p><strong>Ports</strong></p></td><td  ><p>3x USB-C 4 Gen 3, 1x USB-A 3.2 Gen 2, 1x HDMI 2.1, 1x SD card reader, 1x 3.5mm audio jack </p></td><td  ><p>3x USB-C 4 Gen 3, 1x USB-A 3.2 Gen 2, 1x HDMI 2.1, 1x SD card reader, 1x 3.5mm audio jack </p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>Wi-Fi 7, Bluetooth 5.4</p></td><td  ><p>Wi-Fi 7, Bluetooth 5.4</p></td></tr><tr><td class="firstcol " ><p><strong>Size</strong></p></td><td  ><p>13.9 x 9.5 x 0.5 ~ 0.6 inches</p></td><td  ><p>13.9 x 9.5 x 0.5 ~ 0.6 inches</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>3.9 pounds</p></td><td  ><p>3.9 pounds</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-asus-proart-p16-rtx-spark-review-the-ups"><span>Asus ProArt P16 (RTX Spark) review: The ups</span></h3><p>The Asus ProArt P16 with RTX Spark takes the wins of its last-gen model and makes some welcome refinements, too, leading to a thin, premium laptop that's made for creativity, AI and some gaming. </p><h2 id="slim-light-and-ready-to-move">Slim, light and ready to move</h2><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="LJFZwcRDpBvWTc5cNkS8u9" name="Asus ProArt P16 RTX Spark" alt="Asus ProArt P16 (RTX Spark) laptop" src="https://cdn.mos.cms.futurecdn.net/LJFZwcRDpBvWTc5cNkS8u9-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>Look familiar? This should, as the Asus ProArt P16 sports a near-identical utilitarian aluminum design as its predecessor. But this time, it's thinner and lighter than ever, and actually undercuts the MacBook Pro this time. </p><p>Coming in at 13.9 x 9.5 x 0.5 ~ 0.6 inches and weighing 3.9 pounds, this is the slimmest ProArt to date, and it's likely thanks to the laptop having just an RTX Spark chip rather than a laptop GPU fitted under the hood, too. Compared to the previous P16, which is 0.7 inches and weighs 4.1 pounds, it's not a major change, but those small tweaks to the design make it that much more portable and easier to slip into a bag. More so than the MacBook Pro now, at 0.6 inches and 4.7 pounds. </p><p>It's a premium machine, from the way it looks to the way it feels, while still being subtle enough to use anywhere, whether that be at the office or a coffee shop. To me, it isn't too far off the slick style of a <a href="https://www.tomsguide.com/computing/gaming-laptops/razer-blade-16-2026-review">Razer Blade 16</a>, and I mean that as a huge compliment. The ProArt P16 comes in two colorways, including Nano Black and Neo White, and you'll be happy to know the former delivers a fingerprint-resistant finish. </p><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="MvSKHcQUdoDJUexCcWyEq9" name="Asus ProArt P16 RTX Spark" alt="Asus ProArt P16 (RTX Spark) laptop" src="https://cdn.mos.cms.futurecdn.net/MvSKHcQUdoDJUexCcWyEq9-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>Another highlight is the backlit chiclet keyboard with 1.7mm key travel, which is comfortable and speedy to type on, along with a big haptic touchpad that feels punchy and accurate to the touch. But unlike the last-gen model, there's no DialPad here, which was a handy way to access different shortcuts, apps or functions right on the touchpad. It's a shame, especially for creative tools, which some will surely miss.</p><p>A good port selection will always be appreciated, and the ProArt P16 delivers. With three USB 4 ports that support displays and power delivery up to 40Gbps (any can be used for the 140W USB-C charger), one USB-A for peripherals, an HDMI output and even a headphone jack, there's plenty of connectivity here. And it wouldn't be a creator laptop without an SD card reader, so it's a good thing it has one. </p><h2 id="it-has-rtx-spark">It has (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="vK9xmG6WdjLJK3HrBHWtn9" name="Asus ProArt P16 RTX Spark" alt="Asus ProArt P16 (RTX Spark) laptop" src="https://cdn.mos.cms.futurecdn.net/vK9xmG6WdjLJK3HrBHWtn9-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>The Asus ProArt 16's headline event is easily Nvidia's RTX Spark N1X chip, boasting a 20-core CPU and (get this) a 6144-core GPU, thanks to the tensor cores stuffed inside. There is another RTX Spark N1X processor featuring an 18-core CPU and a 5120-core GPU available on more affordable ProArt 16 models, too, which confusingly has the same name. Be sure to watch out for that. </p><p>Our review unit comes with the 20-core RTX Spark N1X variant, 128GB of DDR5X RAM and 2TB of storage. With that kind of power under the hood, especially that RAM, it's like sitting on a goldmine. It's the type of high-level specs you'd find on a <a href="https://www.tomsguide.com/computing/macbooks/macbook-pro-16-inch-m5-pro-review" target="_blank">MacBook Pro with M5 Pro</a>, an <a href="https://www.tomsguide.com/computing/laptops/i-played-on-the-kojima-edition-asus-rog-flow-z13-and-this-2-in-1-gaming-tablet-belongs-in-a-museum" target="_blank">Asus ROG Flow Z13</a> with an AMD Ryzen AI Max+ 395 chip, and even the previous <a href="https://www.tomsguide.com/computing/laptops/asus-proart-p16-review" target="_blank">Asus ProArt P16</a> with an AMD Ryzen AI 9 HX 370 <em>and </em>RTX 4070 GPU (but the latest model now comes with double the memory). </p><p>To cut to the chase, it's a beast. It is incredible what a single superchip can accomplish when it comes to complex <em>local </em>AI workloads, handling 3D creative work and playing the latest PC titles at stable frame rates. To have this running in a thin-and-light 16-inch laptop with actual<em> </em>respectable battery life is a huge triumph. Well, the 128GB of RAM on this review unit definitely helps, too. </p><p>In testing, though, it's harder to reflect this. Nvidia notes that in many tests, including Geekbench and 3DMark, the numbers don't reflect the performance of the chip. Even in Geekbench AI, Team Green states that the numbers will be obsolete due to deprecated DirectML, and some games couldn't boot (but there was an exciting workaround). </p><p>Regardless, here's a look. </p><div ><table><caption>Performance benchmarks</caption><thead><tr><th class="firstcol empty" ></th><th  ><p>Asus ProArt 16 (Nvidia RTX Spark N1X)</p></th><th  ><p>Asus ProArt P16 <strong>(</strong>AMD Ryzen AI 9 HX 370)</p></th><th  ><p><strong>Apple MacBook Pro (M5 Pro)</strong></p></th><th  ><p>Asus ROG Flow Z13 (AMD Ryzen AI Max+ 395)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Geekbench (single/multi-core)</strong></p></td><td  ><p>2704 / 23595</p></td><td  ><p>2872 / 15343</p></td><td  ><p>4306 / 28586</p></td><td  ><p>2905 / 18726</p></td></tr><tr><td class="firstcol " ><p><strong>Handbrake (mins:secs)</strong></p></td><td  ><p>02:06</p></td><td  ><p>03:30</p></td><td  ><p>01:45</p></td><td  ><p>02:45</p></td></tr></tbody></table></div><p>Despite the warnings, the RTX Spark N1X still shows impressive high-end figures. Apple's <a href="https://www.tomsguide.com/computing/macbooks/macbook-pro-16-inch-m5-pro-review">MacBook Pro M5 Pro</a> still wipes the floor, and it's not the strongest when it comes to single-core performance, but there's a significant uplift everywhere else. The last-gen <a href="https://www.tomsguide.com/computing/laptops/asus-proart-p16-review">ProArt P16</a> with its powerful AMD Ryzen AI 9 HX 370 and <a href="https://www.tomsguide.com/computing/laptops/i-played-on-the-kojima-edition-asus-rog-flow-z13-and-this-2-in-1-gaming-tablet-belongs-in-a-museum">Asus ROG Flow Z13</a> with a similar Ryzen AI Max+ 395 chip can't touch multi-core performance, and for creators, our Handbrake test, which transcodes a 4K video to 1080p, shows the ProArt P16 with RTX Spark cuts times drastically. </p><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="qvQ6nwPaoN2RYQAMtXy2s9" name="Asus ProArt P16 RTX Spark" alt="Asus ProArt P16 (RTX Spark) laptop" src="https://cdn.mos.cms.futurecdn.net/qvQ6nwPaoN2RYQAMtXy2s9-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>What about for 3D work? There's no better way of testing this than in games. After playing <a href="https://www.tomsguide.com/reviews/cyberpunk-2077-phantom-liberty">Cyberpunk 2077</a> on Ray Tracing: Ultra settings and seeing around 30 FPS at 4K, and bumping that up to 115 FPS with DLSS with frame generation, yeah — this machine can game. </p><div ><table><caption>Gaming benchmarks</caption><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>Asus ProArt 16 (Nvidia RTX Spark N1X)</strong></p></td><td  ><p><strong>Asus ProArt P16 (RTX 4070)</strong></p></td><td  ><p><strong>Apple MacBook Pro (M5 Pro)</strong></p></td><td  ><p><strong>Asus ROG Flow Z13 (AMD Ryzen AI Max+ 395)</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Cyberpunk 2077 (4K)</strong></p></td><td  ><p>25 FPS</p></td><td  ><p>N/A</p></td><td  ><p>24 FPS</p></td><td  ><p>7.2 FPS (1600p)</p></td></tr><tr><td class="firstcol " ><p><strong>Borderlands 3 (1080p)</strong></p></td><td  ><p>97.1 FPS</p></td><td  ><p>91.2 FPS</p></td><td  ><p>60.5 FPS</p></td><td  ><p>58.2 FPS</p></td></tr></tbody></table></div><p>The chips' RTX graphics (and 6144-core GPU) clearly shine, even beating the numbers of a dedicated RTX 4070 GPU in the previous model. How impressive is that? Now, while this P16's UHD+ OLED display is a visual treat for gaming, I prefer performance, so I was often playing games at lower resolutions for those higher frame rates without heavily relying on Nvidia's frame generation. </p><p>The ProArt P16 can breeze through anything I throw at it, and for those complex 4K video edits, 3D design or development, this machine can handle it (as it should, considering its price). </p><p>But when it comes to working with local AI agents, this is where the RTX spark truly shines (more on this later). </p><h2 id="a-display-for-creatives">A display for creatives</h2><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="xMqP4Qac97cYGHi5UNCWt9" name="Asus ProArt P16 RTX Spark" alt="Asus ProArt P16 (RTX Spark) laptop" src="https://cdn.mos.cms.futurecdn.net/xMqP4Qac97cYGHi5UNCWt9-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>Asus strikes again with an absolutely gorgeous 4K OLED touchscreen that any creator will appreciate, and I would say it's one of the best touchscreens you can find on a laptop. </p><p>The Asus ProArt P16's 16-inch UHD+ (3840 x 2400) OLED touchscreen features all the perks from its last model, including a productivity-friendly 16:10 aspect ratio. You'll find an ultra-bright 1,600 nits of peak brightness (and this shows), an anti-reflective coating, along with a flood of colors and deep blacks in anything you view. For touching up images in Photoshop with a touch and simply watching shows, this screen is a treat for the eyes. Plus, while there's no stylus included, you'll find this screen does support it. </p><p>Thankfully, there is one welcome upgrade I'm happy to see: a 120Hz refresh rate with a 0.2ms response time. No more being limited to a 60Hz screen, as the ProArt P16 now delivers ultra-smooth motion. That complements creative work, but it's even better for gaming.</p><p>Gearing up for "<a href="https://www.tomsguide.com/entertainment/movies/forget-marvel-fatigue-i-counted-5-hidden-details-in-the-avengers-doomsday-trailer-that-made-me-scream">Avengers: Doomsday</a>," I watched "<a href="https://www.tomsguide.com/entertainment/disney-plus/visionquest-premiere-review-theres-a-lot-more-to-this-wandavision-follow-up-than-i-expected">VisionQuest</a>" on Disney+ and was blown away by the array of bright colors surrounding Vision as a house in a bright green space was being digitally constructed in front of him. As ever, the ProArt P16's OLED display is one to beat. </p><h2 id="battery-life-that-lasts">Battery life that lasts</h2><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="t8PNKUmAosdDb7kvNyjJt9" name="Asus ProArt P16 RTX Spark" alt="Asus ProArt P16 (RTX Spark) laptop" src="https://cdn.mos.cms.futurecdn.net/t8PNKUmAosdDb7kvNyjJt9-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>The Asus ProArt P16 is a powerful machine with an OLED display and plenty of gaming potential. Usually, that translates to the kind of battery life that is in dire need of an outlet way too often, as the <a href="https://www.tomsguide.com/best-picks/best-gaming-laptops">best gaming laptops</a> can attest. But that's not the case here.</p><p>Using our battery test, which involves web surfing and streaming video at 150 nits of screen brightness, the ProArt P16 with RTX Spark lasted 12 hours and 26 minutes. That's well past a full working day, and an amazing effort from a machine with the power it packs!</p><div ><table><caption>Battery life results</caption><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>Battery life (hh:mm)</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Asus ProArt 16 (RTX Spark)</strong></p></td><td  ><p>12:26</p></td></tr><tr><td class="firstcol " ><p><strong>Asus ProArt P16 (AMD Ryzen AI 9 HX 370)</strong></p></td><td  ><p>09:32</p></td></tr><tr><td class="firstcol " ><p><strong>Apple MacBook Pro (M5 Pro)</strong></p></td><td  ><p>21:25</p></td></tr><tr><td class="firstcol " ><p><strong>Asus ROG Flow Z13 (AMD Ryzen AI Max+ 395)</strong></p></td><td  ><p>10:27</p></td></tr></tbody></table></div><p>No, this is nowhere near MacBook Pro levels of battery life, nor is it close to what Intel's Panther Lake chip offers in the <a href="https://www.tomsguide.com/computing/laptops/dell-xps-14-2026-review">Dell XPS 14 (2026)</a> at over 20 hours. Still, it makes traveling and using the ProArt P16 far more realistic this time around, with enough juice to power through the day and have a little leftover in the evenings. </p><h3 class="article-body__section" id="section-asus-proart-p16-rtx-spark-review-the-downs"><span>Asus ProArt P16 (RTX Spark) review: The downs</span></h3><p>The Asus ProArt P16 with its RTX Spark N1X has many exciting features, but its price is not one of them. That alone narrows down who this will be for, and you'll want to make full use of its effectiveness in AI to make the most of what you're getting here. </p><h2 id="some-limits">Some limits </h2><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="mU7fzDCXYbGkqUmJ2Yp5t9" name="Asus ProArt P16 RTX Spark" alt="Asus ProArt P16 (RTX Spark) laptop" src="https://cdn.mos.cms.futurecdn.net/mU7fzDCXYbGkqUmJ2Yp5t9-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>I wouldn't necessarily call this a "down," more like a change in perspective. The RTX Spark N1X is built for local AI and agents, and that means running LLMs and the like without limits. No tokens or per-prompt payments; data and automated processes that are yours and work for your routine. </p><p>That's an extremely useful tool to have in your pocket. That is, if you know what you want to use it for. For video editors automating time-consuming assembly tasks or finding highlights in long-form cuts, and developers using an agent to write volumes of code, the RTX Spark in the P16 brings that power on the go. For others, they may not have any use for it beyond writing up drafts, finding specific files, summarizing documents or simply having fun with it. </p><p>But if you're looking to take advantage of AI, you can see how the RTX Spark N1X can be an effective way of being productive and simplifying tasks you have no idea where to start with. </p><p>A great example: I was trying to play Red Dead Redemption 2, but it would crash every time I booted it up. I had no idea what the problem was, so I asked my Hermes Agent to see what was wrong and fix the problem. </p><p>It said everything on the setup side looked healthy, and asked exactly what was happening when I launched the game. At that point, I had gone to make a coffee, so the question timed out. But then, Hermes just went deeper into the issue anyway, and came back with:</p><p>"I found that RDR2 has been running in Vulkan mode, which is a known issue on the new ARM Blackwell GPU with driver 617.42. I'll switch the API to DirectX 12 in the config, back it up first, and launch the game to test the fix."</p><p>And then, <em>voilà! </em>It started running without any problems. It may have taken me a trip to Google, a look through Reddit posts and some tinkering of my own to figure this out, but if something didn't quite work right, I would have just left Red Dead Redemption 2 unplayed. </p><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="JNgHvMgZxV3uNywvvgcpp9" name="Asus ProArt P16 RTX Spark" alt="Asus ProArt P16 (RTX Spark) laptop" src="https://cdn.mos.cms.futurecdn.net/JNgHvMgZxV3uNywvvgcpp9-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>That's an amazing way to quickly solve a problem. Now, I tried the same with Forza Horizon 6, which kept saying "Invalid Gaming Services Detected" and that I need to update "Gaming Services." Hermes couldn't quite solve that one, but a little tinkering and direction would have pointed it in the right direction. </p><p>Asus' exclusive MuseTree and StoryCube apps make a return, too, and these are a great way to start generating and visualizing ideas, plans and even turn simple text or drawings into full-blown videos (like my terribly drawn stickman that turned into an animation). I got more out of Hermes, but these are nice apps to have to express creativity. </p><p>With tasks like that, I can imagine making full use of an AI agent to automate tasks and help me here and there, and developers, editors and more could take this even further. But for anything other than AI-focused tasks, there are other laptops out there that have better performance, like the <a href="https://www.tomsguide.com/best-picks/best-macbook">best MacBooks</a>, or that play games better, like the <a href="https://www.tomsguide.com/best-picks/best-gaming-laptops">best gaming laptops</a>. </p><h2 id="hot-under-pressure">Hot under pressure</h2><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="UsLDfWiw3x65itVZAQR7r9" name="Asus ProArt P16 RTX Spark" alt="Asus ProArt P16 (RTX Spark) laptop" src="https://cdn.mos.cms.futurecdn.net/UsLDfWiw3x65itVZAQR7r9-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>It's easy to tell how much power is packed under the hood of the Asus ProArt P16, because you can hear it as soon as an AI agent starts processing a prompt or a game is booted up. </p><p>In all fairness, when it comes to general tasks such as browsing the web, writing up documents or watching shows, the laptop is dead silent. But when I started using the Hermes Agent to ask simple questions, the fans start whirring and slowly taking off as it starts to process what's been asked. It's not obnoxiously loud, but I wouldn't call this laptop "stealthy."</p><p>I also noticed it getting a little hot towards the keyboard area. That's likely due to the laptop's design, with the keyboard deck drawing in cool air to "maximize fresh air volume inside the chassis." I'd imagine it needs as much cooling as it can get, but this is supposed to keep the keyboard surface "comfortably cool." It's a touch hotter than that when put under pressure, though. </p><h2 id="the-price-of-rtx-power">The price of (RTX) 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="nLqhwp4PNQacP2iMUi3is9" name="Asus ProArt P16 RTX Spark" alt="Asus ProArt P16 (RTX Spark) laptop" src="https://cdn.mos.cms.futurecdn.net/nLqhwp4PNQacP2iMUi3is9-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>Yup, the <a href="https://www.tomsguide.com/computing/ram-price-crisis-2026-everything-you-need-to-know">RAM crisis</a> isn't going anywhere. It's $6,999 / £5,999 for the highest configuration of the Asus ProArt P16 with RTX Spark. You can get three <a href="https://www.tomsguide.com/phones/iphones/iphone-duo-hands-on-apple-nailed-it-and-just-put-everyone-else-on-notice">iPhone Duos</a> and still have $1,000 left over, seven <a href="https://www.tomsguide.com/gaming/playstation/ps5-pro-review">PS5 Pros</a> at their now-increased price — you get the picture. </p><p>Even the base configurations I found, coming in at $2,799 / £3,299, are $500 more than the <em>advanced</em> ProArt P16 we recommended in 2025. And that came with a respectable 32GB of RAM and an RTX 4070! While it's more affordable than a 16-inch MacBook Pro with M5 Pro ($2,999 / £2,999), that still comes with 24GB of RAM and a 1TB SSD (and more performance power, according to the numbers). </p><p>Over the past year, we've seen laptop prices skyrocket, and despite not needing a discrete laptop GPU now, the RTX Spark hasn't made this machine any more affordable. This is a prosumer laptop for a niche group of users, and you really have to know what you're going to use this laptop for to invest in it. </p><h3 class="article-body__section" id="section-asus-proart-p16-rtx-spark-review-verdict"><span>Asus ProArt P16 (RTX Spark) review: Verdict</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:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="QX6FXdULo8XAjrfgi2CUu9" name="Asus ProArt P16 RTX Spark" alt="Asus ProArt P16 (RTX Spark) laptop" src="https://cdn.mos.cms.futurecdn.net/QX6FXdULo8XAjrfgi2CUu9-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>The Asus ProArt P16 is an outstanding laptop for creativity, with its legacy continuing with the might of Nvidia's RTX Spark N1X. With an even slimmer design that's light enough to bring with you anywhere, a knockout OLED touchscreen with amazing brightness and colors, the right ports and battery life that can (finally) get you past a workday and still have juice left, Asus has done its creator laptop justice. </p><p>But are you willing to pay a high price for a laptop that's mainly dedicated to AI? That's the main question to ask yourself. For me, I wouldn't be pushing agents to their limits in my day-to-day to justify the high price, despite seeing its perks. Still, running AI models and agents locally is an impressive feat, and I love that this acts as a competent gaming machine to play the latest PC titles, too. </p><p>If you know that you could fully utilize Nvidia's CUDA and RTX graphics for creative work and beyond, then this laptop should be calling to you. And no, you won't need the top configuration, unless you're sitting on a very stacked wallet. It's one of the <a href="https://www.tomsguide.com/best-picks/best-ai-laptop">best AI laptops</a> around, and it would want to be at the price it's going for. </p> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/laptops/asus-proart-p16-rtx-spark-review</link>
                                                                            <description>
                            <![CDATA[ The Asus ProArt P16 with Nvidia's RTX Spark steps up to the plate as the ultimate laptop for creators, and for the most part, it lives up to expectations. Check out my thoughts after testing one of the first RTX Spark N1X laptops. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">j9soxaoiwbzKvTTCT8K5Jd</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/Gev6unfN9LGT3CUTwdXFq9-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 16 Oct 2026 12:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Laptops]]></category>
                                                    <category><![CDATA[Computing]]></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 Buying Guide Editor and is fascinated by all things bizarre in tech. This usually leads to assorted coverage varying from washing machines designed for earbuds to expert buying advice on the latest laptops. Whether it&amp;#39;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 an interesting angle no matter the subject. &lt;/p&gt;&lt;p&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, tablets, smartwatches, VR headsets, 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&amp;#39;s not checking out the latest devices and updating buying guides with expert advice, 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/Gev6unfN9LGT3CUTwdXFq9-1920-80.jpg">
                                                            <media:credit><![CDATA[Future / Tom&amp;#39;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Asus ProArt P16 (RTX Spark) laptop]]></media:description>                                                            <media:text><![CDATA[Asus ProArt P16 (RTX Spark) laptop]]></media:text>
                                <media:title type="plain"><![CDATA[Asus ProArt P16 (RTX Spark) laptop]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/Gev6unfN9LGT3CUTwdXFq9-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Nvidia's RTX Spark chip has been my most anticipated product of the year, and now, it's finally landed in laptops. With RTX graphics to power through 3D work, video and even a side of gaming, along with Team Green's CUDA stack to run AI models and agents locally, what better way to show this off than on a creator-focused laptop: the Asus ProArt P16 with RTX Spark. </p><p>Carrying on its legacy of being an AI-infused laptop for creatives from the <a href="https://www.tomsguide.com/computing/laptops/asus-proart-p16-review" target="_blank">ProArt P16 2025</a>, this ProArt P16 steps up and delivers an even sleeker, lightweight 16-inch machine with greater battery life and an OLED touchscreen (finally) featuring a smooth 120Hz refresh rate. Along with its varied selection of ports, including an SD card reader, this laptop is geared up to be the ultimate portable notebook for photo and video editing, creative work and more.</p><p>More than anything, though, the main draw here is its capabilities for running your own on-device AI agent. No subscriptions or prompt fees here, just an assistant that can adapt to your routines (after a few goes). It's wicked to see in action, and while the Asus- exclusive StoryCube and MuseTree apps are fun to check out, I imagine video editors, 3D designers, game developers and coders will go beyond this to take full advantage of this chip, with apps like Hermes Agent. This has up to a whopping 128GB of RAM to power it all, after all!</p><p>But it will take <strong>a lot</strong> out of wallets, and its premium standard won't be worth the creative power it boasts unless you're an AI power user or a 3D creative. It's also worth noting that this is Windows on Arm, meaning apps and games can either run natively or through Microsoft's Prism emulation, so some may not run exactly as expected (even though <a href="https://www.windowscentral.com/hardware/laptops/nvidia-ceo-jensen-huang-promises-new-rtx-spark-windows-on-arm-chips-will-run-every-windows-app-ever-made" target="_blank">Nvidia CEO Jensen Huang says</a> "every single application that Windows has ever run" will work). Oh, and it can still get quite loud when put under pressure and a little hot. </p><p>While it's certainly one of the <a href="https://www.tomsguide.com/best-picks/best-ai-laptop">best AI laptops</a>, it's no MacBook Pro killer when it comes to pure performance. But when it comes to AI, it shines in a different way. </p><h3 class="article-body__section" id="section-asus-proart-p16-rtx-spark-review-cheat-sheet"><span>Asus ProArt P16 (RTX Spark) review: Cheat sheet</span></h3><ul><li><strong>What is it?</strong> An elite creator laptop with Nvidia's RTX Spark N1X chip for 3D creative work and local AI tasks.</li><li><strong>Who is it for?</strong> Power users looking for a slim, lightweight machine for 4K (and beyond) video editing, 3D graphics work, game design, coding, and to utilize local AI agents.</li><li><strong>What does it cost?</strong> Prepare your wallet. The Asus ProArt P16 (RTX Spark) is available for <a href="https://www.bestbuy.com/product/asus-proart-p16-16-4k-oled-touchscreen-laptop-nvidia-rtx-spark-n1x-18-core-2026-24gb-memory-512gb-storage-nano-black/JJGHGSKG3Y" target="_blank" rel="nofollow">$2,799 in the U.S. at Best Buy</a> and <a href="https://www.currys.co.uk/products/asus-proart-p16-oled-16-laptop-nvidia-rtx-spark-24-gb-ram-1-tb-ssd-neo-white-10307660.html" target="_blank" rel="nofollow">£3,099 in the U.K. at Currys</a>, and that's just the starting prices. <a href="https://www.asus.com/uk/laptops/for-creators/proart/proart-p16-h7607/" target="_blank" rel="nofollow">Asus' official website</a> notes prices starting at $4,399 / £3,899, but you can find it for less at third-party retailers. For the highest spec? Expect to pay <a href="https://eshop.asus.com/us/31150-us-cnf-auto.html" target="_blank" rel="nofollow">$6,999</a> / <a href="https://www.currys.co.uk/products/asus-proart-p16-oled-16-laptop-nvidia-rtx-spark-n1x-128-gb-ram-2-tb-ssd-nano-black-10306503.html" target="_blank" rel="nofollow">£5,999</a>.</li><li><strong>What do we like?</strong> Its superb performance across the board (from speedy local AI tasks to gaming), the still-gorgeous 16-inch OLED display now with a smooth 120Hz refresh rate, battery life that actually lasts and great port selection for creators — all wrapped up in a slick, premium design.</li><li><strong>What don’t we like?</strong> This is a <em>huge</em> investment with AI in focus, so know what to take advantage of with this chip. And this can get loud and a little hot when pushed.</li></ul><h3 class="article-body__section" id="section-asus-proart-p16-rtx-spark-review-specs"><span>Asus ProArt P16 (RTX Spark) review: Specs</span></h3><div ><table><thead><tr><th class="firstcol empty" ></th><th  ><p><strong>Asus ProArt P16 (RTX Spark) (starting)</strong></p></th><th  ><p><strong>Asus ProArt P16 (RTX Spark) (tested)</strong></p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p><a href="https://www.bestbuy.com/product/asus-proart-p16-16-4k-oled-touchscreen-laptop-nvidia-rtx-spark-n1x-2026-24gb-memory-512gb-storage-copilot-pc-nano-black/JJGHGSKG3Y" target="_blank" rel="nofollow">$2,799</a> / <a href="https://www.currys.co.uk/products/asus-proart-p16-oled-16-laptop-nvidia-rtx-spark-n1x-32-gb-ram-1-tb-ssd-nano-black-10306500.html" target="_blank" rel="nofollow">£3,299</a></p></td><td  ><p><a href="https://eshop.asus.com/us/31150-us-cnf-auto.html" target="_blank" rel="nofollow">$6,999</a> / <a href="https://www.currys.co.uk/products/asus-proart-p16-oled-16-laptop-nvidia-rtx-spark-n1x-128-gb-ram-2-tb-ssd-nano-black-10306503.html" target="_blank" rel="nofollow">£5,999</a></p></td></tr><tr><td class="firstcol " ><p><strong>CPU</strong></p></td><td  ><p>Nvidia RTX Spark N1X (18-core)</p></td><td  ><p>Nvidia RTX Spark N1X (20-core)</p></td></tr><tr><td class="firstcol " ><p><strong>GPU</strong></p></td><td  ><p>Nvidia RTX Spark N1X (5120-core)</p></td><td  ><p>Nvidia RTX Spark N1X (6144-core)</p></td></tr><tr><td class="firstcol " ><p><strong>Display</strong></p></td><td  ><p>16-inch UHD+ (3840 x 2400) OLED touchscreen | 120Hz</p></td><td  ><p>16-inch UHD+ (3840 x 2400) OLED touchscreen | 120Hz</p></td></tr><tr><td class="firstcol " ><p><strong>Memory</strong></p></td><td  ><p>24GB LPDDR5X</p></td><td  ><p>128GB LPDDR5X</p></td></tr><tr><td class="firstcol " ><p><strong>Storage</strong></p></td><td  ><p>512GB</p></td><td  ><p>2TB</p></td></tr><tr><td class="firstcol " ><p><strong>Ports</strong></p></td><td  ><p>3x USB-C 4 Gen 3, 1x USB-A 3.2 Gen 2, 1x HDMI 2.1, 1x SD card reader, 1x 3.5mm audio jack </p></td><td  ><p>3x USB-C 4 Gen 3, 1x USB-A 3.2 Gen 2, 1x HDMI 2.1, 1x SD card reader, 1x 3.5mm audio jack </p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>Wi-Fi 7, Bluetooth 5.4</p></td><td  ><p>Wi-Fi 7, Bluetooth 5.4</p></td></tr><tr><td class="firstcol " ><p><strong>Size</strong></p></td><td  ><p>13.9 x 9.5 x 0.5 ~ 0.6 inches</p></td><td  ><p>13.9 x 9.5 x 0.5 ~ 0.6 inches</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>3.9 pounds</p></td><td  ><p>3.9 pounds</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-asus-proart-p16-rtx-spark-review-the-ups"><span>Asus ProArt P16 (RTX Spark) review: The ups</span></h3><p>The Asus ProArt P16 with RTX Spark takes the wins of its last-gen model and makes some welcome refinements, too, leading to a thin, premium laptop that's made for creativity, AI and some gaming. </p><h2 id="slim-light-and-ready-to-move">Slim, light and ready to move</h2><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="LJFZwcRDpBvWTc5cNkS8u9" name="Asus ProArt P16 RTX Spark" alt="Asus ProArt P16 (RTX Spark) laptop" src="https://cdn.mos.cms.futurecdn.net/LJFZwcRDpBvWTc5cNkS8u9-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>Look familiar? This should, as the Asus ProArt P16 sports a near-identical utilitarian aluminum design as its predecessor. But this time, it's thinner and lighter than ever, and actually undercuts the MacBook Pro this time. </p><p>Coming in at 13.9 x 9.5 x 0.5 ~ 0.6 inches and weighing 3.9 pounds, this is the slimmest ProArt to date, and it's likely thanks to the laptop having just an RTX Spark chip rather than a laptop GPU fitted under the hood, too. Compared to the previous P16, which is 0.7 inches and weighs 4.1 pounds, it's not a major change, but those small tweaks to the design make it that much more portable and easier to slip into a bag. More so than the MacBook Pro now, at 0.6 inches and 4.7 pounds. </p><p>It's a premium machine, from the way it looks to the way it feels, while still being subtle enough to use anywhere, whether that be at the office or a coffee shop. To me, it isn't too far off the slick style of a <a href="https://www.tomsguide.com/computing/gaming-laptops/razer-blade-16-2026-review">Razer Blade 16</a>, and I mean that as a huge compliment. The ProArt P16 comes in two colorways, including Nano Black and Neo White, and you'll be happy to know the former delivers a fingerprint-resistant finish. </p><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="MvSKHcQUdoDJUexCcWyEq9" name="Asus ProArt P16 RTX Spark" alt="Asus ProArt P16 (RTX Spark) laptop" src="https://cdn.mos.cms.futurecdn.net/MvSKHcQUdoDJUexCcWyEq9-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>Another highlight is the backlit chiclet keyboard with 1.7mm key travel, which is comfortable and speedy to type on, along with a big haptic touchpad that feels punchy and accurate to the touch. But unlike the last-gen model, there's no DialPad here, which was a handy way to access different shortcuts, apps or functions right on the touchpad. It's a shame, especially for creative tools, which some will surely miss.</p><p>A good port selection will always be appreciated, and the ProArt P16 delivers. With three USB 4 ports that support displays and power delivery up to 40Gbps (any can be used for the 140W USB-C charger), one USB-A for peripherals, an HDMI output and even a headphone jack, there's plenty of connectivity here. And it wouldn't be a creator laptop without an SD card reader, so it's a good thing it has one. </p><h2 id="it-has-rtx-spark">It has (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="vK9xmG6WdjLJK3HrBHWtn9" name="Asus ProArt P16 RTX Spark" alt="Asus ProArt P16 (RTX Spark) laptop" src="https://cdn.mos.cms.futurecdn.net/vK9xmG6WdjLJK3HrBHWtn9-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>The Asus ProArt 16's headline event is easily Nvidia's RTX Spark N1X chip, boasting a 20-core CPU and (get this) a 6144-core GPU, thanks to the tensor cores stuffed inside. There is another RTX Spark N1X processor featuring an 18-core CPU and a 5120-core GPU available on more affordable ProArt 16 models, too, which confusingly has the same name. Be sure to watch out for that. </p><p>Our review unit comes with the 20-core RTX Spark N1X variant, 128GB of DDR5X RAM and 2TB of storage. With that kind of power under the hood, especially that RAM, it's like sitting on a goldmine. It's the type of high-level specs you'd find on a <a href="https://www.tomsguide.com/computing/macbooks/macbook-pro-16-inch-m5-pro-review" target="_blank">MacBook Pro with M5 Pro</a>, an <a href="https://www.tomsguide.com/computing/laptops/i-played-on-the-kojima-edition-asus-rog-flow-z13-and-this-2-in-1-gaming-tablet-belongs-in-a-museum" target="_blank">Asus ROG Flow Z13</a> with an AMD Ryzen AI Max+ 395 chip, and even the previous <a href="https://www.tomsguide.com/computing/laptops/asus-proart-p16-review" target="_blank">Asus ProArt P16</a> with an AMD Ryzen AI 9 HX 370 <em>and </em>RTX 4070 GPU (but the latest model now comes with double the memory). </p><p>To cut to the chase, it's a beast. It is incredible what a single superchip can accomplish when it comes to complex <em>local </em>AI workloads, handling 3D creative work and playing the latest PC titles at stable frame rates. To have this running in a thin-and-light 16-inch laptop with actual<em> </em>respectable battery life is a huge triumph. Well, the 128GB of RAM on this review unit definitely helps, too. </p><p>In testing, though, it's harder to reflect this. Nvidia notes that in many tests, including Geekbench and 3DMark, the numbers don't reflect the performance of the chip. Even in Geekbench AI, Team Green states that the numbers will be obsolete due to deprecated DirectML, and some games couldn't boot (but there was an exciting workaround). </p><p>Regardless, here's a look. </p><div ><table><caption>Performance benchmarks</caption><thead><tr><th class="firstcol empty" ></th><th  ><p>Asus ProArt 16 (Nvidia RTX Spark N1X)</p></th><th  ><p>Asus ProArt P16 <strong>(</strong>AMD Ryzen AI 9 HX 370)</p></th><th  ><p><strong>Apple MacBook Pro (M5 Pro)</strong></p></th><th  ><p>Asus ROG Flow Z13 (AMD Ryzen AI Max+ 395)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Geekbench (single/multi-core)</strong></p></td><td  ><p>2704 / 23595</p></td><td  ><p>2872 / 15343</p></td><td  ><p>4306 / 28586</p></td><td  ><p>2905 / 18726</p></td></tr><tr><td class="firstcol " ><p><strong>Handbrake (mins:secs)</strong></p></td><td  ><p>02:06</p></td><td  ><p>03:30</p></td><td  ><p>01:45</p></td><td  ><p>02:45</p></td></tr></tbody></table></div><p>Despite the warnings, the RTX Spark N1X still shows impressive high-end figures. Apple's <a href="https://www.tomsguide.com/computing/macbooks/macbook-pro-16-inch-m5-pro-review">MacBook Pro M5 Pro</a> still wipes the floor, and it's not the strongest when it comes to single-core performance, but there's a significant uplift everywhere else. The last-gen <a href="https://www.tomsguide.com/computing/laptops/asus-proart-p16-review">ProArt P16</a> with its powerful AMD Ryzen AI 9 HX 370 and <a href="https://www.tomsguide.com/computing/laptops/i-played-on-the-kojima-edition-asus-rog-flow-z13-and-this-2-in-1-gaming-tablet-belongs-in-a-museum">Asus ROG Flow Z13</a> with a similar Ryzen AI Max+ 395 chip can't touch multi-core performance, and for creators, our Handbrake test, which transcodes a 4K video to 1080p, shows the ProArt P16 with RTX Spark cuts times drastically. </p><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="qvQ6nwPaoN2RYQAMtXy2s9" name="Asus ProArt P16 RTX Spark" alt="Asus ProArt P16 (RTX Spark) laptop" src="https://cdn.mos.cms.futurecdn.net/qvQ6nwPaoN2RYQAMtXy2s9-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>What about for 3D work? There's no better way of testing this than in games. After playing <a href="https://www.tomsguide.com/reviews/cyberpunk-2077-phantom-liberty">Cyberpunk 2077</a> on Ray Tracing: Ultra settings and seeing around 30 FPS at 4K, and bumping that up to 115 FPS with DLSS with frame generation, yeah — this machine can game. </p><div ><table><caption>Gaming benchmarks</caption><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>Asus ProArt 16 (Nvidia RTX Spark N1X)</strong></p></td><td  ><p><strong>Asus ProArt P16 (RTX 4070)</strong></p></td><td  ><p><strong>Apple MacBook Pro (M5 Pro)</strong></p></td><td  ><p><strong>Asus ROG Flow Z13 (AMD Ryzen AI Max+ 395)</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Cyberpunk 2077 (4K)</strong></p></td><td  ><p>25 FPS</p></td><td  ><p>N/A</p></td><td  ><p>24 FPS</p></td><td  ><p>7.2 FPS (1600p)</p></td></tr><tr><td class="firstcol " ><p><strong>Borderlands 3 (1080p)</strong></p></td><td  ><p>97.1 FPS</p></td><td  ><p>91.2 FPS</p></td><td  ><p>60.5 FPS</p></td><td  ><p>58.2 FPS</p></td></tr></tbody></table></div><p>The chips' RTX graphics (and 6144-core GPU) clearly shine, even beating the numbers of a dedicated RTX 4070 GPU in the previous model. How impressive is that? Now, while this P16's UHD+ OLED display is a visual treat for gaming, I prefer performance, so I was often playing games at lower resolutions for those higher frame rates without heavily relying on Nvidia's frame generation. </p><p>The ProArt P16 can breeze through anything I throw at it, and for those complex 4K video edits, 3D design or development, this machine can handle it (as it should, considering its price). </p><p>But when it comes to working with local AI agents, this is where the RTX spark truly shines (more on this later). </p><h2 id="a-display-for-creatives">A display for creatives</h2><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="xMqP4Qac97cYGHi5UNCWt9" name="Asus ProArt P16 RTX Spark" alt="Asus ProArt P16 (RTX Spark) laptop" src="https://cdn.mos.cms.futurecdn.net/xMqP4Qac97cYGHi5UNCWt9-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>Asus strikes again with an absolutely gorgeous 4K OLED touchscreen that any creator will appreciate, and I would say it's one of the best touchscreens you can find on a laptop. </p><p>The Asus ProArt P16's 16-inch UHD+ (3840 x 2400) OLED touchscreen features all the perks from its last model, including a productivity-friendly 16:10 aspect ratio. You'll find an ultra-bright 1,600 nits of peak brightness (and this shows), an anti-reflective coating, along with a flood of colors and deep blacks in anything you view. For touching up images in Photoshop with a touch and simply watching shows, this screen is a treat for the eyes. Plus, while there's no stylus included, you'll find this screen does support it. </p><p>Thankfully, there is one welcome upgrade I'm happy to see: a 120Hz refresh rate with a 0.2ms response time. No more being limited to a 60Hz screen, as the ProArt P16 now delivers ultra-smooth motion. That complements creative work, but it's even better for gaming.</p><p>Gearing up for "<a href="https://www.tomsguide.com/entertainment/movies/forget-marvel-fatigue-i-counted-5-hidden-details-in-the-avengers-doomsday-trailer-that-made-me-scream">Avengers: Doomsday</a>," I watched "<a href="https://www.tomsguide.com/entertainment/disney-plus/visionquest-premiere-review-theres-a-lot-more-to-this-wandavision-follow-up-than-i-expected">VisionQuest</a>" on Disney+ and was blown away by the array of bright colors surrounding Vision as a house in a bright green space was being digitally constructed in front of him. As ever, the ProArt P16's OLED display is one to beat. </p><h2 id="battery-life-that-lasts">Battery life that lasts</h2><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="t8PNKUmAosdDb7kvNyjJt9" name="Asus ProArt P16 RTX Spark" alt="Asus ProArt P16 (RTX Spark) laptop" src="https://cdn.mos.cms.futurecdn.net/t8PNKUmAosdDb7kvNyjJt9-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>The Asus ProArt P16 is a powerful machine with an OLED display and plenty of gaming potential. Usually, that translates to the kind of battery life that is in dire need of an outlet way too often, as the <a href="https://www.tomsguide.com/best-picks/best-gaming-laptops">best gaming laptops</a> can attest. But that's not the case here.</p><p>Using our battery test, which involves web surfing and streaming video at 150 nits of screen brightness, the ProArt P16 with RTX Spark lasted 12 hours and 26 minutes. That's well past a full working day, and an amazing effort from a machine with the power it packs!</p><div ><table><caption>Battery life results</caption><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>Battery life (hh:mm)</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Asus ProArt 16 (RTX Spark)</strong></p></td><td  ><p>12:26</p></td></tr><tr><td class="firstcol " ><p><strong>Asus ProArt P16 (AMD Ryzen AI 9 HX 370)</strong></p></td><td  ><p>09:32</p></td></tr><tr><td class="firstcol " ><p><strong>Apple MacBook Pro (M5 Pro)</strong></p></td><td  ><p>21:25</p></td></tr><tr><td class="firstcol " ><p><strong>Asus ROG Flow Z13 (AMD Ryzen AI Max+ 395)</strong></p></td><td  ><p>10:27</p></td></tr></tbody></table></div><p>No, this is nowhere near MacBook Pro levels of battery life, nor is it close to what Intel's Panther Lake chip offers in the <a href="https://www.tomsguide.com/computing/laptops/dell-xps-14-2026-review">Dell XPS 14 (2026)</a> at over 20 hours. Still, it makes traveling and using the ProArt P16 far more realistic this time around, with enough juice to power through the day and have a little leftover in the evenings. </p><h3 class="article-body__section" id="section-asus-proart-p16-rtx-spark-review-the-downs"><span>Asus ProArt P16 (RTX Spark) review: The downs</span></h3><p>The Asus ProArt P16 with its RTX Spark N1X has many exciting features, but its price is not one of them. That alone narrows down who this will be for, and you'll want to make full use of its effectiveness in AI to make the most of what you're getting here. </p><h2 id="some-limits">Some limits </h2><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="mU7fzDCXYbGkqUmJ2Yp5t9" name="Asus ProArt P16 RTX Spark" alt="Asus ProArt P16 (RTX Spark) laptop" src="https://cdn.mos.cms.futurecdn.net/mU7fzDCXYbGkqUmJ2Yp5t9-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>I wouldn't necessarily call this a "down," more like a change in perspective. The RTX Spark N1X is built for local AI and agents, and that means running LLMs and the like without limits. No tokens or per-prompt payments; data and automated processes that are yours and work for your routine. </p><p>That's an extremely useful tool to have in your pocket. That is, if you know what you want to use it for. For video editors automating time-consuming assembly tasks or finding highlights in long-form cuts, and developers using an agent to write volumes of code, the RTX Spark in the P16 brings that power on the go. For others, they may not have any use for it beyond writing up drafts, finding specific files, summarizing documents or simply having fun with it. </p><p>But if you're looking to take advantage of AI, you can see how the RTX Spark N1X can be an effective way of being productive and simplifying tasks you have no idea where to start with. </p><p>A great example: I was trying to play Red Dead Redemption 2, but it would crash every time I booted it up. I had no idea what the problem was, so I asked my Hermes Agent to see what was wrong and fix the problem. </p><p>It said everything on the setup side looked healthy, and asked exactly what was happening when I launched the game. At that point, I had gone to make a coffee, so the question timed out. But then, Hermes just went deeper into the issue anyway, and came back with:</p><p>"I found that RDR2 has been running in Vulkan mode, which is a known issue on the new ARM Blackwell GPU with driver 617.42. I'll switch the API to DirectX 12 in the config, back it up first, and launch the game to test the fix."</p><p>And then, <em>voilà! </em>It started running without any problems. It may have taken me a trip to Google, a look through Reddit posts and some tinkering of my own to figure this out, but if something didn't quite work right, I would have just left Red Dead Redemption 2 unplayed. </p><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="JNgHvMgZxV3uNywvvgcpp9" name="Asus ProArt P16 RTX Spark" alt="Asus ProArt P16 (RTX Spark) laptop" src="https://cdn.mos.cms.futurecdn.net/JNgHvMgZxV3uNywvvgcpp9-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>That's an amazing way to quickly solve a problem. Now, I tried the same with Forza Horizon 6, which kept saying "Invalid Gaming Services Detected" and that I need to update "Gaming Services." Hermes couldn't quite solve that one, but a little tinkering and direction would have pointed it in the right direction. </p><p>Asus' exclusive MuseTree and StoryCube apps make a return, too, and these are a great way to start generating and visualizing ideas, plans and even turn simple text or drawings into full-blown videos (like my terribly drawn stickman that turned into an animation). I got more out of Hermes, but these are nice apps to have to express creativity. </p><p>With tasks like that, I can imagine making full use of an AI agent to automate tasks and help me here and there, and developers, editors and more could take this even further. But for anything other than AI-focused tasks, there are other laptops out there that have better performance, like the <a href="https://www.tomsguide.com/best-picks/best-macbook">best MacBooks</a>, or that play games better, like the <a href="https://www.tomsguide.com/best-picks/best-gaming-laptops">best gaming laptops</a>. </p><h2 id="hot-under-pressure">Hot under pressure</h2><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="UsLDfWiw3x65itVZAQR7r9" name="Asus ProArt P16 RTX Spark" alt="Asus ProArt P16 (RTX Spark) laptop" src="https://cdn.mos.cms.futurecdn.net/UsLDfWiw3x65itVZAQR7r9-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>It's easy to tell how much power is packed under the hood of the Asus ProArt P16, because you can hear it as soon as an AI agent starts processing a prompt or a game is booted up. </p><p>In all fairness, when it comes to general tasks such as browsing the web, writing up documents or watching shows, the laptop is dead silent. But when I started using the Hermes Agent to ask simple questions, the fans start whirring and slowly taking off as it starts to process what's been asked. It's not obnoxiously loud, but I wouldn't call this laptop "stealthy."</p><p>I also noticed it getting a little hot towards the keyboard area. That's likely due to the laptop's design, with the keyboard deck drawing in cool air to "maximize fresh air volume inside the chassis." I'd imagine it needs as much cooling as it can get, but this is supposed to keep the keyboard surface "comfortably cool." It's a touch hotter than that when put under pressure, though. </p><h2 id="the-price-of-rtx-power">The price of (RTX) 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="nLqhwp4PNQacP2iMUi3is9" name="Asus ProArt P16 RTX Spark" alt="Asus ProArt P16 (RTX Spark) laptop" src="https://cdn.mos.cms.futurecdn.net/nLqhwp4PNQacP2iMUi3is9-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>Yup, the <a href="https://www.tomsguide.com/computing/ram-price-crisis-2026-everything-you-need-to-know">RAM crisis</a> isn't going anywhere. It's $6,999 / £5,999 for the highest configuration of the Asus ProArt P16 with RTX Spark. You can get three <a href="https://www.tomsguide.com/phones/iphones/iphone-duo-hands-on-apple-nailed-it-and-just-put-everyone-else-on-notice">iPhone Duos</a> and still have $1,000 left over, seven <a href="https://www.tomsguide.com/gaming/playstation/ps5-pro-review">PS5 Pros</a> at their now-increased price — you get the picture. </p><p>Even the base configurations I found, coming in at $2,799 / £3,299, are $500 more than the <em>advanced</em> ProArt P16 we recommended in 2025. And that came with a respectable 32GB of RAM and an RTX 4070! While it's more affordable than a 16-inch MacBook Pro with M5 Pro ($2,999 / £2,999), that still comes with 24GB of RAM and a 1TB SSD (and more performance power, according to the numbers). </p><p>Over the past year, we've seen laptop prices skyrocket, and despite not needing a discrete laptop GPU now, the RTX Spark hasn't made this machine any more affordable. This is a prosumer laptop for a niche group of users, and you really have to know what you're going to use this laptop for to invest in it. </p><h3 class="article-body__section" id="section-asus-proart-p16-rtx-spark-review-verdict"><span>Asus ProArt P16 (RTX Spark) review: Verdict</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:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="QX6FXdULo8XAjrfgi2CUu9" name="Asus ProArt P16 RTX Spark" alt="Asus ProArt P16 (RTX Spark) laptop" src="https://cdn.mos.cms.futurecdn.net/QX6FXdULo8XAjrfgi2CUu9-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>The Asus ProArt P16 is an outstanding laptop for creativity, with its legacy continuing with the might of Nvidia's RTX Spark N1X. With an even slimmer design that's light enough to bring with you anywhere, a knockout OLED touchscreen with amazing brightness and colors, the right ports and battery life that can (finally) get you past a workday and still have juice left, Asus has done its creator laptop justice. </p><p>But are you willing to pay a high price for a laptop that's mainly dedicated to AI? That's the main question to ask yourself. For me, I wouldn't be pushing agents to their limits in my day-to-day to justify the high price, despite seeing its perks. Still, running AI models and agents locally is an impressive feat, and I love that this acts as a competent gaming machine to play the latest PC titles, too. </p><p>If you know that you could fully utilize Nvidia's CUDA and RTX graphics for creative work and beyond, then this laptop should be calling to you. And no, you won't need the top configuration, unless you're sitting on a very stacked wallet. It's one of the <a href="https://www.tomsguide.com/best-picks/best-ai-laptop">best AI laptops</a> around, and it would want to be at the price it's going for. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I just tested the HP OmniBook Ultra 16 — and it’s for the pros only ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The HP OmniBook Ultra 16 ($3,199 to start), like all of the new <a href="https://www.tomsguide.com/computing/laptops/nvidia-rtx-spark-hands-on-review">RTX Spark laptops</a>, occupies a unique position in the laptop space. Designed for on-device AI tasks, it’s meant to facilitate the workflows of folks who work or dabble in that space. In that sense, it’s Nvidia and Microsoft’s answer to Apple’s more powerful M-series Macs for running AI. However, it’s decidedly overpowered for everyday work and relatively underpowered for high-end gaming.</p><p>The laptop itself is practically a work of art, thanks to its sleek all-black aluminum design and soft textured surface. The 16-inch 3K OLED touchscreen, roomy lattice-less keyboard, and punchy speakers also lend to this laptop’s premium experience. This is the kind of laptop you want to be seen using.</p><p>Like the recently released <a href="https://www.tomsguide.com/computing/laptops/googlebook-pre-orders-go-live-with-5-new-laptops-from-usd899-to-usd1-299-heres-what-theyre-like-to-use">Googlebooks</a>, RTX Spark laptops like the OmniBook Ultra 16 aren’t for general users. Because of that, you’ll want to seriously consider whether these laptops are for you. To that end, here’s my full review of the HP OmniBook Ultra 16 to help you decide.</p><h3 class="article-body__section" id="section-hp-omnibook-ultra-16-review-cheat-sheet"><span>HP OmniBook Ultra 16 review: Cheat sheet</span></h3><ul><li><strong>What is it?</strong> The HP OmniBook Ultra 16 is a high-end thin-and-light laptop powered by Nvidia’s new RTX Spark chip.</li><li><strong>Who is it for?</strong> This notebook is for those who want a high-powered machine for on-device AI work.</li><li><strong>What does it cost?</strong> The HP OmniBook Ultra 16 <a href="https://www.bestbuy.com/product/hp-omnibook-ultra-16-3k-oled-touchscreen-laptop-nvidia-rtx-spark-n1x-20-core-2026-32gb-memory-1tb-ssd-copilot-pc-eclipse-gray/J3PPH557Q8" target="_blank" rel="nofollow">starts at $3,199 at Best Buy</a>. This is the same model I reviewed, and it packs an Nvidia RTX Spark N1X chip, 32GB of RAM, and a 1TB SSD. HP has a <a href="https://www.hp.com/us-en/shop/pdp/hp-omnibook-ultra-laptop-next-gen-ai-16-bk0762nr" target="_blank" rel="nofollow">higher-end model for $4,999</a> with 64GB of RAM and a 2TB SSD.</li><li><strong>What do we like?</strong> We like the sleek design, gorgeous 16-inch OLED panel, lattice-less keyboard, and strong RTX Spark-driven performance.</li><li><strong>What don’t we like?</strong> We don’t like the steep asking price and unimpressive battery life.</li></ul><h3 class="article-body__section" id="section-hp-omnibook-ultra-16-review-specs"><span>HP OmniBook Ultra 16 review: Specs</span></h3><div ><table><thead><tr><th class="firstcol empty" ></th><th  ><p><strong>HP OmniBook Ultra 16 (starting/tested)</strong></p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p>$3,199</p></td></tr><tr><td class="firstcol " ><p><strong>Display</strong></p></td><td  ><p>16-inch (2880 x 1800) OLED | 120Hz</p></td></tr><tr><td class="firstcol " ><p><strong>Chipset</strong></p></td><td  ><p>Nvidia RTX Spark N1X (20-core CPU</p></td></tr><tr><td class="firstcol " ><p><strong>RAM</strong></p></td><td  ><p>32GB</p></td></tr><tr><td class="firstcol " ><p><strong>Storage</strong></p></td><td  ><p>1TB</p></td></tr><tr><td class="firstcol " ><p><strong>Ports</strong></p></td><td  ><p>2x USB-C, 2x USB-A, 1x HDMI, 1x headphone jack, 1x microSD</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>Wi-Fi 7, Bluetooth 6</p></td></tr><tr><td class="firstcol " ><p><strong>Battery life</strong></p></td><td  ><p>10 hours 52 minutes (tested)</p></td></tr><tr><td class="firstcol " ><p><strong>Dimensions</strong></p></td><td  ><p>14.01 x 10.1 x 0.62 inches </p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>4.89 pounds</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-hp-omnibook-ultra-16-review-the-ups"><span>HP OmniBook Ultra 16 review: The ups</span></h3><p>The HP OmniBook Ultra 16 is one of the best RTX Spark laptops around thanks to its solid performance, stellar design, vibrant OLED panel and easy portability.</p><h2 id="lovely-design">Lovely 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="rC5aUzfEkFxVKDhWHHE3cJ" name="HP OmniBook Ultra 16--4" alt="HP OmniBook Ultra 16" src="https://cdn.mos.cms.futurecdn.net/rC5aUzfEkFxVKDhWHHE3cJ-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>I won’t mince words — the HP OmniBook Ultra 16 is one of the most beautifully designed laptops I’ve ever tested. This is especially true the instant you hold it, when you can better appreciate its sturdy CNC aluminum chassis with its smooth texture. The all-black color and discreet HP logo on the lid are also quite classy.</p><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="ufC8SnZHSTyJG98gvFcDFR" name="HP OmniBook Ultra 16--16" alt="HP OmniBook Ultra 16" src="https://cdn.mos.cms.futurecdn.net/ufC8SnZHSTyJG98gvFcDFR-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>Measuring 14.01 x 10.1 x 0.62 inches, the OmniBook Ultra 16 is a lot thinner than you’d expect. That makes it easy to slip into most backpacks. At 4.8 pounds, this isn’t exactly the lightest laptop, but it also doesn’t feel overly heavy thanks to its smart weight distribution.</p><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="k4cvdVzQSwgytJ97HyB4gX" name="HP OmniBook Ultra 16--18" alt="HP OmniBook Ultra 16" src="https://cdn.mos.cms.futurecdn.net/k4cvdVzQSwgytJ97HyB4gX-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>The trunk hinge design isn’t just for show; it also helps airflow. That said, I like how this design element sets this laptop apart from other clamshell designs. The subtle “OmniBook” etched here is also quite nice.</p><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="WyscEMzmvfveD5LChK4mAJ" name="HP OmniBook Ultra 16--13" alt="HP OmniBook Ultra 16" src="https://cdn.mos.cms.futurecdn.net/WyscEMzmvfveD5LChK4mAJ-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>Typing on the OmniBook Ultra 16 is a joy thanks to the spacious keyboard and lattice-less keys. I’m also a fan of the enormous haptic touchpad, which is just as responsive as the touchscreen. I don’t typically care for laptop keyboards, but the one on the OmniBook Ultra 16 is easily among the best I’ve tested.</p><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="CnNFXpdjVD4UnmCcpznUad" name="HP OmniBook Ultra 16--3" alt="HP OmniBook Ultra 16" src="https://cdn.mos.cms.futurecdn.net/CnNFXpdjVD4UnmCcpznUad-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>You get a pretty decent number of ports for such a thin laptop. The left-hand side has an HDMI port, a pair of USB4 ports, and a headphone jack. Over on the right, there are two USB-A ports and a microSD card slot. Though I wish there were an Ethernet port to complete the package, you get more than enough ports for what you’d need.</p><h2 id="strong-rtx-spark-performance">Strong RTX Spark 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:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="mYePq97NKXx7nQMNRsQg8P" name="HP OmniBook Ultra 16--7" alt="HP OmniBook Ultra 16" src="https://cdn.mos.cms.futurecdn.net/mYePq97NKXx7nQMNRsQg8P-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>Our HP OmniBook Ultra 16 review unit is the entry-level model, which packs an Nvidia RTX Spark N1X processor, 32GB of RAM, and a 1TB SSD. As the first RTX Spark laptop I tested, I was very curious to see how it performed in a variety of situations, including basic everyday work and gaming—along with some local AI testing.</p><p>It should come as no surprise that the OmniBook Ultra 16 had no problem handling my average workflow, which typically consists of multiple open Chrome tabs, Slack, photo editing in GIMP, and the occasional YouTube video running in the background. As I said in the intro, this is an overpowered machine for the basics.</p><div ><table><thead><tr><th class="firstcol empty" ></th><th  ><p><strong>HP OmniBook Ultra 16</strong></p></th><th  ><p><strong>MacBook Pro 16-inch M5 Pro</strong></p></th><th  ><p><strong>Samsung Galaxy Book 6 Ultra</strong></p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Geekbench 6.7 (single/multi-core)</strong></p></td><td  ><p>3,165 / 20,056</p></td><td  ><p>4306 / 28,586 </p></td><td  ><p>2852 / 16,655</p></td></tr><tr><td class="firstcol " ><p><strong>Handbrake SSD (mins:secs)</strong></p></td><td  ><p>2:03</p></td><td  ><p>1:45</p></td><td  ><p>3:18</p></td></tr><tr><td class="firstcol " ><p><strong>3DMark Wild Life Extreme (score / fps)</strong></p></td><td  ><p>22,978 / 137</p></td><td  ><p>23,876 / 142</p></td><td  ><p>N/A</p></td></tr></tbody></table></div><p>Now, how did HP’s RTS Spark laptop fare in our lab testing? As you can see in the chart above, the OmniBook Ultra 16 scored well in the Geekbench 6 single- and multi-core benchmarks. It also turned in solid numbers in the Handbrake SSD test. The Samsung Galaxy Book 6 Ultra, which packs an RTX 5070 GPU and 32GB, didn’t perform as well. However, the 16-inch MacBook Pro M5 Pro outperformed both laptops in these tests.</p><div ><table><thead><tr><th class="firstcol empty" ></th><th  ><p><strong>HP OmniBook Ultra 16</strong></p></th><th  ><p><strong>MacBook Pro 16-inch M5 Pro</strong></p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Photoshop (score/time)</strong></p></td><td  ><p>11,775 / 7.9 mins</p></td><td  ><p>15,204 (score) | 7.5 mins</p></td></tr><tr><td class="firstcol " ><p><strong>Premiere Pro (score/time)</strong></p></td><td  ><p>87,127 / 7.3 mins</p></td><td  ><p>105,580 / 6.04 mins</p></td></tr></tbody></table></div><p>The OmniBook Ultra 16 also performed well in our Adobe benchmarks, which include Photoshop and Premiere Pro. Despite the strong results, Apple’s MacBook Pro scored better on both tests by a considerable margin.</p><div ><table><thead><tr><th class="firstcol empty" ></th><th  ><p><strong>HP OmniBook Ultra 16</strong></p></th><th  ><p><strong>MacBook Pro 16-inch M5 Pro</strong></p></th><th  ><p><strong>HyperX Omen 16 (Valorant Edition)</strong></p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Assassin’s Creed Shadows</strong></p></td><td  ><p>17 fps</p></td><td  ><p>14 fps</p></td><td  ><p>29 fps</p></td></tr><tr><td class="firstcol " ><p><strong>Borderlands 3</strong></p></td><td  ><p>53 fps</p></td><td  ><p>34 fps</p></td><td  ><p>70 fps</p></td></tr><tr><td class="firstcol " ><p><strong>Cyberpunk 2077</strong></p></td><td  ><p>18 fps</p></td><td  ><p>24 (for this Mac)</p></td><td  ><p>20 fps</p></td></tr></tbody></table></div><p>In gaming, the OmniBook Ultra 16 has mixed results. In our testing, which involves running a game’s built-in benchmarking tool at maximum graphical settings and native resolution, games like <a href="https://www.tomsguide.com/gaming/assassins-creed-shadows-review">Assassin’s Creed Shadows</a> and <a href="https://www.tomsguide.com/reviews/cyberpunk-2077-phantom-liberty">Cyberpunk 2077</a> barely hit 20 frames per second, let alone the minimum 30 fps.</p><p>Even if the OmniBook Ultra 16 couldn’t match a dedicated gaming laptop like the RTX 5070-driven HyperX Omen 16, it was generally on par with the M5 Pro MacBook Pro, though Borderlands 3 ran considerably better. Though both HP and Apple’s laptops did well in the 3DMark graphical test, it shows that games need to be optimized for the respective silicon to run at their best.</p><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="WqakFFnhLHYH8GYQePu8X6" name="HP OmniBook Ultra 16--10" alt="HP OmniBook Ultra 16" src="https://cdn.mos.cms.futurecdn.net/WqakFFnhLHYH8GYQePu8X6-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>Our gaming benchmark tests are pretty demanding, so you can still have a great gaming experience with the right settings. For instance, Cyberpunk 2077 ran between 38 and 47 frames per second at default graphical settings (no frame gen) at native 1800p resolution. When I dropped the resolution to 1080p and enabled DLSS, the FPS hovered between 58 and 65, which is quite nice!</p><h2 id="on-device-ai-actually-works">On-device AI actually works</h2><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="sbXWihHDQyAqGgej5VL9WV" name="HP OmniBook Ultra 16--14" alt="HP OmniBook Ultra 16" src="https://cdn.mos.cms.futurecdn.net/sbXWihHDQyAqGgej5VL9WV-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>RTX Spark systems like the OmniBook Ultra 16 are built for on-device (or offline) AI tasks. Since I’m not a coder or programmer, I just did a simple test using Qwen3.8 27B to see how this all works. Here is the prompt I used:</p><p>"I have a 48-hour layover in Tokyo with a $300 budget. Plan a realistic, hour-by-hour itinerary for someone who loves ramen and hates crowded tourist spots."</p><p>Though it took around 15 minutes, I got a detailed itinerary. I didn’t check it for accuracy since my goal was to see if the laptop could complete this task while offline. Yes, you can get the same results much faster by asking ChatGPT, but the point is that you can safely work with AI offline on a machine like this instead of potentially sharing private information on services that depend on the cloud.</p><h2 id="vivid-display">Vivid 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="TSPBdTCLkp72fPrjrJrrNZ" name="HP OmniBook Ultra 16--11" alt="HP OmniBook Ultra 16" src="https://cdn.mos.cms.futurecdn.net/TSPBdTCLkp72fPrjrJrrNZ-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>One of the main selling points of the HP OmniBook Ultra 16 is its stunning 16-inch OLED touchscreen. In the latest trailer for <a href="https://www.tomsguide.com/gaming/i-just-played-the-legend-of-zelda-ocarina-of-time-remake-and-it-looks-and-plays-better-than-i-could-have-ever-imagined">The Legend of Zelda: Ocarina of Time</a>, I was stunned by the deep contrasts of both day and night-time scenes. Colors appear appropriately bold, while the 3K resolution and 120Hz refresh rate ensured everything appeared sharp and ran smoothly, respectively.</p><div ><table><thead><tr><th class="firstcol empty" ></th><th  ><p><strong>HP OmniBook Ultra 16</strong></p></th><th  ><p><strong>MacBook Pro 16-inch M5 Pro</strong></p></th><th  ><p><strong>Samsung Galaxy Book 6 Ultra</strong></p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Nits (brightness)</strong></p></td><td  ><p>434 (SDR) | 614 (HDR)</p></td><td  ><p>540 (SDR) | 1026 (HDR) </p></td><td  ><p>451 (SDR) | 564 (HDR)</p></td></tr><tr><td class="firstcol " ><p><strong>sRGB</strong></p></td><td  ><p>120.7%</p></td><td  ><p>122.1% </p></td><td  ><p>121.2%</p></td></tr><tr><td class="firstcol " ><p><strong>DCI-P3</strong></p></td><td  ><p>85.5%</p></td><td  ><p>86.5% </p></td><td  ><p>85.6%</p></td></tr><tr><td class="firstcol " ><p><strong>Delta-E</strong></p></td><td  ><p>0.20</p></td><td  ><p>0.19 </p></td><td  ><p>0.20</p></td></tr></tbody></table></div><p>Our lab tests confirm what my eyes saw. Color reproduction (sRGB and DCI-P3) leans toward the oversaturated end, but not much so. Color accuracy (Delta-E) is also very strong. As you can see, these values are on par with some of the OmniBook Ultra 16’s competitors.</p><p>The touchscreen capabilities are on par with other Windows laptops I’ve tested, never failing to register my gestures. I don’t always use the touchscreen on laptops that have them, but I appreciate their inclusion in case I ever feel the need to tap on something.</p><h3 class="article-body__section" id="section-hp-omnibook-ultra-16-review-the-downs"><span>HP OmniBook Ultra 16 review: The downs</span></h3><p>The HP OmniBook Ultra HP is an impressive laptop but it has some noteable flaws.</p><h2 id="steep-price">Steep price</h2><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="xrbRrbh5qkCisaPSUcSCAf" name="HP OmniBook Ultra 16--5" alt="HP OmniBook Ultra 16" src="https://cdn.mos.cms.futurecdn.net/xrbRrbh5qkCisaPSUcSCAf-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>Make no mistake, the HP OmniBook Ultra 16 costs a pretty penny. The entry-level model starts at $3,199, which comes with 32GB of RAM and 1TB. For $4,999, you can get a model with 64GB of RAM and a 2TB SSD. If you want to go all out, the highest-end model for $6,299 comes with 128GB of RAM and a 2TB SSD.</p><p>Now, if you’re the target user who wants a powerful laptop for on-device AI workloads and big creative projects, then the price might be worth it. However, if you’re just looking for a traditional work or gaming laptop, then you’re better off looking elsewhere.</p><h2 id="middling-battery-life">Middling 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="FhjFpeyc6WPs3wQ4EMi9Dj" name="HP OmniBook Ultra 16--17" alt="HP OmniBook Ultra 16" src="https://cdn.mos.cms.futurecdn.net/FhjFpeyc6WPs3wQ4EMi9Dj-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>HP says the OmniBook Ultra 16 has up to 17 hours of continuous video playback at 1080p and with the display set to 200 nits of brightness. However, on the Tom’s Guide battery test, which involves continuous web surfing over Wi-Fi with the display set to 150 nits, the OmniBook Ultra 16 endured just eight minutes short of 11 hours.</p><div ><table><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>Time (hours:mins)</strong></p></td></tr><tr><td class="firstcol " ><p><strong>HP OmniBook Ultra 16</strong></p></td><td  ><p>10:52</p></td></tr><tr><td class="firstcol " ><p><strong>MacBook Air 13-inch M5</strong></p></td><td  ><p>15:28</p></td></tr><tr><td class="firstcol " ><p><strong>Samsung Galaxy Book 6 Ultra</strong></p></td><td  ><p>15:11</p></td></tr></tbody></table></div><p>As you can see, competitors like the <a href="https://www.tomsguide.com/computing/macbooks/macbook-air-m5-review">MacBook Air M5</a> and <a href="https://www.tomsguide.com/computing/laptops/samsung-galaxy-book-6-ultra-review">Galaxy Book 6 Ultra</a> outlasted HP’s laptop by well over four hours. Now, we were only able to run a single battery test on the OmniBook Ultra 16, so I’ll update this review after we’ve done three full tests as we usually do. That said, I don’t expect the final results to be greatly different.</p><p>While I’m placing battery life as a con, it’s only because we live in a world where Apple, Qualcomm, and even Intel have raised the ceiling on laptop battery life. You’ll be able to get plenty of work done on the HP OmniBook Ultra 16 on a single charge. That said, don’t forget to bring its 140W GaN charger when you’re on the road.</p><h3 class="article-body__section" id="section-hp-omnibook-ultra-16-review-verdict"><span>HP OmniBook Ultra 16 review: Verdict</span></h3><p>The HP OmniBook Ultra 16 isn’t a laptop for general customers, but it’s great at what it was designed for. If you want a portable device for on-device AI work or creative projects, you won’t go wrong here. The fact that the laptop is a beautiful piece of work only sweetens the deal.</p><p>Even if RTX Spark systems like the OmniBook Ultra 16 are only for the pros, they’re impressive machines that prove you don’t need the cloud to get AI work done. If what I said about the HP OmniBook Ultra 16 impresses you and you think it could benefit your work (and won’t completely drain your bank account), then certainly give it a try.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/laptops/hp-omnibook-ultra-16-review</link>
                                                                            <description>
                            <![CDATA[ The HP OmniBook Ultra 16 delivers on its promise of on-device AI, and it does so in style. Though it's only for pros, it showcases the power of RTX Spark. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">FfySpvameWr6GyPyK95mQL</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/PDPYszmFsGYhrNTCtpn7QD-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 16 Oct 2026 12:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Laptops]]></category>
                                                    <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/PDPYszmFsGYhrNTCtpn7QD-1920-80.jpg">
                                                            <media:credit><![CDATA[Tom&amp;#39;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[HP OmniBook Ultra 16]]></media:description>                                                            <media:text><![CDATA[HP OmniBook Ultra 16]]></media:text>
                                <media:title type="plain"><![CDATA[HP OmniBook Ultra 16]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/PDPYszmFsGYhrNTCtpn7QD-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The HP OmniBook Ultra 16 ($3,199 to start), like all of the new <a href="https://www.tomsguide.com/computing/laptops/nvidia-rtx-spark-hands-on-review">RTX Spark laptops</a>, occupies a unique position in the laptop space. Designed for on-device AI tasks, it’s meant to facilitate the workflows of folks who work or dabble in that space. In that sense, it’s Nvidia and Microsoft’s answer to Apple’s more powerful M-series Macs for running AI. However, it’s decidedly overpowered for everyday work and relatively underpowered for high-end gaming.</p><p>The laptop itself is practically a work of art, thanks to its sleek all-black aluminum design and soft textured surface. The 16-inch 3K OLED touchscreen, roomy lattice-less keyboard, and punchy speakers also lend to this laptop’s premium experience. This is the kind of laptop you want to be seen using.</p><p>Like the recently released <a href="https://www.tomsguide.com/computing/laptops/googlebook-pre-orders-go-live-with-5-new-laptops-from-usd899-to-usd1-299-heres-what-theyre-like-to-use">Googlebooks</a>, RTX Spark laptops like the OmniBook Ultra 16 aren’t for general users. Because of that, you’ll want to seriously consider whether these laptops are for you. To that end, here’s my full review of the HP OmniBook Ultra 16 to help you decide.</p><h3 class="article-body__section" id="section-hp-omnibook-ultra-16-review-cheat-sheet"><span>HP OmniBook Ultra 16 review: Cheat sheet</span></h3><ul><li><strong>What is it?</strong> The HP OmniBook Ultra 16 is a high-end thin-and-light laptop powered by Nvidia’s new RTX Spark chip.</li><li><strong>Who is it for?</strong> This notebook is for those who want a high-powered machine for on-device AI work.</li><li><strong>What does it cost?</strong> The HP OmniBook Ultra 16 <a href="https://www.bestbuy.com/product/hp-omnibook-ultra-16-3k-oled-touchscreen-laptop-nvidia-rtx-spark-n1x-20-core-2026-32gb-memory-1tb-ssd-copilot-pc-eclipse-gray/J3PPH557Q8" target="_blank" rel="nofollow">starts at $3,199 at Best Buy</a>. This is the same model I reviewed, and it packs an Nvidia RTX Spark N1X chip, 32GB of RAM, and a 1TB SSD. HP has a <a href="https://www.hp.com/us-en/shop/pdp/hp-omnibook-ultra-laptop-next-gen-ai-16-bk0762nr" target="_blank" rel="nofollow">higher-end model for $4,999</a> with 64GB of RAM and a 2TB SSD.</li><li><strong>What do we like?</strong> We like the sleek design, gorgeous 16-inch OLED panel, lattice-less keyboard, and strong RTX Spark-driven performance.</li><li><strong>What don’t we like?</strong> We don’t like the steep asking price and unimpressive battery life.</li></ul><h3 class="article-body__section" id="section-hp-omnibook-ultra-16-review-specs"><span>HP OmniBook Ultra 16 review: Specs</span></h3><div ><table><thead><tr><th class="firstcol empty" ></th><th  ><p><strong>HP OmniBook Ultra 16 (starting/tested)</strong></p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p>$3,199</p></td></tr><tr><td class="firstcol " ><p><strong>Display</strong></p></td><td  ><p>16-inch (2880 x 1800) OLED | 120Hz</p></td></tr><tr><td class="firstcol " ><p><strong>Chipset</strong></p></td><td  ><p>Nvidia RTX Spark N1X (20-core CPU</p></td></tr><tr><td class="firstcol " ><p><strong>RAM</strong></p></td><td  ><p>32GB</p></td></tr><tr><td class="firstcol " ><p><strong>Storage</strong></p></td><td  ><p>1TB</p></td></tr><tr><td class="firstcol " ><p><strong>Ports</strong></p></td><td  ><p>2x USB-C, 2x USB-A, 1x HDMI, 1x headphone jack, 1x microSD</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>Wi-Fi 7, Bluetooth 6</p></td></tr><tr><td class="firstcol " ><p><strong>Battery life</strong></p></td><td  ><p>10 hours 52 minutes (tested)</p></td></tr><tr><td class="firstcol " ><p><strong>Dimensions</strong></p></td><td  ><p>14.01 x 10.1 x 0.62 inches </p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>4.89 pounds</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-hp-omnibook-ultra-16-review-the-ups"><span>HP OmniBook Ultra 16 review: The ups</span></h3><p>The HP OmniBook Ultra 16 is one of the best RTX Spark laptops around thanks to its solid performance, stellar design, vibrant OLED panel and easy portability.</p><h2 id="lovely-design">Lovely 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="rC5aUzfEkFxVKDhWHHE3cJ" name="HP OmniBook Ultra 16--4" alt="HP OmniBook Ultra 16" src="https://cdn.mos.cms.futurecdn.net/rC5aUzfEkFxVKDhWHHE3cJ-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>I won’t mince words — the HP OmniBook Ultra 16 is one of the most beautifully designed laptops I’ve ever tested. This is especially true the instant you hold it, when you can better appreciate its sturdy CNC aluminum chassis with its smooth texture. The all-black color and discreet HP logo on the lid are also quite classy.</p><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="ufC8SnZHSTyJG98gvFcDFR" name="HP OmniBook Ultra 16--16" alt="HP OmniBook Ultra 16" src="https://cdn.mos.cms.futurecdn.net/ufC8SnZHSTyJG98gvFcDFR-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>Measuring 14.01 x 10.1 x 0.62 inches, the OmniBook Ultra 16 is a lot thinner than you’d expect. That makes it easy to slip into most backpacks. At 4.8 pounds, this isn’t exactly the lightest laptop, but it also doesn’t feel overly heavy thanks to its smart weight distribution.</p><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="k4cvdVzQSwgytJ97HyB4gX" name="HP OmniBook Ultra 16--18" alt="HP OmniBook Ultra 16" src="https://cdn.mos.cms.futurecdn.net/k4cvdVzQSwgytJ97HyB4gX-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>The trunk hinge design isn’t just for show; it also helps airflow. That said, I like how this design element sets this laptop apart from other clamshell designs. The subtle “OmniBook” etched here is also quite nice.</p><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="WyscEMzmvfveD5LChK4mAJ" name="HP OmniBook Ultra 16--13" alt="HP OmniBook Ultra 16" src="https://cdn.mos.cms.futurecdn.net/WyscEMzmvfveD5LChK4mAJ-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>Typing on the OmniBook Ultra 16 is a joy thanks to the spacious keyboard and lattice-less keys. I’m also a fan of the enormous haptic touchpad, which is just as responsive as the touchscreen. I don’t typically care for laptop keyboards, but the one on the OmniBook Ultra 16 is easily among the best I’ve tested.</p><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="CnNFXpdjVD4UnmCcpznUad" name="HP OmniBook Ultra 16--3" alt="HP OmniBook Ultra 16" src="https://cdn.mos.cms.futurecdn.net/CnNFXpdjVD4UnmCcpznUad-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>You get a pretty decent number of ports for such a thin laptop. The left-hand side has an HDMI port, a pair of USB4 ports, and a headphone jack. Over on the right, there are two USB-A ports and a microSD card slot. Though I wish there were an Ethernet port to complete the package, you get more than enough ports for what you’d need.</p><h2 id="strong-rtx-spark-performance">Strong RTX Spark 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:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="mYePq97NKXx7nQMNRsQg8P" name="HP OmniBook Ultra 16--7" alt="HP OmniBook Ultra 16" src="https://cdn.mos.cms.futurecdn.net/mYePq97NKXx7nQMNRsQg8P-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>Our HP OmniBook Ultra 16 review unit is the entry-level model, which packs an Nvidia RTX Spark N1X processor, 32GB of RAM, and a 1TB SSD. As the first RTX Spark laptop I tested, I was very curious to see how it performed in a variety of situations, including basic everyday work and gaming—along with some local AI testing.</p><p>It should come as no surprise that the OmniBook Ultra 16 had no problem handling my average workflow, which typically consists of multiple open Chrome tabs, Slack, photo editing in GIMP, and the occasional YouTube video running in the background. As I said in the intro, this is an overpowered machine for the basics.</p><div ><table><thead><tr><th class="firstcol empty" ></th><th  ><p><strong>HP OmniBook Ultra 16</strong></p></th><th  ><p><strong>MacBook Pro 16-inch M5 Pro</strong></p></th><th  ><p><strong>Samsung Galaxy Book 6 Ultra</strong></p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Geekbench 6.7 (single/multi-core)</strong></p></td><td  ><p>3,165 / 20,056</p></td><td  ><p>4306 / 28,586 </p></td><td  ><p>2852 / 16,655</p></td></tr><tr><td class="firstcol " ><p><strong>Handbrake SSD (mins:secs)</strong></p></td><td  ><p>2:03</p></td><td  ><p>1:45</p></td><td  ><p>3:18</p></td></tr><tr><td class="firstcol " ><p><strong>3DMark Wild Life Extreme (score / fps)</strong></p></td><td  ><p>22,978 / 137</p></td><td  ><p>23,876 / 142</p></td><td  ><p>N/A</p></td></tr></tbody></table></div><p>Now, how did HP’s RTS Spark laptop fare in our lab testing? As you can see in the chart above, the OmniBook Ultra 16 scored well in the Geekbench 6 single- and multi-core benchmarks. It also turned in solid numbers in the Handbrake SSD test. The Samsung Galaxy Book 6 Ultra, which packs an RTX 5070 GPU and 32GB, didn’t perform as well. However, the 16-inch MacBook Pro M5 Pro outperformed both laptops in these tests.</p><div ><table><thead><tr><th class="firstcol empty" ></th><th  ><p><strong>HP OmniBook Ultra 16</strong></p></th><th  ><p><strong>MacBook Pro 16-inch M5 Pro</strong></p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Photoshop (score/time)</strong></p></td><td  ><p>11,775 / 7.9 mins</p></td><td  ><p>15,204 (score) | 7.5 mins</p></td></tr><tr><td class="firstcol " ><p><strong>Premiere Pro (score/time)</strong></p></td><td  ><p>87,127 / 7.3 mins</p></td><td  ><p>105,580 / 6.04 mins</p></td></tr></tbody></table></div><p>The OmniBook Ultra 16 also performed well in our Adobe benchmarks, which include Photoshop and Premiere Pro. Despite the strong results, Apple’s MacBook Pro scored better on both tests by a considerable margin.</p><div ><table><thead><tr><th class="firstcol empty" ></th><th  ><p><strong>HP OmniBook Ultra 16</strong></p></th><th  ><p><strong>MacBook Pro 16-inch M5 Pro</strong></p></th><th  ><p><strong>HyperX Omen 16 (Valorant Edition)</strong></p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Assassin’s Creed Shadows</strong></p></td><td  ><p>17 fps</p></td><td  ><p>14 fps</p></td><td  ><p>29 fps</p></td></tr><tr><td class="firstcol " ><p><strong>Borderlands 3</strong></p></td><td  ><p>53 fps</p></td><td  ><p>34 fps</p></td><td  ><p>70 fps</p></td></tr><tr><td class="firstcol " ><p><strong>Cyberpunk 2077</strong></p></td><td  ><p>18 fps</p></td><td  ><p>24 (for this Mac)</p></td><td  ><p>20 fps</p></td></tr></tbody></table></div><p>In gaming, the OmniBook Ultra 16 has mixed results. In our testing, which involves running a game’s built-in benchmarking tool at maximum graphical settings and native resolution, games like <a href="https://www.tomsguide.com/gaming/assassins-creed-shadows-review">Assassin’s Creed Shadows</a> and <a href="https://www.tomsguide.com/reviews/cyberpunk-2077-phantom-liberty">Cyberpunk 2077</a> barely hit 20 frames per second, let alone the minimum 30 fps.</p><p>Even if the OmniBook Ultra 16 couldn’t match a dedicated gaming laptop like the RTX 5070-driven HyperX Omen 16, it was generally on par with the M5 Pro MacBook Pro, though Borderlands 3 ran considerably better. Though both HP and Apple’s laptops did well in the 3DMark graphical test, it shows that games need to be optimized for the respective silicon to run at their best.</p><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="WqakFFnhLHYH8GYQePu8X6" name="HP OmniBook Ultra 16--10" alt="HP OmniBook Ultra 16" src="https://cdn.mos.cms.futurecdn.net/WqakFFnhLHYH8GYQePu8X6-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>Our gaming benchmark tests are pretty demanding, so you can still have a great gaming experience with the right settings. For instance, Cyberpunk 2077 ran between 38 and 47 frames per second at default graphical settings (no frame gen) at native 1800p resolution. When I dropped the resolution to 1080p and enabled DLSS, the FPS hovered between 58 and 65, which is quite nice!</p><h2 id="on-device-ai-actually-works">On-device AI actually works</h2><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="sbXWihHDQyAqGgej5VL9WV" name="HP OmniBook Ultra 16--14" alt="HP OmniBook Ultra 16" src="https://cdn.mos.cms.futurecdn.net/sbXWihHDQyAqGgej5VL9WV-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>RTX Spark systems like the OmniBook Ultra 16 are built for on-device (or offline) AI tasks. Since I’m not a coder or programmer, I just did a simple test using Qwen3.8 27B to see how this all works. Here is the prompt I used:</p><p>"I have a 48-hour layover in Tokyo with a $300 budget. Plan a realistic, hour-by-hour itinerary for someone who loves ramen and hates crowded tourist spots."</p><p>Though it took around 15 minutes, I got a detailed itinerary. I didn’t check it for accuracy since my goal was to see if the laptop could complete this task while offline. Yes, you can get the same results much faster by asking ChatGPT, but the point is that you can safely work with AI offline on a machine like this instead of potentially sharing private information on services that depend on the cloud.</p><h2 id="vivid-display">Vivid 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="TSPBdTCLkp72fPrjrJrrNZ" name="HP OmniBook Ultra 16--11" alt="HP OmniBook Ultra 16" src="https://cdn.mos.cms.futurecdn.net/TSPBdTCLkp72fPrjrJrrNZ-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>One of the main selling points of the HP OmniBook Ultra 16 is its stunning 16-inch OLED touchscreen. In the latest trailer for <a href="https://www.tomsguide.com/gaming/i-just-played-the-legend-of-zelda-ocarina-of-time-remake-and-it-looks-and-plays-better-than-i-could-have-ever-imagined">The Legend of Zelda: Ocarina of Time</a>, I was stunned by the deep contrasts of both day and night-time scenes. Colors appear appropriately bold, while the 3K resolution and 120Hz refresh rate ensured everything appeared sharp and ran smoothly, respectively.</p><div ><table><thead><tr><th class="firstcol empty" ></th><th  ><p><strong>HP OmniBook Ultra 16</strong></p></th><th  ><p><strong>MacBook Pro 16-inch M5 Pro</strong></p></th><th  ><p><strong>Samsung Galaxy Book 6 Ultra</strong></p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Nits (brightness)</strong></p></td><td  ><p>434 (SDR) | 614 (HDR)</p></td><td  ><p>540 (SDR) | 1026 (HDR) </p></td><td  ><p>451 (SDR) | 564 (HDR)</p></td></tr><tr><td class="firstcol " ><p><strong>sRGB</strong></p></td><td  ><p>120.7%</p></td><td  ><p>122.1% </p></td><td  ><p>121.2%</p></td></tr><tr><td class="firstcol " ><p><strong>DCI-P3</strong></p></td><td  ><p>85.5%</p></td><td  ><p>86.5% </p></td><td  ><p>85.6%</p></td></tr><tr><td class="firstcol " ><p><strong>Delta-E</strong></p></td><td  ><p>0.20</p></td><td  ><p>0.19 </p></td><td  ><p>0.20</p></td></tr></tbody></table></div><p>Our lab tests confirm what my eyes saw. Color reproduction (sRGB and DCI-P3) leans toward the oversaturated end, but not much so. Color accuracy (Delta-E) is also very strong. As you can see, these values are on par with some of the OmniBook Ultra 16’s competitors.</p><p>The touchscreen capabilities are on par with other Windows laptops I’ve tested, never failing to register my gestures. I don’t always use the touchscreen on laptops that have them, but I appreciate their inclusion in case I ever feel the need to tap on something.</p><h3 class="article-body__section" id="section-hp-omnibook-ultra-16-review-the-downs"><span>HP OmniBook Ultra 16 review: The downs</span></h3><p>The HP OmniBook Ultra HP is an impressive laptop but it has some noteable flaws.</p><h2 id="steep-price">Steep price</h2><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="xrbRrbh5qkCisaPSUcSCAf" name="HP OmniBook Ultra 16--5" alt="HP OmniBook Ultra 16" src="https://cdn.mos.cms.futurecdn.net/xrbRrbh5qkCisaPSUcSCAf-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>Make no mistake, the HP OmniBook Ultra 16 costs a pretty penny. The entry-level model starts at $3,199, which comes with 32GB of RAM and 1TB. For $4,999, you can get a model with 64GB of RAM and a 2TB SSD. If you want to go all out, the highest-end model for $6,299 comes with 128GB of RAM and a 2TB SSD.</p><p>Now, if you’re the target user who wants a powerful laptop for on-device AI workloads and big creative projects, then the price might be worth it. However, if you’re just looking for a traditional work or gaming laptop, then you’re better off looking elsewhere.</p><h2 id="middling-battery-life">Middling 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="FhjFpeyc6WPs3wQ4EMi9Dj" name="HP OmniBook Ultra 16--17" alt="HP OmniBook Ultra 16" src="https://cdn.mos.cms.futurecdn.net/FhjFpeyc6WPs3wQ4EMi9Dj-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>HP says the OmniBook Ultra 16 has up to 17 hours of continuous video playback at 1080p and with the display set to 200 nits of brightness. However, on the Tom’s Guide battery test, which involves continuous web surfing over Wi-Fi with the display set to 150 nits, the OmniBook Ultra 16 endured just eight minutes short of 11 hours.</p><div ><table><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>Time (hours:mins)</strong></p></td></tr><tr><td class="firstcol " ><p><strong>HP OmniBook Ultra 16</strong></p></td><td  ><p>10:52</p></td></tr><tr><td class="firstcol " ><p><strong>MacBook Air 13-inch M5</strong></p></td><td  ><p>15:28</p></td></tr><tr><td class="firstcol " ><p><strong>Samsung Galaxy Book 6 Ultra</strong></p></td><td  ><p>15:11</p></td></tr></tbody></table></div><p>As you can see, competitors like the <a href="https://www.tomsguide.com/computing/macbooks/macbook-air-m5-review">MacBook Air M5</a> and <a href="https://www.tomsguide.com/computing/laptops/samsung-galaxy-book-6-ultra-review">Galaxy Book 6 Ultra</a> outlasted HP’s laptop by well over four hours. Now, we were only able to run a single battery test on the OmniBook Ultra 16, so I’ll update this review after we’ve done three full tests as we usually do. That said, I don’t expect the final results to be greatly different.</p><p>While I’m placing battery life as a con, it’s only because we live in a world where Apple, Qualcomm, and even Intel have raised the ceiling on laptop battery life. You’ll be able to get plenty of work done on the HP OmniBook Ultra 16 on a single charge. That said, don’t forget to bring its 140W GaN charger when you’re on the road.</p><h3 class="article-body__section" id="section-hp-omnibook-ultra-16-review-verdict"><span>HP OmniBook Ultra 16 review: Verdict</span></h3><p>The HP OmniBook Ultra 16 isn’t a laptop for general customers, but it’s great at what it was designed for. If you want a portable device for on-device AI work or creative projects, you won’t go wrong here. The fact that the laptop is a beautiful piece of work only sweetens the deal.</p><p>Even if RTX Spark systems like the OmniBook Ultra 16 are only for the pros, they’re impressive machines that prove you don’t need the cloud to get AI work done. If what I said about the HP OmniBook Ultra 16 impresses you and you think it could benefit your work (and won’t completely drain your bank account), then certainly give it a try.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I benchmarked Nvidia's RTX Spark: Apple wins the CPU war, but Nvidia's GPU just broke my testing charts ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The embargo has lifted on Nvidia's RTX Spark platform, and the internet is currently doing what it always does: arguing over spreadsheet math. I've done something different with my <a href="https://www.tomsguide.com/computing/cpus/ive-been-living-with-nvidias-rtx-spark-for-a-week-on-surface-laptop-ultra-its-not-a-macbook-pro-killer-but-something-much-weirder-and-wildly-powerful">diary of a first week living with Spark</a>, but I've been busy benchmarking too!</p><p>For months, the tech industry (myself included) hyped up this Arm-based Grace CPU and Blackwell RTX GPU combo as the ultimate "MacBook Pro killer." Reviewers (also like me) have spent the past seven days squinting at Geekbench scores to see if Nvidia finally dethroned Apple's M-series silicon.</p><p>Let me save you some time: <strong>it didn't.</strong></p><p>But judging RTX Spark purely by its single-core CPU speeds is like judging a Ferrari by its cup holders. And after a week of stress-testing the Microsoft Surface Laptop Ultra with Spark — running every synthetic and real-world test we can throw at it — it's clear that this is so much more.</p><p>Those numbers tell a very different, far more complicated story. Let me explain. </p><h2 class="article-body__section" id="section-where-to-buy-rtx-spark-laptops"><span>Where to buy RTX Spark laptops</span></h2><ul><li><strong>MS Surface Laptop Ultra: </strong><a href="https://www.microsoft.com/en-us/store/configure/surface-laptop-ultra/8wg5vqp0x4b8" target="_blank" rel="nofollow"><strong>$2,599 @ MS Store</strong></a><strong></strong></li><li><strong>HP OmniBook X AI 14: </strong><a href="https://www.hp.com/us-en/shop/pdp/hp-omnibook-x-laptop-next-gen-ai-14-ks000-14-cb1l6av-1" target="_blank" rel="nofollow"><strong>$2,999 @ HP</strong></a><strong></strong></li><li><strong>HP OmniBook Ultra AI 16 OLED: </strong><a href="https://www.bestbuy.com/product/hp-omnibook-ultra-16-3k-oled-touchscreen-laptop-nvidia-rtx-spark-n1x-20-core-2026-32gb-memory-1tb-ssd-copilot-pc-eclipse-gray/J3PPH557Q8" target="_blank" rel="nofollow"><strong>$3,199 @ Best Buy</strong></a><strong></strong></li><li><strong>Lenovo Pro 9n: </strong><a href="https://www.lenovo.com/us/en/p/laptops/yoga/yoga-pro-series/lenovo-pro-9n-gen-11-15-inch-nvidia/83sscto1wwus1" target="_blank" rel="nofollow"><strong>$2,999 @ Lenovo</strong></a><strong></strong></li><li><strong>Lenovo Yoga 9n 2-in-1: </strong><a href="https://www.lenovo.com/us/en/p/laptops/yoga/yoga-2-in-1-series/yoga-9n-2-in-1-gen-11-16-inch-nvidia/83n7cto1wwus1" target="_blank" rel="nofollow"><strong>$2,999 @ Lenovo</strong></a><strong></strong></li><li><strong>MSI Prestige N16 Flip AI+ OLED 2-in-1: </strong><a href="https://us-store.msi.com/Laptops/business-productivity/prestige-series/Prestige-N16-Flip-AI-C1XMT-067USY" target="_blank" rel="nofollow"><strong>preorder for $3,299 @ MSI</strong></a><strong></strong></li><li><strong>Dell XPS 16: </strong><a href="https://www.bestbuy.com/product/dell-xps-16-3-2k-oled-touchscreen-laptop-nvidia-rtx-spark-n1x-2026-32gb-memory-512gb-storage-graphite/J3K4L6QH28" target="_blank" rel="nofollow"><strong>$3,799 @ Best Buy</strong></a><strong></strong></li><li><strong>Asus ProArt P14: </strong><a href="https://eshop.asus.com/us/31148-us-cnf-auto.html" target="_blank" rel="nofollow"><strong>$6,499 @ Asus</strong></a></li><li><strong>Asus ProArt P16: </strong><a href="https://eshop.asus.com/us/31150-us-cnf-auto.html" target="_blank" rel="nofollow"><strong>$4,499 @ Asus</strong></a><strong></strong></li></ul><h2 class="article-body__section" id="section-cpu-reality-check-apple-is-still-king-but-other-windows-laptops-don-t-stand-a-chance"><span>CPU reality check: Apple is still king, but other Windows laptops don't stand a chance</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="7CtHwJ7zSb4KoPinam9ka8" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/7CtHwJ7zSb4KoPinam9ka8-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>So let's start with the first benchmark everybody goes to. If you were hoping Nvidia's Arm-based Grace CPU was going to embarrass the M5 Pro, you need to adjust your expectations.</p><p>Given how long it took to make this, it's fair to say this was the main bit I felt nervous about. In short, not terrible, but underwhelming.</p><div ><table><thead><tr><th class="firstcol " ><p>Chip</p></th><th  ><p>Geekbench 7 single-core</p></th><th  ><p>Geekbench 7 multi-core</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Nvidia RTX Spark (20-core CPU)</strong></p></td><td  ><p>2604</p></td><td  ><p>23610</p></td></tr><tr><td class="firstcol " ><p><strong>Apple M5 Pro</strong></p></td><td  ><p>3690</p></td><td  ><p>29659</p></td></tr><tr><td class="firstcol " ><p><strong>Qualcomm Snapdragon X2 Elite Extreme</strong></p></td><td  ><p>3214</p></td><td  ><p>23645</p></td></tr><tr><td class="firstcol " ><p><strong>AMD Ryzen AI Max 395+</strong></p></td><td  ><p>2407</p></td><td  ><p>20856</p></td></tr><tr><td class="firstcol " ><p><strong>Intel Core Ultra x9 388H</strong></p></td><td  ><p>2574</p></td><td  ><p>17223</p></td></tr></tbody></table></div><p>That being said, this was one of the first chances I had to test Nvidia's claims of getting the same performance on and off the charger.</p><p>Now I know there's a difference maker in here — Windows power settings. Putting it to best efficiency will probably starve the chip of power to match it. With that in mind, I've just done the test in both this mode and best performance to see what I get.</p><div ><table><thead><tr><th class="firstcol " ><p>Geekbench 7 test</p></th><th  ><p>Plugged in</p></th><th  ><p>Unplugged (best performance)</p></th><th  ><p>Unplugged (best efficiency)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Single-core</strong></p></td><td  ><p>2604</p></td><td  ><p>2663</p></td><td  ><p>1938</p></td></tr><tr><td class="firstcol " ><p><strong>Multi-core</strong></p></td><td  ><p>26310</p></td><td  ><p>23486</p></td><td  ><p>18860</p></td></tr></tbody></table></div><p>Certainly a surprise to see it gain a few points when unplugged, but this falls within the window of variability in the test results I've been getting. So the answer is a resounding "yes," provided you slap on best performance.</p><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.29%;"><img id="AthCjkviFUAGfSbNv3Zs2V" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/AthCjkviFUAGfSbNv3Zs2V-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1441" attribution="" endorsement="" 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 dig deeper into that multi-core performance, I went to Handbrake. One of the tests we run across all systems is transcoding a copy of Tears of Steel from 4K down to 1080p. This is a solid real-world test of video encoding and real-world multi-core processing. </p><div ><table><thead><tr><th class="firstcol " ><p>Chip</p></th><th  ><p>Handbrake transcoding time (mm:ss)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>RTX Spark</strong></p></td><td  ><p>02:01</p></td></tr><tr><td class="firstcol " ><p><strong>AMD Ryzen AI Max 395+</strong></p></td><td  ><p>02:38</p></td></tr><tr><td class="firstcol " ><p><strong>Apple M5 Pro</strong></p></td><td  ><p>01:45</p></td></tr><tr><td class="firstcol " ><p><strong>Snapdragon X2 Elite Extreme</strong></p></td><td  ><p>02:07</p></td></tr><tr><td class="firstcol " ><p><strong>Intel Core Ultra X9</strong></p></td><td  ><p>04:22</p></td></tr></tbody></table></div><p>As you can see, it clearly leads the way in Windows laptops (Intel caught napping there), but Apple silicon reigns as champ.</p><h2 class="article-body__section" id="section-the-gpu-flex-comparable-to-an-rtx-5070-laptop"><span>The GPU flex: Comparable to an RTX 5070 laptop</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.29%;"><img id="ojmDjjhoh7nW9SLFcWoRa5" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/ojmDjjhoh7nW9SLFcWoRa5-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1441" attribution="" endorsement="" 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 is where Nvidia gets its lick back against the competition. It has a massive Blackwell RTX GPU in it, after all, and when you look at the 3DMark numbers, it matches up to something you’d see in an RTX 5070 gaming laptop — even when tasked with x86 emulation in some of these tests.</p><div ><table><thead><tr><th class="firstcol " ><p>3DMark test</p></th><th  ><p>Nvidia RTX Spark (6144-core GPU)</p></th><th  ><p>Apple M5 Pro</p></th><th  ><p>AMD Ryzen AI Max 395+</p></th><th  ><p>Intel Core Ultra X9</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Fire Strike Ultra (x64)</strong></p></td><td  ><p>7492</p></td><td  ><p>n/a</p></td><td  ><p>6050</p></td><td  ><p>3555</p></td></tr><tr><td class="firstcol " ><p><strong>Time Spy Extreme (x64)</strong></p></td><td  ><p>6060</p></td><td  ><p>n/a</p></td><td  ><p>4689</p></td><td  ><p>3226</p></td></tr><tr><td class="firstcol " ><p><strong>Steel Nomad</strong></p></td><td  ><p>2912</p></td><td  ><p>2335</p></td><td  ><p>1895</p></td><td  ><p>1483</p></td></tr><tr><td class="firstcol " ><p><strong>Solar Bay Extreme</strong></p></td><td  ><p>10594</p></td><td  ><p>9108</p></td><td  ><p>6047</p></td><td  ><p>4015</p></td></tr></tbody></table></div><p>And to check it's <strong>not </strong>just the CPU getting that same performance on and off the charger...</p><div ><table><thead><tr><th class="firstcol " ><p>3DMark test</p></th><th  ><p>Plugged in</p></th><th  ><p>Unplugged (Best performance)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Fire Strike Ultra (x64)</strong></p></td><td  ><p>7492</p></td><td  ><p>7970</p></td></tr><tr><td class="firstcol " ><p><strong>Time Spy Extreme (x64)</strong></p></td><td  ><p>6060</p></td><td  ><p>5897</p></td></tr><tr><td class="firstcol " ><p><strong>Steel Nomad</strong></p></td><td  ><p>2912</p></td><td  ><p>3160</p></td></tr><tr><td class="firstcol " ><p><strong>Solar Bay Extreme</strong></p></td><td  ><p>10594</p></td><td  ><p>10900</p></td></tr></tbody></table></div><p>Once again, same performance on and off the battery. This is consistent with what Nvidia's been telling us, and it's one of the features gatekept by Apple MacBooks that is now in the hands of Windows users!</p><p>Now, let's get into the games.</p><h2 id="forza-horizon-6">Forza Horizon 6</h2><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.29%;"><img id="9AdEEzfzTc2yMr8BQhy2XC" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/9AdEEzfzTc2yMr8BQhy2XC-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1441" attribution="" endorsement="" 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/forza-horizon-6-review">Forza Horizon 6</a> is one of my favorite racing games of the past decade, so it only makes sense I start here. Let's max it without DLSS tech and see what we get.</p><div ><table><caption>Forza Horizon 6 Extreme + RT 1440p</caption><tbody><tr><td class="firstcol " ><p><strong>FPS</strong></p></td><td  ><p><strong>1% lows</strong></p></td><td  ><p><strong>Average Frametime</strong></p></td></tr><tr><td class="firstcol " ><p>29.28 FPS</p></td><td  ><p>15.17 FPS</p></td><td  ><p>34.15ms</p></td></tr></tbody></table></div><p>Bear in mind this is a stress test of epic proportions, but you can see how it struggles. That 1% low is a good indicator of the consistency of the frame rate, which is highly volatile here.</p><p>Interestingly, as I tried this push to Extreme + RT settings, I noticed some rubberbanding in the gameplay — probably down to the CPU having to work overtime translating the x86 code of the game while also sending the instructions to the GPU.</p><p>You can see that as Frametime spikes can be seen anywhere from 60ms up to 140ms. The game feels sluggish.</p><p>But now let's hone it. Thinking about this like an RTX 5070 laptop, I'll drop it down to Ultra + RT (same resolution) and stick with DLSS 4.5 set to auto with dynamic frame generation.</p><div ><table><caption>Forza Horizon 6 Ultra + RT 1440p + DLSS 4.5 dynamic frame gen</caption><tbody><tr><td class="firstcol " ><p><strong>FPS</strong></p></td><td  ><p><strong>1% lows</strong></p></td><td  ><p><strong>Average Frametime</strong></p></td></tr><tr><td class="firstcol " ><p>72.82 FPS</p></td><td  ><p>25.89 FPS</p></td><td  ><p>13.73ms</p></td></tr></tbody></table></div><p>Immediately, this feels so much better to play! There are still some latency spikes here and there, but none that are hardly noticeable. </p><p>Also interesting to note, the temperatures on the GPU dropped too by one degree (71 C in the first run, and 70C in the second).</p><p>And the cherry on top — here's performance on battery.</p><div ><table><caption>Forza Horizon 6 Ultra + RT 1440p + DLSS 4.5 dynamic frame gen (UNPLUGGED)</caption><tbody><tr><td class="firstcol " ><p><strong>FPS</strong></p></td><td  ><p><strong>1% lows</strong></p></td><td  ><p><strong>Average Frametime</strong></p></td></tr><tr><td class="firstcol " ><p>71.06 FPS</p></td><td  ><p>25.26 FPS</p></td><td  ><p>14.07ms</p></td></tr></tbody></table></div><p>Yep, same performance on and off the charger here!</p><h2 id="cyberpunk-2077">Cyberpunk 2077</h2><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="WDgMDep9AmNsnhSTxEMqnP" name="best_PC_games_Cyberpunk_2077.jpg" alt="Cyberpunk 2077" src="https://cdn.mos.cms.futurecdn.net/WDgMDep9AmNsnhSTxEMqnP-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: CD Projekt Red)</span></figcaption></figure><p>Listen up, choombas! It wouldn't be an Nvidia laptop test if we didn't touch on Cyberpunk 2077. For context on this one, I'm gonna compare it against gaming laptops with different GPUs, so you can see where it lands.</p><div ><table><tbody><tr><td class="firstcol " ><p><strong>GPU</strong></p></td><td  ><p><strong>Cyberpunk 2077 (1080p Extreme + RT NO DLSS)</strong></p></td><td  ><p><strong>Cyberpunk 2077 (1080p Extreme + RT DLSS)</strong></p></td></tr><tr><td class="firstcol " ><p><strong>RTX Spark</strong></p></td><td  ><p>39 FPS</p></td><td  ><p>80 FPS</p></td></tr><tr><td class="firstcol " ><p><strong>RTX 5060</strong></p></td><td  ><p>14 FPS</p></td><td  ><p>31 FPS</p></td></tr><tr><td class="firstcol " ><p><strong>RTX 5070</strong></p></td><td  ><p>35 FPS</p></td><td  ><p>81 FPS</p></td></tr><tr><td class="firstcol " ><p><strong>RTX 5090</strong></p></td><td  ><p>89 FPS</p></td><td  ><p>182 FPS</p></td></tr></tbody></table></div><p>And if you're curious, I got 38.9 FPS when unplugged (basically 39).</p><h2 id="black-myth-wukong">Black Myth: Wukong</h2><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="uTwzKZ3zxVigmxYFN4gxvF" name="Black Myth 4.jpg" alt="Black Myth: Wukong" src="https://cdn.mos.cms.futurecdn.net/uTwzKZ3zxVigmxYFN4gxvF-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: GameScience)</span></figcaption></figure><p>Is this a safe space? ...I'm really not a fan of Black Myth: Wukong.</p><p>OK, I get it! I can appreciate the craft of it, and I get why people love it. I've just never got on with it. That being said, I did benchmarks for this too.</p><div ><table><tbody><tr><td class="firstcol " ><p><strong>GPU</strong></p></td><td  ><p><strong>Black Myth: Wukong (1080p Cinematic NO DLSS)</strong></p></td></tr><tr><td class="firstcol " ><p><strong>RTX Spark</strong></p></td><td  ><p>36 FPS</p></td></tr><tr><td class="firstcol " ><p><strong>RTX 5060</strong></p></td><td  ><p>24 FPS</p></td></tr><tr><td class="firstcol " ><p><strong>RTX 5070</strong></p></td><td  ><p>30 FPS</p></td></tr><tr><td class="firstcol " ><p><strong>RTX 5090</strong></p></td><td  ><p>65 FPS</p></td></tr></tbody></table></div><p>...you spotting a pattern? This maxed-out RTX Spark is lining up pretty much neck-and-neck with the RTX 5070, while also running cooler and more efficiently. Nifty!</p><h2 id="gears-of-war-e-day">Gears of War: E-Day</h2><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="KesZah3uaURM6LSj2mSB4Z" name="GoW_EDAY_Boomer_4K" alt="Gears of War: E-Day" src="https://cdn.mos.cms.futurecdn.net/KesZah3uaURM6LSj2mSB4Z-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 Game Studios)</span></figcaption></figure><p>This came out recently, and I saw it being played at the Surface Laptop Ultra event in San Francisco, so of course I had to push it further here.</p><p>This is running at 2180x1453 Ultra settings with DLSS 4.5 Dynamic and RTX Mega Geometry turned on.</p><div ><table><tbody><tr><td class="firstcol " ><p><strong>FPS</strong></p></td><td  ><p><strong>1% lows</strong></p></td><td  ><p><strong>Average Frametime</strong></p></td></tr><tr><td class="firstcol " ><p>123 FPS</p></td><td  ><p>28.01 FPS</p></td><td  ><p>8.13 ms</p></td></tr></tbody></table></div><p>Some observations here — this is clearly a scalable engine on PC that can run fast here. But there were some micro-stutters when I pushed it to the bleeding edge.</p><p>That being said, the average frame time and response to controller inputs meant this all felt smooth with virtually zero latency.</p><h2 class="article-body__section" id="section-creative-apps-is-where-rtx-spark-starts-to-shine"><span>Creative apps is where RTX Spark starts to shine</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="6aNk3jfBjVCsSGZLkH7JZg" name="Nvidia RTX Spark for a week3" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/6aNk3jfBjVCsSGZLkH7JZg-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><p>There are several ways to test creative performance, so I'll dive into them one by one. PugetBench is a good way of seeing how a laptop will fare in your standard creative prosumer workload across Photoshop and Premiere Pro. Here's how RTX Spark fared in my testing.</p><div ><table><thead><tr><th class="firstcol " ><p>Chip</p></th><th  ><p>Photoshop PugetBench score</p></th><th  ><p>Premiere Pro PugetBench score</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>RTX Spark</strong></p></td><td  ><p>11762</p></td><td  ><p>87098</p></td></tr><tr><td class="firstcol " ><p><strong>M5 Pro</strong></p></td><td  ><p>15204</p></td><td  ><p>105580</p></td></tr><tr><td class="firstcol " ><p><strong>AMD Ryzen AI Max+ 395</strong></p></td><td  ><p>11077</p></td><td  ><p>52945</p></td></tr><tr><td class="firstcol " ><p><strong>Intel Core Ultra x9 388H</strong></p></td><td  ><p>8823</p></td><td  ><p>51726</p></td></tr></tbody></table></div><p>The finely-tuned cores of the M5 Pro take the win here, but RTX Spark does take a leap ahead of its Windows competition in creator performance.</p><h2 id="let-39-s-get-to-cinebench">Let's get to Cinebench</h2><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.29%;"><img id="MCToNk3AZ9oyRXq78vgghG" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/MCToNk3AZ9oyRXq78vgghG-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1441" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Unfortunately, there isn't any GPU testing available here yet (the OptiX driver for the chip isn't there), so this is a straight CPU comparison.</p><div ><table><thead><tr><th class="firstcol " ><p>Cinebench test</p></th><th  ><p>Result</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Multi-core CPU</strong></p></td><td  ><p>6710</p></td></tr><tr><td class="firstcol " ><p><strong>Single-core CPU</strong></p></td><td  ><p>552</p></td></tr></tbody></table></div><p>These numbers put it ahead of Intel, AMD, and Qualcomm's latest flagships, but Apple M5 Pro (again) comes out on top. It's the best of the Windows bunch.</p><h2 class="article-body__section" id="section-ai-performance-is-where-rtx-spark-takes-the-lead"><span>AI performance is where RTX Spark takes the lead</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="CxvjAewa4xS3be2otk3Neg" name="Nvidia RTX Spark for a week2" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/CxvjAewa4xS3be2otk3Neg-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><p>To put some numbers to Nvidia's advantage here, I ran it through UL Procyon AI benchmarks.</p><div ><table><caption>RTX Spark AI test</caption><thead><tr><th class="firstcol " ><p>Benchmark</p></th><th  ><p>Time to first token</p></th><th  ><p>Tokens per second</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Phi 3.5 text generation</strong></p></td><td  ><p>0.28s</p></td><td  ><p>74.4</p></td></tr><tr><td class="firstcol " ><p><strong>Mistral 7B text generation</strong></p></td><td  ><p>0.49s</p></td><td  ><p>54.2</p></td></tr><tr><td class="firstcol " ><p><strong>Llama 3.1 text generation</strong></p></td><td  ><p>0.44s</p></td><td  ><p>50.9</p></td></tr><tr><td class="firstcol " ><p><strong>Llama 2 text generation</strong></p></td><td  ><p>0.95s</p></td><td  ><p>27.8</p></td></tr></tbody></table></div><p>This isn't a test that has been normally run on other laptops in the Tom's Guide lab, so I've had to ask around my friends/fellow nerds for insights on this. </p><p>In their experience, RTX Spark seems to be surpassing the M5 Pro's AI prowess, exceeding the capabilities of AMD Ryzen AI Max+ and blowing past Intel Core Ultra X9. Once I can do these tests myself, I'll do a follow-up.</p><p>Also, for what it's worth, here's the comparison to my <a href="https://www.tomsguide.com/computing/gpus/nvidia-geforce-rtx-5060-ti-review#section-nvidia-geforce-rtx-5060-ti-the-ups">RTX 5060 Ti 16GB desktop GPU</a>. </p><div ><table><thead><tr><th class="firstcol " ><p>Chip</p></th><th  ><p>Phi 3.5</p></th><th  ><p>Llama 3.1 8B</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>RTX Spark laptop chip</strong></p></td><td  ><p>2631</p></td><td  ><p>2173</p></td></tr><tr><td class="firstcol " ><p><strong>RTX 5060 Ti 16GB desktop GPU</strong></p></td><td  ><p>3084</p></td><td  ><p>2642</p></td></tr></tbody></table></div><p>A reduction is always expected between the raw wattage of desktop parts and a laptop chip, but the Spark does get impressively close.</p><h2 class="article-body__section" id="section-battery-life-is-a-mixed-bag"><span>Battery life is a mixed bag</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.29%;"><img id="AUp2KX8cen4HZbtov4rHCL" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/AUp2KX8cen4HZbtov4rHCL-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1441" attribution="" endorsement="" 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 what about stamina? Nvidia promised all-day battery life, and <em>technically </em>that’s true. But it doesn’t come close to the efficiency king of Apple’s MacBook Pro.</p><div ><table><thead><tr><th class="firstcol " ><p>Chip (laptop)</p></th><th  ><p>Web browsing battery life test result (hh:mm)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>RTX Spark (Microsoft Surface Laptop Ultra)</strong></p></td><td  ><p>10:15</p></td></tr><tr><td class="firstcol " ><p><strong>M5 Pro (16-inch MacBook Pro)</strong></p></td><td  ><p>21:25</p></td></tr><tr><td class="firstcol " ><p><strong>Snapdragon X2 Elite (Zenbook A16)</strong></p></td><td  ><p>10:26</p></td></tr><tr><td class="firstcol " ><p><strong>Intel Core Ultra X9 (Asus Zenbook Duo one screen)</strong></p></td><td  ><p>14:23</p></td></tr><tr><td class="firstcol " ><p><strong>AMD Ryzen AI Max 395+ (ProArt Go Pro Edition PX13)</strong></p></td><td  ><p>11:12</p></td></tr></tbody></table></div><p>When it comes to gaming or running local AI at full pelt, this falls in line with what you’d expect from an RTX gaming laptop (our gaming test result got <strong>one hour and thirty-eight minutes</strong>) — give or take about 20-30 minutes depending on how much power the internals soak up.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width: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>Meanwhile, if you're expecting that same all-day battery life claim to extend to gaming, that's not the case. You do indeed get more stamina than your average gaming laptop, but not by much.</p><div ><table><tbody><tr><td class="firstcol " ><p><strong>Chip/laptop</strong></p></td><td  ><p><strong>PCMark 10 gaming battery life test results (hh:mm)</strong></p></td></tr><tr><td class="firstcol " ><p><strong>RTX Spark (Surface Laptop Ultra)</strong></p></td><td  ><p>01:38</p></td></tr><tr><td class="firstcol " ><p><strong>RTX 5060 (Lenovo LOQ Essential 15)</strong></p></td><td  ><p>00:58</p></td></tr><tr><td class="firstcol " ><p><strong>RTX 5070 (HP HyperX Omen 15)</strong></p></td><td  ><p>01:13</p></td></tr><tr><td class="firstcol " ><p><strong>RTX 5090 (HP HyperX Omen Max 16)</strong></p></td><td  ><p>01:08</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-who-should-buy-rtx-spark-and-who-should-buy-a-gaming-laptop"><span>Who should buy RTX Spark, and who should buy a gaming laptop?</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="dNW3jWXxfBnC9DJZeALJLM" name="Asus ROG Zephyrus G14 (2026)" alt="Asus ROG Zephyrus G14 (2026)" src="https://cdn.mos.cms.futurecdn.net/dNW3jWXxfBnC9DJZeALJLM-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>That battery equivalency does raise another question — who is RTX Spark for?</p><p>Because for all intents and purposes, an RTX 50-series gaming laptop could do a lot of this workload, whether it’s gaming, creative work, or some of the local AI stuff. And depending on how efficient that gaming laptop can run, you <em>could </em>get a similar battery life.</p><p>The real differentiator comes in that unified memory. With there being two pools of memory between the RAM and the GPU’s VRAM in a gaming laptop, it’s not as efficient as having one giant tub of it that can be divided depending on job priority.</p><p>That means on RTX Spark, you can run vastly larger local AI models, and larger projects in the likes of Blender than you could elsewhere. This is definitely for the prosumer market.</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/i-didnt-believe-an-nvidia-rtx-spark-laptop-would-have-the-same-performance-both-on-and-off-the-charger-so-i-put-it-to-the-test">I didn’t believe an Nvidia RTX Spark laptop would have the same performance both on and off the charger — so I put it to the test</a></li><li><a href="https://www.tomsguide.com/computing/laptops/forget-rtx-spark-the-surface-laptop-ultras-magnetic-usb-c-charger-is-a-game-changer-that-makes-apples-magsafe-look-obsolete">Forget RTX Spark: The Surface Laptop Ultra’s magnetic USB-C charger is a game-changer that makes Apple’s MagSafe look obsolete</a></li><li><a href="https://www.tomsguide.com/computing/windows-operating-systems/i-just-tested-windows-11-26h2-heres-how-to-update-now-and-why-microsoft-finally-fixed-the-two-worst-things-about-windows-11">I just tested Windows 11 26H2 — here’s how to update now and why Microsoft finally fixed the two worst things about Windows 11</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/cpus/nvidia-rtx-spark-benchmarks</link>
                                                                            <description>
                            <![CDATA[ I benchmarked Nvidia’s RTX Spark inside the Surface Laptop Ultra. From 115 FPS DLSS gaming to AI and battery tests, here is the lab data. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">8saJYEgozmd8NSbCqZrXPS</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/3LkD4AgudgNF36g8bsRMiL-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 15 Oct 2026 18:46:07 +0000</pubDate>                                                                                                                                <updated>Thu, 15 Oct 2026 22:20:14 +0000</updated>
                                                                                                                                            <category><![CDATA[CPUs]]></category>
                                                    <category><![CDATA[Laptops]]></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/3LkD4AgudgNF36g8bsRMiL-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/3LkD4AgudgNF36g8bsRMiL-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The embargo has lifted on Nvidia's RTX Spark platform, and the internet is currently doing what it always does: arguing over spreadsheet math. I've done something different with my <a href="https://www.tomsguide.com/computing/cpus/ive-been-living-with-nvidias-rtx-spark-for-a-week-on-surface-laptop-ultra-its-not-a-macbook-pro-killer-but-something-much-weirder-and-wildly-powerful">diary of a first week living with Spark</a>, but I've been busy benchmarking too!</p><p>For months, the tech industry (myself included) hyped up this Arm-based Grace CPU and Blackwell RTX GPU combo as the ultimate "MacBook Pro killer." Reviewers (also like me) have spent the past seven days squinting at Geekbench scores to see if Nvidia finally dethroned Apple's M-series silicon.</p><p>Let me save you some time: <strong>it didn't.</strong></p><p>But judging RTX Spark purely by its single-core CPU speeds is like judging a Ferrari by its cup holders. And after a week of stress-testing the Microsoft Surface Laptop Ultra with Spark — running every synthetic and real-world test we can throw at it — it's clear that this is so much more.</p><p>Those numbers tell a very different, far more complicated story. Let me explain. </p><h2 class="article-body__section" id="section-where-to-buy-rtx-spark-laptops"><span>Where to buy RTX Spark laptops</span></h2><ul><li><strong>MS Surface Laptop Ultra: </strong><a href="https://www.microsoft.com/en-us/store/configure/surface-laptop-ultra/8wg5vqp0x4b8" target="_blank" rel="nofollow"><strong>$2,599 @ MS Store</strong></a><strong></strong></li><li><strong>HP OmniBook X AI 14: </strong><a href="https://www.hp.com/us-en/shop/pdp/hp-omnibook-x-laptop-next-gen-ai-14-ks000-14-cb1l6av-1" target="_blank" rel="nofollow"><strong>$2,999 @ HP</strong></a><strong></strong></li><li><strong>HP OmniBook Ultra AI 16 OLED: </strong><a href="https://www.bestbuy.com/product/hp-omnibook-ultra-16-3k-oled-touchscreen-laptop-nvidia-rtx-spark-n1x-20-core-2026-32gb-memory-1tb-ssd-copilot-pc-eclipse-gray/J3PPH557Q8" target="_blank" rel="nofollow"><strong>$3,199 @ Best Buy</strong></a><strong></strong></li><li><strong>Lenovo Pro 9n: </strong><a href="https://www.lenovo.com/us/en/p/laptops/yoga/yoga-pro-series/lenovo-pro-9n-gen-11-15-inch-nvidia/83sscto1wwus1" target="_blank" rel="nofollow"><strong>$2,999 @ Lenovo</strong></a><strong></strong></li><li><strong>Lenovo Yoga 9n 2-in-1: </strong><a href="https://www.lenovo.com/us/en/p/laptops/yoga/yoga-2-in-1-series/yoga-9n-2-in-1-gen-11-16-inch-nvidia/83n7cto1wwus1" target="_blank" rel="nofollow"><strong>$2,999 @ Lenovo</strong></a><strong></strong></li><li><strong>MSI Prestige N16 Flip AI+ OLED 2-in-1: </strong><a href="https://us-store.msi.com/Laptops/business-productivity/prestige-series/Prestige-N16-Flip-AI-C1XMT-067USY" target="_blank" rel="nofollow"><strong>preorder for $3,299 @ MSI</strong></a><strong></strong></li><li><strong>Dell XPS 16: </strong><a href="https://www.bestbuy.com/product/dell-xps-16-3-2k-oled-touchscreen-laptop-nvidia-rtx-spark-n1x-2026-32gb-memory-512gb-storage-graphite/J3K4L6QH28" target="_blank" rel="nofollow"><strong>$3,799 @ Best Buy</strong></a><strong></strong></li><li><strong>Asus ProArt P14: </strong><a href="https://eshop.asus.com/us/31148-us-cnf-auto.html" target="_blank" rel="nofollow"><strong>$6,499 @ Asus</strong></a></li><li><strong>Asus ProArt P16: </strong><a href="https://eshop.asus.com/us/31150-us-cnf-auto.html" target="_blank" rel="nofollow"><strong>$4,499 @ Asus</strong></a><strong></strong></li></ul><h2 class="article-body__section" id="section-cpu-reality-check-apple-is-still-king-but-other-windows-laptops-don-t-stand-a-chance"><span>CPU reality check: Apple is still king, but other Windows laptops don't stand a chance</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="7CtHwJ7zSb4KoPinam9ka8" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/7CtHwJ7zSb4KoPinam9ka8-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>So let's start with the first benchmark everybody goes to. If you were hoping Nvidia's Arm-based Grace CPU was going to embarrass the M5 Pro, you need to adjust your expectations.</p><p>Given how long it took to make this, it's fair to say this was the main bit I felt nervous about. In short, not terrible, but underwhelming.</p><div ><table><thead><tr><th class="firstcol " ><p>Chip</p></th><th  ><p>Geekbench 7 single-core</p></th><th  ><p>Geekbench 7 multi-core</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Nvidia RTX Spark (20-core CPU)</strong></p></td><td  ><p>2604</p></td><td  ><p>23610</p></td></tr><tr><td class="firstcol " ><p><strong>Apple M5 Pro</strong></p></td><td  ><p>3690</p></td><td  ><p>29659</p></td></tr><tr><td class="firstcol " ><p><strong>Qualcomm Snapdragon X2 Elite Extreme</strong></p></td><td  ><p>3214</p></td><td  ><p>23645</p></td></tr><tr><td class="firstcol " ><p><strong>AMD Ryzen AI Max 395+</strong></p></td><td  ><p>2407</p></td><td  ><p>20856</p></td></tr><tr><td class="firstcol " ><p><strong>Intel Core Ultra x9 388H</strong></p></td><td  ><p>2574</p></td><td  ><p>17223</p></td></tr></tbody></table></div><p>That being said, this was one of the first chances I had to test Nvidia's claims of getting the same performance on and off the charger.</p><p>Now I know there's a difference maker in here — Windows power settings. Putting it to best efficiency will probably starve the chip of power to match it. With that in mind, I've just done the test in both this mode and best performance to see what I get.</p><div ><table><thead><tr><th class="firstcol " ><p>Geekbench 7 test</p></th><th  ><p>Plugged in</p></th><th  ><p>Unplugged (best performance)</p></th><th  ><p>Unplugged (best efficiency)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Single-core</strong></p></td><td  ><p>2604</p></td><td  ><p>2663</p></td><td  ><p>1938</p></td></tr><tr><td class="firstcol " ><p><strong>Multi-core</strong></p></td><td  ><p>26310</p></td><td  ><p>23486</p></td><td  ><p>18860</p></td></tr></tbody></table></div><p>Certainly a surprise to see it gain a few points when unplugged, but this falls within the window of variability in the test results I've been getting. So the answer is a resounding "yes," provided you slap on best performance.</p><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.29%;"><img id="AthCjkviFUAGfSbNv3Zs2V" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/AthCjkviFUAGfSbNv3Zs2V-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1441" attribution="" endorsement="" 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 dig deeper into that multi-core performance, I went to Handbrake. One of the tests we run across all systems is transcoding a copy of Tears of Steel from 4K down to 1080p. This is a solid real-world test of video encoding and real-world multi-core processing. </p><div ><table><thead><tr><th class="firstcol " ><p>Chip</p></th><th  ><p>Handbrake transcoding time (mm:ss)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>RTX Spark</strong></p></td><td  ><p>02:01</p></td></tr><tr><td class="firstcol " ><p><strong>AMD Ryzen AI Max 395+</strong></p></td><td  ><p>02:38</p></td></tr><tr><td class="firstcol " ><p><strong>Apple M5 Pro</strong></p></td><td  ><p>01:45</p></td></tr><tr><td class="firstcol " ><p><strong>Snapdragon X2 Elite Extreme</strong></p></td><td  ><p>02:07</p></td></tr><tr><td class="firstcol " ><p><strong>Intel Core Ultra X9</strong></p></td><td  ><p>04:22</p></td></tr></tbody></table></div><p>As you can see, it clearly leads the way in Windows laptops (Intel caught napping there), but Apple silicon reigns as champ.</p><h2 class="article-body__section" id="section-the-gpu-flex-comparable-to-an-rtx-5070-laptop"><span>The GPU flex: Comparable to an RTX 5070 laptop</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.29%;"><img id="ojmDjjhoh7nW9SLFcWoRa5" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/ojmDjjhoh7nW9SLFcWoRa5-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1441" attribution="" endorsement="" 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 is where Nvidia gets its lick back against the competition. It has a massive Blackwell RTX GPU in it, after all, and when you look at the 3DMark numbers, it matches up to something you’d see in an RTX 5070 gaming laptop — even when tasked with x86 emulation in some of these tests.</p><div ><table><thead><tr><th class="firstcol " ><p>3DMark test</p></th><th  ><p>Nvidia RTX Spark (6144-core GPU)</p></th><th  ><p>Apple M5 Pro</p></th><th  ><p>AMD Ryzen AI Max 395+</p></th><th  ><p>Intel Core Ultra X9</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Fire Strike Ultra (x64)</strong></p></td><td  ><p>7492</p></td><td  ><p>n/a</p></td><td  ><p>6050</p></td><td  ><p>3555</p></td></tr><tr><td class="firstcol " ><p><strong>Time Spy Extreme (x64)</strong></p></td><td  ><p>6060</p></td><td  ><p>n/a</p></td><td  ><p>4689</p></td><td  ><p>3226</p></td></tr><tr><td class="firstcol " ><p><strong>Steel Nomad</strong></p></td><td  ><p>2912</p></td><td  ><p>2335</p></td><td  ><p>1895</p></td><td  ><p>1483</p></td></tr><tr><td class="firstcol " ><p><strong>Solar Bay Extreme</strong></p></td><td  ><p>10594</p></td><td  ><p>9108</p></td><td  ><p>6047</p></td><td  ><p>4015</p></td></tr></tbody></table></div><p>And to check it's <strong>not </strong>just the CPU getting that same performance on and off the charger...</p><div ><table><thead><tr><th class="firstcol " ><p>3DMark test</p></th><th  ><p>Plugged in</p></th><th  ><p>Unplugged (Best performance)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Fire Strike Ultra (x64)</strong></p></td><td  ><p>7492</p></td><td  ><p>7970</p></td></tr><tr><td class="firstcol " ><p><strong>Time Spy Extreme (x64)</strong></p></td><td  ><p>6060</p></td><td  ><p>5897</p></td></tr><tr><td class="firstcol " ><p><strong>Steel Nomad</strong></p></td><td  ><p>2912</p></td><td  ><p>3160</p></td></tr><tr><td class="firstcol " ><p><strong>Solar Bay Extreme</strong></p></td><td  ><p>10594</p></td><td  ><p>10900</p></td></tr></tbody></table></div><p>Once again, same performance on and off the battery. This is consistent with what Nvidia's been telling us, and it's one of the features gatekept by Apple MacBooks that is now in the hands of Windows users!</p><p>Now, let's get into the games.</p><h2 id="forza-horizon-6">Forza Horizon 6</h2><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.29%;"><img id="9AdEEzfzTc2yMr8BQhy2XC" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/9AdEEzfzTc2yMr8BQhy2XC-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1441" attribution="" endorsement="" 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/forza-horizon-6-review">Forza Horizon 6</a> is one of my favorite racing games of the past decade, so it only makes sense I start here. Let's max it without DLSS tech and see what we get.</p><div ><table><caption>Forza Horizon 6 Extreme + RT 1440p</caption><tbody><tr><td class="firstcol " ><p><strong>FPS</strong></p></td><td  ><p><strong>1% lows</strong></p></td><td  ><p><strong>Average Frametime</strong></p></td></tr><tr><td class="firstcol " ><p>29.28 FPS</p></td><td  ><p>15.17 FPS</p></td><td  ><p>34.15ms</p></td></tr></tbody></table></div><p>Bear in mind this is a stress test of epic proportions, but you can see how it struggles. That 1% low is a good indicator of the consistency of the frame rate, which is highly volatile here.</p><p>Interestingly, as I tried this push to Extreme + RT settings, I noticed some rubberbanding in the gameplay — probably down to the CPU having to work overtime translating the x86 code of the game while also sending the instructions to the GPU.</p><p>You can see that as Frametime spikes can be seen anywhere from 60ms up to 140ms. The game feels sluggish.</p><p>But now let's hone it. Thinking about this like an RTX 5070 laptop, I'll drop it down to Ultra + RT (same resolution) and stick with DLSS 4.5 set to auto with dynamic frame generation.</p><div ><table><caption>Forza Horizon 6 Ultra + RT 1440p + DLSS 4.5 dynamic frame gen</caption><tbody><tr><td class="firstcol " ><p><strong>FPS</strong></p></td><td  ><p><strong>1% lows</strong></p></td><td  ><p><strong>Average Frametime</strong></p></td></tr><tr><td class="firstcol " ><p>72.82 FPS</p></td><td  ><p>25.89 FPS</p></td><td  ><p>13.73ms</p></td></tr></tbody></table></div><p>Immediately, this feels so much better to play! There are still some latency spikes here and there, but none that are hardly noticeable. </p><p>Also interesting to note, the temperatures on the GPU dropped too by one degree (71 C in the first run, and 70C in the second).</p><p>And the cherry on top — here's performance on battery.</p><div ><table><caption>Forza Horizon 6 Ultra + RT 1440p + DLSS 4.5 dynamic frame gen (UNPLUGGED)</caption><tbody><tr><td class="firstcol " ><p><strong>FPS</strong></p></td><td  ><p><strong>1% lows</strong></p></td><td  ><p><strong>Average Frametime</strong></p></td></tr><tr><td class="firstcol " ><p>71.06 FPS</p></td><td  ><p>25.26 FPS</p></td><td  ><p>14.07ms</p></td></tr></tbody></table></div><p>Yep, same performance on and off the charger here!</p><h2 id="cyberpunk-2077">Cyberpunk 2077</h2><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="WDgMDep9AmNsnhSTxEMqnP" name="best_PC_games_Cyberpunk_2077.jpg" alt="Cyberpunk 2077" src="https://cdn.mos.cms.futurecdn.net/WDgMDep9AmNsnhSTxEMqnP-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: CD Projekt Red)</span></figcaption></figure><p>Listen up, choombas! It wouldn't be an Nvidia laptop test if we didn't touch on Cyberpunk 2077. For context on this one, I'm gonna compare it against gaming laptops with different GPUs, so you can see where it lands.</p><div ><table><tbody><tr><td class="firstcol " ><p><strong>GPU</strong></p></td><td  ><p><strong>Cyberpunk 2077 (1080p Extreme + RT NO DLSS)</strong></p></td><td  ><p><strong>Cyberpunk 2077 (1080p Extreme + RT DLSS)</strong></p></td></tr><tr><td class="firstcol " ><p><strong>RTX Spark</strong></p></td><td  ><p>39 FPS</p></td><td  ><p>80 FPS</p></td></tr><tr><td class="firstcol " ><p><strong>RTX 5060</strong></p></td><td  ><p>14 FPS</p></td><td  ><p>31 FPS</p></td></tr><tr><td class="firstcol " ><p><strong>RTX 5070</strong></p></td><td  ><p>35 FPS</p></td><td  ><p>81 FPS</p></td></tr><tr><td class="firstcol " ><p><strong>RTX 5090</strong></p></td><td  ><p>89 FPS</p></td><td  ><p>182 FPS</p></td></tr></tbody></table></div><p>And if you're curious, I got 38.9 FPS when unplugged (basically 39).</p><h2 id="black-myth-wukong">Black Myth: Wukong</h2><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="uTwzKZ3zxVigmxYFN4gxvF" name="Black Myth 4.jpg" alt="Black Myth: Wukong" src="https://cdn.mos.cms.futurecdn.net/uTwzKZ3zxVigmxYFN4gxvF-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: GameScience)</span></figcaption></figure><p>Is this a safe space? ...I'm really not a fan of Black Myth: Wukong.</p><p>OK, I get it! I can appreciate the craft of it, and I get why people love it. I've just never got on with it. That being said, I did benchmarks for this too.</p><div ><table><tbody><tr><td class="firstcol " ><p><strong>GPU</strong></p></td><td  ><p><strong>Black Myth: Wukong (1080p Cinematic NO DLSS)</strong></p></td></tr><tr><td class="firstcol " ><p><strong>RTX Spark</strong></p></td><td  ><p>36 FPS</p></td></tr><tr><td class="firstcol " ><p><strong>RTX 5060</strong></p></td><td  ><p>24 FPS</p></td></tr><tr><td class="firstcol " ><p><strong>RTX 5070</strong></p></td><td  ><p>30 FPS</p></td></tr><tr><td class="firstcol " ><p><strong>RTX 5090</strong></p></td><td  ><p>65 FPS</p></td></tr></tbody></table></div><p>...you spotting a pattern? This maxed-out RTX Spark is lining up pretty much neck-and-neck with the RTX 5070, while also running cooler and more efficiently. Nifty!</p><h2 id="gears-of-war-e-day">Gears of War: E-Day</h2><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="KesZah3uaURM6LSj2mSB4Z" name="GoW_EDAY_Boomer_4K" alt="Gears of War: E-Day" src="https://cdn.mos.cms.futurecdn.net/KesZah3uaURM6LSj2mSB4Z-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 Game Studios)</span></figcaption></figure><p>This came out recently, and I saw it being played at the Surface Laptop Ultra event in San Francisco, so of course I had to push it further here.</p><p>This is running at 2180x1453 Ultra settings with DLSS 4.5 Dynamic and RTX Mega Geometry turned on.</p><div ><table><tbody><tr><td class="firstcol " ><p><strong>FPS</strong></p></td><td  ><p><strong>1% lows</strong></p></td><td  ><p><strong>Average Frametime</strong></p></td></tr><tr><td class="firstcol " ><p>123 FPS</p></td><td  ><p>28.01 FPS</p></td><td  ><p>8.13 ms</p></td></tr></tbody></table></div><p>Some observations here — this is clearly a scalable engine on PC that can run fast here. But there were some micro-stutters when I pushed it to the bleeding edge.</p><p>That being said, the average frame time and response to controller inputs meant this all felt smooth with virtually zero latency.</p><h2 class="article-body__section" id="section-creative-apps-is-where-rtx-spark-starts-to-shine"><span>Creative apps is where RTX Spark starts to shine</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="6aNk3jfBjVCsSGZLkH7JZg" name="Nvidia RTX Spark for a week3" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/6aNk3jfBjVCsSGZLkH7JZg-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><p>There are several ways to test creative performance, so I'll dive into them one by one. PugetBench is a good way of seeing how a laptop will fare in your standard creative prosumer workload across Photoshop and Premiere Pro. Here's how RTX Spark fared in my testing.</p><div ><table><thead><tr><th class="firstcol " ><p>Chip</p></th><th  ><p>Photoshop PugetBench score</p></th><th  ><p>Premiere Pro PugetBench score</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>RTX Spark</strong></p></td><td  ><p>11762</p></td><td  ><p>87098</p></td></tr><tr><td class="firstcol " ><p><strong>M5 Pro</strong></p></td><td  ><p>15204</p></td><td  ><p>105580</p></td></tr><tr><td class="firstcol " ><p><strong>AMD Ryzen AI Max+ 395</strong></p></td><td  ><p>11077</p></td><td  ><p>52945</p></td></tr><tr><td class="firstcol " ><p><strong>Intel Core Ultra x9 388H</strong></p></td><td  ><p>8823</p></td><td  ><p>51726</p></td></tr></tbody></table></div><p>The finely-tuned cores of the M5 Pro take the win here, but RTX Spark does take a leap ahead of its Windows competition in creator performance.</p><h2 id="let-39-s-get-to-cinebench">Let's get to Cinebench</h2><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.29%;"><img id="MCToNk3AZ9oyRXq78vgghG" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/MCToNk3AZ9oyRXq78vgghG-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1441" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Unfortunately, there isn't any GPU testing available here yet (the OptiX driver for the chip isn't there), so this is a straight CPU comparison.</p><div ><table><thead><tr><th class="firstcol " ><p>Cinebench test</p></th><th  ><p>Result</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Multi-core CPU</strong></p></td><td  ><p>6710</p></td></tr><tr><td class="firstcol " ><p><strong>Single-core CPU</strong></p></td><td  ><p>552</p></td></tr></tbody></table></div><p>These numbers put it ahead of Intel, AMD, and Qualcomm's latest flagships, but Apple M5 Pro (again) comes out on top. It's the best of the Windows bunch.</p><h2 class="article-body__section" id="section-ai-performance-is-where-rtx-spark-takes-the-lead"><span>AI performance is where RTX Spark takes the lead</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="CxvjAewa4xS3be2otk3Neg" name="Nvidia RTX Spark for a week2" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/CxvjAewa4xS3be2otk3Neg-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><p>To put some numbers to Nvidia's advantage here, I ran it through UL Procyon AI benchmarks.</p><div ><table><caption>RTX Spark AI test</caption><thead><tr><th class="firstcol " ><p>Benchmark</p></th><th  ><p>Time to first token</p></th><th  ><p>Tokens per second</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Phi 3.5 text generation</strong></p></td><td  ><p>0.28s</p></td><td  ><p>74.4</p></td></tr><tr><td class="firstcol " ><p><strong>Mistral 7B text generation</strong></p></td><td  ><p>0.49s</p></td><td  ><p>54.2</p></td></tr><tr><td class="firstcol " ><p><strong>Llama 3.1 text generation</strong></p></td><td  ><p>0.44s</p></td><td  ><p>50.9</p></td></tr><tr><td class="firstcol " ><p><strong>Llama 2 text generation</strong></p></td><td  ><p>0.95s</p></td><td  ><p>27.8</p></td></tr></tbody></table></div><p>This isn't a test that has been normally run on other laptops in the Tom's Guide lab, so I've had to ask around my friends/fellow nerds for insights on this. </p><p>In their experience, RTX Spark seems to be surpassing the M5 Pro's AI prowess, exceeding the capabilities of AMD Ryzen AI Max+ and blowing past Intel Core Ultra X9. Once I can do these tests myself, I'll do a follow-up.</p><p>Also, for what it's worth, here's the comparison to my <a href="https://www.tomsguide.com/computing/gpus/nvidia-geforce-rtx-5060-ti-review#section-nvidia-geforce-rtx-5060-ti-the-ups">RTX 5060 Ti 16GB desktop GPU</a>. </p><div ><table><thead><tr><th class="firstcol " ><p>Chip</p></th><th  ><p>Phi 3.5</p></th><th  ><p>Llama 3.1 8B</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>RTX Spark laptop chip</strong></p></td><td  ><p>2631</p></td><td  ><p>2173</p></td></tr><tr><td class="firstcol " ><p><strong>RTX 5060 Ti 16GB desktop GPU</strong></p></td><td  ><p>3084</p></td><td  ><p>2642</p></td></tr></tbody></table></div><p>A reduction is always expected between the raw wattage of desktop parts and a laptop chip, but the Spark does get impressively close.</p><h2 class="article-body__section" id="section-battery-life-is-a-mixed-bag"><span>Battery life is a mixed bag</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.29%;"><img id="AUp2KX8cen4HZbtov4rHCL" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/AUp2KX8cen4HZbtov4rHCL-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1441" attribution="" endorsement="" 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 what about stamina? Nvidia promised all-day battery life, and <em>technically </em>that’s true. But it doesn’t come close to the efficiency king of Apple’s MacBook Pro.</p><div ><table><thead><tr><th class="firstcol " ><p>Chip (laptop)</p></th><th  ><p>Web browsing battery life test result (hh:mm)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>RTX Spark (Microsoft Surface Laptop Ultra)</strong></p></td><td  ><p>10:15</p></td></tr><tr><td class="firstcol " ><p><strong>M5 Pro (16-inch MacBook Pro)</strong></p></td><td  ><p>21:25</p></td></tr><tr><td class="firstcol " ><p><strong>Snapdragon X2 Elite (Zenbook A16)</strong></p></td><td  ><p>10:26</p></td></tr><tr><td class="firstcol " ><p><strong>Intel Core Ultra X9 (Asus Zenbook Duo one screen)</strong></p></td><td  ><p>14:23</p></td></tr><tr><td class="firstcol " ><p><strong>AMD Ryzen AI Max 395+ (ProArt Go Pro Edition PX13)</strong></p></td><td  ><p>11:12</p></td></tr></tbody></table></div><p>When it comes to gaming or running local AI at full pelt, this falls in line with what you’d expect from an RTX gaming laptop (our gaming test result got <strong>one hour and thirty-eight minutes</strong>) — give or take about 20-30 minutes depending on how much power the internals soak up.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width: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>Meanwhile, if you're expecting that same all-day battery life claim to extend to gaming, that's not the case. You do indeed get more stamina than your average gaming laptop, but not by much.</p><div ><table><tbody><tr><td class="firstcol " ><p><strong>Chip/laptop</strong></p></td><td  ><p><strong>PCMark 10 gaming battery life test results (hh:mm)</strong></p></td></tr><tr><td class="firstcol " ><p><strong>RTX Spark (Surface Laptop Ultra)</strong></p></td><td  ><p>01:38</p></td></tr><tr><td class="firstcol " ><p><strong>RTX 5060 (Lenovo LOQ Essential 15)</strong></p></td><td  ><p>00:58</p></td></tr><tr><td class="firstcol " ><p><strong>RTX 5070 (HP HyperX Omen 15)</strong></p></td><td  ><p>01:13</p></td></tr><tr><td class="firstcol " ><p><strong>RTX 5090 (HP HyperX Omen Max 16)</strong></p></td><td  ><p>01:08</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-who-should-buy-rtx-spark-and-who-should-buy-a-gaming-laptop"><span>Who should buy RTX Spark, and who should buy a gaming laptop?</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="dNW3jWXxfBnC9DJZeALJLM" name="Asus ROG Zephyrus G14 (2026)" alt="Asus ROG Zephyrus G14 (2026)" src="https://cdn.mos.cms.futurecdn.net/dNW3jWXxfBnC9DJZeALJLM-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>That battery equivalency does raise another question — who is RTX Spark for?</p><p>Because for all intents and purposes, an RTX 50-series gaming laptop could do a lot of this workload, whether it’s gaming, creative work, or some of the local AI stuff. And depending on how efficient that gaming laptop can run, you <em>could </em>get a similar battery life.</p><p>The real differentiator comes in that unified memory. With there being two pools of memory between the RAM and the GPU’s VRAM in a gaming laptop, it’s not as efficient as having one giant tub of it that can be divided depending on job priority.</p><p>That means on RTX Spark, you can run vastly larger local AI models, and larger projects in the likes of Blender than you could elsewhere. This is definitely for the prosumer market.</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/i-didnt-believe-an-nvidia-rtx-spark-laptop-would-have-the-same-performance-both-on-and-off-the-charger-so-i-put-it-to-the-test">I didn’t believe an Nvidia RTX Spark laptop would have the same performance both on and off the charger — so I put it to the test</a></li><li><a href="https://www.tomsguide.com/computing/laptops/forget-rtx-spark-the-surface-laptop-ultras-magnetic-usb-c-charger-is-a-game-changer-that-makes-apples-magsafe-look-obsolete">Forget RTX Spark: The Surface Laptop Ultra’s magnetic USB-C charger is a game-changer that makes Apple’s MagSafe look obsolete</a></li><li><a href="https://www.tomsguide.com/computing/windows-operating-systems/i-just-tested-windows-11-26h2-heres-how-to-update-now-and-why-microsoft-finally-fixed-the-two-worst-things-about-windows-11">I just tested Windows 11 26H2 — here’s how to update now and why Microsoft finally fixed the two worst things about Windows 11</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I’ve been living with Nvidia’s RTX Spark for a week — it’s not a MacBook Pro killer but something much weirder and wildly powerful ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Let me be clear from the top. If you are looking for the raw benchmark data, the thermal charts and synthetic scores for Nvidia’s RTX Spark, you can <a href="https://www.tomsguide.com/news/live/nvidia-rtx-spark-benchmarks-live-testing">head over to my testing lab here</a>.</p><p>…ok are all the speeds and feeds people gone? Good, because while I’m over there doing the math, and everyone else on the internet combs over the numbers, data doesn’t explain what it actually <em>feels </em>like to use a machine with a locally hosted AI brain.</p><p>You have to unlearn years of cloud-tethered habits (like relying on a browser-based chatbot tab) and start treating your operating system like an overly eager digital intern. And over the past few days, I found this out and quite frankly, it’s a bit of a breakthrough.</p><p>So, before you dive into the frame rates, here is a diary of my first week ditching the <a href="https://www.tomsguide.com/computing/macbooks/macbook-pro-m5-review">M5 MacBook Pro</a>, and living exclusively on an <a href="https://www.tomsguide.com/computing/laptops/microsoft-surface-laptop-ultra-vs-macbook-pro-m5-pro-the-biggest-differences-explained">Microsoft Surface Laptop Ultra</a> with RTX Spark (and 128GB of unified memory).</p><h2 class="article-body__section" id="section-day-1-the-sims-4-disaster-and-a-lesson-in-patience"><span>Day 1: The Sims 4 disaster (and a lesson in patience)</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="CxvjAewa4xS3be2otk3Neg" name="Nvidia RTX Spark for a week2" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/CxvjAewa4xS3be2otk3Neg-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><p>I returned from the Surface Laptop Ultra event in San Francisco pretty late, but I didn’t feel tired. I was caught up in the excitement of tearing this machine out of the box and seeing what it could do.</p><p>And my first test? Nothing to do with productivity. Instead, I installed Hermes agent with Qwen 3.8 Flash Next to play The Sims 4 — build a house and get a job.</p><p>Now with that out the way, this first test did not instill me with immediate confidence in Nvidia’s vision of a local agentic future. The AI fumbled around, got lost in the house building menu, and when I got it to the point of having a home roughly three hours later, it managed to start a kitchen fire.</p><p>Throughout that time, my prompts to the agent grew more frustrated, and it repeatedly made the same mistakes — forgetting that the graph of co-ordinates keeps moving with the character in the center of the screen and going round in circles.</p><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:66.68%;"><img id="F62LzVhNhbGB9iZunsPw5E" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/F62LzVhNhbGB9iZunsPw5E-1920-80.png" mos="" align="middle" fullscreen="" width="2560" height="1707" attribution="" endorsement="" 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 watching it stumble taught me a crucial lesson in reinforcement learning. No, not <em>that </em>reinforcement learning that's the complex phase of training an AI model that researchers work hard on. This is more in the human, psychological sense — rewarding good behavior and correcting bad behavior in real-time. </p><p>I had another go in the morning with a calmer head, continued to tell it when it was doing the right thing, encouraging it to keep going and we made it to the first gym.</p><p>You see, interacting with a local agent isn’t like querying a search engine or talking to a cloud frontier model; it’s exactly like playing two-player <em>Portal 2 </em>with my eight-year-old nephew. You can’t get frustrated when he jumps into the water and dies for the 5th time. You have to give him the carrot, not the stick — guide with positive reinforcement and structured boundaries.</p><p>Once that clicked in my mind and my behavior changed, learning how to actually “parent” the agent immediately skyrocketed the output quality. And that’s when I truly got to work.</p><h2 class="article-body__section" id="section-day-2-the-butler-arrives"><span>Day 2: The butler arrives</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:44.65%;"><img id="25KwfJZ5yKDd2rycN5NyLT" name="Hermes Agent" alt="Hermes Agent" src="https://cdn.mos.cms.futurecdn.net/25KwfJZ5yKDd2rycN5NyLT-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1143" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>By the next day, I booted up the Hermes agent and built a set of custom skills. I hooked it directly to my personal Google Workspace API, and for my Tom’s Guide account (Future locks down API access pretty tightly), I set up a script allowing it to physically operate my browser.</p><div><blockquote><p>There’s a noticeable speed advantage in AI between RTX Spark systems and trying Hermes Agent on my MacBook Pro. </p></blockquote></div><p>I named it Jeeves, and every morning, I just write “check-emails” and it gets to work across both accounts — reading my inboxes, deleting anything unnecessary (like marketing emails or phishing scams), drafts surprisingly human responses to those that are important, and generates a prioritized to-do list for my workday based on emails and Slack.</p><p>Now I know what you’re thinking. Isn’t this possible on other machines? Yes. Hermes is an agentic machine that works across Macs and other Windows PCs too (including AMD machines and we all know <a href="https://www.tomsguide.com/computing/laptops/they-are-new-to-the-laptop-market-amd-issues-a-reality-check-to-nvidias-rtx-spark-and-fires-a-warning-shot-at-arm">how <em>they </em>feel about the RTX Spark hype</a>).</p><p>But Nvidia’s GPU is the key advantage here, and it comes down to CUDA (which stands for Compute Unified Device Architecture). Basically, it's a technology that unlocked the power of the GPU for other purposes (like AI in this instance). </p><p>It’s the reason why Team Green is the biggest picks and shovels company in the cloud AI gold rush (or bubble…however you see it), and an overwhelming majority of open-source models used for local AI (including the Qwen model I’ve been using) are built, trained and initially optimized specifically for Nvidia’s CUDA platform.</p><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="dDfGksj4sSxc4oD3k5Ffu8" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/dDfGksj4sSxc4oD3k5Ffu8-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>There’s a noticeable speed advantage in AI between RTX Spark systems and trying Hermes Agent on my MacBook Pro. On top of that, you're seeing Spark lead substantially against Ryzen AI Max+ 395 (I haven't had access to test 495 PRO).</p><p>I’m getting into the weeds here, the difference maker here comes down to my awful work-life balance. I usually sleep with a laptop next to me (...awful, I know), and when the alarm goes off at 8am, I’m right back on my MacBook checking emails and figuring out what to do that day.</p><p>Now, I can just throw my agent at it, go make breakfast and coffee and chill out talking to my wife before the day begins at 9am. It’s these small but significant time saves that I feel are the most important. </p><h2 class="article-body__section" id="section-day-3-embracing-the-creator-chaos"><span>Day 3: Embracing the creator chaos</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="6aNk3jfBjVCsSGZLkH7JZg" name="Nvidia RTX Spark for a week3" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/6aNk3jfBjVCsSGZLkH7JZg-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><p>Mid-week, I dove into content creation. This is kind of the RTX Spark’s bread and butter, because while the Arm-based Grace CPU has noticeably slower single-core speeds compared to the current heavyweight champions over at Apple, its multicore performance is a runaway freight train. </p><p>Throw in that massive Blackwell GPU, and I was having a ball blasting through a project on an open-source creative suite.</p><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="smbPnamxm3PGHaCLBJQsR9" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/smbPnamxm3PGHaCLBJQsR9-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, I tackled ComfyUI. At first glance, the node-mapping interface is a chaotic, terrifying mess of digital spaghetti. But after a day of tinkering and reading guides, the logic clicks. My first challenge: ask my wife to send me a quick sketch. She doodled a picture of Medusa, which I fed into the local UI. </p><p>Within 20 seconds, the RTX Spark chewed through the local rendering and spat out a 90s-style cartoon image of her drawing. Then going a little over the top, I went further with an image-to-video pipeline and made a Saturday morning cartoon-style scene of Medusa turning a man into stone.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/HTW2j8vw6svEFKqMFEtDKB-1920-80.jpg" alt="ComfyUI" /><figcaption>The initial sketch<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/szSpNdrmtHwgS5X23dDVeB-1920-80.png" alt="ComfyUI" /><figcaption>The generated image<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Fq5VMjMrwSmn89k59spUfE-1920-80.gif" alt="ComfyUI" /><figcaption>The generated video<small role="credit">Future</small></figcaption></figure></figure><p>The speed differentials of this are massive, and one of the jewels in the RTX Spark's crown — roughly 2-3 seconds faster per image generation in my UL Procyon testing against AMD Ryzen AI Max+, and the MacBook Pro trails too.</p><p>I’m no fan of AI slop, but credit where credit’s due. Doing this with a cloud AI model would have cost a premium subscription, and without the finite controls of ComfyUI, it would have taken a lot longer to get the results just right.</p><h2 class="article-body__section" id="section-day-4-mutating-code-and-webcam-magic"><span>Day 4: Mutating code and webcam magic</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="Y5K749GPx6ny2gkn4QkXbg" name="Nvidia RTX Spark for a week4" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/Y5K749GPx6ny2gkn4QkXbg-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><p>I’ve got distracted enough by AI. Now it’s time to do the thing that I love — gaming. And being honest, playing on RTX Spark is generally excellent. Turns out the fix to gaming on Arm systems is to just throw a massive GPU at it.</p><div><blockquote><p>Having your laptop dynamically rewrite the game code to fix its own compatibility issues feels like pure sci-fi.</p></blockquote></div><p><a href="https://www.tomsguide.com/gaming/007-first-light-review">007 First Light</a> runs at 1440p with everything turned up to Ultra, <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 and Dynamic Frame Generation</a> maxes out the refresh rate on this laptop screen, <a href="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">DLSS 5 on NBA 2K27</a> is still as photorealistic (and divisive, looking at my comments) as ever, and shooters that require low latency rapid reactions run smoothly on here (complete with anti-cheat support).</p><p>But there are still some gremlins in the system. Red Dead Redemption 2 hit a brick wall by throwing an incompatibility error and refusing to run.</p><p>After speaking to Nvidia, I got a guide to make it run on DirectX 12 rather than Vulkan, which didn’t work through the physical steps given to me. So rather than search Reddit for an answer, I simply asked the Hermes agent to make it work.</p><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="3LBtxLv5RXWHznWtJcSUdg" name="Nvidia RTX Spark for a week5" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/3LBtxLv5RXWHznWtJcSUdg-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><p>The local AI dug into the file director, literally rewrote the offending configuration code to bypass the Arm translation block, and the game booted up. Having your laptop dynamically rewrite the game code to fix its own compatibility issues feels like pure sci-fi.</p><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="HDgWZjZP2qxzQC4enanUdg" name="Nvidia RTX Spark for a week6" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/HDgWZjZP2qxzQC4enanUdg-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><p>I also had meetings to go to, so I fired up the new version of Nvidia Broadcast, which is basically DLSS for webcams. This 1080p 30 FPS shooter can embrace that GPU prowess to upscale to 4K60 with a studio light — cleaning up the muddy laptop camera feed in real-time. My team really noticed the difference!</p><h2 class="article-body__section" id="section-day-5-the-macbook-pro-reckoning"><span>Day 5: The MacBook Pro reckoning</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="5jsbAXhogUzmnuzcd5jTCR" name="MacBook Pro 16-inch M5 Pro review-LIST" alt="MacBook Pro 16-inch M5 Pro on a desk" src="https://cdn.mos.cms.futurecdn.net/5jsbAXhogUzmnuzcd5jTCR-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>By the end of my first week, I had to face the reality of the silicon and hardware encasing it.</p><p>Going into this, everyone — Microsoft (with that $1,000 trade-in offer), tech journalists, and myself included — came in thinking the RTX Spark could be the ultimate MacBook Pro killer. The truth? <strong>It’s not.</strong></p><p>In my standard browser run-down test, the battery died right around the 10-hour mark. That’s solid for a Windows machine and does fit Nvidia’s claims of all-day battery life, but it isn’t touching Apple’s endurance. Furthermore, Apple’s M5 Pro and Max chips easily outstrip the CPU speeds of this system.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2550px;"><p class="vanilla-image-block" style="padding-top:56.47%;"><img id="Z3AeLqxjH3pHxoWNtDErsK" name="Microsoft Surface Laptop Ultra" alt="Microsoft Surface Laptop Ultra" src="https://cdn.mos.cms.futurecdn.net/Z3AeLqxjH3pHxoWNtDErsK-1920-80.jpg" mos="" align="middle" fullscreen="" width="2550" 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>But I realized that comparing it to a MacBook Pro misses the point entirely. The RTX Spark isn’t trying to be a better Mac; it is a different species of computer that has arrived early.</p><p>It is a statement of intent from Nvidia about where computing is going — trading raw benchmarking crowns on the stats that we currently see as important for the ability to carry a self-rewriting, fully autonomous, CUDA-accelerated digital brain in your backpack.</p><p>It requires a new set of behaviors, but once you let local AI take the wheel in some areas, it makes you believe the future of computing is entirely local (and without a subscription fee).</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/i-didnt-believe-an-nvidia-rtx-spark-laptop-would-have-the-same-performance-both-on-and-off-the-charger-so-i-put-it-to-the-test">I didn’t believe an Nvidia RTX Spark laptop would have the same performance both on and off the charger — so I put it to the test</a></li><li><a href="https://www.tomsguide.com/computing/laptops/forget-rtx-spark-the-surface-laptop-ultras-magnetic-usb-c-charger-is-a-game-changer-that-makes-apples-magsafe-look-obsolete">Forget RTX Spark: The Surface Laptop Ultra’s magnetic USB-C charger is a game-changer that makes Apple’s MagSafe look obsolete</a></li><li><a href="https://www.tomsguide.com/computing/windows-operating-systems/i-just-tested-windows-11-26h2-heres-how-to-update-now-and-why-microsoft-finally-fixed-the-two-worst-things-about-windows-11">I just tested Windows 11 26H2 — here’s how to update now and why Microsoft finally fixed the two worst things about Windows 11</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/cpus/ive-been-living-with-nvidias-rtx-spark-for-a-week-on-surface-laptop-ultra-its-not-a-macbook-pro-killer-but-something-much-weirder-and-wildly-powerful</link>
                                                                            <description>
                            <![CDATA[ I lived with Nvidia’s RTX Spark for a week. From self-healing game code to autonomous local agents, here is why it’s not a Mac killer — it’s the future. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">gcaYtE8zr4CVYEtNCseeJS</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/auFZPRTucNhgQGbSsg5SYg-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 15 Oct 2026 12:00:00 +0000</pubDate>                                                                                                                                <updated>Thu, 15 Oct 2026 17:45:19 +0000</updated>
                                                                                                                                            <category><![CDATA[CPUs]]></category>
                                                    <category><![CDATA[Laptops]]></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/auFZPRTucNhgQGbSsg5SYg-1920-80.jpg">
                                                            <media:credit><![CDATA[Tom&amp;#39;s Guide]]></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/auFZPRTucNhgQGbSsg5SYg-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Let me be clear from the top. If you are looking for the raw benchmark data, the thermal charts and synthetic scores for Nvidia’s RTX Spark, you can <a href="https://www.tomsguide.com/news/live/nvidia-rtx-spark-benchmarks-live-testing">head over to my testing lab here</a>.</p><p>…ok are all the speeds and feeds people gone? Good, because while I’m over there doing the math, and everyone else on the internet combs over the numbers, data doesn’t explain what it actually <em>feels </em>like to use a machine with a locally hosted AI brain.</p><p>You have to unlearn years of cloud-tethered habits (like relying on a browser-based chatbot tab) and start treating your operating system like an overly eager digital intern. And over the past few days, I found this out and quite frankly, it’s a bit of a breakthrough.</p><p>So, before you dive into the frame rates, here is a diary of my first week ditching the <a href="https://www.tomsguide.com/computing/macbooks/macbook-pro-m5-review">M5 MacBook Pro</a>, and living exclusively on an <a href="https://www.tomsguide.com/computing/laptops/microsoft-surface-laptop-ultra-vs-macbook-pro-m5-pro-the-biggest-differences-explained">Microsoft Surface Laptop Ultra</a> with RTX Spark (and 128GB of unified memory).</p><h2 class="article-body__section" id="section-day-1-the-sims-4-disaster-and-a-lesson-in-patience"><span>Day 1: The Sims 4 disaster (and a lesson in patience)</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="CxvjAewa4xS3be2otk3Neg" name="Nvidia RTX Spark for a week2" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/CxvjAewa4xS3be2otk3Neg-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><p>I returned from the Surface Laptop Ultra event in San Francisco pretty late, but I didn’t feel tired. I was caught up in the excitement of tearing this machine out of the box and seeing what it could do.</p><p>And my first test? Nothing to do with productivity. Instead, I installed Hermes agent with Qwen 3.8 Flash Next to play The Sims 4 — build a house and get a job.</p><p>Now with that out the way, this first test did not instill me with immediate confidence in Nvidia’s vision of a local agentic future. The AI fumbled around, got lost in the house building menu, and when I got it to the point of having a home roughly three hours later, it managed to start a kitchen fire.</p><p>Throughout that time, my prompts to the agent grew more frustrated, and it repeatedly made the same mistakes — forgetting that the graph of co-ordinates keeps moving with the character in the center of the screen and going round in circles.</p><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:66.68%;"><img id="F62LzVhNhbGB9iZunsPw5E" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/F62LzVhNhbGB9iZunsPw5E-1920-80.png" mos="" align="middle" fullscreen="" width="2560" height="1707" attribution="" endorsement="" 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 watching it stumble taught me a crucial lesson in reinforcement learning. No, not <em>that </em>reinforcement learning that's the complex phase of training an AI model that researchers work hard on. This is more in the human, psychological sense — rewarding good behavior and correcting bad behavior in real-time. </p><p>I had another go in the morning with a calmer head, continued to tell it when it was doing the right thing, encouraging it to keep going and we made it to the first gym.</p><p>You see, interacting with a local agent isn’t like querying a search engine or talking to a cloud frontier model; it’s exactly like playing two-player <em>Portal 2 </em>with my eight-year-old nephew. You can’t get frustrated when he jumps into the water and dies for the 5th time. You have to give him the carrot, not the stick — guide with positive reinforcement and structured boundaries.</p><p>Once that clicked in my mind and my behavior changed, learning how to actually “parent” the agent immediately skyrocketed the output quality. And that’s when I truly got to work.</p><h2 class="article-body__section" id="section-day-2-the-butler-arrives"><span>Day 2: The butler arrives</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:44.65%;"><img id="25KwfJZ5yKDd2rycN5NyLT" name="Hermes Agent" alt="Hermes Agent" src="https://cdn.mos.cms.futurecdn.net/25KwfJZ5yKDd2rycN5NyLT-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1143" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>By the next day, I booted up the Hermes agent and built a set of custom skills. I hooked it directly to my personal Google Workspace API, and for my Tom’s Guide account (Future locks down API access pretty tightly), I set up a script allowing it to physically operate my browser.</p><div><blockquote><p>There’s a noticeable speed advantage in AI between RTX Spark systems and trying Hermes Agent on my MacBook Pro. </p></blockquote></div><p>I named it Jeeves, and every morning, I just write “check-emails” and it gets to work across both accounts — reading my inboxes, deleting anything unnecessary (like marketing emails or phishing scams), drafts surprisingly human responses to those that are important, and generates a prioritized to-do list for my workday based on emails and Slack.</p><p>Now I know what you’re thinking. Isn’t this possible on other machines? Yes. Hermes is an agentic machine that works across Macs and other Windows PCs too (including AMD machines and we all know <a href="https://www.tomsguide.com/computing/laptops/they-are-new-to-the-laptop-market-amd-issues-a-reality-check-to-nvidias-rtx-spark-and-fires-a-warning-shot-at-arm">how <em>they </em>feel about the RTX Spark hype</a>).</p><p>But Nvidia’s GPU is the key advantage here, and it comes down to CUDA (which stands for Compute Unified Device Architecture). Basically, it's a technology that unlocked the power of the GPU for other purposes (like AI in this instance). </p><p>It’s the reason why Team Green is the biggest picks and shovels company in the cloud AI gold rush (or bubble…however you see it), and an overwhelming majority of open-source models used for local AI (including the Qwen model I’ve been using) are built, trained and initially optimized specifically for Nvidia’s CUDA platform.</p><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="dDfGksj4sSxc4oD3k5Ffu8" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/dDfGksj4sSxc4oD3k5Ffu8-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>There’s a noticeable speed advantage in AI between RTX Spark systems and trying Hermes Agent on my MacBook Pro. On top of that, you're seeing Spark lead substantially against Ryzen AI Max+ 395 (I haven't had access to test 495 PRO).</p><p>I’m getting into the weeds here, the difference maker here comes down to my awful work-life balance. I usually sleep with a laptop next to me (...awful, I know), and when the alarm goes off at 8am, I’m right back on my MacBook checking emails and figuring out what to do that day.</p><p>Now, I can just throw my agent at it, go make breakfast and coffee and chill out talking to my wife before the day begins at 9am. It’s these small but significant time saves that I feel are the most important. </p><h2 class="article-body__section" id="section-day-3-embracing-the-creator-chaos"><span>Day 3: Embracing the creator chaos</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="6aNk3jfBjVCsSGZLkH7JZg" name="Nvidia RTX Spark for a week3" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/6aNk3jfBjVCsSGZLkH7JZg-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><p>Mid-week, I dove into content creation. This is kind of the RTX Spark’s bread and butter, because while the Arm-based Grace CPU has noticeably slower single-core speeds compared to the current heavyweight champions over at Apple, its multicore performance is a runaway freight train. </p><p>Throw in that massive Blackwell GPU, and I was having a ball blasting through a project on an open-source creative suite.</p><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="smbPnamxm3PGHaCLBJQsR9" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/smbPnamxm3PGHaCLBJQsR9-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, I tackled ComfyUI. At first glance, the node-mapping interface is a chaotic, terrifying mess of digital spaghetti. But after a day of tinkering and reading guides, the logic clicks. My first challenge: ask my wife to send me a quick sketch. She doodled a picture of Medusa, which I fed into the local UI. </p><p>Within 20 seconds, the RTX Spark chewed through the local rendering and spat out a 90s-style cartoon image of her drawing. Then going a little over the top, I went further with an image-to-video pipeline and made a Saturday morning cartoon-style scene of Medusa turning a man into stone.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/HTW2j8vw6svEFKqMFEtDKB-1920-80.jpg" alt="ComfyUI" /><figcaption>The initial sketch<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/szSpNdrmtHwgS5X23dDVeB-1920-80.png" alt="ComfyUI" /><figcaption>The generated image<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Fq5VMjMrwSmn89k59spUfE-1920-80.gif" alt="ComfyUI" /><figcaption>The generated video<small role="credit">Future</small></figcaption></figure></figure><p>The speed differentials of this are massive, and one of the jewels in the RTX Spark's crown — roughly 2-3 seconds faster per image generation in my UL Procyon testing against AMD Ryzen AI Max+, and the MacBook Pro trails too.</p><p>I’m no fan of AI slop, but credit where credit’s due. Doing this with a cloud AI model would have cost a premium subscription, and without the finite controls of ComfyUI, it would have taken a lot longer to get the results just right.</p><h2 class="article-body__section" id="section-day-4-mutating-code-and-webcam-magic"><span>Day 4: Mutating code and webcam magic</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="Y5K749GPx6ny2gkn4QkXbg" name="Nvidia RTX Spark for a week4" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/Y5K749GPx6ny2gkn4QkXbg-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><p>I’ve got distracted enough by AI. Now it’s time to do the thing that I love — gaming. And being honest, playing on RTX Spark is generally excellent. Turns out the fix to gaming on Arm systems is to just throw a massive GPU at it.</p><div><blockquote><p>Having your laptop dynamically rewrite the game code to fix its own compatibility issues feels like pure sci-fi.</p></blockquote></div><p><a href="https://www.tomsguide.com/gaming/007-first-light-review">007 First Light</a> runs at 1440p with everything turned up to Ultra, <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 and Dynamic Frame Generation</a> maxes out the refresh rate on this laptop screen, <a href="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">DLSS 5 on NBA 2K27</a> is still as photorealistic (and divisive, looking at my comments) as ever, and shooters that require low latency rapid reactions run smoothly on here (complete with anti-cheat support).</p><p>But there are still some gremlins in the system. Red Dead Redemption 2 hit a brick wall by throwing an incompatibility error and refusing to run.</p><p>After speaking to Nvidia, I got a guide to make it run on DirectX 12 rather than Vulkan, which didn’t work through the physical steps given to me. So rather than search Reddit for an answer, I simply asked the Hermes agent to make it work.</p><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="3LBtxLv5RXWHznWtJcSUdg" name="Nvidia RTX Spark for a week5" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/3LBtxLv5RXWHznWtJcSUdg-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><p>The local AI dug into the file director, literally rewrote the offending configuration code to bypass the Arm translation block, and the game booted up. Having your laptop dynamically rewrite the game code to fix its own compatibility issues feels like pure sci-fi.</p><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="HDgWZjZP2qxzQC4enanUdg" name="Nvidia RTX Spark for a week6" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/HDgWZjZP2qxzQC4enanUdg-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><p>I also had meetings to go to, so I fired up the new version of Nvidia Broadcast, which is basically DLSS for webcams. This 1080p 30 FPS shooter can embrace that GPU prowess to upscale to 4K60 with a studio light — cleaning up the muddy laptop camera feed in real-time. My team really noticed the difference!</p><h2 class="article-body__section" id="section-day-5-the-macbook-pro-reckoning"><span>Day 5: The MacBook Pro reckoning</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="5jsbAXhogUzmnuzcd5jTCR" name="MacBook Pro 16-inch M5 Pro review-LIST" alt="MacBook Pro 16-inch M5 Pro on a desk" src="https://cdn.mos.cms.futurecdn.net/5jsbAXhogUzmnuzcd5jTCR-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>By the end of my first week, I had to face the reality of the silicon and hardware encasing it.</p><p>Going into this, everyone — Microsoft (with that $1,000 trade-in offer), tech journalists, and myself included — came in thinking the RTX Spark could be the ultimate MacBook Pro killer. The truth? <strong>It’s not.</strong></p><p>In my standard browser run-down test, the battery died right around the 10-hour mark. That’s solid for a Windows machine and does fit Nvidia’s claims of all-day battery life, but it isn’t touching Apple’s endurance. Furthermore, Apple’s M5 Pro and Max chips easily outstrip the CPU speeds of this system.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2550px;"><p class="vanilla-image-block" style="padding-top:56.47%;"><img id="Z3AeLqxjH3pHxoWNtDErsK" name="Microsoft Surface Laptop Ultra" alt="Microsoft Surface Laptop Ultra" src="https://cdn.mos.cms.futurecdn.net/Z3AeLqxjH3pHxoWNtDErsK-1920-80.jpg" mos="" align="middle" fullscreen="" width="2550" 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>But I realized that comparing it to a MacBook Pro misses the point entirely. The RTX Spark isn’t trying to be a better Mac; it is a different species of computer that has arrived early.</p><p>It is a statement of intent from Nvidia about where computing is going — trading raw benchmarking crowns on the stats that we currently see as important for the ability to carry a self-rewriting, fully autonomous, CUDA-accelerated digital brain in your backpack.</p><p>It requires a new set of behaviors, but once you let local AI take the wheel in some areas, it makes you believe the future of computing is entirely local (and without a subscription fee).</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/i-didnt-believe-an-nvidia-rtx-spark-laptop-would-have-the-same-performance-both-on-and-off-the-charger-so-i-put-it-to-the-test">I didn’t believe an Nvidia RTX Spark laptop would have the same performance both on and off the charger — so I put it to the test</a></li><li><a href="https://www.tomsguide.com/computing/laptops/forget-rtx-spark-the-surface-laptop-ultras-magnetic-usb-c-charger-is-a-game-changer-that-makes-apples-magsafe-look-obsolete">Forget RTX Spark: The Surface Laptop Ultra’s magnetic USB-C charger is a game-changer that makes Apple’s MagSafe look obsolete</a></li><li><a href="https://www.tomsguide.com/computing/windows-operating-systems/i-just-tested-windows-11-26h2-heres-how-to-update-now-and-why-microsoft-finally-fixed-the-two-worst-things-about-windows-11">I just tested Windows 11 26H2 — here’s how to update now and why Microsoft finally fixed the two worst things about Windows 11</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I have Nvidia’s RTX Spark-armed Surface Laptop Ultra in my hands right now — tell me what you want me to test ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Last week, <a href="https://www.tomsguide.com/computing/laptops/they-are-new-to-the-laptop-market-amd-issues-a-reality-check-to-nvidias-rtx-spark-and-fires-a-warning-shot-at-arm">AMD fired a warning shot at Nvidia’s RTX Spark</a>. Today, Team Green’s payload has arrived. Ahead of the highly anticipated October 16 launch, Nvidia just unleashed a tidal wave of software for its audacious Arm-based chip, the massive Blackwell RTX GPU.</p><p>They aren’t just selling a new chip; they’re trying to prove that their garden of software features makes the jump to Arm completely worth it.</p><p>And on top of that, I currently have the <a href="https://www.tomsguide.com/computing/laptops/microsoft-surface-ultra-announced-with-nvidia-rtx-spark-for-usd2-599-and-its-going-right-after-the-macbook-pro">Microsoft Surface Laptop Ultra with RTX Spark</a> sitting on my desk (actually typing this story on it right now). Now, before I lock myself in my lab for the review, I want to know exactly what <em>you </em>want to see this thing do.</p><p>Here is the cheat sheet of the craziest software witchcraft Nvidia just announced. Read it over, drop your most chaotic testing requests in the Q&A box just below, and I will push this hardware to the absolute limit.</p><p><strong>Reminder: </strong>We’re a friendly bunch, and this community is a safe space for anyone who wants to learn about RTX Spark. Please treat everyone (including me) with respect and avoid any nasty language.</p><iframe class="position-center" data-lazy-priority="low" data-lazy-src=""></iframe><h2 class="article-body__section" id="section-ai-without-the-computer-science-degree"><span>AI without the computer science degree</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="UocNcs9nBbQbM5hJs4RLQM" name="Asus ROG Zephyrus G14 (2026)" alt="Asus ROG Zephyrus G14 (2026)" src="https://cdn.mos.cms.futurecdn.net/UocNcs9nBbQbM5hJs4RLQM-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>Running a Large Language Model (LLM) on your PC used to require opening terrifying command-line terminals and pretending you knew how to code (I’m guilty of that one with my D in Computer Science). That friction is well on its way to being killed, and Nvidia is taking another big step forward.</p><ul><li><strong>Hugging Face Llama Windows: </strong>Available today is a free, idiot-proof Windows app that lets you download and run local AI models with a standard graphical interface.</li><li><strong>Nvidia PAIR: </strong>Now out of beta, this free, open-source tool can essentially turn your home into its own AI data center — allowing PCs and MacBooks to share AI compute across a local network. Basically, if your prompt needs more horsepower, it can find some from your desktop in the other room.</li><li><strong>Getting agent-ready: </strong>New skills are coming online so your AI agents in Hermes, OpenClaw, and Perplexity can use Nvidia’s apps (Broadcast, RTX Remix, etc.).</li></ul><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/GjGM-ZKQMa0" allowfullscreen></iframe></div></div><p>Also, Nvidia Broadcast is getting a big upgrade with RTX video super resolution and frame generation—both for webcam and offline file processing.</p><h3 class="article-body__section" id="section-the-nemotron-intern"><span>The “Nemotron” Intern</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:1600px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="WyPgJEjkV7fVTzBr38SDz" name="Nvidia Nemotron" alt="Nvidia Nemotron" src="https://cdn.mos.cms.futurecdn.net/WyPgJEjkV7fVTzBr38SDz-1920-80.png" 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: Nvidia)</span></figcaption></figure><p>On <strong>October 15th</strong>, Nvidia is dropping the <strong>Nemotron 3.5 Bolt 74B A9B </strong>model. That’s a whole lot of words, but this is basically an improved key to agentic AI. </p><p>This is a “mixture of experts” AI agent built specifically to fit inside 24GB of memory on the RTX Spark — running constantly in the background, writing code, doing research, and monitoring apps autonomously.</p><h2 class="article-body__section" id="section-skyrim-npcs-that-actually-talk-back"><span>Skyrim NPCs that actually talk back</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="AyinsMVvHrkZgLSZf9FJrm" name="Elder-Scrolls-V--Skyrim.jpg" alt="Best open world games: The Elder Scrolls V: Skyrim" src="https://cdn.mos.cms.futurecdn.net/AyinsMVvHrkZgLSZf9FJrm-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: Bethesda Game Studio)</span></figcaption></figure><p>That Nemotron model style has a different use too — making game NPCs have personalities. Nvidia’s built a smaller, ultra-responsive model called Nemotron 3.5 Bolt E4B (again, more alphabet spaghetti), but on <strong>October 23rd</strong>, you’ll see what this can do in SkyrimNET.</p><p>Basically, this is an AI NPC mod for Elder Scrolls V, where instead of clicking through pre-written dialogue trees, you can literally talk into your microphone, and NPCs will generate dynamic, context-aware conversations and reactions on the fly.</p><p>I can’t wait to gaslight Nazeem with this…</p><h2 class="article-body__section" id="section-dlss-5-just-found-another-gear-and-a-new-cheat-code"><span>DLSS 5 just found another gear (and a new cheat code)</span></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>Nvidia’s DLSS 5 has split opinions in NBA 2K27 (I see you in the comments). In my mind, this 3D-guided neural rendering model works well in photorealistic games — but maybe leave it off in more artistic ones.</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/CMVU7U37VLo" allowfullscreen></iframe></div></div><p>But on <strong>October 16th, </strong>it’s set to get a speed boost with a more efficient model that Team Green claims will push frame rates up by an additional 1.4x over what I tested. Oh, and for the millennial-coded individuals out there, Hogwarts Legacy is getting the DLSS 5 treatment in November.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/SfsLWSMkPZnSjGkPzVyDcX-1920-80.jpg" alt="Hogwarts Legacy" /><figcaption><small role="credit">Nvidia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/GNMfPFG6GVdfuVT3QXqAcX-1920-80.jpg" alt="Hogwarts Legacy" /><figcaption><small role="credit">Nvidia</small></figcaption></figure></figure><h2 class="article-body__section" id="section-over-to-you-build-my-benchmark-hitlist"><span>Over to you: Build my benchmark hitlist</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="8BMgPRQSUFFHjzxrFkyUmC" name="Microsoft Surface Laptop Ultra" alt="Microsoft Surface Laptop Ultra" src="https://cdn.mos.cms.futurecdn.net/8BMgPRQSUFFHjzxrFkyUmC-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>Nvidia is making massive promises about Arm-based gaming, offline AI agents that don’t charge you a cloud tax, and real-time AI video game characters. AMD claims this whole platform will falter under the weight of Windows emulation.</p><p>I have the hardware. I have the games. I have the local AI models. Let’s see what this thing can do together.</p><p>Now, while I can do plenty of testing and report on my findings soon, some of this won’t be available for a little while. So this will be an ongoing thing as models and updates become available.</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/i-didnt-believe-an-nvidia-rtx-spark-laptop-would-have-the-same-performance-both-on-and-off-the-charger-so-i-put-it-to-the-test">I didn’t believe an Nvidia RTX Spark laptop would have the same performance both on and off the charger — so I put it to the test</a></li><li><a href="https://www.tomsguide.com/computing/laptops/forget-rtx-spark-the-surface-laptop-ultras-magnetic-usb-c-charger-is-a-game-changer-that-makes-apples-magsafe-look-obsolete">Forget RTX Spark: The Surface Laptop Ultra’s magnetic USB-C charger is a game-changer that makes Apple’s MagSafe look obsolete</a></li><li><a href="https://www.tomsguide.com/computing/cpus/amd-just-flaunted-its-own-192gb-monster-chip-to-spoil-nvidias-rtx-spark-party-ryzen-ai-max-pro-495-should-worry-apple-too">AMD just flaunted its own 192GB monster chip to spoil Nvidia’s RTX Spark party — Ryzen AI Max+ Pro 495 should worry Apple, too</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/laptops/i-have-nvidias-rtx-spark-armed-surface-laptop-ultra-in-my-hands-right-now-tell-me-what-you-want-me-to-test</link>
                                                                            <description>
                            <![CDATA[ I have the RTX Spark-powered Surface Laptop Ultra on my desk right now. From Skyrim AI NPC mods to DLSS 5 benchmarks, tell me what to test. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">PxPsdiT2z4coD7MaZp2ppi</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/ZNyVbXYdpmbsHsQZYepATc-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 13 Oct 2026 14:01:52 +0000</pubDate>                                                                                                                                <updated>Tue, 20 Oct 2026 11:52:46 +0000</updated>
                                                                                                                                            <category><![CDATA[Laptops]]></category>
                                                    <category><![CDATA[CPUs]]></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/ZNyVbXYdpmbsHsQZYepATc-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/ZNyVbXYdpmbsHsQZYepATc-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Last week, <a href="https://www.tomsguide.com/computing/laptops/they-are-new-to-the-laptop-market-amd-issues-a-reality-check-to-nvidias-rtx-spark-and-fires-a-warning-shot-at-arm">AMD fired a warning shot at Nvidia’s RTX Spark</a>. Today, Team Green’s payload has arrived. Ahead of the highly anticipated October 16 launch, Nvidia just unleashed a tidal wave of software for its audacious Arm-based chip, the massive Blackwell RTX GPU.</p><p>They aren’t just selling a new chip; they’re trying to prove that their garden of software features makes the jump to Arm completely worth it.</p><p>And on top of that, I currently have the <a href="https://www.tomsguide.com/computing/laptops/microsoft-surface-ultra-announced-with-nvidia-rtx-spark-for-usd2-599-and-its-going-right-after-the-macbook-pro">Microsoft Surface Laptop Ultra with RTX Spark</a> sitting on my desk (actually typing this story on it right now). Now, before I lock myself in my lab for the review, I want to know exactly what <em>you </em>want to see this thing do.</p><p>Here is the cheat sheet of the craziest software witchcraft Nvidia just announced. Read it over, drop your most chaotic testing requests in the Q&A box just below, and I will push this hardware to the absolute limit.</p><p><strong>Reminder: </strong>We’re a friendly bunch, and this community is a safe space for anyone who wants to learn about RTX Spark. Please treat everyone (including me) with respect and avoid any nasty language.</p><iframe class="position-center" data-lazy-priority="low" data-lazy-src=""></iframe><h2 class="article-body__section" id="section-ai-without-the-computer-science-degree"><span>AI without the computer science degree</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="UocNcs9nBbQbM5hJs4RLQM" name="Asus ROG Zephyrus G14 (2026)" alt="Asus ROG Zephyrus G14 (2026)" src="https://cdn.mos.cms.futurecdn.net/UocNcs9nBbQbM5hJs4RLQM-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>Running a Large Language Model (LLM) on your PC used to require opening terrifying command-line terminals and pretending you knew how to code (I’m guilty of that one with my D in Computer Science). That friction is well on its way to being killed, and Nvidia is taking another big step forward.</p><ul><li><strong>Hugging Face Llama Windows: </strong>Available today is a free, idiot-proof Windows app that lets you download and run local AI models with a standard graphical interface.</li><li><strong>Nvidia PAIR: </strong>Now out of beta, this free, open-source tool can essentially turn your home into its own AI data center — allowing PCs and MacBooks to share AI compute across a local network. Basically, if your prompt needs more horsepower, it can find some from your desktop in the other room.</li><li><strong>Getting agent-ready: </strong>New skills are coming online so your AI agents in Hermes, OpenClaw, and Perplexity can use Nvidia’s apps (Broadcast, RTX Remix, etc.).</li></ul><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/GjGM-ZKQMa0" allowfullscreen></iframe></div></div><p>Also, Nvidia Broadcast is getting a big upgrade with RTX video super resolution and frame generation—both for webcam and offline file processing.</p><h3 class="article-body__section" id="section-the-nemotron-intern"><span>The “Nemotron” Intern</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:1600px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="WyPgJEjkV7fVTzBr38SDz" name="Nvidia Nemotron" alt="Nvidia Nemotron" src="https://cdn.mos.cms.futurecdn.net/WyPgJEjkV7fVTzBr38SDz-1920-80.png" 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: Nvidia)</span></figcaption></figure><p>On <strong>October 15th</strong>, Nvidia is dropping the <strong>Nemotron 3.5 Bolt 74B A9B </strong>model. That’s a whole lot of words, but this is basically an improved key to agentic AI. </p><p>This is a “mixture of experts” AI agent built specifically to fit inside 24GB of memory on the RTX Spark — running constantly in the background, writing code, doing research, and monitoring apps autonomously.</p><h2 class="article-body__section" id="section-skyrim-npcs-that-actually-talk-back"><span>Skyrim NPCs that actually talk back</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="AyinsMVvHrkZgLSZf9FJrm" name="Elder-Scrolls-V--Skyrim.jpg" alt="Best open world games: The Elder Scrolls V: Skyrim" src="https://cdn.mos.cms.futurecdn.net/AyinsMVvHrkZgLSZf9FJrm-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: Bethesda Game Studio)</span></figcaption></figure><p>That Nemotron model style has a different use too — making game NPCs have personalities. Nvidia’s built a smaller, ultra-responsive model called Nemotron 3.5 Bolt E4B (again, more alphabet spaghetti), but on <strong>October 23rd</strong>, you’ll see what this can do in SkyrimNET.</p><p>Basically, this is an AI NPC mod for Elder Scrolls V, where instead of clicking through pre-written dialogue trees, you can literally talk into your microphone, and NPCs will generate dynamic, context-aware conversations and reactions on the fly.</p><p>I can’t wait to gaslight Nazeem with this…</p><h2 class="article-body__section" id="section-dlss-5-just-found-another-gear-and-a-new-cheat-code"><span>DLSS 5 just found another gear (and a new cheat code)</span></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>Nvidia’s DLSS 5 has split opinions in NBA 2K27 (I see you in the comments). In my mind, this 3D-guided neural rendering model works well in photorealistic games — but maybe leave it off in more artistic ones.</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/CMVU7U37VLo" allowfullscreen></iframe></div></div><p>But on <strong>October 16th, </strong>it’s set to get a speed boost with a more efficient model that Team Green claims will push frame rates up by an additional 1.4x over what I tested. Oh, and for the millennial-coded individuals out there, Hogwarts Legacy is getting the DLSS 5 treatment in November.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/SfsLWSMkPZnSjGkPzVyDcX-1920-80.jpg" alt="Hogwarts Legacy" /><figcaption><small role="credit">Nvidia</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/GNMfPFG6GVdfuVT3QXqAcX-1920-80.jpg" alt="Hogwarts Legacy" /><figcaption><small role="credit">Nvidia</small></figcaption></figure></figure><h2 class="article-body__section" id="section-over-to-you-build-my-benchmark-hitlist"><span>Over to you: Build my benchmark hitlist</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="8BMgPRQSUFFHjzxrFkyUmC" name="Microsoft Surface Laptop Ultra" alt="Microsoft Surface Laptop Ultra" src="https://cdn.mos.cms.futurecdn.net/8BMgPRQSUFFHjzxrFkyUmC-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>Nvidia is making massive promises about Arm-based gaming, offline AI agents that don’t charge you a cloud tax, and real-time AI video game characters. AMD claims this whole platform will falter under the weight of Windows emulation.</p><p>I have the hardware. I have the games. I have the local AI models. Let’s see what this thing can do together.</p><p>Now, while I can do plenty of testing and report on my findings soon, some of this won’t be available for a little while. So this will be an ongoing thing as models and updates become available.</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/i-didnt-believe-an-nvidia-rtx-spark-laptop-would-have-the-same-performance-both-on-and-off-the-charger-so-i-put-it-to-the-test">I didn’t believe an Nvidia RTX Spark laptop would have the same performance both on and off the charger — so I put it to the test</a></li><li><a href="https://www.tomsguide.com/computing/laptops/forget-rtx-spark-the-surface-laptop-ultras-magnetic-usb-c-charger-is-a-game-changer-that-makes-apples-magsafe-look-obsolete">Forget RTX Spark: The Surface Laptop Ultra’s magnetic USB-C charger is a game-changer that makes Apple’s MagSafe look obsolete</a></li><li><a href="https://www.tomsguide.com/computing/cpus/amd-just-flaunted-its-own-192gb-monster-chip-to-spoil-nvidias-rtx-spark-party-ryzen-ai-max-pro-495-should-worry-apple-too">AMD just flaunted its own 192GB monster chip to spoil Nvidia’s RTX Spark party — Ryzen AI Max+ Pro 495 should worry Apple, too</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 'They are new to the laptop market': AMD issues a reality check to Nvidia’s RTX Spark and fires a warning shot at Arm ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Nvidia has just properly unveiled <a href="http://tomsguide.com/tag/nvidia-rtx-spark">RTX Spark</a> alongside <a href="https://www.tomsguide.com/computing/laptops/microsoft-surface-laptop-ultra-vs-macbook-pro-m5-pro-the-biggest-differences-explained">Microsoft’s flagship Surface Laptop Ultra</a>, heralding what Jensen Huang said about reinventing the PC — massive unified memory, local AI and desktop-class power in a portable chassis.</p><p>If you ask AMD, however, Nvidia didn’t invent a new category. Instead, it validated one Team Red has been selling for over a year. Speaking directly after the RTX Spark reveal, Mike Nordquist, CVP of Client Product Marketing, didn’t hold back with me. </p><p>Between calls to celebrate industry competition and pointed critiques of Nvidia’s hardware architecture, Nordquist laid out a sharp, pragmatic case for why AMD believes its second-generation Ryzen AI Max 400 series (codename Gorgon Point Halo) leaves Nvidia’s new darling in the dust.</p><p><em><strong>Editor's note: </strong></em><em>This interview has been edited for brevity and clarity.</em></p><h2 id="39-nvidia-is-just-getting-started-39">'Nvidia is just getting started'</h2><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="RqzpXMBBRWAD7QXYGKfCJk" name="PXL_20261007_174926500.TS-000" alt="Jensen and Nadella on stage at Microsoft Surface Laptop Ultra event" src="https://cdn.mos.cms.futurecdn.net/RqzpXMBBRWAD7QXYGKfCJk-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><p>While Nvidia embraces the unified-memory laptop, AMD was quick to point out that it kicked off this exact architecture with Strix Halo back in early 2025.</p><p>“The exciting part is just the category development. We introduced a similar product in early 2025, so having more people come in and validate that, and you see Microsoft beefing up, I think that’s good overall. Competition is good overall,” Nordquist commented.</p><p>“We’re in our second generation that we just announced in the last month, which brings 50% more capacity [than RTX Spark]. So you can get higher capability [AI] models than maybe what you saw today.”</p><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="V89Cq6qjrmfthMwFcnMtdN" name="Asus TUF Gaming A14 (2026)" alt="Asus TUF Gaming A14 (2026)" src="https://cdn.mos.cms.futurecdn.net/V89Cq6qjrmfthMwFcnMtdN-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 cuts straight to the core of one thing AMD does have an advantage over Nvidia on — core memory. RTX Spark caps out at 128GB of unified memory, but AMD’s Gorgon Halo pushes that ceiling to 192GB. As Nordquist says himself, that gives you “bigger models up to 300 billion parameters,” which ensures a “higher quality.”</p><h2 id="the-elephant-in-the-keynote-why-did-nobody-say-arm">The elephant in the keynote: why did nobody say “Arm”?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2550px;"><p class="vanilla-image-block" style="padding-top:56.47%;"><img id="Fiz9qqQW4jVGmpxM3ykAGn" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/Fiz9qqQW4jVGmpxM3ykAGn-1920-80.jpg" mos="" align="middle" fullscreen="" width="2550" 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>Quick explainer to kick this off. AMD and Intel CPUs are built on an x86 architecture — the architecture that’s been used by Windows PCs for over 30 years. It has its down sides, but the main strength here is its the default native standard. It’s been around for ages and chips are built for it.</p><p>Nvidia’s RTX Spark and Snapdragon X Elite use an Arm architecture. Arm’s not new, but comparatively, it’s the new kid on the block which does introduce some power efficiency gains. </p><p>However, it’s main issue is emulating these apps built for x86 into Arm. There’s a performance penalty there, as it needs to translate the code as you use the app at the same time.</p><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="Q6zfEWh5eVToAVQFyQ9GBX" name="Asus ProArt GoPro Edition (PX13)" alt="Asus ProArt GoPro Edition (PX13)" src="https://cdn.mos.cms.futurecdn.net/Q6zfEWh5eVToAVQFyQ9GBX-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 probably the sharpest jab from Nordquist. Not about raw AI performance or memory bandwidth, but the glaring omission in Nvidia and Microsoft’s keynote. Across the entire launch, the word “Arm” was practically scrubbed from the script.</p><p>“Everything just runs native [on AMD], and I still don’t know what that experience is going to be, how great the CPU is going to be,” Nordquist pondered. “We feel really good that everything just runs out of the box with out product. And I think those questions remain [with RTX Spark].”</p><p>When pressed on whether Windows on Arm is finally staging an unstoppable coup against traditional x86 computing, Nordquist dismissed the supposed architectural superiority of Arm outright.</p><p>“I don’t think there’s anything magic about going to Arm — that it’s going to be lower power or some other attribute out there. I don’t think we’ve ever believed that, and I don’t think Intel probably believes that as well,” Nordquist responded.</p><p>“I didn’t hear Arm mentioned once. It was interesting in their keynote that neither Nvidia nor Microsoft talked about it.</p><h2 id="thirty-years-of-laptop-dna-vs-a-gpu-giant-s-first-clamshell">Thirty years of laptop DNA vs a GPU giant’s first clamshell</h2><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>Nvidia might dominate AI data centers and even make the dedicated GPUs for gaming laptops. But when it comes to the messy, compromise-heavy reality of consumer laptops — thermal throttling, battery curves, sleep states and legacy software — Nordquist hammered how that building a standalone laptop platform is a different beast.</p><p>“They’re new to the laptop market in general. We’ve been doing it for 30 years-plus in this space, so I think we know how to run Windows,” Nordquist added. </p><p>“There’s no emulation; the games are just going to run natively. You’re buying into something that’s going to work, and not having to worry about whether something’s going to break. You’re just kind of covered with what we have.”</p><h2 id="the-silicon-war-moves-to-the-bench">The silicon war moves to the bench</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2550px;"><p class="vanilla-image-block" style="padding-top:56.47%;"><img id="Z3AeLqxjH3pHxoWNtDErsK" name="Microsoft Surface Laptop Ultra" alt="Microsoft Surface Laptop Ultra" src="https://cdn.mos.cms.futurecdn.net/Z3AeLqxjH3pHxoWNtDErsK-1920-80.jpg" mos="" align="middle" fullscreen="" width="2550" 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>Nordquist’s retort lands with some weight because it exposes Arm’s hurdles and the challenge Nvidia has:</p><ul><li><strong>The compatibility tax: </strong>Microsoft has worked hard on its Windows Prism Emulation layer for translating x86 apps to Arm, but running that translation still risks edge-case performance hits. Conversely, AMD’’s x86 architecture guarantees zero translation overhead for hefty software and native PC gaming.</li><li><strong>The memory ceiling: </strong>Nvidia’s 128GB unified cap is undeniably impressive, but AMD’s 192GB ceiling gives local AI 50% more breathing room for more concurrent agents.</li><li><strong>The category reality: </strong>Nvidia’s joined a party AMD rocked up to a year ago. The company has already spent 12 months taking consumer feedback and refining the second-generation silicon.</li></ul><p>But ultimately, the time for talk is over. Nvidia brought serious star power, but AMD isn’t blinking. Now it’s time for real-world benchmarking to see whether Nvidia’s Arm silicon can actually match AMD’s battle-tested x86 brute force.</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/cpus/i-didnt-believe-an-nvidia-rtx-spark-laptop-would-have-the-same-performance-both-on-and-off-the-charger-so-i-put-it-to-the-test"><strong>I didn’t believe an Nvidia RTX Spark laptop would have the same performance both on and off the charger — so I put it to the test</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/computing/cpus/amd-just-flaunted-its-own-192gb-monster-chip-to-spoil-nvidias-rtx-spark-party-ryzen-ai-max-pro-495-should-worry-apple-too"><strong>AMD just flaunted its own 192GB monster chip to spoil Nvidia’s RTX Spark party — Ryzen AI Max+ Pro 495 should worry Apple, too</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/computing/windows-operating-systems/i-just-tested-windows-11-26h2-heres-how-to-update-now-and-why-microsoft-finally-fixed-the-two-worst-things-about-windows-11"><strong>I just tested Windows 11 26H2 — here’s how to update now and why Microsoft finally fixed the two worst things about Windows 11</strong></a><strong></strong></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/laptops/they-are-new-to-the-laptop-market-amd-issues-a-reality-check-to-nvidias-rtx-spark-and-fires-a-warning-shot-at-arm</link>
                                                                            <description>
                            <![CDATA[ “We did this a year ago.” AMD Client VP Mike Nordquist fires back at Nvidia’s RTX Spark, exposing its Arm translation layers and 128GB memory ceiling. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">E8cLHjWiV9NagCL5uQoksn</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/g6ELurRKoJh2X5LMsAYk9B-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 12 Oct 2026 10:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Laptops]]></category>
                                                    <category><![CDATA[CPUs]]></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/g6ELurRKoJh2X5LMsAYk9B-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Nvidia RTX Spark vs AMD Ryzen AI MAX]]></media:description>                                                            <media:text><![CDATA[Nvidia RTX Spark vs AMD Ryzen AI MAX]]></media:text>
                                <media:title type="plain"><![CDATA[Nvidia RTX Spark vs AMD Ryzen AI MAX]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/g6ELurRKoJh2X5LMsAYk9B-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Nvidia has just properly unveiled <a href="http://tomsguide.com/tag/nvidia-rtx-spark">RTX Spark</a> alongside <a href="https://www.tomsguide.com/computing/laptops/microsoft-surface-laptop-ultra-vs-macbook-pro-m5-pro-the-biggest-differences-explained">Microsoft’s flagship Surface Laptop Ultra</a>, heralding what Jensen Huang said about reinventing the PC — massive unified memory, local AI and desktop-class power in a portable chassis.</p><p>If you ask AMD, however, Nvidia didn’t invent a new category. Instead, it validated one Team Red has been selling for over a year. Speaking directly after the RTX Spark reveal, Mike Nordquist, CVP of Client Product Marketing, didn’t hold back with me. </p><p>Between calls to celebrate industry competition and pointed critiques of Nvidia’s hardware architecture, Nordquist laid out a sharp, pragmatic case for why AMD believes its second-generation Ryzen AI Max 400 series (codename Gorgon Point Halo) leaves Nvidia’s new darling in the dust.</p><p><em><strong>Editor's note: </strong></em><em>This interview has been edited for brevity and clarity.</em></p><h2 id="39-nvidia-is-just-getting-started-39">'Nvidia is just getting started'</h2><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="RqzpXMBBRWAD7QXYGKfCJk" name="PXL_20261007_174926500.TS-000" alt="Jensen and Nadella on stage at Microsoft Surface Laptop Ultra event" src="https://cdn.mos.cms.futurecdn.net/RqzpXMBBRWAD7QXYGKfCJk-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><p>While Nvidia embraces the unified-memory laptop, AMD was quick to point out that it kicked off this exact architecture with Strix Halo back in early 2025.</p><p>“The exciting part is just the category development. We introduced a similar product in early 2025, so having more people come in and validate that, and you see Microsoft beefing up, I think that’s good overall. Competition is good overall,” Nordquist commented.</p><p>“We’re in our second generation that we just announced in the last month, which brings 50% more capacity [than RTX Spark]. So you can get higher capability [AI] models than maybe what you saw today.”</p><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="V89Cq6qjrmfthMwFcnMtdN" name="Asus TUF Gaming A14 (2026)" alt="Asus TUF Gaming A14 (2026)" src="https://cdn.mos.cms.futurecdn.net/V89Cq6qjrmfthMwFcnMtdN-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 cuts straight to the core of one thing AMD does have an advantage over Nvidia on — core memory. RTX Spark caps out at 128GB of unified memory, but AMD’s Gorgon Halo pushes that ceiling to 192GB. As Nordquist says himself, that gives you “bigger models up to 300 billion parameters,” which ensures a “higher quality.”</p><h2 id="the-elephant-in-the-keynote-why-did-nobody-say-arm">The elephant in the keynote: why did nobody say “Arm”?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2550px;"><p class="vanilla-image-block" style="padding-top:56.47%;"><img id="Fiz9qqQW4jVGmpxM3ykAGn" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/Fiz9qqQW4jVGmpxM3ykAGn-1920-80.jpg" mos="" align="middle" fullscreen="" width="2550" 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>Quick explainer to kick this off. AMD and Intel CPUs are built on an x86 architecture — the architecture that’s been used by Windows PCs for over 30 years. It has its down sides, but the main strength here is its the default native standard. It’s been around for ages and chips are built for it.</p><p>Nvidia’s RTX Spark and Snapdragon X Elite use an Arm architecture. Arm’s not new, but comparatively, it’s the new kid on the block which does introduce some power efficiency gains. </p><p>However, it’s main issue is emulating these apps built for x86 into Arm. There’s a performance penalty there, as it needs to translate the code as you use the app at the same time.</p><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="Q6zfEWh5eVToAVQFyQ9GBX" name="Asus ProArt GoPro Edition (PX13)" alt="Asus ProArt GoPro Edition (PX13)" src="https://cdn.mos.cms.futurecdn.net/Q6zfEWh5eVToAVQFyQ9GBX-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 probably the sharpest jab from Nordquist. Not about raw AI performance or memory bandwidth, but the glaring omission in Nvidia and Microsoft’s keynote. Across the entire launch, the word “Arm” was practically scrubbed from the script.</p><p>“Everything just runs native [on AMD], and I still don’t know what that experience is going to be, how great the CPU is going to be,” Nordquist pondered. “We feel really good that everything just runs out of the box with out product. And I think those questions remain [with RTX Spark].”</p><p>When pressed on whether Windows on Arm is finally staging an unstoppable coup against traditional x86 computing, Nordquist dismissed the supposed architectural superiority of Arm outright.</p><p>“I don’t think there’s anything magic about going to Arm — that it’s going to be lower power or some other attribute out there. I don’t think we’ve ever believed that, and I don’t think Intel probably believes that as well,” Nordquist responded.</p><p>“I didn’t hear Arm mentioned once. It was interesting in their keynote that neither Nvidia nor Microsoft talked about it.</p><h2 id="thirty-years-of-laptop-dna-vs-a-gpu-giant-s-first-clamshell">Thirty years of laptop DNA vs a GPU giant’s first clamshell</h2><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>Nvidia might dominate AI data centers and even make the dedicated GPUs for gaming laptops. But when it comes to the messy, compromise-heavy reality of consumer laptops — thermal throttling, battery curves, sleep states and legacy software — Nordquist hammered how that building a standalone laptop platform is a different beast.</p><p>“They’re new to the laptop market in general. We’ve been doing it for 30 years-plus in this space, so I think we know how to run Windows,” Nordquist added. </p><p>“There’s no emulation; the games are just going to run natively. You’re buying into something that’s going to work, and not having to worry about whether something’s going to break. You’re just kind of covered with what we have.”</p><h2 id="the-silicon-war-moves-to-the-bench">The silicon war moves to the bench</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2550px;"><p class="vanilla-image-block" style="padding-top:56.47%;"><img id="Z3AeLqxjH3pHxoWNtDErsK" name="Microsoft Surface Laptop Ultra" alt="Microsoft Surface Laptop Ultra" src="https://cdn.mos.cms.futurecdn.net/Z3AeLqxjH3pHxoWNtDErsK-1920-80.jpg" mos="" align="middle" fullscreen="" width="2550" 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>Nordquist’s retort lands with some weight because it exposes Arm’s hurdles and the challenge Nvidia has:</p><ul><li><strong>The compatibility tax: </strong>Microsoft has worked hard on its Windows Prism Emulation layer for translating x86 apps to Arm, but running that translation still risks edge-case performance hits. Conversely, AMD’’s x86 architecture guarantees zero translation overhead for hefty software and native PC gaming.</li><li><strong>The memory ceiling: </strong>Nvidia’s 128GB unified cap is undeniably impressive, but AMD’s 192GB ceiling gives local AI 50% more breathing room for more concurrent agents.</li><li><strong>The category reality: </strong>Nvidia’s joined a party AMD rocked up to a year ago. The company has already spent 12 months taking consumer feedback and refining the second-generation silicon.</li></ul><p>But ultimately, the time for talk is over. Nvidia brought serious star power, but AMD isn’t blinking. Now it’s time for real-world benchmarking to see whether Nvidia’s Arm silicon can actually match AMD’s battle-tested x86 brute force.</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/cpus/i-didnt-believe-an-nvidia-rtx-spark-laptop-would-have-the-same-performance-both-on-and-off-the-charger-so-i-put-it-to-the-test"><strong>I didn’t believe an Nvidia RTX Spark laptop would have the same performance both on and off the charger — so I put it to the test</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/computing/cpus/amd-just-flaunted-its-own-192gb-monster-chip-to-spoil-nvidias-rtx-spark-party-ryzen-ai-max-pro-495-should-worry-apple-too"><strong>AMD just flaunted its own 192GB monster chip to spoil Nvidia’s RTX Spark party — Ryzen AI Max+ Pro 495 should worry Apple, too</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/computing/windows-operating-systems/i-just-tested-windows-11-26h2-heres-how-to-update-now-and-why-microsoft-finally-fixed-the-two-worst-things-about-windows-11"><strong>I just tested Windows 11 26H2 — here’s how to update now and why Microsoft finally fixed the two worst things about Windows 11</strong></a><strong></strong></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I didn’t believe an Nvidia RTX Spark laptop would have the same performance both on and off the charger — so I put it to the test ]]></title>
                                                                                                <dc:content><![CDATA[ <p>So <a href="https://www.tomsguide.com/tag/nvidia-rtx-spark">Nvidia’s RTX Spark</a> is officially here, and Team Green is making a big stink about its mission to “reinvent the PC” in the age of local agentic AI. But can I be honest with you, dear reader? The AI stuff is cool, but it's also fixing this one key gripe with Windows laptops, which has me believing in this reinvention.</p><p>As the headline gives away, I’m talking about getting the same performance both on and off the charger. The snail’s pace I’d get on a Windows laptop whenever it's disconnected has become a commonplace gripe of mine — so much so that I was suspicious of whether Nvidia had actually cracked it.</p><p>Well, turns out the company proved me wrong royally with some key examples over the months, showing just how efficient this is with that battery to deliver the same speeds no matter where you are.</p><h2 id="the-accident">The accident</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2550px;"><p class="vanilla-image-block" style="padding-top:56.47%;"><img id="nyjujYiNGyMH542RfcoAa9" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/nyjujYiNGyMH542RfcoAa9-1920-80.jpg" mos="" align="middle" fullscreen="" width="2550" 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>Probably the most surprising view of this potential is in Blender. For those out of the know, this is a seriously intensive app for 3D animation and digital art — it demands a lot of your CPU and GPU in remapping pixels every time you move an image.</p><p>During <a href="https://www.tomsguide.com/tech-events/best-of-ifa-2026-we-found-the-26-top-new-gadgets">IFA 2026</a>, I saw a Blender demo that was supposed to show the app with and without DLSS activated on two identical Surface Laptop Ultras. Instead, it revealed the raw stamina of an RTX Spark system because one was left unplugged.</p><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>Speaking to Nvidia, the demo had been turned on/setup at 9 am, and I attended it at around 2:30 pm. After 5.5 hours, the 10% battery warning had only started showing.</p><p>Even on something super power-efficient like a MacBook Pro, you’d be lucky to get 4-5 hours out of it. So you can imagine how blown away I was in this situation. </p><p>On top of that, I saw Unreal Engine 5's biggest sample map running on the MSI Prestige Flip N16 without any stuttering off the charger.</p><h2 id="no-more-gaming-frustration">No more gaming frustration</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2550px;"><p class="vanilla-image-block" style="padding-top:56.47%;"><img id="g93mBp3sNPVGD22RzzWrU9" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/g93mBp3sNPVGD22RzzWrU9-1920-80.jpg" mos="" align="middle" fullscreen="" width="2550" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>And since this is Nvidia, we have to talk about gaming. You already know the key gameplay specs here — DLSS 4.5 supported through the sheer heft of all those Blackwell GPU cores and the horsepower to run 1440p games at buttery-smooth frame rates.</p><p>Nowhere was this more obvious than with the <a href="https://www.tomsguide.com/news/live/microsoft-surface-event-nvidia-rtx-spark-surface-laptop-ultra">Microsoft Surface Laptop Ultra</a>. That <a href="https://www.tomsguide.com/computing/laptops/forget-rtx-spark-the-surface-laptop-ultras-magnetic-usb-c-charger-is-a-game-changer-that-makes-apples-magsafe-look-obsolete">magnetic USB-C port</a> may have stolen my heart, but at the same time, I got to see <a href="https://www.tomsguide.com/gaming/gears-of-war-e-day-review">Gears of War: E-Day</a> (a game that's being translated to work with the silicon) run at exactly the same frame rate.</p><p>That standard gaming laptop frustration of watching your FPS dip is a thing of the past here. No more massive cut in performance!</p><h2 id="what-does-this-mean-for-battery-life">What does this mean for 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: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>But let’s get real here. What is the battery life in reality? All of this sounds great, but there isn’t anything concrete beyond a claim of “all-day battery life.”</p><p>Throw in the fact that this is an Arm chip and that emulation isn’t necessarily the most power-efficient way to run apps, and this is something I’m very keen to test.</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/laptops/nvidia-rtx-spark-laptop-preorders-are-live-heres-where-to-buy-them"><strong>NVIDIA RTX Spark laptop preorders are live: here's where to buy them</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/computing/cpus/amd-just-flaunted-its-own-192gb-monster-chip-to-spoil-nvidias-rtx-spark-party-ryzen-ai-max-pro-495-should-worry-apple-too"><strong>AMD just flaunted its own 192GB monster chip to spoil Nvidia’s RTX Spark party — Ryzen AI Max+ Pro 495 should worry Apple, too</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/computing/peripherals/i-tried-microsofts-new-haptic-surface-mouse-standard-mice-now-feel-completely-broken-to-me"><strong>I tried Microsoft’s new haptic Surface Mouse — and standard mice now feel completely broken</strong></a><strong></strong></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/cpus/i-didnt-believe-an-nvidia-rtx-spark-laptop-would-have-the-same-performance-both-on-and-off-the-charger-so-i-put-it-to-the-test</link>
                                                                            <description>
                            <![CDATA[ I tested an Nvidia RTX Spark laptop on battery. From an accidental Blender test to zero gaming throttle, here is how Nvidia killed the battery penalty. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">iypnF5qBFg24YbRsxR7PyB</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/ncUsQrKhMKyB9b3W5dXtL9-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 09 Oct 2026 09:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[CPUs]]></category>
                                                    <category><![CDATA[Laptops]]></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/ncUsQrKhMKyB9b3W5dXtL9-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/ncUsQrKhMKyB9b3W5dXtL9-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>So <a href="https://www.tomsguide.com/tag/nvidia-rtx-spark">Nvidia’s RTX Spark</a> is officially here, and Team Green is making a big stink about its mission to “reinvent the PC” in the age of local agentic AI. But can I be honest with you, dear reader? The AI stuff is cool, but it's also fixing this one key gripe with Windows laptops, which has me believing in this reinvention.</p><p>As the headline gives away, I’m talking about getting the same performance both on and off the charger. The snail’s pace I’d get on a Windows laptop whenever it's disconnected has become a commonplace gripe of mine — so much so that I was suspicious of whether Nvidia had actually cracked it.</p><p>Well, turns out the company proved me wrong royally with some key examples over the months, showing just how efficient this is with that battery to deliver the same speeds no matter where you are.</p><h2 id="the-accident">The accident</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2550px;"><p class="vanilla-image-block" style="padding-top:56.47%;"><img id="nyjujYiNGyMH542RfcoAa9" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/nyjujYiNGyMH542RfcoAa9-1920-80.jpg" mos="" align="middle" fullscreen="" width="2550" 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>Probably the most surprising view of this potential is in Blender. For those out of the know, this is a seriously intensive app for 3D animation and digital art — it demands a lot of your CPU and GPU in remapping pixels every time you move an image.</p><p>During <a href="https://www.tomsguide.com/tech-events/best-of-ifa-2026-we-found-the-26-top-new-gadgets">IFA 2026</a>, I saw a Blender demo that was supposed to show the app with and without DLSS activated on two identical Surface Laptop Ultras. Instead, it revealed the raw stamina of an RTX Spark system because one was left unplugged.</p><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>Speaking to Nvidia, the demo had been turned on/setup at 9 am, and I attended it at around 2:30 pm. After 5.5 hours, the 10% battery warning had only started showing.</p><p>Even on something super power-efficient like a MacBook Pro, you’d be lucky to get 4-5 hours out of it. So you can imagine how blown away I was in this situation. </p><p>On top of that, I saw Unreal Engine 5's biggest sample map running on the MSI Prestige Flip N16 without any stuttering off the charger.</p><h2 id="no-more-gaming-frustration">No more gaming frustration</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2550px;"><p class="vanilla-image-block" style="padding-top:56.47%;"><img id="g93mBp3sNPVGD22RzzWrU9" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/g93mBp3sNPVGD22RzzWrU9-1920-80.jpg" mos="" align="middle" fullscreen="" width="2550" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>And since this is Nvidia, we have to talk about gaming. You already know the key gameplay specs here — DLSS 4.5 supported through the sheer heft of all those Blackwell GPU cores and the horsepower to run 1440p games at buttery-smooth frame rates.</p><p>Nowhere was this more obvious than with the <a href="https://www.tomsguide.com/news/live/microsoft-surface-event-nvidia-rtx-spark-surface-laptop-ultra">Microsoft Surface Laptop Ultra</a>. That <a href="https://www.tomsguide.com/computing/laptops/forget-rtx-spark-the-surface-laptop-ultras-magnetic-usb-c-charger-is-a-game-changer-that-makes-apples-magsafe-look-obsolete">magnetic USB-C port</a> may have stolen my heart, but at the same time, I got to see <a href="https://www.tomsguide.com/gaming/gears-of-war-e-day-review">Gears of War: E-Day</a> (a game that's being translated to work with the silicon) run at exactly the same frame rate.</p><p>That standard gaming laptop frustration of watching your FPS dip is a thing of the past here. No more massive cut in performance!</p><h2 id="what-does-this-mean-for-battery-life">What does this mean for 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: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>But let’s get real here. What is the battery life in reality? All of this sounds great, but there isn’t anything concrete beyond a claim of “all-day battery life.”</p><p>Throw in the fact that this is an Arm chip and that emulation isn’t necessarily the most power-efficient way to run apps, and this is something I’m very keen to test.</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/laptops/nvidia-rtx-spark-laptop-preorders-are-live-heres-where-to-buy-them"><strong>NVIDIA RTX Spark laptop preorders are live: here's where to buy them</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/computing/cpus/amd-just-flaunted-its-own-192gb-monster-chip-to-spoil-nvidias-rtx-spark-party-ryzen-ai-max-pro-495-should-worry-apple-too"><strong>AMD just flaunted its own 192GB monster chip to spoil Nvidia’s RTX Spark party — Ryzen AI Max+ Pro 495 should worry Apple, too</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/computing/peripherals/i-tried-microsofts-new-haptic-surface-mouse-standard-mice-now-feel-completely-broken-to-me"><strong>I tried Microsoft’s new haptic Surface Mouse — and standard mice now feel completely broken</strong></a><strong></strong></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Microsoft Surface Laptop Ultra vs. MacBook Pro M5 Pro: The biggest differences explained ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The <a href="https://www.tomsguide.com/computing/laptops/microsoft-surface-ultra-announced-with-nvidia-rtx-spark-for-usd2-599-and-its-going-right-after-the-macbook-pro">Microsoft Surface Laptop Ultra</a> is real and promises to be a powerhouse. Powered by an <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 chip</a>, this 15-inch laptop is built for local AI and 3D graphics. Though its starting price of $2,599 is steep for average users, “prosumers” could certainly benefit from what this laptop aims to deliver.</p><p>Of course, this raises a question for the folks the Surface Laptop Ultra is marketed to: why shouldn’t you get a MacBook Pro instead? It’s a fair question, especially since Microsoft wasn’t shy about comparing its latest laptop to Apple’s flagship notebook during the <a href="https://www.tomsguide.com/news/live/microsoft-surface-event-nvidia-rtx-spark-surface-laptop-ultra">Microsoft Surface event</a>. Jensen Huang says Nvidia and Microsoft have “reinvented the computer as we know it,” but can the Surface Laptop Ultra do anything the MacBook Pro can’t?</p><p>While we haven’t yet had meaningful hands-on time with the Surface Laptop Ultra, we have enough information to make some preliminary comparisons between the devices. So, should you get the Surface Laptop Ultra or a MacBook Pro M5 Pro? Read on for all the details!</p><h3 class="article-body__section" id="section-microsoft-surface-laptop-ultra-vs-macbook-pro-m5-pro-specs"><span>Microsoft Surface Laptop Ultra vs. MacBook Pro M5 Pro: Specs</span></h3><div ><table><thead><tr><th class="firstcol empty" ></th><th  ><p>Microsoft Surface Laptop Ultra</p></th><th  ><p>MacBook Pro 14-inch M5 Pro (starting)</p></th><th  ><p>MacBook Pro 16-inch M5 Pro (starting)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p>$2,599</p></td><td  ><p>$2,499</p></td><td  ><p>$2,999</p></td></tr><tr><td class="firstcol " ><p><strong>Display</strong></p></td><td  ><p>15-inch PixelSense Ultra display (3270 x 2180) | 120Hz</p></td><td  ><p>14.2 Liquid Retina XDR (3024 x 1964) | 120Hz</p></td><td  ><p>16.2 Liquid Retina XDR (3,456 x 2,234) | 120Hz</p></td></tr><tr><td class="firstcol " ><p><strong>Chip</strong></p></td><td  ><p>Nvidia RTX Spark N1X (5120-core GPU and 18-core CPU)</p></td><td  ><p>M5 Pro (18-core CPU, 20-core GPU)</p></td><td  ><p>M5 Pro (18-core CPU, 20-core GPU)</p></td></tr><tr><td class="firstcol " ><p><strong>Memory</strong></p></td><td  ><p>24GB</p></td><td  ><p>24GB</p></td><td  ><p>24GB</p></td></tr><tr><td class="firstcol " ><p><strong>Storage</strong></p></td><td  ><p>512GB</p></td><td  ><p>1TB</p></td><td  ><p>1TB</p></td></tr><tr><td class="firstcol " ><p><strong>Battery life</strong></p></td><td  ><p>15 hours video, 12 hours web browsing (claimed)</p></td><td  ><p>24 hours (rated)</p></td><td  ><p>24 hours (rated)</p></td></tr><tr><td class="firstcol " ><p><strong>Ports</strong></p></td><td  ><p>3x USB-C/USB4, 1x DisplayPort 2.1, 1x HDMI 2.1, 1x USB-A, 1x SD card reader, 1x 3.5mm headphone jack</p></td><td  ><p>3x Thunderbolt 5, 1x HDMI, 1x SD card slot, 1x headphone jack, 1x MagSafe charging port</p></td><td  ><p>3x Thunderbolt 5, 1x HDMI, 1x SD card slot, 1x headphone jack, 1x MagSafe charging port</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>Wi-Fi 7, Bluetooth 5.4</p></td><td  ><p>Wi-Fi 7, Bluetooth 6</p></td><td  ><p>Wi-Fi 7, Bluetooth 6</p></td></tr><tr><td class="firstcol " ><p><strong>Colors</strong></p></td><td  ><p>Platinum, Nightfall</p></td><td  ><p>Silver, Space Black</p></td><td  ><p>Silver, Space Black</p></td></tr><tr><td class="firstcol " ><p><strong>Dimensions</strong></p></td><td  ><p>12.9 x 9.4 x 0.7 inches</p></td><td  ><p>12.31 x 8.71 x 0.61 inches</p></td><td  ><p>14.0 x 9.7 x 0.6 inches</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>4.4 pounds</p></td><td  ><p>3.4 pounds</p></td><td  ><p>4.7 pounds</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-microsoft-surface-laptop-ultra-vs-macbook-pro-m5-pro-price"><span>Microsoft Surface Laptop Ultra vs. MacBook Pro M5 Pro: Price</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="PuRjJqMTbps6QrnyoPiFRm" name="Something new is coming from Windows _ October 7 50-52 screenshot" alt="Lifestyle working on the Microsoft Surface Laptop Ultra" src="https://cdn.mos.cms.futurecdn.net/PuRjJqMTbps6QrnyoPiFRm-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: Microsoft)</span></figcaption></figure><p>Though the Surface Laptop Ultra isn’t as expensive as we feared, even the entry-level model commands a steep price—comparable to the M5 Pro MacBook Pro.</p><p>Over on Microsoft’s online store, you can buy the <a href="https://www.microsoft.com/en-us/store/configure/surface-laptop-ultra/8wg5vqp0x4b8" target="_blank" rel="nofollow">Surface Laptop Ultra starting at $2,599</a>. This model packs an RTX Spark N1X chip with a 5120 GPU and 18-core CPU, 24GB of unified memory, and a 512GB SSD. You can pre-order it now and get it as soon as October 16. Interestingly enough, you can trade in your MacBook Pro and get up to $1,000 cash back on the Surface Laptop Ultra.</p><p>The next model, which packs the more powerful <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">RTX Spark N1X chip</a> with a 6144-core GPU and a 20-core CPU, along with 32GB of memory and a 1TB SSD, starts at $3,699. The product page lists various configurations, with the highest-end model, featuring 128GB of RAM and a 1TB SSD, costing an eye-watering $5,899.</p><p>Conversely, the 14-inch MacBook Pro with the M5 Pro chip packing a 15-core CPU/16-core GPU, 24GB of unified memory, and a 1TB SSD starts at $2,499. The 16-inch model starts at $2,999 with the same M5 Pro chip, memory, and storage.</p><p>For $200 more, you can get a 14-inch model with an M5 Pro chip featuring an 18-core CPU and a 20-core GPU. If you have money to burn, you can configure the 14-inch MacBook Pro with an M5 Max chip (18-core CPU/40-core GPU), 128GB of RAM, and a 2TB SSD for $6,699. This laptop can top out at $9,699 if you get an 8TB SSD.</p><p>To be clear, both the Surface Laptop Ultra and MacBook Pro are pricey machines and can get even more expensive when you opt for higher-end components. Yes, the MacBook Pro can shatter your bank account, but if we just look at starting prices, Apple’s powerful notebook is $100 less than Microsoft’s.</p><h3 class="article-body__section" id="section-microsoft-surface-laptop-ultra-vs-macbook-pro-m5-pro-design"><span>Microsoft Surface Laptop Ultra vs. MacBook Pro M5 Pro: Design</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>Our own Jason England went <a href="https://www.tomsguide.com/computing/laptops/microsoft-surface-laptop-ultra-rtx-spark-hands-on-review">hands-on with the Surface Laptop Ultra</a> at Computex and got another look during Microsoft’s Surface event. He says the 15-inch laptop feels as premium as a MacBook Pro, with a similar-feeling keyboard and a massive touchpad. Based on what I saw during the livestream, you could certainly mistake the Surface Laptop Ultra for a MacBook Pro.</p><p>Getting into some specifics, the Surface Laptop Ultra measures 12.9 x 9.4 x 0.7 inches and weighs 4.4 pounds. Jason says the laptop is “impressively light” and that it has good weight distribution when you hold it. As with the MacBook Pro, it’s easy to open the Surface Laptop Ultra’s lid with one hand.</p><p>One of the most interesting features of Microsoft’s laptop is that, according to Microsoft, it has the world’s first built-in <a href="https://www.tomsguide.com/computing/laptops/forget-rtx-spark-the-surface-laptop-ultras-magnetic-usb-c-charger-is-a-game-changer-that-makes-apples-magsafe-look-obsolete">magnetic USB-C charging port</a>. While I won’t dispute that, it’s clearly inspired by Apple’s MagSafe charger on MacBooks. According to Jason, the USB-C port survives the trip test.</p><p>Since the 14-inch MacBook Pro measures 12.31 x 8.71 x 0.61 inches and weighs 3.4 pounds, it’s smaller and lighter than the Surface Laptop Ultra. However, the Microsoft laptop is smaller and lighter than the 16-inch MacBook Pro, which measures 14.0 x 9.7 x 0.6 inches and weighs 4.7 pounds.</p><p>Microsoft is clearly inspired by the MacBook Pro, which isn’t a bad thing given how Apple’s laptop is arguably the gold standard for premium notebook design. So in that sense, both are likely equal here, though we’ll want more hands-on testing before rendering a verdict.</p><h3 class="article-body__section" id="section-microsoft-surface-laptop-ultra-vs-macbook-pro-m5-pro-display"><span>Microsoft Surface Laptop Ultra vs. MacBook Pro M5 Pro: Display</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>We didn’t get a lot of info on the Surface Laptop Ultra’s display, but it seems to have the basics of what you’d expect from a premium laptop. As with design, it also seems this laptop’s display will be comparable to that of a MacBook Pro.</p><p>The Surface Laptop Ultra has a 15-inch PixelSense Ultra touchscreen display, which is a mini-LED. It has a screen resolution of 3270 x 2180 pixels, an aspect ratio of 3:2, and a refresh rate of up to 120Hz. I know those are a lot of numbers, but even without having gone eyes-on with it, I can tell that this display should deliver a sharp and vivid image.</p><p>Conversely, the 14-inch MacBook Pro M5 Pro has a 14.2-inch Liquid Retina XDR display (Apple’s name for mini-LED). It has a sharp 3024 x 1964 resolution and a smooth 120Hz refresh rate. Even if it’s not an OLED panel, I’ve always found the image quality pleasing to the eye, with the bold colors and nice contrast levels.</p><p>We’ll need to get the Surface Laptop Ultra into our testing lab to see what it can do, but given how it’s mini-LED like the MacBook Pro, I expect excellent image quality overall.</p><h3 class="article-body__section" id="section-microsoft-surface-laptop-ultra-vs-macbook-pro-m5-pro-performance"><span>Microsoft Surface Laptop Ultra vs. MacBook Pro M5 Pro: Performance</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="8JaTbLhe3FEvMBkfYzH9oR" name="Nvidia Spark vs M5 Pro LIST" alt="Nvidia Spark vs M5 Pro" src="https://cdn.mos.cms.futurecdn.net/8JaTbLhe3FEvMBkfYzH9oR-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/Nvidia/Apple/Shutterstock)</span></figcaption></figure><p>Microsoft is promising a lot with the Surface Laptop Ultra, at least for developers, creators, and AI engineers. The Nvidia RTX Spark chip powering the laptop has up to 6,144 GPU cores, an Nvidia Grace CPU with up to 20 cores, and up to 128GB of unified memory. Thanks to that, Microsoft says it can run AI models with more than 120 billion parameters locally, with up to 1 petaflop of AI performance.</p><p>When Jason tested the RTX Spark itself, he said there’s a lot to gain from the massive local models that can change how you interact with your computer — from it being a tool that lies idle when not in use to an active assistant. This was a point Microsoft kept coming back to during the Surface event. If you’re someone who feels constrained when using laptops not expressly built for local AI, the Surface Laptop Ultra and other RTX Spark machines could be a huge game changer.</p><p>Given the power of Nvidia’s chip, it should also be a gaming powerhouse. During the event, we saw a brief glimpse of <a href="https://www.tomsguide.com/gaming/gears-of-war-e-day-review">Gears of War: E-Day</a> running at 60 frames per second. I was able to wring better performance from this game when I played it on the RTX 5080-powered Razer Blade 18, with frames in the 120s. Still, I won’t complain about games running at 60 fps. I expect games can run even better when specifically optimized for RTX Spark.</p><p>The 16-inch MacBook Pro M5 Pro I tested is among the most powerful laptops ever. In nearly every metric, it far exceeded the competition — as you can read in my full <a href="https://www.tomsguide.com/computing/macbooks/macbook-pro-16-inch-m5-pro-review">MacBook Pro M5 Pro review</a>. I can’t vouch for its AI capabilities since I didn’t run any local models during testing, but given that many folks use MacBook Pros to run LLMs locally, it’s a solid machine for that purpose. It can even run graphically demanding games as well as some dedicated gaming PCs, so long as those games have been optimized for Apple Silicon.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W0EGkO"></div>                            </div>                            <script src="https://kwizly.com/embed/W0EGkO.js" async></script><h3 class="article-body__section" id="section-microsoft-surface-laptop-ultra-vs-macbook-pro-m5-pro-outlook"><span>Microsoft Surface Laptop Ultra vs. MacBook Pro M5 Pro: Outlook</span></h3><p>I’ll need to fully test the Microsoft Surface Laptop Ultra before deciding whether or not it’s better than a MacBook Pro. However, based on what we know, I have an idea of who this machine is and isn’t designed for.</p><p>If you mostly use laptops for browsing the web, watching streaming videos, and light work in Google Docs, neither laptop is for you, as they’re way overpowered and overpriced for your needs. If you want a laptop for the basics, the $799 <a href="https://www.tomsguide.com/computing/laptops/dell-xps-13-2026-review">Dell XPS 13</a> or $699 <a href="https://www.tomsguide.com/computing/macbooks/apple-macbook-neo-review">MacBook Neo</a> won’t let you down, as both are reasonably priced and have premium-like features.</p><p>What about if you’re a gamer? It’s still too early to see how games run on RTX Spark systems in general, but if that’s your primary focus, then you’re likely better off with one of the <a href="https://www.tomsguide.com/best-picks/best-gaming-laptops">best gaming laptops</a> or even one of the <a href="https://www.tomsguide.com/us/best-gaming-pc,review-2219.html">best gaming PCs</a>, especially with how much the Surface Laptop Pro can cost. And given how Macs don’t yet enjoy the same robust gaming support as PCs, the same applies there. Neither of these machines is designed for hardcore gamers.</p><p>Since most of the Surface event focused on local AI agents, it’s not hard to tell who the Surface Laptop Ultra is designed for. So if you’re an AI developer who wants a laptop expressly built for that task, the Surface Laptop Ultra should suffice. However, we’ll need to do some hands-on testing to see if Microsoft’s laptop can handle local AI tasks better than a MacBook Pro — or the newly released <a href="https://www.tomsguide.com/computing/apple-desktops/apple-mac-studio-m5-ultra-review">Mac Studio M5 Ultra</a> that’s also built for local AI.</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/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"><strong>I spoke to Nvidia CEO Jensen Huang about RTX Spark</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/computing/gpus/amd-radeon-rx-9070-gre-review"><strong>I gamed for 250 hours on AMD Radeon RX 9070 GRE</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/gaming/handheld-gaming/msi-claw-8-ex-ai-plus-hands-on-review"><strong>The MSI Claw 8 EX AI+ leaves ROG Xbox Ally in the dust</strong></a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/laptops/microsoft-surface-laptop-ultra-vs-macbook-pro-m5-pro-the-biggest-differences-explained</link>
                                                                            <description>
                            <![CDATA[ The Microsoft Surface Laptop Ultra could be a local AI and 3D rendering powerhouse, but how would it fare against the MacBook Pro? Here are the key differences. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">axFxKyp8NsVvRoJRdvAnhQ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/uwg94CzoH3VwsikR2fFqoS-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 08 Oct 2026 06:15:00 +0000</pubDate>                                                                                                                                <updated>Thu, 08 Oct 2026 08:35:49 +0000</updated>
                                                                                                                                            <category><![CDATA[Laptops]]></category>
                                                    <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/uwg94CzoH3VwsikR2fFqoS-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/uwg94CzoH3VwsikR2fFqoS-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The <a href="https://www.tomsguide.com/computing/laptops/microsoft-surface-ultra-announced-with-nvidia-rtx-spark-for-usd2-599-and-its-going-right-after-the-macbook-pro">Microsoft Surface Laptop Ultra</a> is real and promises to be a powerhouse. Powered by an <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 chip</a>, this 15-inch laptop is built for local AI and 3D graphics. Though its starting price of $2,599 is steep for average users, “prosumers” could certainly benefit from what this laptop aims to deliver.</p><p>Of course, this raises a question for the folks the Surface Laptop Ultra is marketed to: why shouldn’t you get a MacBook Pro instead? It’s a fair question, especially since Microsoft wasn’t shy about comparing its latest laptop to Apple’s flagship notebook during the <a href="https://www.tomsguide.com/news/live/microsoft-surface-event-nvidia-rtx-spark-surface-laptop-ultra">Microsoft Surface event</a>. Jensen Huang says Nvidia and Microsoft have “reinvented the computer as we know it,” but can the Surface Laptop Ultra do anything the MacBook Pro can’t?</p><p>While we haven’t yet had meaningful hands-on time with the Surface Laptop Ultra, we have enough information to make some preliminary comparisons between the devices. So, should you get the Surface Laptop Ultra or a MacBook Pro M5 Pro? Read on for all the details!</p><h3 class="article-body__section" id="section-microsoft-surface-laptop-ultra-vs-macbook-pro-m5-pro-specs"><span>Microsoft Surface Laptop Ultra vs. MacBook Pro M5 Pro: Specs</span></h3><div ><table><thead><tr><th class="firstcol empty" ></th><th  ><p>Microsoft Surface Laptop Ultra</p></th><th  ><p>MacBook Pro 14-inch M5 Pro (starting)</p></th><th  ><p>MacBook Pro 16-inch M5 Pro (starting)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p>$2,599</p></td><td  ><p>$2,499</p></td><td  ><p>$2,999</p></td></tr><tr><td class="firstcol " ><p><strong>Display</strong></p></td><td  ><p>15-inch PixelSense Ultra display (3270 x 2180) | 120Hz</p></td><td  ><p>14.2 Liquid Retina XDR (3024 x 1964) | 120Hz</p></td><td  ><p>16.2 Liquid Retina XDR (3,456 x 2,234) | 120Hz</p></td></tr><tr><td class="firstcol " ><p><strong>Chip</strong></p></td><td  ><p>Nvidia RTX Spark N1X (5120-core GPU and 18-core CPU)</p></td><td  ><p>M5 Pro (18-core CPU, 20-core GPU)</p></td><td  ><p>M5 Pro (18-core CPU, 20-core GPU)</p></td></tr><tr><td class="firstcol " ><p><strong>Memory</strong></p></td><td  ><p>24GB</p></td><td  ><p>24GB</p></td><td  ><p>24GB</p></td></tr><tr><td class="firstcol " ><p><strong>Storage</strong></p></td><td  ><p>512GB</p></td><td  ><p>1TB</p></td><td  ><p>1TB</p></td></tr><tr><td class="firstcol " ><p><strong>Battery life</strong></p></td><td  ><p>15 hours video, 12 hours web browsing (claimed)</p></td><td  ><p>24 hours (rated)</p></td><td  ><p>24 hours (rated)</p></td></tr><tr><td class="firstcol " ><p><strong>Ports</strong></p></td><td  ><p>3x USB-C/USB4, 1x DisplayPort 2.1, 1x HDMI 2.1, 1x USB-A, 1x SD card reader, 1x 3.5mm headphone jack</p></td><td  ><p>3x Thunderbolt 5, 1x HDMI, 1x SD card slot, 1x headphone jack, 1x MagSafe charging port</p></td><td  ><p>3x Thunderbolt 5, 1x HDMI, 1x SD card slot, 1x headphone jack, 1x MagSafe charging port</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>Wi-Fi 7, Bluetooth 5.4</p></td><td  ><p>Wi-Fi 7, Bluetooth 6</p></td><td  ><p>Wi-Fi 7, Bluetooth 6</p></td></tr><tr><td class="firstcol " ><p><strong>Colors</strong></p></td><td  ><p>Platinum, Nightfall</p></td><td  ><p>Silver, Space Black</p></td><td  ><p>Silver, Space Black</p></td></tr><tr><td class="firstcol " ><p><strong>Dimensions</strong></p></td><td  ><p>12.9 x 9.4 x 0.7 inches</p></td><td  ><p>12.31 x 8.71 x 0.61 inches</p></td><td  ><p>14.0 x 9.7 x 0.6 inches</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>4.4 pounds</p></td><td  ><p>3.4 pounds</p></td><td  ><p>4.7 pounds</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-microsoft-surface-laptop-ultra-vs-macbook-pro-m5-pro-price"><span>Microsoft Surface Laptop Ultra vs. MacBook Pro M5 Pro: Price</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="PuRjJqMTbps6QrnyoPiFRm" name="Something new is coming from Windows _ October 7 50-52 screenshot" alt="Lifestyle working on the Microsoft Surface Laptop Ultra" src="https://cdn.mos.cms.futurecdn.net/PuRjJqMTbps6QrnyoPiFRm-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: Microsoft)</span></figcaption></figure><p>Though the Surface Laptop Ultra isn’t as expensive as we feared, even the entry-level model commands a steep price—comparable to the M5 Pro MacBook Pro.</p><p>Over on Microsoft’s online store, you can buy the <a href="https://www.microsoft.com/en-us/store/configure/surface-laptop-ultra/8wg5vqp0x4b8" target="_blank" rel="nofollow">Surface Laptop Ultra starting at $2,599</a>. This model packs an RTX Spark N1X chip with a 5120 GPU and 18-core CPU, 24GB of unified memory, and a 512GB SSD. You can pre-order it now and get it as soon as October 16. Interestingly enough, you can trade in your MacBook Pro and get up to $1,000 cash back on the Surface Laptop Ultra.</p><p>The next model, which packs the more powerful <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">RTX Spark N1X chip</a> with a 6144-core GPU and a 20-core CPU, along with 32GB of memory and a 1TB SSD, starts at $3,699. The product page lists various configurations, with the highest-end model, featuring 128GB of RAM and a 1TB SSD, costing an eye-watering $5,899.</p><p>Conversely, the 14-inch MacBook Pro with the M5 Pro chip packing a 15-core CPU/16-core GPU, 24GB of unified memory, and a 1TB SSD starts at $2,499. The 16-inch model starts at $2,999 with the same M5 Pro chip, memory, and storage.</p><p>For $200 more, you can get a 14-inch model with an M5 Pro chip featuring an 18-core CPU and a 20-core GPU. If you have money to burn, you can configure the 14-inch MacBook Pro with an M5 Max chip (18-core CPU/40-core GPU), 128GB of RAM, and a 2TB SSD for $6,699. This laptop can top out at $9,699 if you get an 8TB SSD.</p><p>To be clear, both the Surface Laptop Ultra and MacBook Pro are pricey machines and can get even more expensive when you opt for higher-end components. Yes, the MacBook Pro can shatter your bank account, but if we just look at starting prices, Apple’s powerful notebook is $100 less than Microsoft’s.</p><h3 class="article-body__section" id="section-microsoft-surface-laptop-ultra-vs-macbook-pro-m5-pro-design"><span>Microsoft Surface Laptop Ultra vs. MacBook Pro M5 Pro: Design</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>Our own Jason England went <a href="https://www.tomsguide.com/computing/laptops/microsoft-surface-laptop-ultra-rtx-spark-hands-on-review">hands-on with the Surface Laptop Ultra</a> at Computex and got another look during Microsoft’s Surface event. He says the 15-inch laptop feels as premium as a MacBook Pro, with a similar-feeling keyboard and a massive touchpad. Based on what I saw during the livestream, you could certainly mistake the Surface Laptop Ultra for a MacBook Pro.</p><p>Getting into some specifics, the Surface Laptop Ultra measures 12.9 x 9.4 x 0.7 inches and weighs 4.4 pounds. Jason says the laptop is “impressively light” and that it has good weight distribution when you hold it. As with the MacBook Pro, it’s easy to open the Surface Laptop Ultra’s lid with one hand.</p><p>One of the most interesting features of Microsoft’s laptop is that, according to Microsoft, it has the world’s first built-in <a href="https://www.tomsguide.com/computing/laptops/forget-rtx-spark-the-surface-laptop-ultras-magnetic-usb-c-charger-is-a-game-changer-that-makes-apples-magsafe-look-obsolete">magnetic USB-C charging port</a>. While I won’t dispute that, it’s clearly inspired by Apple’s MagSafe charger on MacBooks. According to Jason, the USB-C port survives the trip test.</p><p>Since the 14-inch MacBook Pro measures 12.31 x 8.71 x 0.61 inches and weighs 3.4 pounds, it’s smaller and lighter than the Surface Laptop Ultra. However, the Microsoft laptop is smaller and lighter than the 16-inch MacBook Pro, which measures 14.0 x 9.7 x 0.6 inches and weighs 4.7 pounds.</p><p>Microsoft is clearly inspired by the MacBook Pro, which isn’t a bad thing given how Apple’s laptop is arguably the gold standard for premium notebook design. So in that sense, both are likely equal here, though we’ll want more hands-on testing before rendering a verdict.</p><h3 class="article-body__section" id="section-microsoft-surface-laptop-ultra-vs-macbook-pro-m5-pro-display"><span>Microsoft Surface Laptop Ultra vs. MacBook Pro M5 Pro: Display</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>We didn’t get a lot of info on the Surface Laptop Ultra’s display, but it seems to have the basics of what you’d expect from a premium laptop. As with design, it also seems this laptop’s display will be comparable to that of a MacBook Pro.</p><p>The Surface Laptop Ultra has a 15-inch PixelSense Ultra touchscreen display, which is a mini-LED. It has a screen resolution of 3270 x 2180 pixels, an aspect ratio of 3:2, and a refresh rate of up to 120Hz. I know those are a lot of numbers, but even without having gone eyes-on with it, I can tell that this display should deliver a sharp and vivid image.</p><p>Conversely, the 14-inch MacBook Pro M5 Pro has a 14.2-inch Liquid Retina XDR display (Apple’s name for mini-LED). It has a sharp 3024 x 1964 resolution and a smooth 120Hz refresh rate. Even if it’s not an OLED panel, I’ve always found the image quality pleasing to the eye, with the bold colors and nice contrast levels.</p><p>We’ll need to get the Surface Laptop Ultra into our testing lab to see what it can do, but given how it’s mini-LED like the MacBook Pro, I expect excellent image quality overall.</p><h3 class="article-body__section" id="section-microsoft-surface-laptop-ultra-vs-macbook-pro-m5-pro-performance"><span>Microsoft Surface Laptop Ultra vs. MacBook Pro M5 Pro: Performance</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="8JaTbLhe3FEvMBkfYzH9oR" name="Nvidia Spark vs M5 Pro LIST" alt="Nvidia Spark vs M5 Pro" src="https://cdn.mos.cms.futurecdn.net/8JaTbLhe3FEvMBkfYzH9oR-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/Nvidia/Apple/Shutterstock)</span></figcaption></figure><p>Microsoft is promising a lot with the Surface Laptop Ultra, at least for developers, creators, and AI engineers. The Nvidia RTX Spark chip powering the laptop has up to 6,144 GPU cores, an Nvidia Grace CPU with up to 20 cores, and up to 128GB of unified memory. Thanks to that, Microsoft says it can run AI models with more than 120 billion parameters locally, with up to 1 petaflop of AI performance.</p><p>When Jason tested the RTX Spark itself, he said there’s a lot to gain from the massive local models that can change how you interact with your computer — from it being a tool that lies idle when not in use to an active assistant. This was a point Microsoft kept coming back to during the Surface event. If you’re someone who feels constrained when using laptops not expressly built for local AI, the Surface Laptop Ultra and other RTX Spark machines could be a huge game changer.</p><p>Given the power of Nvidia’s chip, it should also be a gaming powerhouse. During the event, we saw a brief glimpse of <a href="https://www.tomsguide.com/gaming/gears-of-war-e-day-review">Gears of War: E-Day</a> running at 60 frames per second. I was able to wring better performance from this game when I played it on the RTX 5080-powered Razer Blade 18, with frames in the 120s. Still, I won’t complain about games running at 60 fps. I expect games can run even better when specifically optimized for RTX Spark.</p><p>The 16-inch MacBook Pro M5 Pro I tested is among the most powerful laptops ever. In nearly every metric, it far exceeded the competition — as you can read in my full <a href="https://www.tomsguide.com/computing/macbooks/macbook-pro-16-inch-m5-pro-review">MacBook Pro M5 Pro review</a>. I can’t vouch for its AI capabilities since I didn’t run any local models during testing, but given that many folks use MacBook Pros to run LLMs locally, it’s a solid machine for that purpose. It can even run graphically demanding games as well as some dedicated gaming PCs, so long as those games have been optimized for Apple Silicon.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W0EGkO"></div>                            </div>                            <script src="https://kwizly.com/embed/W0EGkO.js" async></script><h3 class="article-body__section" id="section-microsoft-surface-laptop-ultra-vs-macbook-pro-m5-pro-outlook"><span>Microsoft Surface Laptop Ultra vs. MacBook Pro M5 Pro: Outlook</span></h3><p>I’ll need to fully test the Microsoft Surface Laptop Ultra before deciding whether or not it’s better than a MacBook Pro. However, based on what we know, I have an idea of who this machine is and isn’t designed for.</p><p>If you mostly use laptops for browsing the web, watching streaming videos, and light work in Google Docs, neither laptop is for you, as they’re way overpowered and overpriced for your needs. If you want a laptop for the basics, the $799 <a href="https://www.tomsguide.com/computing/laptops/dell-xps-13-2026-review">Dell XPS 13</a> or $699 <a href="https://www.tomsguide.com/computing/macbooks/apple-macbook-neo-review">MacBook Neo</a> won’t let you down, as both are reasonably priced and have premium-like features.</p><p>What about if you’re a gamer? It’s still too early to see how games run on RTX Spark systems in general, but if that’s your primary focus, then you’re likely better off with one of the <a href="https://www.tomsguide.com/best-picks/best-gaming-laptops">best gaming laptops</a> or even one of the <a href="https://www.tomsguide.com/us/best-gaming-pc,review-2219.html">best gaming PCs</a>, especially with how much the Surface Laptop Pro can cost. And given how Macs don’t yet enjoy the same robust gaming support as PCs, the same applies there. Neither of these machines is designed for hardcore gamers.</p><p>Since most of the Surface event focused on local AI agents, it’s not hard to tell who the Surface Laptop Ultra is designed for. So if you’re an AI developer who wants a laptop expressly built for that task, the Surface Laptop Ultra should suffice. However, we’ll need to do some hands-on testing to see if Microsoft’s laptop can handle local AI tasks better than a MacBook Pro — or the newly released <a href="https://www.tomsguide.com/computing/apple-desktops/apple-mac-studio-m5-ultra-review">Mac Studio M5 Ultra</a> that’s also built for local AI.</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/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"><strong>I spoke to Nvidia CEO Jensen Huang about RTX Spark</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/computing/gpus/amd-radeon-rx-9070-gre-review"><strong>I gamed for 250 hours on AMD Radeon RX 9070 GRE</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/gaming/handheld-gaming/msi-claw-8-ex-ai-plus-hands-on-review"><strong>The MSI Claw 8 EX AI+ leaves ROG Xbox Ally in the dust</strong></a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Microsoft Surface RTX Spark event RECAP — all the big Surface Laptop Ultra news and more ]]></title>
                                                                                                <dc:content><![CDATA[ <div class="live-content"><p>The Nvidia RTX Spark-powered Microsoft Surface Laptop Ultra has been revealed and promises to be the company’s most powerful computer ever. Given that, expect this new machine to command a steep price when fully configured.</p><p>Getting right to it, the 15-inch Surface Laptop Ultra starts at $2,599, while the higher-end dev box model costs $5,999. Pre-orders begin today, with machines from Microsoft and its partners launching on October 16. The Surface Laptop Ultra packs a 15-inch mini-LED, an RTX Spark processor, and 24GB of RAM.</p><p>Microsoft says the Surface Laptop Ultra is the world's first laptop to feature a breakaway USB-C port. While that might technically be true, this is basically Microsoft’s answer to the MacBook’s MagSafe port, which also magnetically snaps onto the laptop. Along with that, the Surface Laptop Ultra will have a streamlined design.</p><p>Naturally, there was a lot of discussion about running AI agents locally on the RTX Spark platform. We saw some demos where agents found tax records scattered on one’s PC and put them all together in a single zip file. Another demo showed an agent finding photo files and reorganizing them, even renaming said files.</p><p>Keep scrolling to watch a video of the event, along with the posts we made while it was happening live.</p><h2 class="article-body__section" id="section-watch-the-microsoft-surface-event"><span>Watch the Microsoft Surface event</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/ilmBGeGldrI" allowfullscreen></iframe></div></div><h2 class="article-body__section" id="section-live-updates"><span>LIVE updates</span></h2></div><div class="live-content"><time datetime="2026-10-07T13:30:06+00:00">October 7, 2026 – 9:30 AM</time><h2 id="welcome-to-the-rtx-spark-event">Welcome to the RTX Spark event!</h2><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="Zfe8UdFvFggCuPBwkQ8ZZ4" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/Zfe8UdFvFggCuPBwkQ8ZZ4-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>Hey! Tony Polanco here to get you all ready for today's Microsoft Surface RTX Spark event! The big show kicks off at 1 p.m. ET, but we'll be prepping you for what we expect to hear. This includes leaks, the future of Windows, and more. Even if RTX Spark laptops are as expensive as expected, this is exciting news for the world of computing. Keep it locked here for all the news!</p></div><div class="live-content"><time datetime="2026-10-07T13:52:59+00:00">October 7, 2026 – 9:52 AM</time><h2 id="rtx-spark-laptops-won-39-t-be-cheap">RTX Spark laptops won't be cheap!</h2><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="Zfe8UdFvFggCuPBwkQ8ZZ4" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/Zfe8UdFvFggCuPBwkQ8ZZ4-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>With RAMageddon driving up computer costs, it's no surprise that RTX Spark laptops won't be cheap!</p><p>As <a href="https://videocardz.com/newz/hp-lists-nvidia-rtx-spark-omnibook-laptops-from-2999-to-4999" target="_blank">VideoCardz</a> reports, the 14-inch HP OmniBook X starts at $2,999, while the 16-inch HP OmniBook Ultra starts at $3,199. If that wasn't shocking enough, configurations with 64GB of RAM can go up to $4,999!</p><p>Take that with a grain of salt, as even official listings like those might not be accurate once the laptops actually go on sale. Still, it's best to prepare for the worst on price.</p></div><div class="live-content"><time datetime="2026-10-07T14:05:22+00:00">October 7, 2026 – 10:05 AM</time><h2 id="surface-laptop-ultra-expected-specs">Surface Laptop Ultra expected specs</h2><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>As <a href="https://www.windowscentral.com/microsoft/windows-11/what-to-expect-at-microsofts-special-windows-and-surface-event-on-october-7-surface-laptop-ultra-and-rtx-spark-revealed-new-agentic-os-capabilities-and-more" target="_blank">Windows Central</a>'s Zac Bowden reports, a major focus of today's event will be the Surface Laptop Ultra. This RTX Spark laptop is reportedly aimed at AI developers and professional creatives.<br><br>According to Bowden's sources, there will be two RTX Spark configurations, including an 18-core model with 5,120 GPU cores and a 20-core model with 6,144 GPU cores. The former will come with 24GB or 32GB of RAM, while the latter will start at 32GB and go up to 128GB.</p><p>Related to my last post, this laptop is expected to cost well over $2,000, according to Bowden.</p></div><div class="live-content"><time datetime="2026-10-07T14:18:25+00:00">October 7, 2026 – 10:18 AM</time><h2 id="something-new-for-windows">Something new for Windows?</h2><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="WXHqmks68Qx3hFdVk2mDd4" name="shutterstock_2661471415 (1)-2" alt="ai agents" src="https://cdn.mos.cms.futurecdn.net/WXHqmks68Qx3hFdVk2mDd4-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: Shutterstock)</span></figcaption></figure><p>Microsoft said something new for Windows will be announced at the event. While we can't say for certain what it will be, Zac Bowden has some ideas.<br><br>In addition to highlighting how the Windows K2 effort has improved performance and reliability, Bowden expects to see news about an updated UI and design improvements for Microsoft's OS. We might finally see new unified memory controls that let you adjust how much RAM is reserved for the GPU on RTX Spark machines.<br><br>And of course, don't be surprised to hear a fair bit about AI. We could see a demo of how AI agents work in Windows 11, performing tasks on a user's behalf. The company already announced three in-house language models during Build 2026, and we'll likely see how well they perform on RTX Spark.</p></div><div class="live-content"><time datetime="2026-10-07T14:30:12+00:00">October 7, 2026 – 10:30 AM</time><h2 id="the-first-rtx-spark-laptops">The first RTX Spark 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: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>Even if the Microsoft Surface Laptop Ultra gets most of the shine, it won't be the only RTX Spark machine hitting the market. I expect we'll at least get a list of official manufacturers at the event, such as HP. I'm not sure if the exact prices of these machines will be unveiled during the show, but having more options should (theoretically) want to make OEMs deliver more affordable options.</p></div><div class="live-content"><time datetime="2026-10-07T15:00:25+00:00">October 7, 2026 – 11:00 AM</time><h2 id="will-we-see-new-surface-pro-tablets">Will we see new Surface Pro tablets?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1464px;"><p class="vanilla-image-block" style="padding-top:56.22%;"><img id="sy7sx4zs87Q99DwVH5cnE8" name="TG_Microsoft-Surface-Pro-11-9.jpg" alt="Typing on the Surface Pro 11." src="https://cdn.mos.cms.futurecdn.net/sy7sx4zs87Q99DwVH5cnE8-1920-80.jpg" mos="" align="middle" fullscreen="" width="1464" height="823" 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 know that RTX Spark laptops will be the star of the show, but it would be nice to get even a brief update on the Surface Pro.</p><p>The last few Surface Pro tablets, including the latest released earlier this year, have been business machines. Hopefully, Microsoft will announce some consumer-focused tablets. I won't out too much hope of that happening, but you never know!</p></div><div class="live-content"><time datetime="2026-10-07T15:30:03+00:00">October 7, 2026 – 11:30 AM</time><h2 id="will-ai-devs-switch-to-rtx-spark">Will AI devs switch to 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="8JaTbLhe3FEvMBkfYzH9oR" name="Nvidia Spark vs M5 Pro LIST" alt="Nvidia Spark vs M5 Pro" src="https://cdn.mos.cms.futurecdn.net/8JaTbLhe3FEvMBkfYzH9oR-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/Nvidia/Apple/Shutterstock)</span></figcaption></figure><p>Many AI developers use MacBook Pros, particularly with M5 Max chips, for their AI-based work. The new Mac Studio, with the extremely powerful M5 Ultra chip, will likely be another favorite for this crowd. That's something that Microsoft wants to change with RTX Spark, which is all about on-device AI development. Even if Macs aren't directly referenced today, I expect some subtle digs from Microsoft.</p></div><div class="live-content"><time datetime="2026-10-07T15:55:58+00:00">October 7, 2026 – 11:55 AM</time><h2 id="who-are-rtx-spark-laptops-for">Who are RTX Spark laptops for?</h2><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="cMPQTcwksnbiZFES5K5RoM" name="Jason England in SF" alt="Jason England in SF for the Microsoft RTX Spark event." src="https://cdn.mos.cms.futurecdn.net/cMPQTcwksnbiZFES5K5RoM-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><p>Our own Jason England is on the ground in San Francisco for the main event. Though I disagree with his assessment that SF is like NYC with more hills (they have nicer weather and scenery there!), I do agree with his thoughts on RTX Spark.</p><p>Jason believes these machines will start around $3,000, as reports have indicated. Because of that, Microsoft has to add real value to make these laptops make sense. If it's for a single purpose, like AI development, then it will be tricky. You can just opt for a MacBook Pro for creative work, or a gaming laptop for gaming, for example.</p><p>Ultimately, the real killer app will have to be what RTX Spark machines can do beyond local agentic work. Selling such high-priced products as "AI laptops" won't cut it.</p></div><div class="live-content"><time datetime="2026-10-07T16:16:31+00:00">October 7, 2026 – 12:16 PM</time><h2 id="are-ai-agents-for-everyone">Are AI agents for everyone?</h2><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="YbcEd8pXGnjR2rnD6KcGof" name="Downtown San Francisco (RTX Spark event)" alt="Downtown San Francisco" src="https://cdn.mos.cms.futurecdn.net/YbcEd8pXGnjR2rnD6KcGof-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><p>AI agents, or AI that can perform tasks without being explicitly told to do so, have been the talk of the computing town in recent months... but does the average person even care?</p><p>As Jason expressed to me on his way to the event, AI agents can be useful, for example, by giving folks a priority list based on the day's news, emails, and Slack messages. But is there enough there for the everyday person to see the benefit? Jason isn't sure, and neither am I.</p><p>RTX Spark machines will be aimed at the "prosumer," but it'll be interesting to see how this filters down to cheaper Arm machines, such as those powered by Snapdragon X2.</p></div><div class="live-content"><time datetime="2026-10-07T16:27:38+00:00">October 7, 2026 – 12:27 PM</time><h2 id="the-future-of-software-prices">The future of software prices</h2><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="cGbLsVgwyyYEqDhwtJWGYa" name="Downtown San Francisco (RTX Spark event)" alt="Adobe office in San Francisco" src="https://cdn.mos.cms.futurecdn.net/cGbLsVgwyyYEqDhwtJWGYa-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><p>"Vibe coding" is another AI trend that's all the rage now, with folks able to create apps simply by telling an LLM what they want. If this becomes popular, what will happen to existing apps that you have to pay a premium for?</p><p>For example, Jason has been trying an app called Photon Studio, which is effectively an AI-recompiled version of Photoshop that you can download for free. While an app like this could eliminate the need to pay for a Creative Cloud subscription, it could also be a death blow to the software industry if folks can just create the apps they want.</p></div><div class="live-content"><time datetime="2026-10-07T16:34:50+00:00">October 7, 2026 – 12:34 PM</time><h2 id="less-than-30-minutes-away">Less than 30 minutes away!</h2><p>The big show is about to start soon, so make sure you're comfortable and have a drink and snack ready. Pardon the pun, but expect sparks to fly during the event!</p></div><div class="live-content"><time datetime="2026-10-07T16:47:38+00:00">October 7, 2026 – 12:47 PM</time><h2 id="we-are-in-the-building">We are in the building!</h2><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="EFivZ9ckH8BH7Em3uZtHwS" name="RTX Spark event" alt="RTX Spark event" src="https://cdn.mos.cms.futurecdn.net/EFivZ9ckH8BH7Em3uZtHwS-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><p>Jason England has arrived at the event! The space appears small from the photo, but the lighting in there is certainly moody! I wonder if this is a precursor to what some of these RTX Spark machines will look like?</p></div><div class="live-content"><time datetime="2026-10-07T16:53:11+00:00">October 7, 2026 – 12:53 PM</time><h2 id="things-are-about-to-get-ultra">Things are about to get ULTRA</h2><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2107874561027100848"><p lang="en" dir="ltr">Just got in. Things are about to get ULTRA 💻 https://t.co/gdVSAAfHjk<a href="https://twitter.com/cantworkitout/status/2107874561027100848">October 7, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Jason posted this on X, which shows more of the venue's interior. Everyone is getting seated!</p></div><div class="live-content"><time datetime="2026-10-07T17:01:33+00:00">October 7, 2026 – 1:01 PM</time><h2 id="almost-there">Almost there!</h2><p>The show seems to be a bit late, so sit tight as it shouldn't be long now.</p></div><div class="live-content"><time datetime="2026-10-07T17:08:20+00:00">October 7, 2026 – 1:08 PM</time><h2 id="we-are-live">WE ARE LIVE</h2><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="W524wsQo2zdCJaHC8TwkHK" name="Something new is coming from Windows _ October 7 19-57 screenshot" alt="Satya Nadella at Microsoft Surface Laptop Ultra event" src="https://cdn.mos.cms.futurecdn.net/W524wsQo2zdCJaHC8TwkHK-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: Microsoft)</span></figcaption></figure><p>Microsoft CEO Satya Nadella has taken the stage to kick off the RTX Spark event!</p></div><div class="live-content"><time datetime="2026-10-07T17:11:35+00:00">October 7, 2026 – 1:11 PM</time><h2 id="building-the-frontier-ecosystem">Building the frontier ecosystem</h2><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="oMQ7k7Pqd6FrqCmTBgu56f" name="PXL_20261007_170709320" alt="Satya Nadell and AI at Microsoft Surface Laptop Ultra event" src="https://cdn.mos.cms.futurecdn.net/oMQ7k7Pqd6FrqCmTBgu56f-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><p>Nadella says today's event will be monumental for the world of computing. He says there are 3 core pillars of an ecosystem: trust, intelligence, and human ambition. The idea for today's show is how to bring those pillars to Windows. The core anchors will be: Agent 365, Microsoft IQ, and Copilot.</p></div><div class="live-content"><time datetime="2026-10-07T17:15:22+00:00">October 7, 2026 – 1:15 PM</time><h2 id="agents-365">Agents 365</h2><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="AYxzfCQAod8LdLDeEbMBmM" name="Something new is coming from Windows _ October 7 27-43 screenshot" alt="Windows enforcement for agents" src="https://cdn.mos.cms.futurecdn.net/AYxzfCQAod8LdLDeEbMBmM-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: Microsoft)</span></figcaption></figure><p>Pavan Davuluri takes the stage to discuss AI agents. He says that with the tools MS has, they can make agents do more on Windows. </p></div><div class="live-content"><time datetime="2026-10-07T17:17:30+00:00">October 7, 2026 – 1:17 PM</time><h2 id="agents-in-action">Agents in action</h2><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="KKpxvQiVWxJBytXm48TCea" name="Something new is coming from Windows _ October 7 29-39 screenshot" alt="Microsoft Defender protections for Agents" src="https://cdn.mos.cms.futurecdn.net/KKpxvQiVWxJBytXm48TCea-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: Microsoft)</span></figcaption></figure><p>Divya Venkataramu now takes the stage to show how agents will work on Windows. She is particularly focusing on safety, which is smart, since AI agents can have so much control over one's PC or organization.</p></div><div class="live-content"><time datetime="2026-10-07T17:21:07+00:00">October 7, 2026 – 1:21 PM</time><h2 id="discussing-models">Discussing 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="JzhDun4v9X2ZF9CCosFyJ4" name="Something new is coming from Windows _ October 7 32-11 screenshot" alt="Hybrid Intelligence" src="https://cdn.mos.cms.futurecdn.net/JzhDun4v9X2ZF9CCosFyJ4-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: Microsoft)</span></figcaption></figure><p>Microsoft is bringing enhanced AI models to Windows. The feat is getting these massive models onto portable devices, such as laptops. MAI Code is one such model, as is Nvidia Nemotron. We're told the latter will work great on RTX Spark (naturally). What was once the domain of cloud models will now be available on-device.</p></div><div class="live-content"><time datetime="2026-10-07T17:25:21+00:00">October 7, 2026 – 1:25 PM</time><h2 id="code-clean-up">Code clean 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="bMfeovw8XNsvwptMZo5SWa" name="PXL_20261007_171801007.MP" alt="HydraFusion" src="https://cdn.mos.cms.futurecdn.net/bMfeovw8XNsvwptMZo5SWa-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><p>Kayla Cinnamon now takes the stage for a live demo. She shows how the AI automatically selects the best local model for the task. You can set a task, and it will continue working on it on its own. One neat thing is that you'll see color-coded tabs that let you know which tasks have been completed on-device and which ones were completed in the cloud.</p></div><div class="live-content"><time datetime="2026-10-07T17:27:23+00:00">October 7, 2026 – 1:27 PM</time><h2 id="upgraded-windows-search-experience">Upgraded Windows Search experience</h2><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="Br4cAMKii5AxR8CLTkZ7HE" name="Something new is coming from Windows _ October 7 40-55 screenshot" alt="Texting from the Taskbar" src="https://cdn.mos.cms.futurecdn.net/Br4cAMKii5AxR8CLTkZ7HE-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: Microsoft)</span></figcaption></figure><p>The Windows Search bar will be enhanced to do more for you via new actions. Such actions include adjusting the volume, sending texts to friends, make the system to go dark mode, and many other actions. You can also call up the new Copilot app from Search.</p></div><div class="live-content"><time datetime="2026-10-07T17:30:54+00:00">October 7, 2026 – 1:30 PM</time><h2 id="the-new-copilot">The new Copilot</h2><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="2QXFtf3HqsKPvwEKed32EZ" name="Something new is coming from Windows _ October 7 43-42 screenshot" alt="Writing apps from prompts in Windows with Copilot Code" src="https://cdn.mos.cms.futurecdn.net/2QXFtf3HqsKPvwEKed32EZ-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: Microsoft)</span></figcaption></figure><p>Copilot is getting new features. This includes local actions that run directly on your machine, access your files, and use local models that run on your computer. These three things turn your machine into a personal AI factory.</p></div><div class="live-content"><time datetime="2026-10-07T17:34:24+00:00">October 7, 2026 – 1:34 PM</time><h2 id="more-local-ai-demos">More local AI demos</h2><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="cJR8c2a5UX8hQPxBmPBqWD" name="Something new is coming from Windows _ October 7 47-51 screenshot" alt="Perplexity procession on device in Windows" src="https://cdn.mos.cms.futurecdn.net/cJR8c2a5UX8hQPxBmPBqWD-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: Microsoft)</span></figcaption></figure><p>We now see a demo of Perplexity AI taking photos on your PC and altering them to your liking. Muse is also coming to Windows. </p></div><div class="live-content"><time datetime="2026-10-07T17:39:15+00:00">October 7, 2026 – 1:39 PM</time><h2 id="microsoft-surface-laptop-ultra-revealed">Microsoft Surface Laptop Ultra 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:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="PuRjJqMTbps6QrnyoPiFRm" name="Something new is coming from Windows _ October 7 50-52 screenshot" alt="Lifestyle working on the Microsoft Surface Laptop Ultra" src="https://cdn.mos.cms.futurecdn.net/PuRjJqMTbps6QrnyoPiFRm-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: Microsoft)</span></figcaption></figure><p>Now we're getting to the good stuff! The Microsoft Surface Laptop Ultra, which the company says is the most powerful laptop it has ever built, is finally being revealed.</p><p>The model shown appears to be a 16-inch model in a sleek black colorway. It certainly looks like a MacBook Pro! Not only can it code, but it can also run games like Gears of War: E-Day at a smooth 60 frames per second.</p></div><div class="live-content"><time datetime="2026-10-07T17:42:32+00:00">October 7, 2026 – 1:42 PM</time><h2 id="inside-the-surface-laptop-ultra">Inside the Surface Laptop 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="eyR2vn9iGzsJbjbHX8xKQM" name="Something new is coming from Windows _ October 7 54-56 screenshot" alt="Microsoft Surface Laptop Ultra ports" src="https://cdn.mos.cms.futurecdn.net/eyR2vn9iGzsJbjbHX8xKQM-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: Microsoft)</span></figcaption></figure><p>The Surface Laptop Ultra has some interesting features, including MagSafe-like magnetic charging. The laptop will have up to 128GB of RAM, advanced cooling, a relatively thin and portable design, and a vivid 16-inch display. Color me impressed!</p></div><div class="live-content"><time datetime="2026-10-07T17:48:01+00:00">October 7, 2026 – 1:48 PM</time><h2 id="creating-3d-assets-on-surface-laptop-ultra">Creating 3D assets on Surface Laptop 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="JfT7uQjCexGVCs7eQ5hAN" name="Something new is coming from Windows _ October 7 60-20 screenshot" alt="Microsoft Surface Laptop Ultra pricing" src="https://cdn.mos.cms.futurecdn.net/JfT7uQjCexGVCs7eQ5hAN-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: Microsoft)</span></figcaption></figure><p>Thanks to RTX Spark, 3D models can come to life on the Surface Laptop Ultra. The laptop supports a range of traditional video-editing formats and local AI to make it all possible. What used to take days now takes hours. MS claims 2.1x faster token time than the MacBook Pro. Quite a claim!</p><p>The Surface Laptop Ultra starts at $2599 and goes up to as much as $5999 for the dev box. Pre-orders start today and begin shipping next Friday from both Microsoft and OEM partners.</p></div><div class="live-content"><time datetime="2026-10-07T17:52:53+00:00">October 7, 2026 – 1:52 PM</time><h2 id="huang-and-nadella-take-the-stage">Huang and Nadella take the stage</h2><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="sLhn49BMoKb9PMrMaoJMMd" name="PXL_20261007_174919148.MP" alt="Satya and Jensen on stage discussing Windows at Microsoft Surface Laptop Ultra event" src="https://cdn.mos.cms.futurecdn.net/sLhn49BMoKb9PMrMaoJMMd-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><p>Jensen Huang, Satya Nadella, and Sriram Krishnan now take the stage to discuss what we've seen and what is coming next. Jensen starts by highlighting how integral Windows has been to Nvidia, with Windows 95 making it possible to connect a GPU to a PC thanks to DirectX. The companies also laid the groundwork for CUDA.</p></div><div class="live-content"><time datetime="2026-10-07T17:59:56+00:00">October 7, 2026 – 1:59 PM</time><h2 id="why-is-windows-right-for-ai-agents">Why is Windows right for AI agents</h2><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="RqzpXMBBRWAD7QXYGKfCJk" name="PXL_20261007_174926500.TS-000" alt="Jensen and Nadella on stage at Microsoft Surface Laptop Ultra event" src="https://cdn.mos.cms.futurecdn.net/RqzpXMBBRWAD7QXYGKfCJk-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><p>Nadella speaks on the importance of running agents locally. The main reason is security, as having agents running via the cloud isn't exactly secure. How this will work in the real world remains to be seen, but it's good to see these CEO's making sure that folks feel safe using AI agents on their computers.</p></div><div class="live-content"><time datetime="2026-10-07T18:07:19+00:00">October 7, 2026 – 2:07 PM</time><h2 id="more-ai-agent-talk">More AI agent talk</h2><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="2Kcmr6sfTUHesTb2QPzbtU" name="PXL_20261007_175812674" alt="Jensen and Nadella discussing Agents and Hybrid Intelligence" src="https://cdn.mos.cms.futurecdn.net/2Kcmr6sfTUHesTb2QPzbtU-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><p>The executives are continuing their discussion about AI agents and their potential importance. Again, agents aren't likely to be useful for most people, but for coders or managers, they should be extremely useful, provided they work as intended.</p></div><div class="live-content"><time datetime="2026-10-07T18:11:42+00:00">October 7, 2026 – 2:11 PM</time><h2 id="jensen-is-excited-for-the-surface-laptop-ultra">Jensen is excited for the Surface Laptop 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="UCurSW4yCBWKv72Uhhd5kY" name="Something new is coming from Windows _ October 7 1-5-11 screenshot" alt="Jensen on stage at Microsoft Surface Laptop Ultra event" src="https://cdn.mos.cms.futurecdn.net/UCurSW4yCBWKv72Uhhd5kY-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: Microsoft)</span></figcaption></figure><p>Haung is expressing his excitement for the Surface Laptop Ultra, which he says is a machine that can do it all. Now, he wouldn't say the opposite, but as a nerd, I'm also pretty excited about what this machine can do. Even if the agents stuff isn't for me, the gaming and creative potential seem huge.</p></div><div class="live-content"><time datetime="2026-10-07T18:17:09+00:00">October 7, 2026 – 2:17 PM</time><h2 id="and-that-39-s-a-wrap">And that's a wrap!</h2><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="3eEMH9aEi954UHnxGPEMKC" name="image (1)" alt="Jensen x Nadella at Surface Laptop Ultra vent" src="https://cdn.mos.cms.futurecdn.net/3eEMH9aEi954UHnxGPEMKC-1920-80.png" 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><p>The show's over folks! The Surface Laptop Ultra announcement was certainly the highlight, but I'm sure the AI discussions will be interesting to businessess and individuals interested in running models on device.</p></div> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/news/live/microsoft-surface-event-nvidia-rtx-spark-surface-laptop-ultra</link>
                                                                            <description>
                            <![CDATA[ Microsoft's big Surface RTX Spark event is here, and we're due a few surprises! Follow along with us live. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">oYddPa97fQ45GsTLSCzkNj</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/2q9bSVbSK4bkS8w2RLmeaS-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 07 Oct 2026 13:30:17 +0000</pubDate>                                                                                                                                <updated>Wed, 07 Oct 2026 21:19:36 +0000</updated>
                                                                                                                                            <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[CPUs]]></category>
                                                    <category><![CDATA[Gaming Laptops]]></category>
                                                    <category><![CDATA[Computing Hardware]]></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/2q9bSVbSK4bkS8w2RLmeaS-1920-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock / Getty / Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Nvidia CEO Jensen Huang and Microsoft CEO Satya Nadella with the Microsoft Surface Laptop Ultra]]></media:description>                                                            <media:text><![CDATA[Nvidia CEO Jensen Huang and Microsoft CEO Satya Nadella with the Microsoft Surface Laptop Ultra]]></media:text>
                                <media:title type="plain"><![CDATA[Nvidia CEO Jensen Huang and Microsoft CEO Satya Nadella with the Microsoft Surface Laptop Ultra]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/2q9bSVbSK4bkS8w2RLmeaS-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div class="live-content"><p>The Nvidia RTX Spark-powered Microsoft Surface Laptop Ultra has been revealed and promises to be the company’s most powerful computer ever. Given that, expect this new machine to command a steep price when fully configured.</p><p>Getting right to it, the 15-inch Surface Laptop Ultra starts at $2,599, while the higher-end dev box model costs $5,999. Pre-orders begin today, with machines from Microsoft and its partners launching on October 16. The Surface Laptop Ultra packs a 15-inch mini-LED, an RTX Spark processor, and 24GB of RAM.</p><p>Microsoft says the Surface Laptop Ultra is the world's first laptop to feature a breakaway USB-C port. While that might technically be true, this is basically Microsoft’s answer to the MacBook’s MagSafe port, which also magnetically snaps onto the laptop. Along with that, the Surface Laptop Ultra will have a streamlined design.</p><p>Naturally, there was a lot of discussion about running AI agents locally on the RTX Spark platform. We saw some demos where agents found tax records scattered on one’s PC and put them all together in a single zip file. Another demo showed an agent finding photo files and reorganizing them, even renaming said files.</p><p>Keep scrolling to watch a video of the event, along with the posts we made while it was happening live.</p><h2 class="article-body__section" id="section-watch-the-microsoft-surface-event"><span>Watch the Microsoft Surface event</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/ilmBGeGldrI" allowfullscreen></iframe></div></div><h2 class="article-body__section" id="section-live-updates"><span>LIVE updates</span></h2></div><div class="live-content"><time datetime="2026-10-07T13:30:06+00:00">October 7, 2026 – 9:30 AM</time><h2 id="welcome-to-the-rtx-spark-event">Welcome to the RTX Spark event!</h2><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="Zfe8UdFvFggCuPBwkQ8ZZ4" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/Zfe8UdFvFggCuPBwkQ8ZZ4-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>Hey! Tony Polanco here to get you all ready for today's Microsoft Surface RTX Spark event! The big show kicks off at 1 p.m. ET, but we'll be prepping you for what we expect to hear. This includes leaks, the future of Windows, and more. Even if RTX Spark laptops are as expensive as expected, this is exciting news for the world of computing. Keep it locked here for all the news!</p></div><div class="live-content"><time datetime="2026-10-07T13:52:59+00:00">October 7, 2026 – 9:52 AM</time><h2 id="rtx-spark-laptops-won-39-t-be-cheap">RTX Spark laptops won't be cheap!</h2><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="Zfe8UdFvFggCuPBwkQ8ZZ4" name="Nvidia RTX Spark" alt="Nvidia RTX Spark" src="https://cdn.mos.cms.futurecdn.net/Zfe8UdFvFggCuPBwkQ8ZZ4-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>With RAMageddon driving up computer costs, it's no surprise that RTX Spark laptops won't be cheap!</p><p>As <a href="https://videocardz.com/newz/hp-lists-nvidia-rtx-spark-omnibook-laptops-from-2999-to-4999" target="_blank">VideoCardz</a> reports, the 14-inch HP OmniBook X starts at $2,999, while the 16-inch HP OmniBook Ultra starts at $3,199. If that wasn't shocking enough, configurations with 64GB of RAM can go up to $4,999!</p><p>Take that with a grain of salt, as even official listings like those might not be accurate once the laptops actually go on sale. Still, it's best to prepare for the worst on price.</p></div><div class="live-content"><time datetime="2026-10-07T14:05:22+00:00">October 7, 2026 – 10:05 AM</time><h2 id="surface-laptop-ultra-expected-specs">Surface Laptop Ultra expected specs</h2><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>As <a href="https://www.windowscentral.com/microsoft/windows-11/what-to-expect-at-microsofts-special-windows-and-surface-event-on-october-7-surface-laptop-ultra-and-rtx-spark-revealed-new-agentic-os-capabilities-and-more" target="_blank">Windows Central</a>'s Zac Bowden reports, a major focus of today's event will be the Surface Laptop Ultra. This RTX Spark laptop is reportedly aimed at AI developers and professional creatives.<br><br>According to Bowden's sources, there will be two RTX Spark configurations, including an 18-core model with 5,120 GPU cores and a 20-core model with 6,144 GPU cores. The former will come with 24GB or 32GB of RAM, while the latter will start at 32GB and go up to 128GB.</p><p>Related to my last post, this laptop is expected to cost well over $2,000, according to Bowden.</p></div><div class="live-content"><time datetime="2026-10-07T14:18:25+00:00">October 7, 2026 – 10:18 AM</time><h2 id="something-new-for-windows">Something new for Windows?</h2><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="WXHqmks68Qx3hFdVk2mDd4" name="shutterstock_2661471415 (1)-2" alt="ai agents" src="https://cdn.mos.cms.futurecdn.net/WXHqmks68Qx3hFdVk2mDd4-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: Shutterstock)</span></figcaption></figure><p>Microsoft said something new for Windows will be announced at the event. While we can't say for certain what it will be, Zac Bowden has some ideas.<br><br>In addition to highlighting how the Windows K2 effort has improved performance and reliability, Bowden expects to see news about an updated UI and design improvements for Microsoft's OS. We might finally see new unified memory controls that let you adjust how much RAM is reserved for the GPU on RTX Spark machines.<br><br>And of course, don't be surprised to hear a fair bit about AI. We could see a demo of how AI agents work in Windows 11, performing tasks on a user's behalf. The company already announced three in-house language models during Build 2026, and we'll likely see how well they perform on RTX Spark.</p></div><div class="live-content"><time datetime="2026-10-07T14:30:12+00:00">October 7, 2026 – 10:30 AM</time><h2 id="the-first-rtx-spark-laptops">The first RTX Spark 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: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>Even if the Microsoft Surface Laptop Ultra gets most of the shine, it won't be the only RTX Spark machine hitting the market. I expect we'll at least get a list of official manufacturers at the event, such as HP. I'm not sure if the exact prices of these machines will be unveiled during the show, but having more options should (theoretically) want to make OEMs deliver more affordable options.</p></div><div class="live-content"><time datetime="2026-10-07T15:00:25+00:00">October 7, 2026 – 11:00 AM</time><h2 id="will-we-see-new-surface-pro-tablets">Will we see new Surface Pro tablets?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1464px;"><p class="vanilla-image-block" style="padding-top:56.22%;"><img id="sy7sx4zs87Q99DwVH5cnE8" name="TG_Microsoft-Surface-Pro-11-9.jpg" alt="Typing on the Surface Pro 11." src="https://cdn.mos.cms.futurecdn.net/sy7sx4zs87Q99DwVH5cnE8-1920-80.jpg" mos="" align="middle" fullscreen="" width="1464" height="823" 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 know that RTX Spark laptops will be the star of the show, but it would be nice to get even a brief update on the Surface Pro.</p><p>The last few Surface Pro tablets, including the latest released earlier this year, have been business machines. Hopefully, Microsoft will announce some consumer-focused tablets. I won't out too much hope of that happening, but you never know!</p></div><div class="live-content"><time datetime="2026-10-07T15:30:03+00:00">October 7, 2026 – 11:30 AM</time><h2 id="will-ai-devs-switch-to-rtx-spark">Will AI devs switch to 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="8JaTbLhe3FEvMBkfYzH9oR" name="Nvidia Spark vs M5 Pro LIST" alt="Nvidia Spark vs M5 Pro" src="https://cdn.mos.cms.futurecdn.net/8JaTbLhe3FEvMBkfYzH9oR-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/Nvidia/Apple/Shutterstock)</span></figcaption></figure><p>Many AI developers use MacBook Pros, particularly with M5 Max chips, for their AI-based work. The new Mac Studio, with the extremely powerful M5 Ultra chip, will likely be another favorite for this crowd. That's something that Microsoft wants to change with RTX Spark, which is all about on-device AI development. Even if Macs aren't directly referenced today, I expect some subtle digs from Microsoft.</p></div><div class="live-content"><time datetime="2026-10-07T15:55:58+00:00">October 7, 2026 – 11:55 AM</time><h2 id="who-are-rtx-spark-laptops-for">Who are RTX Spark laptops for?</h2><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="cMPQTcwksnbiZFES5K5RoM" name="Jason England in SF" alt="Jason England in SF for the Microsoft RTX Spark event." src="https://cdn.mos.cms.futurecdn.net/cMPQTcwksnbiZFES5K5RoM-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><p>Our own Jason England is on the ground in San Francisco for the main event. Though I disagree with his assessment that SF is like NYC with more hills (they have nicer weather and scenery there!), I do agree with his thoughts on RTX Spark.</p><p>Jason believes these machines will start around $3,000, as reports have indicated. Because of that, Microsoft has to add real value to make these laptops make sense. If it's for a single purpose, like AI development, then it will be tricky. You can just opt for a MacBook Pro for creative work, or a gaming laptop for gaming, for example.</p><p>Ultimately, the real killer app will have to be what RTX Spark machines can do beyond local agentic work. Selling such high-priced products as "AI laptops" won't cut it.</p></div><div class="live-content"><time datetime="2026-10-07T16:16:31+00:00">October 7, 2026 – 12:16 PM</time><h2 id="are-ai-agents-for-everyone">Are AI agents for everyone?</h2><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="YbcEd8pXGnjR2rnD6KcGof" name="Downtown San Francisco (RTX Spark event)" alt="Downtown San Francisco" src="https://cdn.mos.cms.futurecdn.net/YbcEd8pXGnjR2rnD6KcGof-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><p>AI agents, or AI that can perform tasks without being explicitly told to do so, have been the talk of the computing town in recent months... but does the average person even care?</p><p>As Jason expressed to me on his way to the event, AI agents can be useful, for example, by giving folks a priority list based on the day's news, emails, and Slack messages. But is there enough there for the everyday person to see the benefit? Jason isn't sure, and neither am I.</p><p>RTX Spark machines will be aimed at the "prosumer," but it'll be interesting to see how this filters down to cheaper Arm machines, such as those powered by Snapdragon X2.</p></div><div class="live-content"><time datetime="2026-10-07T16:27:38+00:00">October 7, 2026 – 12:27 PM</time><h2 id="the-future-of-software-prices">The future of software prices</h2><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="cGbLsVgwyyYEqDhwtJWGYa" name="Downtown San Francisco (RTX Spark event)" alt="Adobe office in San Francisco" src="https://cdn.mos.cms.futurecdn.net/cGbLsVgwyyYEqDhwtJWGYa-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><p>"Vibe coding" is another AI trend that's all the rage now, with folks able to create apps simply by telling an LLM what they want. If this becomes popular, what will happen to existing apps that you have to pay a premium for?</p><p>For example, Jason has been trying an app called Photon Studio, which is effectively an AI-recompiled version of Photoshop that you can download for free. While an app like this could eliminate the need to pay for a Creative Cloud subscription, it could also be a death blow to the software industry if folks can just create the apps they want.</p></div><div class="live-content"><time datetime="2026-10-07T16:34:50+00:00">October 7, 2026 – 12:34 PM</time><h2 id="less-than-30-minutes-away">Less than 30 minutes away!</h2><p>The big show is about to start soon, so make sure you're comfortable and have a drink and snack ready. Pardon the pun, but expect sparks to fly during the event!</p></div><div class="live-content"><time datetime="2026-10-07T16:47:38+00:00">October 7, 2026 – 12:47 PM</time><h2 id="we-are-in-the-building">We are in the building!</h2><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="EFivZ9ckH8BH7Em3uZtHwS" name="RTX Spark event" alt="RTX Spark event" src="https://cdn.mos.cms.futurecdn.net/EFivZ9ckH8BH7Em3uZtHwS-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><p>Jason England has arrived at the event! The space appears small from the photo, but the lighting in there is certainly moody! I wonder if this is a precursor to what some of these RTX Spark machines will look like?</p></div><div class="live-content"><time datetime="2026-10-07T16:53:11+00:00">October 7, 2026 – 12:53 PM</time><h2 id="things-are-about-to-get-ultra">Things are about to get ULTRA</h2><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2107874561027100848"><p lang="en" dir="ltr">Just got in. Things are about to get ULTRA 💻 https://t.co/gdVSAAfHjk<a href="https://twitter.com/cantworkitout/status/2107874561027100848">October 7, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Jason posted this on X, which shows more of the venue's interior. Everyone is getting seated!</p></div><div class="live-content"><time datetime="2026-10-07T17:01:33+00:00">October 7, 2026 – 1:01 PM</time><h2 id="almost-there">Almost there!</h2><p>The show seems to be a bit late, so sit tight as it shouldn't be long now.</p></div><div class="live-content"><time datetime="2026-10-07T17:08:20+00:00">October 7, 2026 – 1:08 PM</time><h2 id="we-are-live">WE ARE LIVE</h2><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="W524wsQo2zdCJaHC8TwkHK" name="Something new is coming from Windows _ October 7 19-57 screenshot" alt="Satya Nadella at Microsoft Surface Laptop Ultra event" src="https://cdn.mos.cms.futurecdn.net/W524wsQo2zdCJaHC8TwkHK-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: Microsoft)</span></figcaption></figure><p>Microsoft CEO Satya Nadella has taken the stage to kick off the RTX Spark event!</p></div><div class="live-content"><time datetime="2026-10-07T17:11:35+00:00">October 7, 2026 – 1:11 PM</time><h2 id="building-the-frontier-ecosystem">Building the frontier ecosystem</h2><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="oMQ7k7Pqd6FrqCmTBgu56f" name="PXL_20261007_170709320" alt="Satya Nadell and AI at Microsoft Surface Laptop Ultra event" src="https://cdn.mos.cms.futurecdn.net/oMQ7k7Pqd6FrqCmTBgu56f-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><p>Nadella says today's event will be monumental for the world of computing. He says there are 3 core pillars of an ecosystem: trust, intelligence, and human ambition. The idea for today's show is how to bring those pillars to Windows. The core anchors will be: Agent 365, Microsoft IQ, and Copilot.</p></div><div class="live-content"><time datetime="2026-10-07T17:15:22+00:00">October 7, 2026 – 1:15 PM</time><h2 id="agents-365">Agents 365</h2><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="AYxzfCQAod8LdLDeEbMBmM" name="Something new is coming from Windows _ October 7 27-43 screenshot" alt="Windows enforcement for agents" src="https://cdn.mos.cms.futurecdn.net/AYxzfCQAod8LdLDeEbMBmM-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: Microsoft)</span></figcaption></figure><p>Pavan Davuluri takes the stage to discuss AI agents. He says that with the tools MS has, they can make agents do more on Windows. </p></div><div class="live-content"><time datetime="2026-10-07T17:17:30+00:00">October 7, 2026 – 1:17 PM</time><h2 id="agents-in-action">Agents in action</h2><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="KKpxvQiVWxJBytXm48TCea" name="Something new is coming from Windows _ October 7 29-39 screenshot" alt="Microsoft Defender protections for Agents" src="https://cdn.mos.cms.futurecdn.net/KKpxvQiVWxJBytXm48TCea-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: Microsoft)</span></figcaption></figure><p>Divya Venkataramu now takes the stage to show how agents will work on Windows. She is particularly focusing on safety, which is smart, since AI agents can have so much control over one's PC or organization.</p></div><div class="live-content"><time datetime="2026-10-07T17:21:07+00:00">October 7, 2026 – 1:21 PM</time><h2 id="discussing-models">Discussing 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="JzhDun4v9X2ZF9CCosFyJ4" name="Something new is coming from Windows _ October 7 32-11 screenshot" alt="Hybrid Intelligence" src="https://cdn.mos.cms.futurecdn.net/JzhDun4v9X2ZF9CCosFyJ4-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: Microsoft)</span></figcaption></figure><p>Microsoft is bringing enhanced AI models to Windows. The feat is getting these massive models onto portable devices, such as laptops. MAI Code is one such model, as is Nvidia Nemotron. We're told the latter will work great on RTX Spark (naturally). What was once the domain of cloud models will now be available on-device.</p></div><div class="live-content"><time datetime="2026-10-07T17:25:21+00:00">October 7, 2026 – 1:25 PM</time><h2 id="code-clean-up">Code clean 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="bMfeovw8XNsvwptMZo5SWa" name="PXL_20261007_171801007.MP" alt="HydraFusion" src="https://cdn.mos.cms.futurecdn.net/bMfeovw8XNsvwptMZo5SWa-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><p>Kayla Cinnamon now takes the stage for a live demo. She shows how the AI automatically selects the best local model for the task. You can set a task, and it will continue working on it on its own. One neat thing is that you'll see color-coded tabs that let you know which tasks have been completed on-device and which ones were completed in the cloud.</p></div><div class="live-content"><time datetime="2026-10-07T17:27:23+00:00">October 7, 2026 – 1:27 PM</time><h2 id="upgraded-windows-search-experience">Upgraded Windows Search experience</h2><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="Br4cAMKii5AxR8CLTkZ7HE" name="Something new is coming from Windows _ October 7 40-55 screenshot" alt="Texting from the Taskbar" src="https://cdn.mos.cms.futurecdn.net/Br4cAMKii5AxR8CLTkZ7HE-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: Microsoft)</span></figcaption></figure><p>The Windows Search bar will be enhanced to do more for you via new actions. Such actions include adjusting the volume, sending texts to friends, make the system to go dark mode, and many other actions. You can also call up the new Copilot app from Search.</p></div><div class="live-content"><time datetime="2026-10-07T17:30:54+00:00">October 7, 2026 – 1:30 PM</time><h2 id="the-new-copilot">The new Copilot</h2><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="2QXFtf3HqsKPvwEKed32EZ" name="Something new is coming from Windows _ October 7 43-42 screenshot" alt="Writing apps from prompts in Windows with Copilot Code" src="https://cdn.mos.cms.futurecdn.net/2QXFtf3HqsKPvwEKed32EZ-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: Microsoft)</span></figcaption></figure><p>Copilot is getting new features. This includes local actions that run directly on your machine, access your files, and use local models that run on your computer. These three things turn your machine into a personal AI factory.</p></div><div class="live-content"><time datetime="2026-10-07T17:34:24+00:00">October 7, 2026 – 1:34 PM</time><h2 id="more-local-ai-demos">More local AI demos</h2><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="cJR8c2a5UX8hQPxBmPBqWD" name="Something new is coming from Windows _ October 7 47-51 screenshot" alt="Perplexity procession on device in Windows" src="https://cdn.mos.cms.futurecdn.net/cJR8c2a5UX8hQPxBmPBqWD-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: Microsoft)</span></figcaption></figure><p>We now see a demo of Perplexity AI taking photos on your PC and altering them to your liking. Muse is also coming to Windows. </p></div><div class="live-content"><time datetime="2026-10-07T17:39:15+00:00">October 7, 2026 – 1:39 PM</time><h2 id="microsoft-surface-laptop-ultra-revealed">Microsoft Surface Laptop Ultra 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:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="PuRjJqMTbps6QrnyoPiFRm" name="Something new is coming from Windows _ October 7 50-52 screenshot" alt="Lifestyle working on the Microsoft Surface Laptop Ultra" src="https://cdn.mos.cms.futurecdn.net/PuRjJqMTbps6QrnyoPiFRm-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: Microsoft)</span></figcaption></figure><p>Now we're getting to the good stuff! The Microsoft Surface Laptop Ultra, which the company says is the most powerful laptop it has ever built, is finally being revealed.</p><p>The model shown appears to be a 16-inch model in a sleek black colorway. It certainly looks like a MacBook Pro! Not only can it code, but it can also run games like Gears of War: E-Day at a smooth 60 frames per second.</p></div><div class="live-content"><time datetime="2026-10-07T17:42:32+00:00">October 7, 2026 – 1:42 PM</time><h2 id="inside-the-surface-laptop-ultra">Inside the Surface Laptop 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="eyR2vn9iGzsJbjbHX8xKQM" name="Something new is coming from Windows _ October 7 54-56 screenshot" alt="Microsoft Surface Laptop Ultra ports" src="https://cdn.mos.cms.futurecdn.net/eyR2vn9iGzsJbjbHX8xKQM-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: Microsoft)</span></figcaption></figure><p>The Surface Laptop Ultra has some interesting features, including MagSafe-like magnetic charging. The laptop will have up to 128GB of RAM, advanced cooling, a relatively thin and portable design, and a vivid 16-inch display. Color me impressed!</p></div><div class="live-content"><time datetime="2026-10-07T17:48:01+00:00">October 7, 2026 – 1:48 PM</time><h2 id="creating-3d-assets-on-surface-laptop-ultra">Creating 3D assets on Surface Laptop 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="JfT7uQjCexGVCs7eQ5hAN" name="Something new is coming from Windows _ October 7 60-20 screenshot" alt="Microsoft Surface Laptop Ultra pricing" src="https://cdn.mos.cms.futurecdn.net/JfT7uQjCexGVCs7eQ5hAN-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: Microsoft)</span></figcaption></figure><p>Thanks to RTX Spark, 3D models can come to life on the Surface Laptop Ultra. The laptop supports a range of traditional video-editing formats and local AI to make it all possible. What used to take days now takes hours. MS claims 2.1x faster token time than the MacBook Pro. Quite a claim!</p><p>The Surface Laptop Ultra starts at $2599 and goes up to as much as $5999 for the dev box. Pre-orders start today and begin shipping next Friday from both Microsoft and OEM partners.</p></div><div class="live-content"><time datetime="2026-10-07T17:52:53+00:00">October 7, 2026 – 1:52 PM</time><h2 id="huang-and-nadella-take-the-stage">Huang and Nadella take the stage</h2><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="sLhn49BMoKb9PMrMaoJMMd" name="PXL_20261007_174919148.MP" alt="Satya and Jensen on stage discussing Windows at Microsoft Surface Laptop Ultra event" src="https://cdn.mos.cms.futurecdn.net/sLhn49BMoKb9PMrMaoJMMd-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><p>Jensen Huang, Satya Nadella, and Sriram Krishnan now take the stage to discuss what we've seen and what is coming next. Jensen starts by highlighting how integral Windows has been to Nvidia, with Windows 95 making it possible to connect a GPU to a PC thanks to DirectX. The companies also laid the groundwork for CUDA.</p></div><div class="live-content"><time datetime="2026-10-07T17:59:56+00:00">October 7, 2026 – 1:59 PM</time><h2 id="why-is-windows-right-for-ai-agents">Why is Windows right for AI agents</h2><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="RqzpXMBBRWAD7QXYGKfCJk" name="PXL_20261007_174926500.TS-000" alt="Jensen and Nadella on stage at Microsoft Surface Laptop Ultra event" src="https://cdn.mos.cms.futurecdn.net/RqzpXMBBRWAD7QXYGKfCJk-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><p>Nadella speaks on the importance of running agents locally. The main reason is security, as having agents running via the cloud isn't exactly secure. How this will work in the real world remains to be seen, but it's good to see these CEO's making sure that folks feel safe using AI agents on their computers.</p></div><div class="live-content"><time datetime="2026-10-07T18:07:19+00:00">October 7, 2026 – 2:07 PM</time><h2 id="more-ai-agent-talk">More AI agent talk</h2><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="2Kcmr6sfTUHesTb2QPzbtU" name="PXL_20261007_175812674" alt="Jensen and Nadella discussing Agents and Hybrid Intelligence" src="https://cdn.mos.cms.futurecdn.net/2Kcmr6sfTUHesTb2QPzbtU-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><p>The executives are continuing their discussion about AI agents and their potential importance. Again, agents aren't likely to be useful for most people, but for coders or managers, they should be extremely useful, provided they work as intended.</p></div><div class="live-content"><time datetime="2026-10-07T18:11:42+00:00">October 7, 2026 – 2:11 PM</time><h2 id="jensen-is-excited-for-the-surface-laptop-ultra">Jensen is excited for the Surface Laptop 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="UCurSW4yCBWKv72Uhhd5kY" name="Something new is coming from Windows _ October 7 1-5-11 screenshot" alt="Jensen on stage at Microsoft Surface Laptop Ultra event" src="https://cdn.mos.cms.futurecdn.net/UCurSW4yCBWKv72Uhhd5kY-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: Microsoft)</span></figcaption></figure><p>Haung is expressing his excitement for the Surface Laptop Ultra, which he says is a machine that can do it all. Now, he wouldn't say the opposite, but as a nerd, I'm also pretty excited about what this machine can do. Even if the agents stuff isn't for me, the gaming and creative potential seem huge.</p></div><div class="live-content"><time datetime="2026-10-07T18:17:09+00:00">October 7, 2026 – 2:17 PM</time><h2 id="and-that-39-s-a-wrap">And that's a wrap!</h2><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="3eEMH9aEi954UHnxGPEMKC" name="image (1)" alt="Jensen x Nadella at Surface Laptop Ultra vent" src="https://cdn.mos.cms.futurecdn.net/3eEMH9aEi954UHnxGPEMKC-1920-80.png" 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><p>The show's over folks! The Surface Laptop Ultra announcement was certainly the highlight, but I'm sure the AI discussions will be interesting to businessess and individuals interested in running models on device.</p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ AMD just flaunted its own 192GB monster chip to spoil Nvidia’s RTX Spark party — Ryzen AI Max+ Pro 495 should worry Apple, too ]]></title>
                                                                                                <dc:content><![CDATA[ <p>With Nvidia widely rumored to unleash <a href="http://tomsguide.com/tag/nvidia-rtx-spark">RTX Spark</a> alongside <a href="https://www.windowscentral.com/microsoft/windows-11/how-to-watch-microsofts-windows-and-surface-event" target="_blank" rel="nofollow">Microsoft on October 7</a>, AMD decided it couldn’t wait. Team Red executed a preemptive strike to not just show off its shiny new (and expensive) Ryzen AI Max+ Pro 495 silicon, the company cheekily rebranded itself as “Agentic Micro Devices since 2025.”</p><p>Is this classic counter programming to plant a flag before Nvidia? Yes. But beneath the rush lies a piece of hardware with specifications so absurd they demand attention. Packing 16 desktop-class “Zen 5” cores and up to 192GB of unified memory, AMD’s built a brute-force x86 weapon designed to kill cloud AI subscription fees, take on Team Green and even make Apple a little nervous too.</p><h2 id="the-192gb-cheat-code">The 192GB cheat code</h2><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="65qhkW4gDcCwiCYCekAp5C" name="AMD Ryzen AI MAX Chip Shot" alt="AMD Ryzen AI Max" src="https://cdn.mos.cms.futurecdn.net/65qhkW4gDcCwiCYCekAp5C-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: AMD)</span></figcaption></figure><p>To understand why AMD is sweating, look at what Nvidia is trying to pull off with RTX Spark. The team is aiming to make local AI agents accessible by pairing Arm-based compute cores with Blackwell graphics (a similar amount of cores that you find in the company’s desktop RTX 50-series GPUs) and unified system memory.</p><p>Apple, of course, wrote this playbook years ago with Apple Silicon in the MacBook Pro — proving that fusing a CPU and GPU around a giant pool of memory is the ultimate setup for intense tasks and heavy local models. And while Apple built the sandbox that Nvidia’s trying to take over, AMD just decided to dump a truckload of concrete into it.</p><p>If you want to run massive AI models locally on traditional laptops, the amount of memory means you simply cannot. Team Red’s Ryzen AI Max+ breaks that bottleneck through sheer volume to its digital brain:</p><ul><li><strong>A 192GB shared reservoir: </strong>The CPU and GPU can share an enormous 192GB of memory running at a blistering 8.5 billion data transfers per second.</li><li><strong>The 160GB slider: </strong>I played with this on the Asus ProArt GoPro Edition with the AI Max+ 395. Using a feature called Variable Graphics Memory (VGM), users can carve out up to 160GB of that memory directly for graphics processing.</li><li><strong>The scale: </strong>This gives a single laptop more usable video memory (VRAM) than four desktop RTX 4090 cards strapped together. Not only is this huge for gaming (trust me, I tested it), but it allows for gargantuan 100+ billion-paramenter AI models to run entirely on-device and offline.</li></ul><p>And that offline bit is critical in my mind. While I’m always going to take a look at the sheer amount of memory being gobbled up and think “oh, so that’s why RAMageddon’s a thing,” I am a believer that local AI is the future over cloud models like ChatGPT or Gemini.</p><p>Now, there are real-world examples to prove that.</p><h2 id="firing-the-cloud-provider">Firing the cloud provider</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/XfmcaO8TNrY" allowfullscreen></iframe></div></div><p>Tech enthusiasts are tired of hearing “AI” attached to every bit of basic spreadsheet math, so AMD’s brought in Emmy-winning production studio LightSail VR to show off the economic reality of local agents.</p><p>This is the VR studio that recently caught a Sabrina Carpenter concert, and they deal with ultra-heavy 16K, 90 FPS stereoscopic 3D video for Hollywood. With client feedback pouring in across multiple projects, it was becoming overwhelming for the small team.</p><p>Option one of using cloud models like OpenAI or Anthropic to coordinate this is impossible for two reasons:</p><ul><li><strong>Strict Hollywood NDAs: </strong>Confidential scripts, clips or project schedules cannot leave the four walls of their studio.</li><li><strong>The cloud meter: </strong>Running autonomous agents that constantly re-index documents and shift production timelines would burn thousands of dollars a month in cloud AI token costs.</li></ul><p>So instead, LightSail VR build an in-house “production coordinator” agent on an AMD Ryzen AI Max desktop with unified memory — living directly inside the team’s personal Slack. It’s able to update schedules, rewrite spreadsheets and alert the team autonomously when an edit timeline shifts.</p><p>And the payoff has been huge, with the studio able to manage six to nine concurrent productions with the personal effort required for just two, with zero data leaving the building and zero cloud AI token invoices.</p><h2 id="what-does-that-mean-for-me">What does that mean for me?</h2><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="yTu79UseNbP6w3kxoB5q25" name="Microsoft Windows 11 26H2" alt="Microsoft Windows 11 26H2" src="https://cdn.mos.cms.futurecdn.net/yTu79UseNbP6w3kxoB5q25-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>But of course, you’re (probably) not producing 16K stereoscopic video for a Hollywood studio. Why should <strong>you </strong>care about a 192GB laptop processor? Simply put, the tech industry is currently trying to trap you in an endless web of AI subscription fees.</p><p>Right now, using a generative AI agent to organize your life or draft your emails comes with a hefty monthly premium fee. By building a laptop chip with massive unified memory, AMD is effectively stuffing that cloud server into a backpack.</p><p>That translates into two massive consumer victories:</p><ul><li><strong>The death of the subscription tax: </strong>Buy the hardware once. After that, your autonomous digital intern can reorganize that messy hard drive, draft emails and analyze massive spreadsheets 24/7 without costing you a single cent in cloud AI costs.</li><li><strong>Absolute privacy: </strong>You no longer have to upload your tax returns, confidential work documents or personal schedules to a server in California just to get AI assistance. These gargantuan models can fit directly into the AI Max’s memory pool, so they run completely locally and offline.</li></ul><p>It’s not just about raw horsepower; it’s a hardware escape hatch from the looming cloud subscription era.</p><h2 id="the-x86-moat-against-arm">The x86 moat against Arm</h2><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="bYx53nVSXo9ZPDfckBufAE" name="Asus ProArt GoPro Edition (PX13)" alt="Asus ProArt GoPro Edition (PX13)" src="https://cdn.mos.cms.futurecdn.net/bYx53nVSXo9ZPDfckBufAE-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 that brings us to the core battlefield between AMD and Nvidia (and Apple to an extent).</p><p>RTX Spark leans into Arm architecture. Arm chips deliver exceptional power efficiency — as Apple has proved for years — but running traditional Windows applications on Arm requires translation layers. </p><p>And while Microsoft’s Prism emulation has improved massively (like <a href="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">Microsoft's engineer told me</a>), translation layers still introduce power inefficiencies, occasional driver quirks and incompatibilities with legacy hardware.</p><p>In my experience with AMD, the team spent a significant chunk of its time exploiting that vulnerability and repeatedly mentioning “Native x86” alongside there being “no emulation layer” for Windows and Linux.</p><p>By sticking to the standard PC architecture of the past three decades, AMD avoids that trap entirely. Specialized software can run natively at full clip, older peripherals work out of the box, and when the work finishes, the integrated RDNA 3.5 graphics engine can natively fire up PC games without any chance of an emulator hiccuping mid-frame.</p><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>AMD’s scramble to share all of this two days before Nvidia takes the stage with Microsoft shows just how intense the pressure has become. Team Red is anxious that RTX Spark will set the narrative for what high-end AI laptops are supposed to look like. </p><p>But by using native x86 architecture and an audacious amount of money, AMD has ensured that when Nvidia steps into the spotlight, it won’t be walking into an empty room.</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-rog-zephyrus-g14-2026-review">I tested the Asus ROG Zephyrus G14 (2026) like I was a student — its gaming, creator and AI performance is huge, but it comes at a cost</a></li><li><a href="https://www.tomsguide.com/computing/windows-operating-systems/i-just-tested-windows-11-26h2-heres-how-to-update-now-and-why-microsoft-finally-fixed-the-two-worst-things-about-windows-11">I just tested Windows 11 26H2 — here’s how to update now and why Microsoft finally fixed the two worst things about Windows 11</a></li><li><a href="https://www.tomsguide.com/computing/laptops/microsoft-surface-pro-12-inch-surface-laptop-13-inch-snapdragon-x2-plus-hands-on-review">I tested Microsoft’s fanless Snapdragon X2 Plus Surface Pro and Laptop: The MacBook Air should be terrified</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/cpus/amd-just-flaunted-its-own-192gb-monster-chip-to-spoil-nvidias-rtx-spark-party-ryzen-ai-max-pro-495-should-worry-apple-too</link>
                                                                            <description>
                            <![CDATA[ AMD just showed off its 192GB Ryzen AI Max+ Pro 495 silicon to preempt Nvidia’s RTX Spark. From 160GB of VRAM to native x86 power, here is why Apple should worry too. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">SVSrMMs9dLHd5hTkLkVNck</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/V89Cq6qjrmfthMwFcnMtdN-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 05 Oct 2026 13:00:00 +0000</pubDate>                                                                                                                                <updated>Mon, 05 Oct 2026 23:48:20 +0000</updated>
                                                                                                                                            <category><![CDATA[CPUs]]></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/V89Cq6qjrmfthMwFcnMtdN-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Asus TUF Gaming A14 (2026)]]></media:description>                                                            <media:text><![CDATA[Asus TUF Gaming A14 (2026)]]></media:text>
                                <media:title type="plain"><![CDATA[Asus TUF Gaming A14 (2026)]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/V89Cq6qjrmfthMwFcnMtdN-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>With Nvidia widely rumored to unleash <a href="http://tomsguide.com/tag/nvidia-rtx-spark">RTX Spark</a> alongside <a href="https://www.windowscentral.com/microsoft/windows-11/how-to-watch-microsofts-windows-and-surface-event" target="_blank" rel="nofollow">Microsoft on October 7</a>, AMD decided it couldn’t wait. Team Red executed a preemptive strike to not just show off its shiny new (and expensive) Ryzen AI Max+ Pro 495 silicon, the company cheekily rebranded itself as “Agentic Micro Devices since 2025.”</p><p>Is this classic counter programming to plant a flag before Nvidia? Yes. But beneath the rush lies a piece of hardware with specifications so absurd they demand attention. Packing 16 desktop-class “Zen 5” cores and up to 192GB of unified memory, AMD’s built a brute-force x86 weapon designed to kill cloud AI subscription fees, take on Team Green and even make Apple a little nervous too.</p><h2 id="the-192gb-cheat-code">The 192GB cheat code</h2><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="65qhkW4gDcCwiCYCekAp5C" name="AMD Ryzen AI MAX Chip Shot" alt="AMD Ryzen AI Max" src="https://cdn.mos.cms.futurecdn.net/65qhkW4gDcCwiCYCekAp5C-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: AMD)</span></figcaption></figure><p>To understand why AMD is sweating, look at what Nvidia is trying to pull off with RTX Spark. The team is aiming to make local AI agents accessible by pairing Arm-based compute cores with Blackwell graphics (a similar amount of cores that you find in the company’s desktop RTX 50-series GPUs) and unified system memory.</p><p>Apple, of course, wrote this playbook years ago with Apple Silicon in the MacBook Pro — proving that fusing a CPU and GPU around a giant pool of memory is the ultimate setup for intense tasks and heavy local models. And while Apple built the sandbox that Nvidia’s trying to take over, AMD just decided to dump a truckload of concrete into it.</p><p>If you want to run massive AI models locally on traditional laptops, the amount of memory means you simply cannot. Team Red’s Ryzen AI Max+ breaks that bottleneck through sheer volume to its digital brain:</p><ul><li><strong>A 192GB shared reservoir: </strong>The CPU and GPU can share an enormous 192GB of memory running at a blistering 8.5 billion data transfers per second.</li><li><strong>The 160GB slider: </strong>I played with this on the Asus ProArt GoPro Edition with the AI Max+ 395. Using a feature called Variable Graphics Memory (VGM), users can carve out up to 160GB of that memory directly for graphics processing.</li><li><strong>The scale: </strong>This gives a single laptop more usable video memory (VRAM) than four desktop RTX 4090 cards strapped together. Not only is this huge for gaming (trust me, I tested it), but it allows for gargantuan 100+ billion-paramenter AI models to run entirely on-device and offline.</li></ul><p>And that offline bit is critical in my mind. While I’m always going to take a look at the sheer amount of memory being gobbled up and think “oh, so that’s why RAMageddon’s a thing,” I am a believer that local AI is the future over cloud models like ChatGPT or Gemini.</p><p>Now, there are real-world examples to prove that.</p><h2 id="firing-the-cloud-provider">Firing the cloud provider</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/XfmcaO8TNrY" allowfullscreen></iframe></div></div><p>Tech enthusiasts are tired of hearing “AI” attached to every bit of basic spreadsheet math, so AMD’s brought in Emmy-winning production studio LightSail VR to show off the economic reality of local agents.</p><p>This is the VR studio that recently caught a Sabrina Carpenter concert, and they deal with ultra-heavy 16K, 90 FPS stereoscopic 3D video for Hollywood. With client feedback pouring in across multiple projects, it was becoming overwhelming for the small team.</p><p>Option one of using cloud models like OpenAI or Anthropic to coordinate this is impossible for two reasons:</p><ul><li><strong>Strict Hollywood NDAs: </strong>Confidential scripts, clips or project schedules cannot leave the four walls of their studio.</li><li><strong>The cloud meter: </strong>Running autonomous agents that constantly re-index documents and shift production timelines would burn thousands of dollars a month in cloud AI token costs.</li></ul><p>So instead, LightSail VR build an in-house “production coordinator” agent on an AMD Ryzen AI Max desktop with unified memory — living directly inside the team’s personal Slack. It’s able to update schedules, rewrite spreadsheets and alert the team autonomously when an edit timeline shifts.</p><p>And the payoff has been huge, with the studio able to manage six to nine concurrent productions with the personal effort required for just two, with zero data leaving the building and zero cloud AI token invoices.</p><h2 id="what-does-that-mean-for-me">What does that mean for me?</h2><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="yTu79UseNbP6w3kxoB5q25" name="Microsoft Windows 11 26H2" alt="Microsoft Windows 11 26H2" src="https://cdn.mos.cms.futurecdn.net/yTu79UseNbP6w3kxoB5q25-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>But of course, you’re (probably) not producing 16K stereoscopic video for a Hollywood studio. Why should <strong>you </strong>care about a 192GB laptop processor? Simply put, the tech industry is currently trying to trap you in an endless web of AI subscription fees.</p><p>Right now, using a generative AI agent to organize your life or draft your emails comes with a hefty monthly premium fee. By building a laptop chip with massive unified memory, AMD is effectively stuffing that cloud server into a backpack.</p><p>That translates into two massive consumer victories:</p><ul><li><strong>The death of the subscription tax: </strong>Buy the hardware once. After that, your autonomous digital intern can reorganize that messy hard drive, draft emails and analyze massive spreadsheets 24/7 without costing you a single cent in cloud AI costs.</li><li><strong>Absolute privacy: </strong>You no longer have to upload your tax returns, confidential work documents or personal schedules to a server in California just to get AI assistance. These gargantuan models can fit directly into the AI Max’s memory pool, so they run completely locally and offline.</li></ul><p>It’s not just about raw horsepower; it’s a hardware escape hatch from the looming cloud subscription era.</p><h2 id="the-x86-moat-against-arm">The x86 moat against Arm</h2><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="bYx53nVSXo9ZPDfckBufAE" name="Asus ProArt GoPro Edition (PX13)" alt="Asus ProArt GoPro Edition (PX13)" src="https://cdn.mos.cms.futurecdn.net/bYx53nVSXo9ZPDfckBufAE-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 that brings us to the core battlefield between AMD and Nvidia (and Apple to an extent).</p><p>RTX Spark leans into Arm architecture. Arm chips deliver exceptional power efficiency — as Apple has proved for years — but running traditional Windows applications on Arm requires translation layers. </p><p>And while Microsoft’s Prism emulation has improved massively (like <a href="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">Microsoft's engineer told me</a>), translation layers still introduce power inefficiencies, occasional driver quirks and incompatibilities with legacy hardware.</p><p>In my experience with AMD, the team spent a significant chunk of its time exploiting that vulnerability and repeatedly mentioning “Native x86” alongside there being “no emulation layer” for Windows and Linux.</p><p>By sticking to the standard PC architecture of the past three decades, AMD avoids that trap entirely. Specialized software can run natively at full clip, older peripherals work out of the box, and when the work finishes, the integrated RDNA 3.5 graphics engine can natively fire up PC games without any chance of an emulator hiccuping mid-frame.</p><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>AMD’s scramble to share all of this two days before Nvidia takes the stage with Microsoft shows just how intense the pressure has become. Team Red is anxious that RTX Spark will set the narrative for what high-end AI laptops are supposed to look like. </p><p>But by using native x86 architecture and an audacious amount of money, AMD has ensured that when Nvidia steps into the spotlight, it won’t be walking into an empty room.</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-rog-zephyrus-g14-2026-review">I tested the Asus ROG Zephyrus G14 (2026) like I was a student — its gaming, creator and AI performance is huge, but it comes at a cost</a></li><li><a href="https://www.tomsguide.com/computing/windows-operating-systems/i-just-tested-windows-11-26h2-heres-how-to-update-now-and-why-microsoft-finally-fixed-the-two-worst-things-about-windows-11">I just tested Windows 11 26H2 — here’s how to update now and why Microsoft finally fixed the two worst things about Windows 11</a></li><li><a href="https://www.tomsguide.com/computing/laptops/microsoft-surface-pro-12-inch-surface-laptop-13-inch-snapdragon-x2-plus-hands-on-review">I tested Microsoft’s fanless Snapdragon X2 Plus Surface Pro and Laptop: The MacBook Air should be terrified</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I played Gears of War: E-Day on PC with Nvidia's RTX Mega Geometry — and the Xbox franchise has never looked better ]]></title>
                                                                                                <dc:content><![CDATA[ <p>It almost feels like blasphemy to play Gears of War: E-Day on PC — and to top it off, on Steam — rather than its natural home on Xbox. <em>Almost</em>.<em> </em>But after cranking up settings to Ultra, bumping up frame rates with <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">Nvidia's DLSS 4.5</a> trickery and basking in ray-traced lighting, it was easy to take Marcus Fenix and his merry band of absolutely ripped soldiers beyond its console roots. </p><p>Developers The Coalition and People Can Fly are bringing the iconic third-person shooter back to the beginning: Emergence Day. That's when the gruesome Locust Horde army first emerged from the ground to cause chaos for the humans above, and that perfectly sets the stage for beautifully rendered mayhem and destruction. </p><p>After flanking and sawing my way through Locust (scum) for over 12 hours, I can say Gears of War: E-Day is the best the franchise has ever looked, and it's excellently optimized for PC gaming. From its highly detailed gore and destruction to its accurate lighting and shadows with RTX Mega Geometry, it nails the visual horrors of war and the smooth performance of its brutal, cover-based combat. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OLYRgX"></div>                            </div>                            <script src="https://kwizly.com/embed/OLYRgX.js" async></script><p>Even better, there's a huge variety of graphics settings to tinker with to get the right performance for your PC setup. It even includes a "Ludicrous" preset for power-hungry gaming rigs! So, is Gears of War: E-Day worth playing on PC? Yes, and for the reasons why, I've got you covered below.</p><h2 id="gears-of-war-e-day-pc-requirements">Gears of War: E-Day 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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="tJhZhqSoMqAccUhoaNPDA4" name="Gears of War: E-Day" alt="Screenshots of Gears of War: Eday" src="https://cdn.mos.cms.futurecdn.net/tJhZhqSoMqAccUhoaNPDA4-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: Xbox Game Studios / The Coalition )</span></figcaption></figure><p>Gears of War: E-Day can be a demanding title to run, but it can also be as performance-driven and as light on your system as you need it to be, thanks to the lengthy list of graphics options and upscaling methods you can adjust. </p><p>While the developers are sure to have E-Day optimized for Xbox Series X/S, they've made sure to give the PC port some extra care so it can run on a majority of systems. That includes the <a href="https://www.tomsguide.com/round-up/best-handheld-gaming-consoles">best PC handhelds</a> like the <a href="https://www.tomsguide.com/gaming/handheld-gaming/rog-xbox-ally-x-review">ROG Xbox Ally X.</a> </p><p>While you won't need the <a href="https://www.tomsguide.com/computing/gpus/best-graphics-cards">best graphics cards</a> to run the latest Gears of War installment, know that you will need a "hardware ray tracing-capable GPU," as the <a href="https://store.steampowered.com/app/3010850/Gears_of_War_EDay/" target="_blank">developers note.</a> You'll also need <strong>a lot</strong> of space, so make sure you have enough storage. </p><p>Here are the official requirements, along with the PC specs I used. </p><div ><table><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>Tested specs</strong></p></td><td  ><p><strong>Minimum specs</strong></p></td><td  ><p><strong>Recommended specs</strong></p></td><td  ><p><strong>Ultra specs</strong></p></td></tr><tr><td class="firstcol " ><p><strong>CPU</strong></p></td><td  ><p>AMD Ryzen 7 9700X</p></td><td  ><p>AMD Ryzen 5 2600X / Intel i7‑6850K / i5‑10400</p></td><td  ><p>Intel Core i7-10700 / AMD Ryzen 7 3700X</p></td><td  ><p>AMD Ryzen 7 7800X3D / Intel i7-14700K</p></td></tr><tr><td class="firstcol " ><p><strong>GPU</strong></p></td><td  ><p>Nvidia GeForce RTX 5070</p></td><td  ><p>Nvidia GeForce RTX 5050 / Nvidia GeForce RTX 2060 / AMD Radeon RX 6600 / Radeon RX 9060</p></td><td  ><p>Nvidia GeForce RTX 5060 / Nvidia GeForce RTX 3060ti / AMD Radeon RX 6700 XT / Radeon RX 9060 XT</p></td><td  ><p>Nvidia GeForce RTX 5070 Ti / AMD Radeon RX 7900 XT</p></td></tr><tr><td class="firstcol " ><p><strong>RAM</strong></p></td><td  ><p>32GB</p></td><td  ><p>12GB </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>115GB</p></td><td  ><p>115GB</p></td><td  ><p>115GB</p></td><td  ><p>115GB</p></td></tr></tbody></table></div><h2 id="geared-up-for-pc">Geared up for PC</h2><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="7buX3vU8yeBJkAEujoaiM4" name="Gears of War: E-Day" alt="Screenshots of Gears of War: Eday" src="https://cdn.mos.cms.futurecdn.net/7buX3vU8yeBJkAEujoaiM4-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: Xbox Game Studios / The Coalition )</span></figcaption></figure><p>Now, being made in Unreal Engine 5 (as many games have been recently) can be hit or miss, depending on the title. E-Day has been specifically rebuilt in Unreal Engine 5, but don't fret; it's a hit. </p><p>By taking Gears back to the devastating events of Emergence Day, the game has a lot of carnage to take advantage of. From massive locusts erupting from roads to the warm lights of a city at night disrupted by raging fires on exploded cars, E-Day knows how to showcase the atrocities of a sudden invasion by an unknown threat, and it's visually stunning. </p><p>That was all shown off in striking detail on a gaming PC that isn't exactly a beast of a rig, either. I played Gears of War: E-Day on the <a href="https://www.tomsguide.com/computing/gaming-desktops/this-prebuilt-rtx-5070-pc-showed-me-4k-gaming-performance-for-less-and-im-surprised-as-you-are">Quoted Tech Frontier</a> gaming PC, with an AMD Ryzen 7 9700X CPU, Nvidia GeForce RTX 5070 GPU and 32GB of RAM. I was able to play in 4K and get a respectable 50 FPS on High settings, and I was still bursting Locust heads with smooth gameplay despite it being taxing on my system (there was a warning sign to say 4K would be a little much). </p><p>But that was without the boost from Nvidia's DLSS 4.5 Dynamic Frame Generation or Dynamic Upscaling Quality. With these toggled on, and even bumping up ray-traced shadows, reflections and geometry to Ultra, I was seeing Marcus, Dom and the rest of the team charging their way through hordes in crisp detail at a smoother 115 FPS. That's a green flag for PC optimization. </p><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="yKqZVa2ZmiLcsWwJ7Z5F84" name="Gears of War: E-Day" alt="Screenshots of Gears of War: Eday" src="https://cdn.mos.cms.futurecdn.net/yKqZVa2ZmiLcsWwJ7Z5F84-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: Xbox Game Studios / The Coalition )</span></figcaption></figure><p>Now, this was the case in the more linear sections of the game. During a semi-open area I encountered, I noticed a few minor sudden dips in frames, cutting down by 15 to 20 FPS. That, and some pop-in artifacts every now and again. A deal-breaker? Not in the slightest, and something I could remedy myself. </p><p>Scaling back to 1440p resolution and switching to Performance upscaling gave me far smoother gameplay, and with frame generation at 6x? I was going well past 200 FPS, and my aging gaming monitor doesn't even go that high. </p><p>Being able to tinker with an assortment of settings to get the right balance of image quality and performance is always welcome, and Gears of War: E-Day has it in spades. </p><h2 id="lighting-is-on-point">Lighting is on 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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="rYrM66GcBxrjdCB8HJBTR4" name="Gears of War: E-Day" alt="Screenshots of Gears of War: Eday" src="https://cdn.mos.cms.futurecdn.net/rYrM66GcBxrjdCB8HJBTR4-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: Xbox Game Studios / The Coalition )</span></figcaption></figure><div  class="fancy-box"><div class="fancy_box-title">What is RTX Mega Geometry?</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="yroJh9tyRELq7JXeze3TG4" name="Gears of War: E-Day" caption="" alt="Screenshots of Gears of War: Eday" src="https://cdn.mos.cms.futurecdn.net/yroJh9tyRELq7JXeze3TG4-1920-80.jpg" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude"></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Xbox Game Studios / The Coalition )</span></figcaption></figure><p class="fancy-box__body-text">RTX Mega Geometry is a rendering technology used to enhance ray-traced shadows, reflections and global illumination in games. It can ray-trace Nanite geometry (Unreal Engine 5's virtualized geometry system) to achieve more realistic scenes with reflective surfaces, leading to more accurate, stable shadows even on small or complex objects. Nvidia notes that a GeForce RTX GPU with at least 12GB of VRAM is required to make RTX Mega Geometry work.</p></div></div><p>From the soft hum of street lamps lighting up a crumbling street in ruins to the tight, horror-like spaces in buildings being lit up with the glow from neon signs and TVs, E-Day shows that Gears of War has come <em>very</em> far from the gritty, desaturated browns that plagued late-2000s games. And it's only elevated further on PC with Nvidia's latest tools.</p><p>E-Day marks the first title to ray trace Nanite geometry, thanks to the added RTX Mega Geometry. Essentially, this means more realistic details in ray tracing, solving issues like missing or incorrect shadows, improved reflection quality, better stability for moving silhouettes and overall more geometry on objects to play with. </p><p>This isn't immediately noticeable, of course. Not when there's a mass of Locusts emerging from collapsing holes, charging at you with shotguns! But during the quieter moments exploring abandoned grocery stores, ravaged police stations and more, it's the ray-traced lighting and relfections that captures the atmosphere. </p><p>Switching RTX Mega Geometry on, the smaller details like the florescent lighting in the frozen section of a store bouncing off the floor, or the clear reflections of debris lying around on a blood-smeared window, are striking to look at. And having this on didn't appear to affect the performance of my gameplay, either. </p><p>This is subtle realism to make the surroundings of Marcus and his team feel more lived-in, which makes the war-torn city of Kalona far more engaging.</p><h2 id="optimized-for-destruction">Optimized for destruction</h2><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="LGkHt2A8xaWFrGGHRCBrN4" name="Gears of War: E-Day" alt="Screenshots of Gears of War: Eday" src="https://cdn.mos.cms.futurecdn.net/LGkHt2A8xaWFrGGHRCBrN4-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: Xbox Game Studios / The Coalition )</span></figcaption></figure><p>As anyone playing games on the Xbox app, Steam or other clients will tell you, PC optimization is an important aspect of bringing any title to PC. Fortunately, we've seen many standout hits this year alone, and now this iconic Xbox franchise joins those ranks. Gears of War: E-Day is one of the best-looking PC games I've played in 2026, and that says a lot considering we've seen the likes of <a href="https://www.tomsguide.com/computing/i-played-control-resonant-on-pc-with-nvidias-dlss-ray-reconstruction-and-it-beats-ps5-pro-hands-down">Control Resonant</a>, <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">Pragmata</a> and <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> arrive and impress. </p><p>While targeting 4K at 60 FPS on Xbox is already enough to show all the glorious, gory visuals E-Day has in store, playing the origins of the Gears of War saga on PC allows it to take advantage of the latest in graphics. I mean, cranking up the destructive details with 100+ FPS, along with scene-defining lighting and crisp reflections, is a treat for the eyes. </p><p>If this is the way AAA games are being treated on PC, I have high hopes for everything else to come (especially for the upcoming <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">GTA VI</a>). </p><p>For a closer look at our thoughts, be sure to check out our full Gears of War: E-Day review.</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-gave-the-steam-machine-3-stars-at-launch-but-a-game-changing-update-and-this-1tb-storage-hack-has-me-thinking-differently">I gave the Steam Machine 3 stars at launch — but a game-changing update and this 1TB storage hack has me thinking differently</a></li><li><a href="https://www.tomsguide.com/computing/i-played-control-resonant-on-pc-with-nvidias-dlss-ray-reconstruction-and-it-beats-ps5-pro-hands-down">I played Control Resonant on PC with Nvidia's DLSS Ray Reconstruction — and it beats PS5 Pro hands down</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> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/i-played-gears-of-war-e-day-on-pc-with-nvidias-rtx-mega-geometry-and-the-xbox-franchise-has-never-looked-better</link>
                                                                            <description>
                            <![CDATA[ Gears of War: E-Day is a thrilling throwback and triumphant step forward in gory, destructive real-time graphics on PC, thanks to Nvidia's RTX Mega Geometry, DLSS 4.5 and ray tracing. Here's what I thought after playing for over 12 hours on a gaming desktop. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">T6J8hmTmVMQWPqtPzQWgbR</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/8YTiGxd3HguCwqsNa4VWs8-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 02 Oct 2026 10:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[PC Gaming]]></category>
                                                    <category><![CDATA[Gaming]]></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 Buying Guide Editor and is fascinated by all things bizarre in tech. This usually leads to assorted coverage varying from washing machines designed for earbuds to expert buying advice on the latest laptops. Whether it&amp;#39;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 an interesting angle no matter the subject. &lt;/p&gt;&lt;p&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, tablets, smartwatches, VR headsets, 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&amp;#39;s not checking out the latest devices and updating buying guides with expert advice, 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/8YTiGxd3HguCwqsNa4VWs8-1920-80.jpg">
                                                            <media:credit><![CDATA[Future / Tom&amp;#39;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[ Gears of War: E-Day on monitor with Xbox controller in hand]]></media:description>                                                            <media:text><![CDATA[ Gears of War: E-Day on monitor with Xbox controller in hand]]></media:text>
                                <media:title type="plain"><![CDATA[ Gears of War: E-Day on monitor with Xbox controller in hand]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/8YTiGxd3HguCwqsNa4VWs8-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>It almost feels like blasphemy to play Gears of War: E-Day on PC — and to top it off, on Steam — rather than its natural home on Xbox. <em>Almost</em>.<em> </em>But after cranking up settings to Ultra, bumping up frame rates with <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">Nvidia's DLSS 4.5</a> trickery and basking in ray-traced lighting, it was easy to take Marcus Fenix and his merry band of absolutely ripped soldiers beyond its console roots. </p><p>Developers The Coalition and People Can Fly are bringing the iconic third-person shooter back to the beginning: Emergence Day. That's when the gruesome Locust Horde army first emerged from the ground to cause chaos for the humans above, and that perfectly sets the stage for beautifully rendered mayhem and destruction. </p><p>After flanking and sawing my way through Locust (scum) for over 12 hours, I can say Gears of War: E-Day is the best the franchise has ever looked, and it's excellently optimized for PC gaming. From its highly detailed gore and destruction to its accurate lighting and shadows with RTX Mega Geometry, it nails the visual horrors of war and the smooth performance of its brutal, cover-based combat. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OLYRgX"></div>                            </div>                            <script src="https://kwizly.com/embed/OLYRgX.js" async></script><p>Even better, there's a huge variety of graphics settings to tinker with to get the right performance for your PC setup. It even includes a "Ludicrous" preset for power-hungry gaming rigs! So, is Gears of War: E-Day worth playing on PC? Yes, and for the reasons why, I've got you covered below.</p><h2 id="gears-of-war-e-day-pc-requirements">Gears of War: E-Day 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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="tJhZhqSoMqAccUhoaNPDA4" name="Gears of War: E-Day" alt="Screenshots of Gears of War: Eday" src="https://cdn.mos.cms.futurecdn.net/tJhZhqSoMqAccUhoaNPDA4-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: Xbox Game Studios / The Coalition )</span></figcaption></figure><p>Gears of War: E-Day can be a demanding title to run, but it can also be as performance-driven and as light on your system as you need it to be, thanks to the lengthy list of graphics options and upscaling methods you can adjust. </p><p>While the developers are sure to have E-Day optimized for Xbox Series X/S, they've made sure to give the PC port some extra care so it can run on a majority of systems. That includes the <a href="https://www.tomsguide.com/round-up/best-handheld-gaming-consoles">best PC handhelds</a> like the <a href="https://www.tomsguide.com/gaming/handheld-gaming/rog-xbox-ally-x-review">ROG Xbox Ally X.</a> </p><p>While you won't need the <a href="https://www.tomsguide.com/computing/gpus/best-graphics-cards">best graphics cards</a> to run the latest Gears of War installment, know that you will need a "hardware ray tracing-capable GPU," as the <a href="https://store.steampowered.com/app/3010850/Gears_of_War_EDay/" target="_blank">developers note.</a> You'll also need <strong>a lot</strong> of space, so make sure you have enough storage. </p><p>Here are the official requirements, along with the PC specs I used. </p><div ><table><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>Tested specs</strong></p></td><td  ><p><strong>Minimum specs</strong></p></td><td  ><p><strong>Recommended specs</strong></p></td><td  ><p><strong>Ultra specs</strong></p></td></tr><tr><td class="firstcol " ><p><strong>CPU</strong></p></td><td  ><p>AMD Ryzen 7 9700X</p></td><td  ><p>AMD Ryzen 5 2600X / Intel i7‑6850K / i5‑10400</p></td><td  ><p>Intel Core i7-10700 / AMD Ryzen 7 3700X</p></td><td  ><p>AMD Ryzen 7 7800X3D / Intel i7-14700K</p></td></tr><tr><td class="firstcol " ><p><strong>GPU</strong></p></td><td  ><p>Nvidia GeForce RTX 5070</p></td><td  ><p>Nvidia GeForce RTX 5050 / Nvidia GeForce RTX 2060 / AMD Radeon RX 6600 / Radeon RX 9060</p></td><td  ><p>Nvidia GeForce RTX 5060 / Nvidia GeForce RTX 3060ti / AMD Radeon RX 6700 XT / Radeon RX 9060 XT</p></td><td  ><p>Nvidia GeForce RTX 5070 Ti / AMD Radeon RX 7900 XT</p></td></tr><tr><td class="firstcol " ><p><strong>RAM</strong></p></td><td  ><p>32GB</p></td><td  ><p>12GB </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>115GB</p></td><td  ><p>115GB</p></td><td  ><p>115GB</p></td><td  ><p>115GB</p></td></tr></tbody></table></div><h2 id="geared-up-for-pc">Geared up for PC</h2><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="7buX3vU8yeBJkAEujoaiM4" name="Gears of War: E-Day" alt="Screenshots of Gears of War: Eday" src="https://cdn.mos.cms.futurecdn.net/7buX3vU8yeBJkAEujoaiM4-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: Xbox Game Studios / The Coalition )</span></figcaption></figure><p>Now, being made in Unreal Engine 5 (as many games have been recently) can be hit or miss, depending on the title. E-Day has been specifically rebuilt in Unreal Engine 5, but don't fret; it's a hit. </p><p>By taking Gears back to the devastating events of Emergence Day, the game has a lot of carnage to take advantage of. From massive locusts erupting from roads to the warm lights of a city at night disrupted by raging fires on exploded cars, E-Day knows how to showcase the atrocities of a sudden invasion by an unknown threat, and it's visually stunning. </p><p>That was all shown off in striking detail on a gaming PC that isn't exactly a beast of a rig, either. I played Gears of War: E-Day on the <a href="https://www.tomsguide.com/computing/gaming-desktops/this-prebuilt-rtx-5070-pc-showed-me-4k-gaming-performance-for-less-and-im-surprised-as-you-are">Quoted Tech Frontier</a> gaming PC, with an AMD Ryzen 7 9700X CPU, Nvidia GeForce RTX 5070 GPU and 32GB of RAM. I was able to play in 4K and get a respectable 50 FPS on High settings, and I was still bursting Locust heads with smooth gameplay despite it being taxing on my system (there was a warning sign to say 4K would be a little much). </p><p>But that was without the boost from Nvidia's DLSS 4.5 Dynamic Frame Generation or Dynamic Upscaling Quality. With these toggled on, and even bumping up ray-traced shadows, reflections and geometry to Ultra, I was seeing Marcus, Dom and the rest of the team charging their way through hordes in crisp detail at a smoother 115 FPS. That's a green flag for PC optimization. </p><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="yKqZVa2ZmiLcsWwJ7Z5F84" name="Gears of War: E-Day" alt="Screenshots of Gears of War: Eday" src="https://cdn.mos.cms.futurecdn.net/yKqZVa2ZmiLcsWwJ7Z5F84-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: Xbox Game Studios / The Coalition )</span></figcaption></figure><p>Now, this was the case in the more linear sections of the game. During a semi-open area I encountered, I noticed a few minor sudden dips in frames, cutting down by 15 to 20 FPS. That, and some pop-in artifacts every now and again. A deal-breaker? Not in the slightest, and something I could remedy myself. </p><p>Scaling back to 1440p resolution and switching to Performance upscaling gave me far smoother gameplay, and with frame generation at 6x? I was going well past 200 FPS, and my aging gaming monitor doesn't even go that high. </p><p>Being able to tinker with an assortment of settings to get the right balance of image quality and performance is always welcome, and Gears of War: E-Day has it in spades. </p><h2 id="lighting-is-on-point">Lighting is on 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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="rYrM66GcBxrjdCB8HJBTR4" name="Gears of War: E-Day" alt="Screenshots of Gears of War: Eday" src="https://cdn.mos.cms.futurecdn.net/rYrM66GcBxrjdCB8HJBTR4-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: Xbox Game Studios / The Coalition )</span></figcaption></figure><div  class="fancy-box"><div class="fancy_box-title">What is RTX Mega Geometry?</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="yroJh9tyRELq7JXeze3TG4" name="Gears of War: E-Day" caption="" alt="Screenshots of Gears of War: Eday" src="https://cdn.mos.cms.futurecdn.net/yroJh9tyRELq7JXeze3TG4-1920-80.jpg" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude"></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Xbox Game Studios / The Coalition )</span></figcaption></figure><p class="fancy-box__body-text">RTX Mega Geometry is a rendering technology used to enhance ray-traced shadows, reflections and global illumination in games. It can ray-trace Nanite geometry (Unreal Engine 5's virtualized geometry system) to achieve more realistic scenes with reflective surfaces, leading to more accurate, stable shadows even on small or complex objects. Nvidia notes that a GeForce RTX GPU with at least 12GB of VRAM is required to make RTX Mega Geometry work.</p></div></div><p>From the soft hum of street lamps lighting up a crumbling street in ruins to the tight, horror-like spaces in buildings being lit up with the glow from neon signs and TVs, E-Day shows that Gears of War has come <em>very</em> far from the gritty, desaturated browns that plagued late-2000s games. And it's only elevated further on PC with Nvidia's latest tools.</p><p>E-Day marks the first title to ray trace Nanite geometry, thanks to the added RTX Mega Geometry. Essentially, this means more realistic details in ray tracing, solving issues like missing or incorrect shadows, improved reflection quality, better stability for moving silhouettes and overall more geometry on objects to play with. </p><p>This isn't immediately noticeable, of course. Not when there's a mass of Locusts emerging from collapsing holes, charging at you with shotguns! But during the quieter moments exploring abandoned grocery stores, ravaged police stations and more, it's the ray-traced lighting and relfections that captures the atmosphere. </p><p>Switching RTX Mega Geometry on, the smaller details like the florescent lighting in the frozen section of a store bouncing off the floor, or the clear reflections of debris lying around on a blood-smeared window, are striking to look at. And having this on didn't appear to affect the performance of my gameplay, either. </p><p>This is subtle realism to make the surroundings of Marcus and his team feel more lived-in, which makes the war-torn city of Kalona far more engaging.</p><h2 id="optimized-for-destruction">Optimized for destruction</h2><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="LGkHt2A8xaWFrGGHRCBrN4" name="Gears of War: E-Day" alt="Screenshots of Gears of War: Eday" src="https://cdn.mos.cms.futurecdn.net/LGkHt2A8xaWFrGGHRCBrN4-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: Xbox Game Studios / The Coalition )</span></figcaption></figure><p>As anyone playing games on the Xbox app, Steam or other clients will tell you, PC optimization is an important aspect of bringing any title to PC. Fortunately, we've seen many standout hits this year alone, and now this iconic Xbox franchise joins those ranks. Gears of War: E-Day is one of the best-looking PC games I've played in 2026, and that says a lot considering we've seen the likes of <a href="https://www.tomsguide.com/computing/i-played-control-resonant-on-pc-with-nvidias-dlss-ray-reconstruction-and-it-beats-ps5-pro-hands-down">Control Resonant</a>, <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">Pragmata</a> and <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> arrive and impress. </p><p>While targeting 4K at 60 FPS on Xbox is already enough to show all the glorious, gory visuals E-Day has in store, playing the origins of the Gears of War saga on PC allows it to take advantage of the latest in graphics. I mean, cranking up the destructive details with 100+ FPS, along with scene-defining lighting and crisp reflections, is a treat for the eyes. </p><p>If this is the way AAA games are being treated on PC, I have high hopes for everything else to come (especially for the upcoming <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">GTA VI</a>). </p><p>For a closer look at our thoughts, be sure to check out our full Gears of War: E-Day review.</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-gave-the-steam-machine-3-stars-at-launch-but-a-game-changing-update-and-this-1tb-storage-hack-has-me-thinking-differently">I gave the Steam Machine 3 stars at launch — but a game-changing update and this 1TB storage hack has me thinking differently</a></li><li><a href="https://www.tomsguide.com/computing/i-played-control-resonant-on-pc-with-nvidias-dlss-ray-reconstruction-and-it-beats-ps5-pro-hands-down">I played Control Resonant on PC with Nvidia's DLSS Ray Reconstruction — and it beats PS5 Pro hands down</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>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I tested the Asus ROG Zephyrus G14 (2026) like I was a student — its gaming, creator and AI performance is huge, but it comes at a cost ]]></title>
                                                                                                <dc:content><![CDATA[ <p>I’ve reviewed Zephyrus G14s for the past three years and the story is the same every year — one of the <a href="https://www.tomsguide.com/best-picks/best-gaming-laptops">best ultraportable gaming laptops</a> that money can buy (yes, even in this <a href="https://www.tomsguide.com/computing/ram-price-crisis-2026-everything-you-need-to-know">RAM price crisis</a>). And I’ve tested them like the true millennial I am with my workload by day (plenty of Chrome tabs along with some creator work) and gaming by night.</p><p>So for this year’s model, I switched things up a bit. Of course I ran my usual gamut of benchmarks to establish how this fares as a gaming laptop (spoiler alert: it performs great). But let’s kick things up a notch with some more serious 3D rendering and local AI pipelines. </p><p>Like, say you’re a STEM student, 3D artist or video producer. What happens then? Well, the first thing you notice is just how those Tensor cores in the Nvidia GPU paired with that Intel Panther Lake CPU blaze through any AI task you throw at it — running my Hermes Agent locally was mightily impressive. Blender is a breeze on here and Premiere Pro is mightily powerful with a graphics card in tow.</p><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="jAT7hXShNYd79b9dQcDXNM" name="Asus ROG Zephyrus G14 (2026)" alt="Asus ROG Zephyrus G14 (2026)" src="https://cdn.mos.cms.futurecdn.net/jAT7hXShNYd79b9dQcDXNM-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>And of course, all of this looks mesmerizing on that vibrant 2800 x 1800 120Hz OLED display. But getting more intense with it does start to show how hard those fans have to work in that slim shell. Plus, let’s not forget that the pricing has gone up quite a bit here — the RTX 5080 monster I tested last year was $100 less than this 5070 Ti option.</p><p>But then you see how the technically lower-end model performs <em>better </em>than the 5080 machine, you start to see how that redesigned ventilation is actually squeezing so much more sustained performance out of it. This is a peak improvement for the 2026 model, and while the fans do get loud, there is zero throttling. Asus solved a big issue here, and while that price stings, it does make this a great laptop.</p><h2 class="article-body__section" id="section-asus-rog-zephyrus-g14-2026-cheat-sheet"><span>Asus ROG Zephyrus G14 (2026): Cheat Sheet</span></h2><ul><li><strong>What is it? </strong>This is a premium 14-inch gaming laptop that doubles as a powerhouse for creative workflows and AI tasks.</li><li><strong>Who is it for? </strong>Serious gaming enthusiasts on the go, STEM students, 3D artist or video producers who need serious rendering muscle during the day.</li><li><strong>What does it cost? </strong>Pricing on Asus’ website <a href="https://eshop.asus.com/us/rog-zephyrus-g16-g14-2026.html?config=90NR0P94-M00450" target="_blank" rel="nofollow">starts from $3,599</a>, but there is a model on <a href="https://www.bestbuy.com/product/asus-rog-zephyrus-g14-14-oled-3k-gaming-laptop-intel-core-ultra-9-386h-2026-16gb-memory-geforce-rtx-5070ti-1tb-storage-platinum-white/JJGHGSLS24/sku/6673587" target="_blank" rel="nofollow">Best Buy for $500 less.</a></li><li><strong>What do we like? </strong>The vibrant 2880 x 1800 120Hz OLED display is stunning, the overall performance is blistering (Handbrake transcoding in 3:19), and it packs massive local AI acceleration.</li><li><strong>What don’t we like? </strong>The 8-hour and 32-minute web battery life falls just short of a full workday, the fans get aggressively loud under load, and the high price puts it out of reach for casual users.</li></ul><h2 class="article-body__section" id="section-asus-rog-zephyrus-g14-2026-specs"><span>Asus ROG Zephyrus G14 (2026): Specs</span></h2><div ><table><thead><tr><th class="firstcol empty" ></th><th  ><p>Asus ROG Zephyrus G14</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p>From $3,599</p></td></tr><tr><td class="firstcol " ><p><strong>Display</strong></p></td><td  ><p>14-inch (2880 x 1800) OLED | 120Hz | 0.2ms</p></td></tr><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>Up to Nvidia GeForce RTX 5080</p></td></tr><tr><td class="firstcol " ><p><strong>Memory</strong></p></td><td  ><p>Up to 32GB DDR5</p></td></tr><tr><td class="firstcol " ><p><strong>Storage</strong></p></td><td  ><p>Up to 2TB</p></td></tr><tr><td class="firstcol " ><p><strong>Ports</strong></p></td><td  ><p>1x HDMI 2.1, 2x USB 3.2 Gen 2 Type-A, 1x USB 3.2 Gen 2 Type-C, 1x USB 4, 1x SDXC card reader, 1x 3.5mm audio jack</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>Wi-Fi 7, Bluetooth 5.4</p></td></tr><tr><td class="firstcol " ><p><strong>Dimensions</strong></p></td><td  ><p>12.2 x 8.7 x 0.6 inches</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>3.5 pounds</p></td></tr></tbody></table></div><h2 class="article-body__section" id="section-asus-rog-zephyrus-g14-2026-the-ups"><span>Asus ROG Zephyrus G14 (2026): The ups</span></h2><p>I’ll judge this on gaming for sure, but let’s lean a little bit more on the fact this can be a one-size-fits-all machine for local AI and creative pros alike, as well as a AAA play system. In that lens, this is huge.</p><h2 id="the-handy-design-tweaks">The handy design tweaks</h2><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="Ucsj86voNkmutW3oNyyDBM" name="Asus ROG Zephyrus G14 (2026)" alt="Asus ROG Zephyrus G14 (2026)" src="https://cdn.mos.cms.futurecdn.net/Ucsj86voNkmutW3oNyyDBM-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>So yes, this is exactly the same physical design as last year’s model, and while that aesthetic may be getting a little old in its third year, it’s still a premium-looking and feeling machine with that CNC-machined aluminum body.</p><p>Keyboard ergonomics continue to feel great with a massive touchpad down below. All in all, having your hands on the G14 is still a nice place to be. But I don’t want to talk about that.</p><p>What I do want to talk about is the small but significant changes Asus has made that you may not see, but do come in clutch. First of all, sayonara microSD card — we’ve got a full-size SDXC card reader here. That’s been huge for my snap happy self porting footage over!</p><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="TAf7zsBvVhXnwLfrKrM2NM" name="Asus ROG Zephyrus G14 (2026)" alt="Asus ROG Zephyrus G14 (2026)" src="https://cdn.mos.cms.futurecdn.net/TAf7zsBvVhXnwLfrKrM2NM-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>And second, that bottom panel has been redesigned to take air in much more efficiently. That means superior airflow access across all the internals and consistent sustained performance without any remote chance of thermal throttling.</p><p>Thanks to these new airflow paths and ventilation patterns, the total power going to the GPU has gone up from 110 watts all the way up to 130 watts. What you’re about to see in my numbers is how power matters a <strong>whole </strong>lot more than the card you have inside.</p><h2 id="serious-silicon-muscle">Serious silicon muscle</h2><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="EkKayHRZfFjYJDTyXAJDSM" name="Asus ROG Zephyrus G14 (2026)" alt="Asus ROG Zephyrus G14 (2026)" src="https://cdn.mos.cms.futurecdn.net/EkKayHRZfFjYJDTyXAJDSM-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>If you are a student or pro — compiling code or rendering video, this machine will not keep you waiting. That Intel Core Ultra 9 386H inside is posting lightning fast numbers on Geekbench, alongside transcoding 4K video rather fast.</p><div ><table><thead><tr><th class="firstcol " ><p>Laptop</p></th><th  ><p>Geekbench 7 single core/multicore</p></th><th  ><p>Handbrake transcore 4K to 1080p (mm:ss)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Asus ROG Zephyus G14 (2026)</strong></p></td><td  ><p>2461/16443</p></td><td  ><p>3:19</p></td></tr><tr><td class="firstcol " ><p><strong>Asus ROG Zephyrus G14 (2025)</strong></p></td><td  ><p>1651/15341</p></td><td  ><p>3:12</p></td></tr><tr><td class="firstcol " ><p><strong>MSI Stealth 16 AI+</strong></p></td><td  ><p>2442 / 13792</p></td><td  ><p>3:31</p></td></tr></tbody></table></div><p>Of course, Apple Silicon stays ahead in some key areas with a 4,000+ single-core speed, but that’s not the point of this laptop. This is your productivity machine by day and gaming monster by night, and with 6,144 MB/s read speeds on that SSD, large amounts of data load fast and those single-core speeds ensure zippy opens.</p><p>I never felt any stuttering or slowdowns in any process I threw at it.</p><h2 id="local-ai-and-uncompromised-gaming">Local AI and uncompromised 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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="dNW3jWXxfBnC9DJZeALJLM" name="Asus ROG Zephyrus G14 (2026)" alt="Asus ROG Zephyrus G14 (2026)" src="https://cdn.mos.cms.futurecdn.net/dNW3jWXxfBnC9DJZeALJLM-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>That RTX 5070 Ti isn’t just for pushing pixels (even though it does that really well); it’s a localized AI powerhouse — absolutely crushing our benchmarks, but also opening a door to local agentic task completion via Hermes Agent.</p><div ><table><thead><tr><th class="firstcol " ><p>Laptop</p></th><th  ><p>Geekbench AI ONNX GPU test (Quantized)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Asus ROG Zephyus G14 (2026)</strong></p></td><td  ><p>16558</p></td></tr><tr><td class="firstcol " ><p><strong>Asus ROG Zephyrus G14 (2025)</strong></p></td><td  ><p>18191</p></td></tr><tr><td class="firstcol " ><p><strong>MSI Stealth 16 AI+ (2026)</strong></p></td><td  ><p>12589</p></td></tr></tbody></table></div><p>Setting up my own personal assistant to give me a daily rundown of my emails, delete unnecessary ones and send replies, while setting me up a tasklist for the day while I drink my coffee has become a huge way to relax before my start of the day. </p><p>Throw in GPU-accelerated 3D rendering and 4K edits too, and you’re onto a winning formula for getting serious stuff done. These margins between 5070 Ti and 5080 are <strong>much </strong>closer than they should be, and the sustained performance is much stronger on the 2026 model to boot.</p><p>Then there’s the gaming, which essentially leapfrogs the RTX 5080 G14 because of that power differential we talked about!</p><div ><table><thead><tr><th class="firstcol " ><p>Laptop</p></th><th  ><p>3DMark Average Score</p></th><th  ><p>Cyberpunk 2077 1080p RT Ultra</p></th><th  ><p>Black Myth: Wukong 1080p Cinematic</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Asus ROG Zephyus G14 (2026 RTX 5070 Ti)</strong></p></td><td  ><p>12,428</p></td><td  ><p>44 FPS</p></td><td  ><p>49 FPS</p></td></tr><tr><td class="firstcol " ><p><strong>Asus ROG Zephyrus G14 (2025 RTX 5080)</strong></p></td><td  ><p>12,370</p></td><td  ><p>49.7 FPS</p></td><td  ><p>47 FPS</p></td></tr><tr><td class="firstcol " ><p><strong>MSI Stealth 16 AI+ (2026 - RTX 5060)</strong></p></td><td  ><p>8,587</p></td><td  ><p>31.2 FPS</p></td><td  ><p>28 FPS</p></td></tr></tbody></table></div><p>Make no mistake about it. This is an all-round beast of a system.</p><h2 class="article-body__section" id="section-asus-rog-zephyrus-g14-2026-the-downs"><span>Asus ROG Zephyrus G14 (2026): The downs</span></h2><p>Same as previous Zephyruses, it’s not all a walk in the park. The G14 falls victim to two recurring issues from the last model, as well as a RAMageddon sting.</p><h2 id="you-ll-need-to-pack-the-charger">You’ll need to pack the charger</h2><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="UocNcs9nBbQbM5hJs4RLQM" name="Asus ROG Zephyrus G14 (2026)" alt="Asus ROG Zephyrus G14 (2026)" src="https://cdn.mos.cms.futurecdn.net/UocNcs9nBbQbM5hJs4RLQM-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>While the raw horsepower is strong for the big tasks, sometimes you just need to make the most of that highly-portable 14-inch shell to take to class or a coffee shop.</p><div ><table><thead><tr><th class="firstcol " ><p>Laptop</p></th><th  ><p>Battery life test result (hh:mm)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Asus ROG Zephyus G14 (2026)</strong></p></td><td  ><p>08:32</p></td></tr><tr><td class="firstcol " ><p><strong>Asus ROG Zephyrus G14 (2025)</strong></p></td><td  ><p>n/a</p></td></tr><tr><td class="firstcol " ><p><strong>MSI Stealth 16 AI+ (2026)</strong></p></td><td  ><p>10:49</p></td></tr></tbody></table></div><p>However, in our continuous web surfing battery test, the G14 tapped out in just under 9 hours. That’s respectable for a gaming rig, but does fall short of that true all-day battery life you’d need to keep it worry free in these circumstances.</p><h2 id="jet-engine-acoustics">Jet engine acoustics</h2><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="AzFd7wvrfkiv4ZVmTbdPPM" name="Asus ROG Zephyrus G14 (2026)" alt="Asus ROG Zephyrus G14 (2026)" src="https://cdn.mos.cms.futurecdn.net/AzFd7wvrfkiv4ZVmTbdPPM-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>That improved airflow must’ve come with some faster spinning fans or something, because this is loud while AAA gaming or heavy Blender rendering. It’s good to hear the active cooling doing its job on a strong, sustained basis, but also it will draw attention if you’re in a quiet meeting room or lecture hall.</p><p>You’ll absolutely want to get noise-canceling headphones alongside this.</p><h2 id="this-is-pricey">This is pricey</h2><p>Let me repeat. This is $3,599. All this performance wrapped in an aluminum chassis with a top-tier OLED display does not come cheap. It’s a tough sell for standard students or gamers who just want that punch without paying big for sure.</p><p>Fortunately, Asus is keeping a couple of the 2025 SKUs around to offer slightly lower prices. But it comes as no surprise that RAMageddon is hitting this very memory-hungry machine hard.</p><h2 class="article-body__section" id="section-asus-rog-zephyrus-g14-2026-verdict"><span>Asus ROG Zephyrus G14 (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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="QXHUSYRxwEZwkVb7XiwXNM" name="Asus ROG Zephyrus G14 (2026)" alt="Asus ROG Zephyrus G14 (2026)" src="https://cdn.mos.cms.futurecdn.net/QXHUSYRxwEZwkVb7XiwXNM-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>With those overhauled internals making a technically worse GPU perform better than its superior sibling, this G14 is a triumph of condensed engineering. Asus has built a machine that feels luxuriously familiar and serves as a dual-purpose weapon: elite gaming laptop by night, and an uncompromising workstation by day.</p><p>However, the laws of physics still apply. The aggressive fan noise, sub-9-hour battery life and staggering price tag keep it from being a universal recommendation. But if you are a student or creator who demands real power on the go (and you don’t mind carrying a charging brick) this is one of the most capable on the market.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/gaming-laptops/asus-rog-zephyrus-g14-2026-review</link>
                                                                            <description>
                            <![CDATA[ My review of the 2026 Asus ROG Zephyrus G14, testing its Intel Core Ultra 9 386H and RTX 5070 Ti across gaming, creator workloads, and local AI tasks. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">V4gMWkdNAtbCuFYXYwAgXa</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/Hv6uLo5AKe8P9RFaMVFswK-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 01 Oct 2026 09:30:00 +0000</pubDate>                                                                                                                                <updated>Thu, 01 Oct 2026 09:50:19 +0000</updated>
                                                                                                                                            <category><![CDATA[Gaming Laptops]]></category>
                                                    <category><![CDATA[Computing]]></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/Hv6uLo5AKe8P9RFaMVFswK-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Asus ROG Zephyrus G14 (2026)]]></media:description>                                                            <media:text><![CDATA[Asus ROG Zephyrus G14 (2026)]]></media:text>
                                <media:title type="plain"><![CDATA[Asus ROG Zephyrus G14 (2026)]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/Hv6uLo5AKe8P9RFaMVFswK-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I’ve reviewed Zephyrus G14s for the past three years and the story is the same every year — one of the <a href="https://www.tomsguide.com/best-picks/best-gaming-laptops">best ultraportable gaming laptops</a> that money can buy (yes, even in this <a href="https://www.tomsguide.com/computing/ram-price-crisis-2026-everything-you-need-to-know">RAM price crisis</a>). And I’ve tested them like the true millennial I am with my workload by day (plenty of Chrome tabs along with some creator work) and gaming by night.</p><p>So for this year’s model, I switched things up a bit. Of course I ran my usual gamut of benchmarks to establish how this fares as a gaming laptop (spoiler alert: it performs great). But let’s kick things up a notch with some more serious 3D rendering and local AI pipelines. </p><p>Like, say you’re a STEM student, 3D artist or video producer. What happens then? Well, the first thing you notice is just how those Tensor cores in the Nvidia GPU paired with that Intel Panther Lake CPU blaze through any AI task you throw at it — running my Hermes Agent locally was mightily impressive. Blender is a breeze on here and Premiere Pro is mightily powerful with a graphics card in tow.</p><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="jAT7hXShNYd79b9dQcDXNM" name="Asus ROG Zephyrus G14 (2026)" alt="Asus ROG Zephyrus G14 (2026)" src="https://cdn.mos.cms.futurecdn.net/jAT7hXShNYd79b9dQcDXNM-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>And of course, all of this looks mesmerizing on that vibrant 2800 x 1800 120Hz OLED display. But getting more intense with it does start to show how hard those fans have to work in that slim shell. Plus, let’s not forget that the pricing has gone up quite a bit here — the RTX 5080 monster I tested last year was $100 less than this 5070 Ti option.</p><p>But then you see how the technically lower-end model performs <em>better </em>than the 5080 machine, you start to see how that redesigned ventilation is actually squeezing so much more sustained performance out of it. This is a peak improvement for the 2026 model, and while the fans do get loud, there is zero throttling. Asus solved a big issue here, and while that price stings, it does make this a great laptop.</p><h2 class="article-body__section" id="section-asus-rog-zephyrus-g14-2026-cheat-sheet"><span>Asus ROG Zephyrus G14 (2026): Cheat Sheet</span></h2><ul><li><strong>What is it? </strong>This is a premium 14-inch gaming laptop that doubles as a powerhouse for creative workflows and AI tasks.</li><li><strong>Who is it for? </strong>Serious gaming enthusiasts on the go, STEM students, 3D artist or video producers who need serious rendering muscle during the day.</li><li><strong>What does it cost? </strong>Pricing on Asus’ website <a href="https://eshop.asus.com/us/rog-zephyrus-g16-g14-2026.html?config=90NR0P94-M00450" target="_blank" rel="nofollow">starts from $3,599</a>, but there is a model on <a href="https://www.bestbuy.com/product/asus-rog-zephyrus-g14-14-oled-3k-gaming-laptop-intel-core-ultra-9-386h-2026-16gb-memory-geforce-rtx-5070ti-1tb-storage-platinum-white/JJGHGSLS24/sku/6673587" target="_blank" rel="nofollow">Best Buy for $500 less.</a></li><li><strong>What do we like? </strong>The vibrant 2880 x 1800 120Hz OLED display is stunning, the overall performance is blistering (Handbrake transcoding in 3:19), and it packs massive local AI acceleration.</li><li><strong>What don’t we like? </strong>The 8-hour and 32-minute web battery life falls just short of a full workday, the fans get aggressively loud under load, and the high price puts it out of reach for casual users.</li></ul><h2 class="article-body__section" id="section-asus-rog-zephyrus-g14-2026-specs"><span>Asus ROG Zephyrus G14 (2026): Specs</span></h2><div ><table><thead><tr><th class="firstcol empty" ></th><th  ><p>Asus ROG Zephyrus G14</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p>From $3,599</p></td></tr><tr><td class="firstcol " ><p><strong>Display</strong></p></td><td  ><p>14-inch (2880 x 1800) OLED | 120Hz | 0.2ms</p></td></tr><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>Up to Nvidia GeForce RTX 5080</p></td></tr><tr><td class="firstcol " ><p><strong>Memory</strong></p></td><td  ><p>Up to 32GB DDR5</p></td></tr><tr><td class="firstcol " ><p><strong>Storage</strong></p></td><td  ><p>Up to 2TB</p></td></tr><tr><td class="firstcol " ><p><strong>Ports</strong></p></td><td  ><p>1x HDMI 2.1, 2x USB 3.2 Gen 2 Type-A, 1x USB 3.2 Gen 2 Type-C, 1x USB 4, 1x SDXC card reader, 1x 3.5mm audio jack</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>Wi-Fi 7, Bluetooth 5.4</p></td></tr><tr><td class="firstcol " ><p><strong>Dimensions</strong></p></td><td  ><p>12.2 x 8.7 x 0.6 inches</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>3.5 pounds</p></td></tr></tbody></table></div><h2 class="article-body__section" id="section-asus-rog-zephyrus-g14-2026-the-ups"><span>Asus ROG Zephyrus G14 (2026): The ups</span></h2><p>I’ll judge this on gaming for sure, but let’s lean a little bit more on the fact this can be a one-size-fits-all machine for local AI and creative pros alike, as well as a AAA play system. In that lens, this is huge.</p><h2 id="the-handy-design-tweaks">The handy design tweaks</h2><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="Ucsj86voNkmutW3oNyyDBM" name="Asus ROG Zephyrus G14 (2026)" alt="Asus ROG Zephyrus G14 (2026)" src="https://cdn.mos.cms.futurecdn.net/Ucsj86voNkmutW3oNyyDBM-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>So yes, this is exactly the same physical design as last year’s model, and while that aesthetic may be getting a little old in its third year, it’s still a premium-looking and feeling machine with that CNC-machined aluminum body.</p><p>Keyboard ergonomics continue to feel great with a massive touchpad down below. All in all, having your hands on the G14 is still a nice place to be. But I don’t want to talk about that.</p><p>What I do want to talk about is the small but significant changes Asus has made that you may not see, but do come in clutch. First of all, sayonara microSD card — we’ve got a full-size SDXC card reader here. That’s been huge for my snap happy self porting footage over!</p><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="TAf7zsBvVhXnwLfrKrM2NM" name="Asus ROG Zephyrus G14 (2026)" alt="Asus ROG Zephyrus G14 (2026)" src="https://cdn.mos.cms.futurecdn.net/TAf7zsBvVhXnwLfrKrM2NM-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>And second, that bottom panel has been redesigned to take air in much more efficiently. That means superior airflow access across all the internals and consistent sustained performance without any remote chance of thermal throttling.</p><p>Thanks to these new airflow paths and ventilation patterns, the total power going to the GPU has gone up from 110 watts all the way up to 130 watts. What you’re about to see in my numbers is how power matters a <strong>whole </strong>lot more than the card you have inside.</p><h2 id="serious-silicon-muscle">Serious silicon muscle</h2><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="EkKayHRZfFjYJDTyXAJDSM" name="Asus ROG Zephyrus G14 (2026)" alt="Asus ROG Zephyrus G14 (2026)" src="https://cdn.mos.cms.futurecdn.net/EkKayHRZfFjYJDTyXAJDSM-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>If you are a student or pro — compiling code or rendering video, this machine will not keep you waiting. That Intel Core Ultra 9 386H inside is posting lightning fast numbers on Geekbench, alongside transcoding 4K video rather fast.</p><div ><table><thead><tr><th class="firstcol " ><p>Laptop</p></th><th  ><p>Geekbench 7 single core/multicore</p></th><th  ><p>Handbrake transcore 4K to 1080p (mm:ss)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Asus ROG Zephyus G14 (2026)</strong></p></td><td  ><p>2461/16443</p></td><td  ><p>3:19</p></td></tr><tr><td class="firstcol " ><p><strong>Asus ROG Zephyrus G14 (2025)</strong></p></td><td  ><p>1651/15341</p></td><td  ><p>3:12</p></td></tr><tr><td class="firstcol " ><p><strong>MSI Stealth 16 AI+</strong></p></td><td  ><p>2442 / 13792</p></td><td  ><p>3:31</p></td></tr></tbody></table></div><p>Of course, Apple Silicon stays ahead in some key areas with a 4,000+ single-core speed, but that’s not the point of this laptop. This is your productivity machine by day and gaming monster by night, and with 6,144 MB/s read speeds on that SSD, large amounts of data load fast and those single-core speeds ensure zippy opens.</p><p>I never felt any stuttering or slowdowns in any process I threw at it.</p><h2 id="local-ai-and-uncompromised-gaming">Local AI and uncompromised 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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="dNW3jWXxfBnC9DJZeALJLM" name="Asus ROG Zephyrus G14 (2026)" alt="Asus ROG Zephyrus G14 (2026)" src="https://cdn.mos.cms.futurecdn.net/dNW3jWXxfBnC9DJZeALJLM-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>That RTX 5070 Ti isn’t just for pushing pixels (even though it does that really well); it’s a localized AI powerhouse — absolutely crushing our benchmarks, but also opening a door to local agentic task completion via Hermes Agent.</p><div ><table><thead><tr><th class="firstcol " ><p>Laptop</p></th><th  ><p>Geekbench AI ONNX GPU test (Quantized)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Asus ROG Zephyus G14 (2026)</strong></p></td><td  ><p>16558</p></td></tr><tr><td class="firstcol " ><p><strong>Asus ROG Zephyrus G14 (2025)</strong></p></td><td  ><p>18191</p></td></tr><tr><td class="firstcol " ><p><strong>MSI Stealth 16 AI+ (2026)</strong></p></td><td  ><p>12589</p></td></tr></tbody></table></div><p>Setting up my own personal assistant to give me a daily rundown of my emails, delete unnecessary ones and send replies, while setting me up a tasklist for the day while I drink my coffee has become a huge way to relax before my start of the day. </p><p>Throw in GPU-accelerated 3D rendering and 4K edits too, and you’re onto a winning formula for getting serious stuff done. These margins between 5070 Ti and 5080 are <strong>much </strong>closer than they should be, and the sustained performance is much stronger on the 2026 model to boot.</p><p>Then there’s the gaming, which essentially leapfrogs the RTX 5080 G14 because of that power differential we talked about!</p><div ><table><thead><tr><th class="firstcol " ><p>Laptop</p></th><th  ><p>3DMark Average Score</p></th><th  ><p>Cyberpunk 2077 1080p RT Ultra</p></th><th  ><p>Black Myth: Wukong 1080p Cinematic</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Asus ROG Zephyus G14 (2026 RTX 5070 Ti)</strong></p></td><td  ><p>12,428</p></td><td  ><p>44 FPS</p></td><td  ><p>49 FPS</p></td></tr><tr><td class="firstcol " ><p><strong>Asus ROG Zephyrus G14 (2025 RTX 5080)</strong></p></td><td  ><p>12,370</p></td><td  ><p>49.7 FPS</p></td><td  ><p>47 FPS</p></td></tr><tr><td class="firstcol " ><p><strong>MSI Stealth 16 AI+ (2026 - RTX 5060)</strong></p></td><td  ><p>8,587</p></td><td  ><p>31.2 FPS</p></td><td  ><p>28 FPS</p></td></tr></tbody></table></div><p>Make no mistake about it. This is an all-round beast of a system.</p><h2 class="article-body__section" id="section-asus-rog-zephyrus-g14-2026-the-downs"><span>Asus ROG Zephyrus G14 (2026): The downs</span></h2><p>Same as previous Zephyruses, it’s not all a walk in the park. The G14 falls victim to two recurring issues from the last model, as well as a RAMageddon sting.</p><h2 id="you-ll-need-to-pack-the-charger">You’ll need to pack the charger</h2><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="UocNcs9nBbQbM5hJs4RLQM" name="Asus ROG Zephyrus G14 (2026)" alt="Asus ROG Zephyrus G14 (2026)" src="https://cdn.mos.cms.futurecdn.net/UocNcs9nBbQbM5hJs4RLQM-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>While the raw horsepower is strong for the big tasks, sometimes you just need to make the most of that highly-portable 14-inch shell to take to class or a coffee shop.</p><div ><table><thead><tr><th class="firstcol " ><p>Laptop</p></th><th  ><p>Battery life test result (hh:mm)</p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Asus ROG Zephyus G14 (2026)</strong></p></td><td  ><p>08:32</p></td></tr><tr><td class="firstcol " ><p><strong>Asus ROG Zephyrus G14 (2025)</strong></p></td><td  ><p>n/a</p></td></tr><tr><td class="firstcol " ><p><strong>MSI Stealth 16 AI+ (2026)</strong></p></td><td  ><p>10:49</p></td></tr></tbody></table></div><p>However, in our continuous web surfing battery test, the G14 tapped out in just under 9 hours. That’s respectable for a gaming rig, but does fall short of that true all-day battery life you’d need to keep it worry free in these circumstances.</p><h2 id="jet-engine-acoustics">Jet engine acoustics</h2><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="AzFd7wvrfkiv4ZVmTbdPPM" name="Asus ROG Zephyrus G14 (2026)" alt="Asus ROG Zephyrus G14 (2026)" src="https://cdn.mos.cms.futurecdn.net/AzFd7wvrfkiv4ZVmTbdPPM-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>That improved airflow must’ve come with some faster spinning fans or something, because this is loud while AAA gaming or heavy Blender rendering. It’s good to hear the active cooling doing its job on a strong, sustained basis, but also it will draw attention if you’re in a quiet meeting room or lecture hall.</p><p>You’ll absolutely want to get noise-canceling headphones alongside this.</p><h2 id="this-is-pricey">This is pricey</h2><p>Let me repeat. This is $3,599. All this performance wrapped in an aluminum chassis with a top-tier OLED display does not come cheap. It’s a tough sell for standard students or gamers who just want that punch without paying big for sure.</p><p>Fortunately, Asus is keeping a couple of the 2025 SKUs around to offer slightly lower prices. But it comes as no surprise that RAMageddon is hitting this very memory-hungry machine hard.</p><h2 class="article-body__section" id="section-asus-rog-zephyrus-g14-2026-verdict"><span>Asus ROG Zephyrus G14 (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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="QXHUSYRxwEZwkVb7XiwXNM" name="Asus ROG Zephyrus G14 (2026)" alt="Asus ROG Zephyrus G14 (2026)" src="https://cdn.mos.cms.futurecdn.net/QXHUSYRxwEZwkVb7XiwXNM-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>With those overhauled internals making a technically worse GPU perform better than its superior sibling, this G14 is a triumph of condensed engineering. Asus has built a machine that feels luxuriously familiar and serves as a dual-purpose weapon: elite gaming laptop by night, and an uncompromising workstation by day.</p><p>However, the laws of physics still apply. The aggressive fan noise, sub-9-hour battery life and staggering price tag keep it from being a universal recommendation. But if you are a student or creator who demands real power on the go (and you don’t mind carrying a charging brick) this is one of the most capable on the market.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ AI agents are going rogue and causing new security headaches  — but Nvidia has a way to stop them ]]></title>
                                                                                                <dc:content><![CDATA[ <p>From July to now, there have been a disturbing number of stories about AI agents going off on their own to do things they weren’t permitted to do.</p><p>More specifically, OpenAI and Anthropic agents have gotten involved in cases of leaving their intended environments, attempting to manipulate severs/software, obtaining unauthorized access to external systems, compromising an open-source platform’s infrastructure, etc. With the fears surrounding AI agents continuing to go rogue and terrifying proclamations made about AI causing the end of humanity, one of the world’s most prominent tech companies and AI proponents have created a platform that targets that AI security issue.</p><p>And with over 100 partners from the tech industry at large using the platform to govern their own AI agents’ actions, it seems like there’s a more concerted effort from the leaders in the AI space to prevent future security breakdowns.</p><p>Here’s what you need to know about Nvidia’s newly released Open Agent Safety Platform.</p><h2 id="nvidia-s-open-agent-safety-platform-is-meant-to-secure-ai-agents-from-the-testing-phase-to-their-deployment">Nvidia’s Open Agent Safety Platform is meant to secure AI agents from the testing phase to their deployment</h2><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="xojfkQHBEn6i44e4RVVQmc" name="shutterstock_2309655119-2" alt="jensen huang" src="https://cdn.mos.cms.futurecdn.net/xojfkQHBEn6i44e4RVVQmc-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: Shutterstock)</span></figcaption></figure><p>Nvidia’s Open Agent Safety Platform is described as an open software platform and reference system that works to strengthen AI security from its agent testing phase to its deployment. During that process, full-stack governance plus control across software and hardware, along with compute and robotics systems that run agents, will be implemented. Simply put, the Open Agent Safety Platform is meant to stop AI agents from going rogue.</p><p>Jensen Huang, the founder and CEO of NVIDIA, provided some comments in a <a href="https://nvidianews.nvidia.com/news/open-agent-safety-platform">press release</a> about his company’s newly unveiled platform. </p><p>“AI’s extraordinary potential for society will only be realized if we solve AI safety,” he stated. “As we continue to discover the frontier of AI capabilities, we must accelerate discovery at the frontier of AI safety. Safety and security require full-stack engineering. NVIDIA Open Agent Safety Platform brings together industry, researchers and public-sector organizations to share best practices, align on evaluation methods and foster international cooperation. Together, we can raise the bar for global AI safety.”</p><p>Nvidia’s AI security platform includes a secure runtime software called <a href="https://www.youtube.com/watch?v=GYYP-eW58ug">NVIDIA OpenShell</a>, which sets boundaries for AI agents running on CPUs. Those boundaries are set up as secure runtimes meant to control how autonomous AI agents execute their given tasks across open and closed models.</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2104499465055023424"><p lang="en" dir="ltr">Today, with over 100 industry partners, we introduced the NVIDIA Open Agent Safety Platform, bringing together OpenShell and Sentry.Artificial intelligence is extraordinary technology that will advance discovery, productivity, security, health, and prosperity for generations to… pic.twitter.com/dReAxwpRUn<a href="https://twitter.com/cantworkitout/status/2104499465055023424">September 28, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Over 100 AI Industry leaders have been announced as part of Nvidia’s AI safety strengthening efforts and are actively using its Open Agent Safety Platform. Some of the more recognizable names from that collective include Anthropic, Hugging Face, Microsoft, Perplexity and JPMorgan Chase.</p><p>Paul Smith, chief commercial officer of Anthropic, had this to say about the benefits that come with using Nvidia’s Open Agent Safety Platform. “Companies are giving AI agents more of their most important work, and they need to direct and verify what those agents do, especially in sensitive environments,” he noted. “Claude Managed Agents gives companies a clear view of what each agent is doing, and NVIDIA’s platform adds another layer of governance and control across hardware and software.”</p><p>Even SpaceXAI has signed on to make use of Nvidia’s secure AI platform for its Cursor coding agents and Grok models. Mike Nicolls, president of SpaceXAI, spoke about his company’s newfound collaboration with Nvidia. “As customers rely more on agents to get real work done, safety should be enforced outside the model by additional controls the agent can’t get past,” he stated. “Customers should be able to set those limits for Cursor and Grok and trust they will hold.”</p><h2 id="final-thoughts">Final thoughts</h2><p>The rising cases of AI agents breaking out of their environments and wreaking havoc across secure platforms have set off alarm bells throughout the industry, leading everyone from everyday people to politicians to call for new security measures to prevent even more incidents from happening. </p><p>The three-pronged attack of NVIDIA’s Open Agent Safety Platform, OpenShell open-source software and the Sentry reference system design come together to offer a more secure way to govern the systems that run AI agents. </p><p>I hope this newly launched platform results in a sharp decrease in rogue AI agent mishaps over time.</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-tried-the-viral-human-chatgpt-trick-and-it-actually-fixed-robotic-writing" target="_blank">I tried the viral '/human' ChatGPT trick and it actually fixed robotic writing</a></li><li><a href="https://www.tomsguide.com/ai/i-asked-metas-muse-ai-for-productivity-hacks-these-7-unconventional-ideas-surprised-me-the-most" target="_blank">I asked Meta’s Muse AI for productivity hacks — these 7 unconventional ideas surprised me the most</a></li><li><a href="https://www.tomsguide.com/ai/chatgpt/7-chatgpt-prompts-that-can-help-you-build-better-habits-one-of-them-inspired-3-major-changes-that-actually-stuck" target="_blank">7 ChatGPT prompts that can help you build better habits — one of them inspired 3 major changes that actually stuck</a></li></ul><div data-widget-type="comparison" data-model-name="Apple MacBook Neo"></div> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/ai/ai-agents-are-going-rogue-and-causing-new-security-headaches-but-nvidia-has-a-way-to-stop-them</link>
                                                                            <description>
                            <![CDATA[ With so many recent reports of AI agents going rogue, Nvidia has partnered with more than 100 partners to launch its Open Agent Safety Platform. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">NS59jhSeYDMRZNiFNBCtWM</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/a2Cy5LsRmMVU4XXbibztR8-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 28 Sep 2026 15:55:49 +0000</pubDate>                                                                                                                                <updated>Tue, 29 Sep 2026 00:43:59 +0000</updated>
                                                                                                                                            <category><![CDATA[AI]]></category>
                                                                                                                    <dc:creator><![CDATA[ Elton Jones ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/NVtYYXr3tEPUE67jf3HtXM-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/a2Cy5LsRmMVU4XXbibztR8-1920-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></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/a2Cy5LsRmMVU4XXbibztR8-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>From July to now, there have been a disturbing number of stories about AI agents going off on their own to do things they weren’t permitted to do.</p><p>More specifically, OpenAI and Anthropic agents have gotten involved in cases of leaving their intended environments, attempting to manipulate severs/software, obtaining unauthorized access to external systems, compromising an open-source platform’s infrastructure, etc. With the fears surrounding AI agents continuing to go rogue and terrifying proclamations made about AI causing the end of humanity, one of the world’s most prominent tech companies and AI proponents have created a platform that targets that AI security issue.</p><p>And with over 100 partners from the tech industry at large using the platform to govern their own AI agents’ actions, it seems like there’s a more concerted effort from the leaders in the AI space to prevent future security breakdowns.</p><p>Here’s what you need to know about Nvidia’s newly released Open Agent Safety Platform.</p><h2 id="nvidia-s-open-agent-safety-platform-is-meant-to-secure-ai-agents-from-the-testing-phase-to-their-deployment">Nvidia’s Open Agent Safety Platform is meant to secure AI agents from the testing phase to their deployment</h2><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="xojfkQHBEn6i44e4RVVQmc" name="shutterstock_2309655119-2" alt="jensen huang" src="https://cdn.mos.cms.futurecdn.net/xojfkQHBEn6i44e4RVVQmc-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: Shutterstock)</span></figcaption></figure><p>Nvidia’s Open Agent Safety Platform is described as an open software platform and reference system that works to strengthen AI security from its agent testing phase to its deployment. During that process, full-stack governance plus control across software and hardware, along with compute and robotics systems that run agents, will be implemented. Simply put, the Open Agent Safety Platform is meant to stop AI agents from going rogue.</p><p>Jensen Huang, the founder and CEO of NVIDIA, provided some comments in a <a href="https://nvidianews.nvidia.com/news/open-agent-safety-platform">press release</a> about his company’s newly unveiled platform. </p><p>“AI’s extraordinary potential for society will only be realized if we solve AI safety,” he stated. “As we continue to discover the frontier of AI capabilities, we must accelerate discovery at the frontier of AI safety. Safety and security require full-stack engineering. NVIDIA Open Agent Safety Platform brings together industry, researchers and public-sector organizations to share best practices, align on evaluation methods and foster international cooperation. Together, we can raise the bar for global AI safety.”</p><p>Nvidia’s AI security platform includes a secure runtime software called <a href="https://www.youtube.com/watch?v=GYYP-eW58ug">NVIDIA OpenShell</a>, which sets boundaries for AI agents running on CPUs. Those boundaries are set up as secure runtimes meant to control how autonomous AI agents execute their given tasks across open and closed models.</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2104499465055023424"><p lang="en" dir="ltr">Today, with over 100 industry partners, we introduced the NVIDIA Open Agent Safety Platform, bringing together OpenShell and Sentry.Artificial intelligence is extraordinary technology that will advance discovery, productivity, security, health, and prosperity for generations to… pic.twitter.com/dReAxwpRUn<a href="https://twitter.com/cantworkitout/status/2104499465055023424">September 28, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>Over 100 AI Industry leaders have been announced as part of Nvidia’s AI safety strengthening efforts and are actively using its Open Agent Safety Platform. Some of the more recognizable names from that collective include Anthropic, Hugging Face, Microsoft, Perplexity and JPMorgan Chase.</p><p>Paul Smith, chief commercial officer of Anthropic, had this to say about the benefits that come with using Nvidia’s Open Agent Safety Platform. “Companies are giving AI agents more of their most important work, and they need to direct and verify what those agents do, especially in sensitive environments,” he noted. “Claude Managed Agents gives companies a clear view of what each agent is doing, and NVIDIA’s platform adds another layer of governance and control across hardware and software.”</p><p>Even SpaceXAI has signed on to make use of Nvidia’s secure AI platform for its Cursor coding agents and Grok models. Mike Nicolls, president of SpaceXAI, spoke about his company’s newfound collaboration with Nvidia. “As customers rely more on agents to get real work done, safety should be enforced outside the model by additional controls the agent can’t get past,” he stated. “Customers should be able to set those limits for Cursor and Grok and trust they will hold.”</p><h2 id="final-thoughts">Final thoughts</h2><p>The rising cases of AI agents breaking out of their environments and wreaking havoc across secure platforms have set off alarm bells throughout the industry, leading everyone from everyday people to politicians to call for new security measures to prevent even more incidents from happening. </p><p>The three-pronged attack of NVIDIA’s Open Agent Safety Platform, OpenShell open-source software and the Sentry reference system design come together to offer a more secure way to govern the systems that run AI agents. </p><p>I hope this newly launched platform results in a sharp decrease in rogue AI agent mishaps over time.</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-tried-the-viral-human-chatgpt-trick-and-it-actually-fixed-robotic-writing" target="_blank">I tried the viral '/human' ChatGPT trick and it actually fixed robotic writing</a></li><li><a href="https://www.tomsguide.com/ai/i-asked-metas-muse-ai-for-productivity-hacks-these-7-unconventional-ideas-surprised-me-the-most" target="_blank">I asked Meta’s Muse AI for productivity hacks — these 7 unconventional ideas surprised me the most</a></li><li><a href="https://www.tomsguide.com/ai/chatgpt/7-chatgpt-prompts-that-can-help-you-build-better-habits-one-of-them-inspired-3-major-changes-that-actually-stuck" target="_blank">7 ChatGPT prompts that can help you build better habits — one of them inspired 3 major changes that actually stuck</a></li></ul><div data-widget-type="comparison" data-model-name="Apple MacBook Neo"></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I played Control Resonant on PC with Nvidia's DLSS Ray Reconstruction — and it beats PS5 Pro hands down ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Some games are made for PC gaming. There are classics like Half-Life, Crysis, Counter-Strike and Diablo, but also ones that push graphics to the limit, like <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>, <a href="https://www.tomsguide.com/reviews/cyberpunk-2077">Cyberpunk 2077</a>, or <a href="https://www.tomsguide.com/news/baldurs-gate-iii-demo">Baldur's Gate III</a>. One I'd gladly add to that list? Control Resonant.</p><p><a href="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">I got to preview</a> Remedy Entertainment's latest action-heavy sequel, Control Resonant, over the summer on PC, and I was already impressed with the striking visuals and performance it showed off. And that was still when it was a work in progress; as in, lighting and framerate were still being worked on, and I didn't even see the full extent of <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">Nvidia's DLSS 4.5</a> or its ray reconstruction. </p><p>Now, after spending over 30 hours leaping between rooftops, pummeling an assortment of warped creatures and generally defying gravity in a distorted Manhattan, I've seen what Control Resonant has to show off.</p><p>Aside from its tremendously satisfying combat and engaging story, this has some truly outstanding visuals, from its detailed particle effects to its range of lighting and scenery — especially for its semi-open world setting. </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>Control Resonant is an excellently optimized title for PC, only made better by its wide variety of graphics settings to tinker with. So, if you're wondering where to play this action-packed RPG, I'd point you towards PC. And you can find out more below. </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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="6YKBu8oqsXE2STz3Y8ja6R" name="Control Resonant" alt="Control Resonant" src="https://cdn.mos.cms.futurecdn.net/6YKBu8oqsXE2STz3Y8ja6R-1920-80.png" 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: Remedy Entertainment)</span></figcaption></figure><p>Developers Remedy Entertainment wanted their next adventure optimized on all platforms, including PlayStation 5, Xbox Series X/S, Nvidia GeForce Now and even macOS down the line. And, of course, PC.</p><p>Now that it's ready for launch, Remedy has updated its minimum and recommended PC requirements. Fortunately, you don't need the latest <a href="https://www.tomsguide.com/computing/gpus/best-graphics-cards">graphics cards</a> or parts to get Control Resonant up and running. Just be sure to have a lot of storage space available. </p><p>Check out the requirements below, along with the PC specs I used. </p><div ><table><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>Tested specs</strong></p></td><td  ><p><strong>Minimum specs</strong></p></td><td  ><p><strong>Recommended specs</strong></p></td></tr><tr><td class="firstcol " ><p><strong>CPU</strong></p></td><td  ><p>AMD Ryzen 7 9700X</p></td><td  ><p>Intel i5-8500 / AMD Ryzen 5 3500</p></td><td  ><p>Intel Core i7-10700 / AMD Ryzen 7 3700X</p></td></tr><tr><td class="firstcol " ><p><strong>GPU</strong></p></td><td  ><p>Nvidia GeForce RTX 5070</p></td><td  ><p>Nvidia Geforce GTX 1070 / Radeon RX 5600 XT / Intel Arc A580</p></td><td  ><p>Nvidia Geforce RTX 3060 Ti / Radeon RX 6700 XT / Intel Arc B580</p></td></tr><tr><td class="firstcol " ><p><strong>RAM</strong></p></td><td  ><p>32GB</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>120GB</p></td><td  ><p>120GB</p></td><td  ><p>120GB</p></td></tr></tbody></table></div><h2 id="optimization-is-key">Optimization is key</h2><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="rXV28jj6TH8zYZHLurLUYS" name="Control Resonant" alt="Control Resonant" src="https://cdn.mos.cms.futurecdn.net/rXV28jj6TH8zYZHLurLUYS-1920-80.png" 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: Remedy Entertainment)</span></figcaption></figure><p>When speaking with Tony Polanco, who wrote the <a href="https://www.tomsguide.com/gaming/control-resonant-review">Control Resonant review</a> (give it a read), he said playing on the <a href="https://www.tomsguide.com/gaming/playstation/ps5-pro-review">PS5 Pro</a> was limiting. Sticking with "Balanced" mode, it delivered ray tracing and around 40 frames per second. Not bad, but <em>nothing </em>compared to what I got on PC.</p><p>I played Control Resonant on my <a href="https://www.tomsguide.com/computing/gaming-desktops/this-prebuilt-rtx-5070-pc-showed-me-4k-gaming-performance-for-less-and-im-surprised-as-you-are">Quoted Tech Frontier</a> gaming PC, equipped with an AMD Ryzen 7 9700X CPU, Nvidia GeForce RTX 5070 GPU and 32GB of RAM. Not a monster of a rig, but more than enough to achieve 4K gameplay with a stable 140 fps. Now that is a visual treat for any Control fan.</p><p>Even without Nvidia's tools, Control Resonant is a visually stunning game with mind-bending environments and standout set pieces. However, with Nvidia's DLSS 4.5 Dynamic Frame Generation, Ray Tracing for direct and indirect lighting, and DLSS Ray Reconstruction to make each detail even more realistic, it heightens the gameplay 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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Un3YbVTK7XaaP3fRFBTj5S" name="Control Resonant" alt="Control Resonant" src="https://cdn.mos.cms.futurecdn.net/Un3YbVTK7XaaP3fRFBTj5S-1920-80.png" 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: Remedy Entertainment)</span></figcaption></figure><p>Being able to reach a stable 140 fps (my 4K monitor has a max 144Hz refresh rate) at 4K resolution at High settings, with ray tracing set to Ultra, while still delivering exceptional ray tracing detail, not to mention Nvidia's AI-based Ray Reconstruction for high-quality lighting effects throughout the environment, is impressive. Even better knowing this is how well it will run at launch — not completely common for many PC ports these days.</p><p>From the sparks flying off Dylan Faden's Aberrant weapon as he beats and slices his way through enemies that explode in a miasma of multi-colored gas, to the quieter moments racing through an upside-down city block with soft red lights reflecting on windows and foggy street lighting, the quality of graphics on PC delivers a strong sense of atmosphere. One I was happy to explore for hours on end.</p><h2 id="39-control-39-your-visuals">'Control' your visuals</h2><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="i7KufTGNoKhuJHZ3vbszpS" name="Control Resonant" alt="Control Resonant" src="https://cdn.mos.cms.futurecdn.net/i7KufTGNoKhuJHZ3vbszpS-1920-80.png" 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: Remedy Entertainment)</span></figcaption></figure><p>I appreciate when a game gives you a host of settings to tinker with, beyond the simple "Quality" or "Performance" mode. Control Resonant offers graphics settings that let you control (pun intended) visuals to your liking, from shadow resolution to the quality of fog rendering.</p><p>What I love even more is when there's an explanation for what each option is and what it does. There are simple options like "Texture Resolution" to manage the sharpness of textures on surfaces, but there's also "Volumetric Spotlight," which I wouldn't have known controls the effects of flashlights, stage lights and more for more realistic light cones throughout the environment.</p><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="znUapbXHYR8iPxg2fWZ445" name="Control Resonant" alt="Control Resonant" src="https://cdn.mos.cms.futurecdn.net/znUapbXHYR8iPxg2fWZ445-1920-80.png" 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: Remedy Entertainment)</span></figcaption></figure><p>In a game where light sources come from multiple angles, both from realistic city street lamps and supernatural beings, these types of settings play a huge role in making Control Resonant look striking.</p><p>Even if you aren't a fan of fine-tuning your settings for picture-perfect results at the right frame rates, you can easily select the graphics preset that your system will run with ease. For example, I chose High, as it best suited my gaming PC to reach consistent frame rates over 120 FPS (with frame generation, of course). </p><p>The cherry on top is that Remedy Entertainment also wants Control Resonant to be optimized for the <a href="https://www.tomsguide.com/round-up/best-handheld-gaming-consoles">best gaming handhelds</a>. By selecting Handheld in the graphics preset option, you're getting the right options suited for lower-powered systems without needing to fiddle with settings. </p><h2 id="a-pc-triumph">A PC triumph</h2><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="axeug6JEdAPrcoMSK8UVDS" name="Control Resonant" alt="Control Resonant" src="https://cdn.mos.cms.futurecdn.net/axeug6JEdAPrcoMSK8UVDS-1920-80.png" 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: Remedy Entertainment)</span></figcaption></figure><p>As with the previous <a href="https://www.tomsguide.com/reviews/control">Control</a> becoming a benchmark for testing the performance of PCs, Control Resonant raises the stakes by taking full advantage of the latest tools, from DLSS 4.5 to ray tracing, and delivering a game perfectly optimized for PC gaming. </p><p>While the game has clearly been optimized to run well on all the platforms it's available on, it can be pushed to its limits when playing on PC. It will be interesting to see how Remedy handles its macOS port, but only time will tell once it arrives later this year. Who knows, we may even see it running on phones soon (as with <a href="https://www.tiktok.com/@tomsguide/video/7635330240482479391" target="_blank">Control: Ultimate Edition on iPhone!</a>).</p><p>If you have a gaming PC (laptop, desktop, or handheld) and want to see all the mind-bending visuals and splendor this has to offer, I'd recommend giving Control Resonant a go on PC. </p><p>For an in-depth look at our thoughts, check out our <a href="https://www.tomsguide.com/gaming/control-resonant-review">Control Resonant review</a>. </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/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><li><a href="https://www.tomsguide.com/gaming/marvels-wolverine-is-a-playable-summer-blockbuster-but-fades-from-memory-fast">Marvel’s Wolverine is a playable summer blockbuster — but fades from memory fast</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/i-played-control-resonant-on-pc-with-nvidias-dlss-ray-reconstruction-and-it-beats-ps5-pro-hands-down</link>
                                                                            <description>
                            <![CDATA[ Control Resonant looks stunning on PC thanks to Nvidia's Ray Reconstruction, DLSS 4.5 Dynamic Multi Frame Generation and more. Here are my thoughts after 30 hours of playing on a gaming PC. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">wjiTQMVfuRCJfK7NcPqMpE</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/KUip7z48eCcDL6ZfGDTAES-1920-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Fri, 25 Sep 2026 05:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[PC Gaming]]></category>
                                                    <category><![CDATA[Gaming]]></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 Buying Guide Editor and is fascinated by all things bizarre in tech. This usually leads to assorted coverage varying from washing machines designed for earbuds to expert buying advice on the latest laptops. Whether it&amp;#39;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 an interesting angle no matter the subject. &lt;/p&gt;&lt;p&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, tablets, smartwatches, VR headsets, 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&amp;#39;s not checking out the latest devices and updating buying guides with expert advice, 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/png" url="https://cdn.mos.cms.futurecdn.net/KUip7z48eCcDL6ZfGDTAES-1920-80.png">
                                                            <media:credit><![CDATA[Remedy Entertainment]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Control Resonant]]></media:description>                                                            <media:text><![CDATA[Control Resonant]]></media:text>
                                <media:title type="plain"><![CDATA[Control Resonant]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/KUip7z48eCcDL6ZfGDTAES-1920-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Some games are made for PC gaming. There are classics like Half-Life, Crysis, Counter-Strike and Diablo, but also ones that push graphics to the limit, like <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>, <a href="https://www.tomsguide.com/reviews/cyberpunk-2077">Cyberpunk 2077</a>, or <a href="https://www.tomsguide.com/news/baldurs-gate-iii-demo">Baldur's Gate III</a>. One I'd gladly add to that list? Control Resonant.</p><p><a href="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">I got to preview</a> Remedy Entertainment's latest action-heavy sequel, Control Resonant, over the summer on PC, and I was already impressed with the striking visuals and performance it showed off. And that was still when it was a work in progress; as in, lighting and framerate were still being worked on, and I didn't even see the full extent of <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">Nvidia's DLSS 4.5</a> or its ray reconstruction. </p><p>Now, after spending over 30 hours leaping between rooftops, pummeling an assortment of warped creatures and generally defying gravity in a distorted Manhattan, I've seen what Control Resonant has to show off.</p><p>Aside from its tremendously satisfying combat and engaging story, this has some truly outstanding visuals, from its detailed particle effects to its range of lighting and scenery — especially for its semi-open world setting. </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>Control Resonant is an excellently optimized title for PC, only made better by its wide variety of graphics settings to tinker with. So, if you're wondering where to play this action-packed RPG, I'd point you towards PC. And you can find out more below. </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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="6YKBu8oqsXE2STz3Y8ja6R" name="Control Resonant" alt="Control Resonant" src="https://cdn.mos.cms.futurecdn.net/6YKBu8oqsXE2STz3Y8ja6R-1920-80.png" 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: Remedy Entertainment)</span></figcaption></figure><p>Developers Remedy Entertainment wanted their next adventure optimized on all platforms, including PlayStation 5, Xbox Series X/S, Nvidia GeForce Now and even macOS down the line. And, of course, PC.</p><p>Now that it's ready for launch, Remedy has updated its minimum and recommended PC requirements. Fortunately, you don't need the latest <a href="https://www.tomsguide.com/computing/gpus/best-graphics-cards">graphics cards</a> or parts to get Control Resonant up and running. Just be sure to have a lot of storage space available. </p><p>Check out the requirements below, along with the PC specs I used. </p><div ><table><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>Tested specs</strong></p></td><td  ><p><strong>Minimum specs</strong></p></td><td  ><p><strong>Recommended specs</strong></p></td></tr><tr><td class="firstcol " ><p><strong>CPU</strong></p></td><td  ><p>AMD Ryzen 7 9700X</p></td><td  ><p>Intel i5-8500 / AMD Ryzen 5 3500</p></td><td  ><p>Intel Core i7-10700 / AMD Ryzen 7 3700X</p></td></tr><tr><td class="firstcol " ><p><strong>GPU</strong></p></td><td  ><p>Nvidia GeForce RTX 5070</p></td><td  ><p>Nvidia Geforce GTX 1070 / Radeon RX 5600 XT / Intel Arc A580</p></td><td  ><p>Nvidia Geforce RTX 3060 Ti / Radeon RX 6700 XT / Intel Arc B580</p></td></tr><tr><td class="firstcol " ><p><strong>RAM</strong></p></td><td  ><p>32GB</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>120GB</p></td><td  ><p>120GB</p></td><td  ><p>120GB</p></td></tr></tbody></table></div><h2 id="optimization-is-key">Optimization is key</h2><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="rXV28jj6TH8zYZHLurLUYS" name="Control Resonant" alt="Control Resonant" src="https://cdn.mos.cms.futurecdn.net/rXV28jj6TH8zYZHLurLUYS-1920-80.png" 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: Remedy Entertainment)</span></figcaption></figure><p>When speaking with Tony Polanco, who wrote the <a href="https://www.tomsguide.com/gaming/control-resonant-review">Control Resonant review</a> (give it a read), he said playing on the <a href="https://www.tomsguide.com/gaming/playstation/ps5-pro-review">PS5 Pro</a> was limiting. Sticking with "Balanced" mode, it delivered ray tracing and around 40 frames per second. Not bad, but <em>nothing </em>compared to what I got on PC.</p><p>I played Control Resonant on my <a href="https://www.tomsguide.com/computing/gaming-desktops/this-prebuilt-rtx-5070-pc-showed-me-4k-gaming-performance-for-less-and-im-surprised-as-you-are">Quoted Tech Frontier</a> gaming PC, equipped with an AMD Ryzen 7 9700X CPU, Nvidia GeForce RTX 5070 GPU and 32GB of RAM. Not a monster of a rig, but more than enough to achieve 4K gameplay with a stable 140 fps. Now that is a visual treat for any Control fan.</p><p>Even without Nvidia's tools, Control Resonant is a visually stunning game with mind-bending environments and standout set pieces. However, with Nvidia's DLSS 4.5 Dynamic Frame Generation, Ray Tracing for direct and indirect lighting, and DLSS Ray Reconstruction to make each detail even more realistic, it heightens the gameplay 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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Un3YbVTK7XaaP3fRFBTj5S" name="Control Resonant" alt="Control Resonant" src="https://cdn.mos.cms.futurecdn.net/Un3YbVTK7XaaP3fRFBTj5S-1920-80.png" 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: Remedy Entertainment)</span></figcaption></figure><p>Being able to reach a stable 140 fps (my 4K monitor has a max 144Hz refresh rate) at 4K resolution at High settings, with ray tracing set to Ultra, while still delivering exceptional ray tracing detail, not to mention Nvidia's AI-based Ray Reconstruction for high-quality lighting effects throughout the environment, is impressive. Even better knowing this is how well it will run at launch — not completely common for many PC ports these days.</p><p>From the sparks flying off Dylan Faden's Aberrant weapon as he beats and slices his way through enemies that explode in a miasma of multi-colored gas, to the quieter moments racing through an upside-down city block with soft red lights reflecting on windows and foggy street lighting, the quality of graphics on PC delivers a strong sense of atmosphere. One I was happy to explore for hours on end.</p><h2 id="39-control-39-your-visuals">'Control' your visuals</h2><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="i7KufTGNoKhuJHZ3vbszpS" name="Control Resonant" alt="Control Resonant" src="https://cdn.mos.cms.futurecdn.net/i7KufTGNoKhuJHZ3vbszpS-1920-80.png" 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: Remedy Entertainment)</span></figcaption></figure><p>I appreciate when a game gives you a host of settings to tinker with, beyond the simple "Quality" or "Performance" mode. Control Resonant offers graphics settings that let you control (pun intended) visuals to your liking, from shadow resolution to the quality of fog rendering.</p><p>What I love even more is when there's an explanation for what each option is and what it does. There are simple options like "Texture Resolution" to manage the sharpness of textures on surfaces, but there's also "Volumetric Spotlight," which I wouldn't have known controls the effects of flashlights, stage lights and more for more realistic light cones throughout the environment.</p><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="znUapbXHYR8iPxg2fWZ445" name="Control Resonant" alt="Control Resonant" src="https://cdn.mos.cms.futurecdn.net/znUapbXHYR8iPxg2fWZ445-1920-80.png" 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: Remedy Entertainment)</span></figcaption></figure><p>In a game where light sources come from multiple angles, both from realistic city street lamps and supernatural beings, these types of settings play a huge role in making Control Resonant look striking.</p><p>Even if you aren't a fan of fine-tuning your settings for picture-perfect results at the right frame rates, you can easily select the graphics preset that your system will run with ease. For example, I chose High, as it best suited my gaming PC to reach consistent frame rates over 120 FPS (with frame generation, of course). </p><p>The cherry on top is that Remedy Entertainment also wants Control Resonant to be optimized for the <a href="https://www.tomsguide.com/round-up/best-handheld-gaming-consoles">best gaming handhelds</a>. By selecting Handheld in the graphics preset option, you're getting the right options suited for lower-powered systems without needing to fiddle with settings. </p><h2 id="a-pc-triumph">A PC triumph</h2><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="axeug6JEdAPrcoMSK8UVDS" name="Control Resonant" alt="Control Resonant" src="https://cdn.mos.cms.futurecdn.net/axeug6JEdAPrcoMSK8UVDS-1920-80.png" 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: Remedy Entertainment)</span></figcaption></figure><p>As with the previous <a href="https://www.tomsguide.com/reviews/control">Control</a> becoming a benchmark for testing the performance of PCs, Control Resonant raises the stakes by taking full advantage of the latest tools, from DLSS 4.5 to ray tracing, and delivering a game perfectly optimized for PC gaming. </p><p>While the game has clearly been optimized to run well on all the platforms it's available on, it can be pushed to its limits when playing on PC. It will be interesting to see how Remedy handles its macOS port, but only time will tell once it arrives later this year. Who knows, we may even see it running on phones soon (as with <a href="https://www.tiktok.com/@tomsguide/video/7635330240482479391" target="_blank">Control: Ultimate Edition on iPhone!</a>).</p><p>If you have a gaming PC (laptop, desktop, or handheld) and want to see all the mind-bending visuals and splendor this has to offer, I'd recommend giving Control Resonant a go on PC. </p><p>For an in-depth look at our thoughts, check out our <a href="https://www.tomsguide.com/gaming/control-resonant-review">Control Resonant review</a>. </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/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><li><a href="https://www.tomsguide.com/gaming/marvels-wolverine-is-a-playable-summer-blockbuster-but-fades-from-memory-fast">Marvel’s Wolverine is a playable summer blockbuster — but fades from memory fast</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <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]]></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]]></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]]></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]]></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="low" 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]]></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="low" 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]]></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/r4LcUNMTGENHJtq8w9HDb7-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/r4LcUNMTGENHJtq8w9HDb7-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/r4LcUNMTGENHJtq8w9HDb7-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/DhNcsEKYTd8JSj8tVWjCXS-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]]></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/DhNcsEKYTd8JSj8tVWjCXS-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/DhNcsEKYTd8JSj8tVWjCXS-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]]></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]]></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/zJdZqmuRrm8wpba8GVT9SM-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]]></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/zJdZqmuRrm8wpba8GVT9SM-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/zJdZqmuRrm8wpba8GVT9SM-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-2">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]]></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 Buying Guide Editor and is fascinated by all things bizarre in tech. This usually leads to assorted coverage varying from washing machines designed for earbuds to expert buying advice on the latest laptops. Whether it&amp;#39;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 an interesting angle no matter the subject. &lt;/p&gt;&lt;p&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, tablets, smartwatches, VR headsets, 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&amp;#39;s not checking out the latest devices and updating buying guides with expert advice, 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-2">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]]></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[ Nvidia CEO Jensen Huang tells us about RTX Spark — why this is more 'R2-D2' than a laptop CPU ]]></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]]></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]]></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]]></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;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/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>
            </channel>
</rss>