<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
     xmlns:content="http://purl.org/rss/1.0/modules/content/"
     xmlns:dc="http://purl.org/dc/elements/1.1/"
     xmlns:dcterms="http://purl.org/dc/terms/"
     xmlns:media="http://search.yahoo.com/mrss/"
     xmlns:atom="http://www.w3.org/2005/Atom"
     xmlns:cf="https://www.futureplc.com/rss/content-flags"
>
    <channel>
                    <atom:link rel="alternate" hreflang="en-AU"
                       href="https://www.tomsguide.com/au/feeds/tag/amazon"
                       type="application/rss+xml"/>
                            <title><![CDATA[ Latest from Tom's Guide AU in Amazon ]]></title>
                <link>https://www.tomsguide.com/au/tag/amazon</link>
        <description><![CDATA[ All the latest amazon content from the Tom's Guide  AU team ]]></description>
                                    <lastBuildDate>Tue, 10 Nov 2026 08:30:00 +0000</lastBuildDate>
                            <language>en</language>
                                <item>
                                                            <title><![CDATA[ The Amazon Alexa Photo Frame made me cry — in a good way ]]></title>
                                                                                                <dc:content><![CDATA[ <p>I never thought a gadget would make me want to cry — least of all one from Amazon.</p><p>After unboxing and setting up the Alexa Photo Frame, one of the first images it displayed was a black-and-white picture of my father, who has been deceased for 16 years, feeding a squirrel.</p><p>I remember having the photo stored digitally somewhere, but it’s been several years since I last saw it. But the Alexa Photo Frame pulled it up, and juxtaposed it next to another picture of a squirrel clinging to a screen door. The Photo Frame also wasted no time digging up scores of photos of our family cat, who also died around the same time as my dad. </p><p>It was a very emotional first few minutes with this device.</p><p>But the Alexa Photo Frame also went on to deliver photos of my child playing, vacations and other happy occasions, which brought back more pleasant emotions. </p><p>While I have plenty of criticisms of AI and its use, this is one instance where I feel like it delivers something positive, and makes this one of the <a href="https://www.tomsguide.com/best-picks/best-digital-photo-frames">best photo frames</a> I’ve ever used. </p><h2 id="alexa-inside">Alexa inside</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Z4o6D9xUVqVPSaZ8NmqJX3" name="Alexa photo frame-3" alt="Amazon Alexa Photo Frame" src="https://cdn.mos.cms.futurecdn.net/Z4o6D9xUVqVPSaZ8NmqJX3-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 might be stating the obvious, but if you want to get the most out of the Alexa Photo Frame, you’re going to need either an Alexa+ ($19/month) or an Amazon Prime subscription ($149/year), so you can use Amazon’s AI to its fullest. </p><p>The Alexa Photo Frame uses Amazon’s AI in one of the smartest ways yet. It combs through your entire library of images, and then pulls them up based on criteria such as the time of year, themes, objects, and events. </p><p>So, during the fall, you might be served pictures of pumpkins and leaves falling; in the summer, it might be photos of you at the beach.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="S67kv6Bww23UK4MwXUdanF" name="Alexa photo frame-9" alt="Amazon Alexa Photo Frame" src="https://cdn.mos.cms.futurecdn.net/S67kv6Bww23UK4MwXUdanF-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 Alexa Photo Frame only works in landscape mode, it does a clever thing with all the portrait photos in your library. If, for instance, you have photos of your child blowing out birthday candles over the years, it might put two of those images side by side, to show you the changes over the years. The photos of my dad and the squirrel was one example; another was two pictures of my kid potty training. </p><p>Or, if you want to go the more direct route, you can also ask Alexa to “show me photos of cats and kids,” and it will create a curated slideshow of all those images from your library. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="2cTbvaaoUPYULcGiLFAkua" name="Alexa photo frame-8" alt="Amazon Alexa Photo Frame" src="https://cdn.mos.cms.futurecdn.net/2cTbvaaoUPYULcGiLFAkua-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>Alexa+ isn’t perfect; when I asked it to create a slideshow of my daughter, a number of the pictures were of old ladies and some other random kids. However, it’s smart enough so that when one of these images showed up, I said “Alexa, that’s not my daughter,” and it went back through and edited the collection so those mismatched photos were no longer there.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="3PwSjGupBtNsCDUYSaXgSP" name="Alexa photo frame-2" alt="Amazon Alexa Photo Frame" src="https://cdn.mos.cms.futurecdn.net/3PwSjGupBtNsCDUYSaXgSP-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><h2 id="it-s-a-smart-speaker-too">It’s a smart speaker, too</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="6xVheUNS2rQ6vyLSHgwchS" name="Alexa photo frame-11" alt="Amazon Alexa Photo Frame rear" src="https://cdn.mos.cms.futurecdn.net/6xVheUNS2rQ6vyLSHgwchS-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>Of course, the Photo Frame can act as a smart speaker. You definitely wouldn’t want to use it to play music, but you can use Alexa+ on it as you would any other Amazon smart speaker. And, should you not want it to listen, you can press the microphone mute button on the back.</p><p>Another trick with the Alexa Photo Frame is that you can attach short audio files to pictures, so if you’re gifting it to your parents, you can add a photo of your kids around a Christmas tree, with a voice note wishing them happy holidays. You have to tap the photo on the screen to hear the note, so it’s a nice extra, but I’m not sure how much it will be used.</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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="RAksBDd8tzccgcWwuK2gjW" name="Alexa photo frame-1-LIST" alt="Amazon Alexa Photo Frame" src="https://cdn.mos.cms.futurecdn.net/RAksBDd8tzccgcWwuK2gjW-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>Specs-wise, the Alexa Photo Frame isn’t the most impressive when compared to the best digital photo frames. The $229 <a href="https://www.tomsguide.com/cameras-photography/aura-aspen-review">Aura Aspen</a>, for example, has a 12-inch screen with a much higher resolution of 1600 x 1200, and can be set up in portrait or landscape mode. The <a href="https://www.tomsguide.com/home/lexar-pexar-11-inch-digital-frame-review">Lexar Pexar </a>has an even crisper 2000 x 1200 display, and costs even less, at $179. And, the Alexa Photo Frame can’t play videos, which also make up a good portion of my phone’s library.</p><p>But neither makes curating all your photos as effortless — or as ingenious — as what Amazon does with Alexa+. For me, it’s solved the biggest issue I’ve had with digital photo frames and my massive photo library. How do I rediscover those old photos, and how do I make them show up on my photo frame without spending hours combing through everything?</p> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/home/smart-home/amazon-alexa-photo-frame-review</link>
                                                                            <description>
                            <![CDATA[ The Alexa Photo Frame uses Alexa+ to search through all your photos and show them in one of the smartest ways yet. However, it’s best for those who have an Amazon Prime membership. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">oSiiayB6u4FsvK2pT2VhPB</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/tXyKm3ACySBpNC5czuUM2j-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 10 Nov 2026 08:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Smart Home]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                <author><![CDATA[ mike.prospero@futurenet.com (Mike Prospero) ]]></author>                    <dc:creator><![CDATA[ Mike Prospero ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/xeJFBrJwXQzCqXLZXBFBKQ-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Michael A. Prospero is the U.S. Editor-in-Chief for Tom’s Guide.  In his spare time, he also tests out the latest drones, electric scooters, and smart home gadgets, such as video doorbells. Before his tenure at Tom&#039;s Guide, he was the Reviews Editor for Laptop Magazine, a reporter at Fast Company, the Times of Trenton, and, many eons back, an intern at George magazine. He received his undergraduate degree from Boston College, where he worked on the campus newspaper The Heights, and then attended the Columbia University school of Journalism. When he’s not testing out the latest running watch, electric scooter, or skiing or training for a marathon, he’s probably using the latest sous vide machine, smoker, or pizza oven, to the delight — or chagrin — of his family.&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/tXyKm3ACySBpNC5czuUM2j-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Amazon Alexa Photo Frame]]></media:description>                                                            <media:text><![CDATA[Amazon Alexa Photo Frame]]></media:text>
                                <media:title type="plain"><![CDATA[Amazon Alexa Photo Frame]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/tXyKm3ACySBpNC5czuUM2j-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I never thought a gadget would make me want to cry — least of all one from Amazon.</p><p>After unboxing and setting up the Alexa Photo Frame, one of the first images it displayed was a black-and-white picture of my father, who has been deceased for 16 years, feeding a squirrel.</p><p>I remember having the photo stored digitally somewhere, but it’s been several years since I last saw it. But the Alexa Photo Frame pulled it up, and juxtaposed it next to another picture of a squirrel clinging to a screen door. The Photo Frame also wasted no time digging up scores of photos of our family cat, who also died around the same time as my dad. </p><p>It was a very emotional first few minutes with this device.</p><p>But the Alexa Photo Frame also went on to deliver photos of my child playing, vacations and other happy occasions, which brought back more pleasant emotions. </p><p>While I have plenty of criticisms of AI and its use, this is one instance where I feel like it delivers something positive, and makes this one of the <a href="https://www.tomsguide.com/best-picks/best-digital-photo-frames">best photo frames</a> I’ve ever used. </p><h2 id="alexa-inside">Alexa inside</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Z4o6D9xUVqVPSaZ8NmqJX3" name="Alexa photo frame-3" alt="Amazon Alexa Photo Frame" src="https://cdn.mos.cms.futurecdn.net/Z4o6D9xUVqVPSaZ8NmqJX3-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 might be stating the obvious, but if you want to get the most out of the Alexa Photo Frame, you’re going to need either an Alexa+ ($19/month) or an Amazon Prime subscription ($149/year), so you can use Amazon’s AI to its fullest. </p><p>The Alexa Photo Frame uses Amazon’s AI in one of the smartest ways yet. It combs through your entire library of images, and then pulls them up based on criteria such as the time of year, themes, objects, and events. </p><p>So, during the fall, you might be served pictures of pumpkins and leaves falling; in the summer, it might be photos of you at the beach.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="S67kv6Bww23UK4MwXUdanF" name="Alexa photo frame-9" alt="Amazon Alexa Photo Frame" src="https://cdn.mos.cms.futurecdn.net/S67kv6Bww23UK4MwXUdanF-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 Alexa Photo Frame only works in landscape mode, it does a clever thing with all the portrait photos in your library. If, for instance, you have photos of your child blowing out birthday candles over the years, it might put two of those images side by side, to show you the changes over the years. The photos of my dad and the squirrel was one example; another was two pictures of my kid potty training. </p><p>Or, if you want to go the more direct route, you can also ask Alexa to “show me photos of cats and kids,” and it will create a curated slideshow of all those images from your library. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="2cTbvaaoUPYULcGiLFAkua" name="Alexa photo frame-8" alt="Amazon Alexa Photo Frame" src="https://cdn.mos.cms.futurecdn.net/2cTbvaaoUPYULcGiLFAkua-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>Alexa+ isn’t perfect; when I asked it to create a slideshow of my daughter, a number of the pictures were of old ladies and some other random kids. However, it’s smart enough so that when one of these images showed up, I said “Alexa, that’s not my daughter,” and it went back through and edited the collection so those mismatched photos were no longer there.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="3PwSjGupBtNsCDUYSaXgSP" name="Alexa photo frame-2" alt="Amazon Alexa Photo Frame" src="https://cdn.mos.cms.futurecdn.net/3PwSjGupBtNsCDUYSaXgSP-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><h2 id="it-s-a-smart-speaker-too">It’s a smart speaker, too</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="6xVheUNS2rQ6vyLSHgwchS" name="Alexa photo frame-11" alt="Amazon Alexa Photo Frame rear" src="https://cdn.mos.cms.futurecdn.net/6xVheUNS2rQ6vyLSHgwchS-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>Of course, the Photo Frame can act as a smart speaker. You definitely wouldn’t want to use it to play music, but you can use Alexa+ on it as you would any other Amazon smart speaker. And, should you not want it to listen, you can press the microphone mute button on the back.</p><p>Another trick with the Alexa Photo Frame is that you can attach short audio files to pictures, so if you’re gifting it to your parents, you can add a photo of your kids around a Christmas tree, with a voice note wishing them happy holidays. You have to tap the photo on the screen to hear the note, so it’s a nice extra, but I’m not sure how much it will be used.</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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="RAksBDd8tzccgcWwuK2gjW" name="Alexa photo frame-1-LIST" alt="Amazon Alexa Photo Frame" src="https://cdn.mos.cms.futurecdn.net/RAksBDd8tzccgcWwuK2gjW-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>Specs-wise, the Alexa Photo Frame isn’t the most impressive when compared to the best digital photo frames. The $229 <a href="https://www.tomsguide.com/cameras-photography/aura-aspen-review">Aura Aspen</a>, for example, has a 12-inch screen with a much higher resolution of 1600 x 1200, and can be set up in portrait or landscape mode. The <a href="https://www.tomsguide.com/home/lexar-pexar-11-inch-digital-frame-review">Lexar Pexar </a>has an even crisper 2000 x 1200 display, and costs even less, at $179. And, the Alexa Photo Frame can’t play videos, which also make up a good portion of my phone’s library.</p><p>But neither makes curating all your photos as effortless — or as ingenious — as what Amazon does with Alexa+. For me, it’s solved the biggest issue I’ve had with digital photo frames and my massive photo library. How do I rediscover those old photos, and how do I make them show up on my photo frame without spending hours combing through everything?</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Prime Video top 10 movies — here’s the 3 worth watching this week (Nov. 9-15) ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Apparently we’re exactly six weeks and five days away from Christmas (that’s 47 days). Considering December 25 is my favorite day of the whole year  — mainly ‘cause I get to watch my most beloved movies all day  — with the latest week’s <strong>Prime Video</strong> <strong>top 10 movies </strong>chart now in, I thought I’d sneak a festive classic in there. Hey, quiet with the ‘humbugs’ at the back. </p><p>While some Prime Video top 10s can include some absolutely bangers, that’s not always the case every week. Still, this time out I’ve gone for one I know you’ll absolutely adore. Admittedly, my two other choices are somewhat harder sells (including a remake of an Arnie classic no one asked for). But hey, at least one of them is about a homicidal hippo! </p><p>The movies below are taken from <strong>Prime Video’s top 10 as of Monday, November 9, 2026</strong>. A mix of man-sized Christmas elves, a super agent who’s had his memories erased, and that aforementioned monstrous hippopotamus. At least it’s a varied list! And I think you should check out all three on Amazon’s streaming platform this week. </p><h3 class="article-body__section" id="section-best-movies-in-the-prime-video-top-10"><span>Best movies in the Prime Video top 10</span></h3><h2 id="hungry-2026">‘Hungry’ (2026)</h2><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/QX85JymdGnQ" allowfullscreen=""></iframe></div></div><p>Hoo-boy, is this ever a movie I’ve been waiting for since I was a kid. If you told me one day I’d eventually be treated to a killer hippopotamus movie in 2026, that little tyke who played so much Hungry Hungry Hippos would have been ecstatic… despite the fact “Hungry” is a kinda mediocre 2/5 horror flick. C’mon though, people. It’s a killer hippo flick! </p><p>The plot is ludicrous on many levels, but some I actually find a little endearing. After a group of tourists takes a bayou cruise to see a particularly legendary alligator, it’s not long before they come upon a 4,000 lb hippo that is very much hungry for human flesh. Some of the set pieces are a giggle and the final act somehow manages to paint the hippo in a somewhat sympathetic light. Anyway, it’s schlocky as heck, but I had fun with it. </p><p><em><strong>Watch </strong></em><a href="https://www.primevideo.com/detail/0KQ70S1P07Z3YWK1LA7MHP66MJ" target="_blank" rel="nofollow"><em><strong>"Hungry" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="elf-39-2003">‘Elf' (2003)</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/14o38xfHlXc" allowfullscreen=""></iframe></div></div><p>I don’t want to provoke a raging online debate over the best Christmas movies in a weekly Prime Video roundup. But here we are. The correct answer is “Die Hard”. “Home Alone" gets the runner-up medal, then it’s a toss between “Gremlins” and “Elf” for me as the greatest remaining festive movies ever. And 2003’s wonderfully sweet, genuinely funny comedy has rightly become one of the most beloved movies of all time. </p><p>The premise of “Elf” is brilliant. A baby called Buddy accidentally crawls into Santa’s sack on Christmas Eve, Kris Kringle inadvertently flies him back to the North Pole, where the resident elves end up raising him until he becomes a large man (Ferrell). Upon finding out he’s not actually an elf, the childlike Buddy tracks down his workaholic father in NYC ( a gloriously grumpy James Caan) and even finds an unlikely romance with a jaded department worker (Zooey Deschanel). The tone of “Elf” is just joyous, and its uplifting finale really will reinvigorate your Christmas spirit. </p><p><em><strong>Watch </strong></em><a href="https://www.primevideo.com/detail/0LUSPO7CRMNGACJONCVX0A6PD0" target="_blank" rel="nofollow"><em><strong>"Elf" on Prime Video</strong></em></a><em><strong> now</strong></em></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-O93Epe"></div>                            </div>                            <script src="https://kwizly.com/embed/O93Epe.js" async=""></script><h2 id="39-total-recall-39-2012">'Total Recall' (2012)</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/GljhR5rk5eY" allowfullscreen=""></iframe></div></div><p>Look, it’s obviously not as good as the Arnie original, what with its outstanding practical alien effects and killer quips. Yet just like 2014’s “RoboCop”, this reimagined sci-fi isn’t actually all that offensive. Yes, it was critically panned — try to get that 30% <a href="https://www.rottentomatoes.com/m/total_recall_2012" target="_blank">Rotten Tomatoes</a> rating out of your head if you can. But I think director Len Wiseman has given the movie an interesting, edgy look and some of the action scenes are certainly slick. </p><p>Set in a future where a company called Rekall can make your dreams into a reality, a disgruntled colony worker Douglas Quaid (Colin Farrell) decides he’s had enough of building police robots  — which actually sounds like a pretty kickass gig to me. So he elects to have Rekall give him artificial memories. Unfortunately, the procedure doesn’t go to plan, with secrets about Quad’s real life as a rogue agent remerging. Cue a lot of shooty-shooty action but little of the original's winning ability to wink at itself. At least the cast, including Bryan Cranston, Kate Beckinsale and Bill Nighy, is pretty stellar. </p><p><em><strong>Watch </strong></em><a href="https://www.primevideo.com/detail/0QX0P3ZM596JCYJY9I870O0K5D" target="_blank" rel="nofollow"><em><strong>"Total Recall (2012) on Prime Video</strong></em></a><em><strong> now</strong></em></p><h3 class="article-body__section" id="section-prime-video-top-10-movies-right-now"><span>Prime Video top 10 movies right now</span></h3><ol start="1"><li>"Hungry" (2026)</li><li>"Hunting Season" (2025)</li><li>"Total Recall" (2012)</li><li>"Scream 7" (2026)</li><li>"Apocalypse Z: New World" (2026)</li><li>"First Winter" (1982)</li><li>"Dark Nature" (2023)</li><li>"Drive - The Pretenders" (2026)</li><li>"Forget Me Never" (1999)</li><li>"Love of Your Life" (2023)</li></ol><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="gdR2W4" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><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/entertainment/prime-video/new-on-prime-video-in-november-2026-all-the-new-movies-and-shows-to-stream-this-month">New on Prime Video in November 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/5-new-to-prime-video-movies-in-november-2026-i-recommend-with-90-percent-or-higher-on-rotten-tomatoes">5 new to Prime Video movies with 90% or higher on Rotten Tomatoes</a></li><li><a href="https://www.tomsguide.com/us/best-streaming-video-services,review-2625.html">The best streaming services in 2026 to subscribe to right now</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/prime-video/prime-video-top-10-movies-heres-the-3-worth-watching-this-week-nov-9-15</link>
                                                                            <description>
                            <![CDATA[ The Prime Video top 10 most-watched list has been updated once again. I'm here to help you find the movies you'll actually want to stream. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">3fwoSAKXyMWiPvHe93MTUQ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/yYWhHhHw6vuqJmkxBCWs8d-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 09 Nov 2026 14:47:59 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Prime Video]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                    <category><![CDATA[Streaming]]></category>
                                                                                                <author><![CDATA[ dave.meikleham@futurenet.com (Dave Meikleham) ]]></author>                    <dc:creator><![CDATA[ Dave Meikleham ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Rda8e7jGfyTdZLWYJQQ8VY-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Dave is a computing editor at Tom’s Guide and covers everything from cutting-edge laptops, the latest GPU tech, to ultrawide monitors. When he’s not worrying about dead pixels, Dave enjoys regularly rebuilding his PC for absolutely no reason at all. He built his first rig over 20 years ago, and he’s gone through more motherboards than he’s had hot dinners. Probably. &lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;In a previous life, he worked as a video game journalist during a career spanning the best part of two decades. Over that time he worked across both online and print, with bylines for GamesRadar+, PC Gamer, TechRadar, Edge and the Official UK PlayStation Magazine. He’s almost amassed an immeasurable amount of bad puns.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;An avid PC and console gamer, Dave enjoys breaking out Fraps way too often as he obsesses over frame rates. Despite owning a graphics card that costs roughly the same as your average used car, he still enjoys gaming on the go and is regularly glued to his Switch. Away from tech, most of Dave’s time is taken up by walking his husky, obsessing about his various OLED displays and sweating over the fitness of half a dozen Arsenal players on any given week.&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/yYWhHhHw6vuqJmkxBCWs8d-1920-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Prime Video logo for streaming]]></media:description>                                                            <media:text><![CDATA[Prime Video logo for streaming]]></media:text>
                                <media:title type="plain"><![CDATA[Prime Video logo for streaming]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/yYWhHhHw6vuqJmkxBCWs8d-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Apparently we’re exactly six weeks and five days away from Christmas (that’s 47 days). Considering December 25 is my favorite day of the whole year  — mainly ‘cause I get to watch my most beloved movies all day  — with the latest week’s <strong>Prime Video</strong> <strong>top 10 movies </strong>chart now in, I thought I’d sneak a festive classic in there. Hey, quiet with the ‘humbugs’ at the back. </p><p>While some Prime Video top 10s can include some absolutely bangers, that’s not always the case every week. Still, this time out I’ve gone for one I know you’ll absolutely adore. Admittedly, my two other choices are somewhat harder sells (including a remake of an Arnie classic no one asked for). But hey, at least one of them is about a homicidal hippo! </p><p>The movies below are taken from <strong>Prime Video’s top 10 as of Monday, November 9, 2026</strong>. A mix of man-sized Christmas elves, a super agent who’s had his memories erased, and that aforementioned monstrous hippopotamus. At least it’s a varied list! And I think you should check out all three on Amazon’s streaming platform this week. </p><h3 class="article-body__section" id="section-best-movies-in-the-prime-video-top-10"><span>Best movies in the Prime Video top 10</span></h3><h2 id="hungry-2026">‘Hungry’ (2026)</h2><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/QX85JymdGnQ" allowfullscreen=""></iframe></div></div><p>Hoo-boy, is this ever a movie I’ve been waiting for since I was a kid. If you told me one day I’d eventually be treated to a killer hippopotamus movie in 2026, that little tyke who played so much Hungry Hungry Hippos would have been ecstatic… despite the fact “Hungry” is a kinda mediocre 2/5 horror flick. C’mon though, people. It’s a killer hippo flick! </p><p>The plot is ludicrous on many levels, but some I actually find a little endearing. After a group of tourists takes a bayou cruise to see a particularly legendary alligator, it’s not long before they come upon a 4,000 lb hippo that is very much hungry for human flesh. Some of the set pieces are a giggle and the final act somehow manages to paint the hippo in a somewhat sympathetic light. Anyway, it’s schlocky as heck, but I had fun with it. </p><p><em><strong>Watch </strong></em><a href="https://www.primevideo.com/detail/0KQ70S1P07Z3YWK1LA7MHP66MJ" target="_blank" rel="nofollow"><em><strong>"Hungry" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="elf-39-2003">‘Elf' (2003)</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/14o38xfHlXc" allowfullscreen=""></iframe></div></div><p>I don’t want to provoke a raging online debate over the best Christmas movies in a weekly Prime Video roundup. But here we are. The correct answer is “Die Hard”. “Home Alone" gets the runner-up medal, then it’s a toss between “Gremlins” and “Elf” for me as the greatest remaining festive movies ever. And 2003’s wonderfully sweet, genuinely funny comedy has rightly become one of the most beloved movies of all time. </p><p>The premise of “Elf” is brilliant. A baby called Buddy accidentally crawls into Santa’s sack on Christmas Eve, Kris Kringle inadvertently flies him back to the North Pole, where the resident elves end up raising him until he becomes a large man (Ferrell). Upon finding out he’s not actually an elf, the childlike Buddy tracks down his workaholic father in NYC ( a gloriously grumpy James Caan) and even finds an unlikely romance with a jaded department worker (Zooey Deschanel). The tone of “Elf” is just joyous, and its uplifting finale really will reinvigorate your Christmas spirit. </p><p><em><strong>Watch </strong></em><a href="https://www.primevideo.com/detail/0LUSPO7CRMNGACJONCVX0A6PD0" target="_blank" rel="nofollow"><em><strong>"Elf" on Prime Video</strong></em></a><em><strong> now</strong></em></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-O93Epe"></div>                            </div>                            <script src="https://kwizly.com/embed/O93Epe.js" async=""></script><h2 id="39-total-recall-39-2012">'Total Recall' (2012)</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/GljhR5rk5eY" allowfullscreen=""></iframe></div></div><p>Look, it’s obviously not as good as the Arnie original, what with its outstanding practical alien effects and killer quips. Yet just like 2014’s “RoboCop”, this reimagined sci-fi isn’t actually all that offensive. Yes, it was critically panned — try to get that 30% <a href="https://www.rottentomatoes.com/m/total_recall_2012" target="_blank">Rotten Tomatoes</a> rating out of your head if you can. But I think director Len Wiseman has given the movie an interesting, edgy look and some of the action scenes are certainly slick. </p><p>Set in a future where a company called Rekall can make your dreams into a reality, a disgruntled colony worker Douglas Quaid (Colin Farrell) decides he’s had enough of building police robots  — which actually sounds like a pretty kickass gig to me. So he elects to have Rekall give him artificial memories. Unfortunately, the procedure doesn’t go to plan, with secrets about Quad’s real life as a rogue agent remerging. Cue a lot of shooty-shooty action but little of the original's winning ability to wink at itself. At least the cast, including Bryan Cranston, Kate Beckinsale and Bill Nighy, is pretty stellar. </p><p><em><strong>Watch </strong></em><a href="https://www.primevideo.com/detail/0QX0P3ZM596JCYJY9I870O0K5D" target="_blank" rel="nofollow"><em><strong>"Total Recall (2012) on Prime Video</strong></em></a><em><strong> now</strong></em></p><h3 class="article-body__section" id="section-prime-video-top-10-movies-right-now"><span>Prime Video top 10 movies right now</span></h3><ol start="1"><li>"Hungry" (2026)</li><li>"Hunting Season" (2025)</li><li>"Total Recall" (2012)</li><li>"Scream 7" (2026)</li><li>"Apocalypse Z: New World" (2026)</li><li>"First Winter" (1982)</li><li>"Dark Nature" (2023)</li><li>"Drive - The Pretenders" (2026)</li><li>"Forget Me Never" (1999)</li><li>"Love of Your Life" (2023)</li></ol><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="gdR2W4" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><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/entertainment/prime-video/new-on-prime-video-in-november-2026-all-the-new-movies-and-shows-to-stream-this-month">New on Prime Video in November 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/5-new-to-prime-video-movies-in-november-2026-i-recommend-with-90-percent-or-higher-on-rotten-tomatoes">5 new to Prime Video movies with 90% or higher on Rotten Tomatoes</a></li><li><a href="https://www.tomsguide.com/us/best-streaming-video-services,review-2625.html">The best streaming services in 2026 to subscribe to right now</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Amazon’s new text-to-shop feature arrives ahead of the holidays — here’s how the latest improvement to the Alexa for Shopping AI agent works ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Just last month, Amazon's personal AI shopping agent got a major upgrade that gave users over <a href="https://www.tomsguide.com/ai/amazon-just-added-100-new-ways-to-use-alexa-for-shopping-and-these-are-the-ones-im-trying-first" target="_blank">100 new ways to utilize it</a>. Being able to create lists, ask questions about various Amazon subscriptions &amp; benefits, manage those same subscriptions, update the instructions for incoming deliveries, get answers to one’s billing &amp; payment questions and more are all now possible through Alexa for Shopping. </p><p>Now, Alexa for Shopping has gotten yet another major upgrade. And this time, it gives users the ability to have a direct chat with it right from their text messages without even having to open the Amazon app or site. Here’s how that new nifty shopping feature works and who can currently access it.</p><h2 id="text-with-alexa">Text with Alexa</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="c8732gc9L3Jus6wCsPw9o6" name="shutterstock_2718474393-2" alt="amazon" src="https://cdn.mos.cms.futurecdn.net/c8732gc9L3Jus6wCsPw9o6-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>Texting with Alexa for Shopping is the latest feature that has come to Amazon’s AI shopping agent and is currently rolling out to a select number of US customers through invitations. </p><p>And over the coming weeks, even more Amazon customers will have that option expanded to them in the same manner. Amazon shoppers should keep an eye out for a text message inviting them to try out the new Alexa for Shopping feature—other users can check out this <a href="https://www.amazon.com/text-alexa-shopping" target="_blank">landing page</a> and sign up to get updates on when more invites for that latest update begin rolling out.</p><p>Amazon has listed a wide range of best-use cases for users who’ll begin texting Alexa for Shopping. Those examples include texting Alexa to begin producing your weekly shopping list, looking up a birthday gift you need by a certain day, sharing a photo of a piece of clothing &amp; asking the AI agent to find similar options and making sure it resupplies your pet food supply after letting it know you’ve run out.</p><p>Some of the other methods Amazon mentioned as the best ways to utilize Alexa for Shopping's direct texting feature include:</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:60.47%;"><img id="WHtDynjQHnMCWpjEDasndQ" name="Alexa Shopping Text – Reorder" alt="alexa for shopping" src="https://cdn.mos.cms.futurecdn.net/WHtDynjQHnMCWpjEDasndQ-1920-80.png" mos="" align="middle" fullscreen="" width="2560" height="1548" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Amazon)</span></figcaption></figure><ul><li><strong>Reordering items: </strong>Texting commands such as “reorder the [product name]” makes Alexa for Shopping find what you mentioned and purchase it after you give it your approval to do so.</li><li><strong>Personalizing your Amazon shopping experience: </strong>You can tell Alexa for Shopping how you like to shop and it keeps that in mind for any future requests you may bring up. For instance, telling it to only show you organic options, give you nutritional data every time you ask about food and add items to your cart automatically when you mention them are all doable.</li><li><strong>Keep a close eye on prices and deals: </strong>Now you can make sure Alexa for Shopping knows when to set up product alerts whenever a price drops or a major deal pops up. Simply texting it, “let me know when [product name] goes on sale”, will make this feature work.</li><li><strong>Managing lists: </strong>You can notify Alexa for Shopping about your lists and the changes you want to make, such as “add [product name] to my grocery list” or “create a new Christmas gift list.”</li><li><strong>Get updates on incoming orders: </strong>Texting Alexa for Shopping commands like “where’s my package?” will now give you an easier way to stay on top of your current delivery without you having to do it from Amazon’s app or site.</li><li><strong>Showcase options from Amazon’s Shop Direct: </strong>Doing your research for certain items through your text exchanges with Alexa for Shopping will make it bring up other product options obtained through Amazon’s <a href="https://www.aboutamazon.com/news/retail/amazon-shop-direct-external-stores" target="_blank">Shop Direct</a> feature.</li><li><strong>Get instant updates about new product releases: </strong>You’ll be in the know as soon as certain products launch, just by texting Alexa for Shopping commands such as “update me when [company name] drops new [type of product and product name].</li><li><strong>Do product comparisons: </strong>Right from your text messages, you can tell Alexa for Shopping to “compare the top-rated [type of product]” to make it produce the most important info you need to know, customer reviews and pricing tied to those products.</li><li><strong>Look through a product’s price history: </strong>If you want to get a good look at an item’s price history to see if its current price is actually a good deal or not, you can text Alexa for Shopping “what’s the price history on this [product name]?” and it’ll handle the rest.</li></ul><h2 id="bottom-line-2">Bottom line</h2><p>It’s interesting to see Amazon make a concerted effort to turn Alexa for Shopping into more of a reliable AI agent that can exist outside of its app and site. I get the feeling that it wants to keep Amazon customers inside its ecosystem and away from the likes of <a href="https://www.tomsguide.com/ai/i-used-meta-muse-to-automate-10-tasks-from-reminders-to-trip-alerts-and-i-cant-believe-how-well-metas-ai-handled-everything" target="_blank">Meta Muse</a> and other third-party AI tools that also fulfill their online item research and shopping needs.</p><p>I’m perfectly fine with continuing to interact with Alexa for Shopping directly inside the app since I have no desire to text it every time I get the urge to add something new to my video games wishlist.</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-can-now-turn-your-photos-into-gifs-and-free-users-get-the-upgrade-too" target="_blank">ChatGPT can now turn your photos into GIFs — and free users get the upgrade too</a></li><li><a href="https://www.tomsguide.com/ai/heres-what-james-talarico-abdul-el-sayed-and-other-us-midterm-election-winners-have-to-say-about-ai-data-centers" target="_blank">Here's what James Talarico, Abdul El-Sayed and other US midterm election winners have to say about AI data centers</a></li><li><a href="https://www.tomsguide.com/ai/did-the-ai-bubble-just-pop-usd2-trillion-reality-check-hits-nvidia-meta-and-spacex-as-wall-street-panics-signaling-a-potential-end-to-ram-crisis-in-2027" target="_blank">Did the AI bubble just pop? $2 trillion reality check hits Nvidia, Meta &amp; SpaceX as Wall Street panics, signaling a potential end to RAM crisis in 2027</a></li></ul><div data-widget-type="comparison" data-model-name="Apple MacBook Neo"></div> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/ai/amazons-new-text-to-shop-feature-arrives-ahead-of-the-holidays-heres-how-the-latest-improvement-to-the-alexa-for-shopping-ai-agent-works</link>
                                                                            <description>
                            <![CDATA[ Amazon’s AI shopping agent now lets users text it directly to fulfill their product search and purchasing needs, arriving at the perfect time of year. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">42TUuNLwABbaoaHLbNCJUD</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/USTC4xa6FqfG88aH9ha6b3-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 06 Nov 2026 17:00:53 +0000</pubDate>                                                                                                                                                                                                                                <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/USTC4xa6FqfG88aH9ha6b3-1920-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[amazon alexa]]></media:description>                                                            <media:text><![CDATA[amazon alexa]]></media:text>
                                <media:title type="plain"><![CDATA[amazon alexa]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/USTC4xa6FqfG88aH9ha6b3-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Just last month, Amazon's personal AI shopping agent got a major upgrade that gave users over <a href="https://www.tomsguide.com/ai/amazon-just-added-100-new-ways-to-use-alexa-for-shopping-and-these-are-the-ones-im-trying-first" target="_blank">100 new ways to utilize it</a>. Being able to create lists, ask questions about various Amazon subscriptions &amp; benefits, manage those same subscriptions, update the instructions for incoming deliveries, get answers to one’s billing &amp; payment questions and more are all now possible through Alexa for Shopping. </p><p>Now, Alexa for Shopping has gotten yet another major upgrade. And this time, it gives users the ability to have a direct chat with it right from their text messages without even having to open the Amazon app or site. Here’s how that new nifty shopping feature works and who can currently access it.</p><h2 id="text-with-alexa">Text with Alexa</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="c8732gc9L3Jus6wCsPw9o6" name="shutterstock_2718474393-2" alt="amazon" src="https://cdn.mos.cms.futurecdn.net/c8732gc9L3Jus6wCsPw9o6-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>Texting with Alexa for Shopping is the latest feature that has come to Amazon’s AI shopping agent and is currently rolling out to a select number of US customers through invitations. </p><p>And over the coming weeks, even more Amazon customers will have that option expanded to them in the same manner. Amazon shoppers should keep an eye out for a text message inviting them to try out the new Alexa for Shopping feature—other users can check out this <a href="https://www.amazon.com/text-alexa-shopping" target="_blank">landing page</a> and sign up to get updates on when more invites for that latest update begin rolling out.</p><p>Amazon has listed a wide range of best-use cases for users who’ll begin texting Alexa for Shopping. Those examples include texting Alexa to begin producing your weekly shopping list, looking up a birthday gift you need by a certain day, sharing a photo of a piece of clothing &amp; asking the AI agent to find similar options and making sure it resupplies your pet food supply after letting it know you’ve run out.</p><p>Some of the other methods Amazon mentioned as the best ways to utilize Alexa for Shopping's direct texting feature include:</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:60.47%;"><img id="WHtDynjQHnMCWpjEDasndQ" name="Alexa Shopping Text – Reorder" alt="alexa for shopping" src="https://cdn.mos.cms.futurecdn.net/WHtDynjQHnMCWpjEDasndQ-1920-80.png" mos="" align="middle" fullscreen="" width="2560" height="1548" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Amazon)</span></figcaption></figure><ul><li><strong>Reordering items: </strong>Texting commands such as “reorder the [product name]” makes Alexa for Shopping find what you mentioned and purchase it after you give it your approval to do so.</li><li><strong>Personalizing your Amazon shopping experience: </strong>You can tell Alexa for Shopping how you like to shop and it keeps that in mind for any future requests you may bring up. For instance, telling it to only show you organic options, give you nutritional data every time you ask about food and add items to your cart automatically when you mention them are all doable.</li><li><strong>Keep a close eye on prices and deals: </strong>Now you can make sure Alexa for Shopping knows when to set up product alerts whenever a price drops or a major deal pops up. Simply texting it, “let me know when [product name] goes on sale”, will make this feature work.</li><li><strong>Managing lists: </strong>You can notify Alexa for Shopping about your lists and the changes you want to make, such as “add [product name] to my grocery list” or “create a new Christmas gift list.”</li><li><strong>Get updates on incoming orders: </strong>Texting Alexa for Shopping commands like “where’s my package?” will now give you an easier way to stay on top of your current delivery without you having to do it from Amazon’s app or site.</li><li><strong>Showcase options from Amazon’s Shop Direct: </strong>Doing your research for certain items through your text exchanges with Alexa for Shopping will make it bring up other product options obtained through Amazon’s <a href="https://www.aboutamazon.com/news/retail/amazon-shop-direct-external-stores" target="_blank">Shop Direct</a> feature.</li><li><strong>Get instant updates about new product releases: </strong>You’ll be in the know as soon as certain products launch, just by texting Alexa for Shopping commands such as “update me when [company name] drops new [type of product and product name].</li><li><strong>Do product comparisons: </strong>Right from your text messages, you can tell Alexa for Shopping to “compare the top-rated [type of product]” to make it produce the most important info you need to know, customer reviews and pricing tied to those products.</li><li><strong>Look through a product’s price history: </strong>If you want to get a good look at an item’s price history to see if its current price is actually a good deal or not, you can text Alexa for Shopping “what’s the price history on this [product name]?” and it’ll handle the rest.</li></ul><h2 id="bottom-line-2">Bottom line</h2><p>It’s interesting to see Amazon make a concerted effort to turn Alexa for Shopping into more of a reliable AI agent that can exist outside of its app and site. I get the feeling that it wants to keep Amazon customers inside its ecosystem and away from the likes of <a href="https://www.tomsguide.com/ai/i-used-meta-muse-to-automate-10-tasks-from-reminders-to-trip-alerts-and-i-cant-believe-how-well-metas-ai-handled-everything" target="_blank">Meta Muse</a> and other third-party AI tools that also fulfill their online item research and shopping needs.</p><p>I’m perfectly fine with continuing to interact with Alexa for Shopping directly inside the app since I have no desire to text it every time I get the urge to add something new to my video games wishlist.</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-can-now-turn-your-photos-into-gifs-and-free-users-get-the-upgrade-too" target="_blank">ChatGPT can now turn your photos into GIFs — and free users get the upgrade too</a></li><li><a href="https://www.tomsguide.com/ai/heres-what-james-talarico-abdul-el-sayed-and-other-us-midterm-election-winners-have-to-say-about-ai-data-centers" target="_blank">Here's what James Talarico, Abdul El-Sayed and other US midterm election winners have to say about AI data centers</a></li><li><a href="https://www.tomsguide.com/ai/did-the-ai-bubble-just-pop-usd2-trillion-reality-check-hits-nvidia-meta-and-spacex-as-wall-street-panics-signaling-a-potential-end-to-ram-crisis-in-2027" target="_blank">Did the AI bubble just pop? $2 trillion reality check hits Nvidia, Meta &amp; SpaceX as Wall Street panics, signaling a potential end to RAM crisis in 2027</a></li></ul><div data-widget-type="comparison" data-model-name="Apple MacBook Neo"></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 3 best new to Prime Video shows to binge-watch this weekend —including a buzzy new college-campus romance (Nov. 6-8) ]]></title>
                                                                                                <dc:content><![CDATA[ <p>November 2026 is here, which means <a href="https://www.tomsguide.com/entertainment/prime-video/new-on-prime-video-in-november-2026-all-the-new-movies-and-shows-to-stream-this-month">a bunch of new titles</a> are coming to top streaming services like <a href="https://www.tomsguide.com/entertainment/streaming/prime-video">Prime Video</a>. And this weekend has a delightful mix of options where new TV shows are concerned, whether you're into boxing dramas, college romances or buddy thrillers. </p><p>First up is "<strong>The Greatest,</strong>" an eight-part limited series centered on legendary American boxer and activist Muhammad Ali; the Prime Video bio-drama marks the first time that Ali's estate has fully approved and signed off on a scripted series about the boxing icon's life. </p><p>If you like your fighting to look more like an enemies-to-lovers dynamic, check out "<strong>Campus Drivers</strong>," a new college-set romance series based on a super-popular BookTok favorite. And if you want your crime drama with a side of lighthearted banter and buddy chemistry, tune into "<strong>Chaar Yaar,</strong>" a new Hindi-language thriller set in early-aughts Mumbai. </p><p>That should keep you busy until Monday rolls around, right? Here are three top picks worth streaming on Prime Video this weekend.</p><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="gdR2W4" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><h2 id="39-the-greatest-39">'The Greatest'</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/RnRf-r-RdA4" allowfullscreen=""></iframe></div></div><p><strong>What is it about:</strong> You know him as Muhammad Ali, arguably the greatest heavyweight boxer of all time, but this eight-episode bio-drama lets you in on the young fella named Cassius Clay. In this first-ever authorized scripted series on the iconic prizefighter, we catch up with Clay (Jaalen Best) fresh off his landmark gold medal win at the 1960 Olympics, following the athlete as he sets his sights on the Heavyweight Championship and contends with newfound fame, family conflicts, and political strife along the way. </p><p><strong>Why you should watch it: </strong>As one of the most legendary sports figures of all time, obviously a lot is known about Ali's fighting career and legacy, but this limited series pays equal attention to Clay's life beyond the fame and fortune. (Speaking of, the cast also includes Omari Hardwick as Ali's father, Cash, Dana Gourrier as his mother, Bird, and Kai Parham as his brother, Rudy.) </p><p><em><strong>Stream </strong></em><a href="https://www.amazon.com/dp/B0HJDH72NQ?lv=shuf&amp;channelId=500&amp;plpRedirect=mhFallback" target="_blank" rel="nofollow"><em><strong>"The Greatest" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="39-campus-drivers-39">'Campus Drivers'</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/xybsbjGt1KA" allowfullscreen=""></iframe></div></div><p><strong>What is it about:</strong> Not to be confused with that <em>other</em> similarly titled Prime Video romance, "<a href="https://www.tomsguide.com/entertainment/streaming/watch-off-campus">Off Campus</a>," "Campus Drivers" is an upcoming French teen drama series based on C.S. Quill's best-selling college romance novels. Like "Off Campus," each book follows a different couple; the TV adaptation centers on Loïs (Carmen Kassovitz), a recently brokenhearted freshman at Belrose University who is forced into unexpected cohabitation with Lane (Baptiste Masseline), the charismatic creator of the campus's popular rideshare app.</p><p><strong>Why you should watch it:</strong> If you're a BookTok superfan, you've no doubt already heard of Quill's popular book series. And if you enjoy steamy, new-adult romances like the aforementioned "Off Campus" or "<a href="https://www.tomsguide.com/entertainment/streaming/this-romantic-drama-series-is-trending-on-prime-video-and-viewers-are-falling-in-love-with-it">Maxton Hall</a>," this one should be right up your alley. </p><p><em><strong>Stream </strong></em><a href="https://www.primevideo.com/detail/0LPJITUUG4OPFN23EQ16P5SH3I" target="_blank" rel="nofollow"><em><strong>"Campus Drivers" on Prime Video</strong></em></a><em><strong> beginning Nov. 6</strong></em></p><h2 id="39-chaar-yaar-39">'Chaar Yaar'</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/WZdXyU1fatY" allowfullscreen=""></iframe></div></div><p><strong>What is it about: </strong>Set in early-2000s Mumbai, this eight-episode Hindi crime drama follows four middle-class friends—Jay Gala (Prayrak Mehta), Tony Gomes (Saqib Ayub), Saahil Shaikh (Purav Jha) and Sameer Khilji (Naman Jain)—who begin stealing cars to clear their heavy debts, a decision that pulls them into a massive interstate operation populated by ruthless gangsters, dangerous cartels and relentless cops. </p><p><strong>Why you should watch it:</strong> With new titles arriving on the Amazon <a href="https://www.tomsguide.com/us/best-streaming-video-services,review-2625.html">streaming service</a> every single month, it's easy to miss an international gem like "Chaar Yaar," which arrived on Prime Video on October 23 and is packed with fun buddy chemistry and light thrills.</p><p><em><strong>Stream </strong></em><a href="https://www.primevideo.com/detail/0QGD9Q3KOVPFPIFXJ2AK0SZ18J" target="_blank" rel="nofollow"><em><strong>"Chaar Yaar" on Prime Video</strong></em></a><em><strong> now</strong></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/entertainment/prime-video/carrie-review-mike-flanagan-proves-theres-more-to-this-story-than-prom-night">Prime Video’s ‘Carrie’ is one of the best shows I’ve seen in 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/5-new-to-prime-video-movies-in-november-2026-i-recommend-with-90-percent-or-higher-on-rotten-tomatoes">5 new Prime Video movies with 90% or higher on Rotten Tomatoes</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/prime-video-just-added-103-new-movies-here-are-the-5-you-need-to-stream-first">Prime Video just added 103 new movies — 5 to stream first</a></li></ul><div data-model-name="Amazon Prime Video" data-widget-type="review" data-widget-title="Today's best streaming deals"></div> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/prime-video/3-best-new-to-prime-video-shows-to-binge-watch-this-weekend-including-a-buzzy-new-college-campus-romance-nov-6-8</link>
                                                                            <description>
                            <![CDATA[ Planning to binge some shows you’ve never seen before this weekend? Here's our weekly guide to the best new to Prime Video series you should stream right now. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">WkZosnqJN9Aqk2KmrY9d39</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/MGH7oj8SYfPVd2qY6wVwmi-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 06 Nov 2026 16:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Prime Video]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                    <category><![CDATA[Streaming]]></category>
                                                                                                                    <dc:creator><![CDATA[ Christina Izzo ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/LMncQCRNbbLXxxjbfZJvWE-320-70.jpeg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/MGH7oj8SYfPVd2qY6wVwmi-1920-80.jpg">
                                                            <media:credit><![CDATA[Prime Video; Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Prime Video logo on orange and black background]]></media:description>                                                            <media:text><![CDATA[Prime Video logo on orange and black background]]></media:text>
                                <media:title type="plain"><![CDATA[Prime Video logo on orange and black background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/MGH7oj8SYfPVd2qY6wVwmi-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>November 2026 is here, which means <a href="https://www.tomsguide.com/entertainment/prime-video/new-on-prime-video-in-november-2026-all-the-new-movies-and-shows-to-stream-this-month">a bunch of new titles</a> are coming to top streaming services like <a href="https://www.tomsguide.com/entertainment/streaming/prime-video">Prime Video</a>. And this weekend has a delightful mix of options where new TV shows are concerned, whether you're into boxing dramas, college romances or buddy thrillers. </p><p>First up is "<strong>The Greatest,</strong>" an eight-part limited series centered on legendary American boxer and activist Muhammad Ali; the Prime Video bio-drama marks the first time that Ali's estate has fully approved and signed off on a scripted series about the boxing icon's life. </p><p>If you like your fighting to look more like an enemies-to-lovers dynamic, check out "<strong>Campus Drivers</strong>," a new college-set romance series based on a super-popular BookTok favorite. And if you want your crime drama with a side of lighthearted banter and buddy chemistry, tune into "<strong>Chaar Yaar,</strong>" a new Hindi-language thriller set in early-aughts Mumbai. </p><p>That should keep you busy until Monday rolls around, right? Here are three top picks worth streaming on Prime Video this weekend.</p><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="gdR2W4" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><h2 id="39-the-greatest-39">'The Greatest'</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/RnRf-r-RdA4" allowfullscreen=""></iframe></div></div><p><strong>What is it about:</strong> You know him as Muhammad Ali, arguably the greatest heavyweight boxer of all time, but this eight-episode bio-drama lets you in on the young fella named Cassius Clay. In this first-ever authorized scripted series on the iconic prizefighter, we catch up with Clay (Jaalen Best) fresh off his landmark gold medal win at the 1960 Olympics, following the athlete as he sets his sights on the Heavyweight Championship and contends with newfound fame, family conflicts, and political strife along the way. </p><p><strong>Why you should watch it: </strong>As one of the most legendary sports figures of all time, obviously a lot is known about Ali's fighting career and legacy, but this limited series pays equal attention to Clay's life beyond the fame and fortune. (Speaking of, the cast also includes Omari Hardwick as Ali's father, Cash, Dana Gourrier as his mother, Bird, and Kai Parham as his brother, Rudy.) </p><p><em><strong>Stream </strong></em><a href="https://www.amazon.com/dp/B0HJDH72NQ?lv=shuf&amp;channelId=500&amp;plpRedirect=mhFallback" target="_blank" rel="nofollow"><em><strong>"The Greatest" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="39-campus-drivers-39">'Campus Drivers'</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/xybsbjGt1KA" allowfullscreen=""></iframe></div></div><p><strong>What is it about:</strong> Not to be confused with that <em>other</em> similarly titled Prime Video romance, "<a href="https://www.tomsguide.com/entertainment/streaming/watch-off-campus">Off Campus</a>," "Campus Drivers" is an upcoming French teen drama series based on C.S. Quill's best-selling college romance novels. Like "Off Campus," each book follows a different couple; the TV adaptation centers on Loïs (Carmen Kassovitz), a recently brokenhearted freshman at Belrose University who is forced into unexpected cohabitation with Lane (Baptiste Masseline), the charismatic creator of the campus's popular rideshare app.</p><p><strong>Why you should watch it:</strong> If you're a BookTok superfan, you've no doubt already heard of Quill's popular book series. And if you enjoy steamy, new-adult romances like the aforementioned "Off Campus" or "<a href="https://www.tomsguide.com/entertainment/streaming/this-romantic-drama-series-is-trending-on-prime-video-and-viewers-are-falling-in-love-with-it">Maxton Hall</a>," this one should be right up your alley. </p><p><em><strong>Stream </strong></em><a href="https://www.primevideo.com/detail/0LPJITUUG4OPFN23EQ16P5SH3I" target="_blank" rel="nofollow"><em><strong>"Campus Drivers" on Prime Video</strong></em></a><em><strong> beginning Nov. 6</strong></em></p><h2 id="39-chaar-yaar-39">'Chaar Yaar'</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/WZdXyU1fatY" allowfullscreen=""></iframe></div></div><p><strong>What is it about: </strong>Set in early-2000s Mumbai, this eight-episode Hindi crime drama follows four middle-class friends—Jay Gala (Prayrak Mehta), Tony Gomes (Saqib Ayub), Saahil Shaikh (Purav Jha) and Sameer Khilji (Naman Jain)—who begin stealing cars to clear their heavy debts, a decision that pulls them into a massive interstate operation populated by ruthless gangsters, dangerous cartels and relentless cops. </p><p><strong>Why you should watch it:</strong> With new titles arriving on the Amazon <a href="https://www.tomsguide.com/us/best-streaming-video-services,review-2625.html">streaming service</a> every single month, it's easy to miss an international gem like "Chaar Yaar," which arrived on Prime Video on October 23 and is packed with fun buddy chemistry and light thrills.</p><p><em><strong>Stream </strong></em><a href="https://www.primevideo.com/detail/0QGD9Q3KOVPFPIFXJ2AK0SZ18J" target="_blank" rel="nofollow"><em><strong>"Chaar Yaar" on Prime Video</strong></em></a><em><strong> now</strong></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/entertainment/prime-video/carrie-review-mike-flanagan-proves-theres-more-to-this-story-than-prom-night">Prime Video’s ‘Carrie’ is one of the best shows I’ve seen in 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/5-new-to-prime-video-movies-in-november-2026-i-recommend-with-90-percent-or-higher-on-rotten-tomatoes">5 new Prime Video movies with 90% or higher on Rotten Tomatoes</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/prime-video-just-added-103-new-movies-here-are-the-5-you-need-to-stream-first">Prime Video just added 103 new movies — 5 to stream first</a></li></ul><div data-model-name="Amazon Prime Video" data-widget-type="review" data-widget-title="Today's best streaming deals"></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Amazon Fire TV Stick HD Review: Small, speedy, and easy on the wallet ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Streaming sticks don't need to be fancy to hit their mark, and the Amazon Fire TV Stick HD is a great reminder of that. If you've got an older TV that's still going strong but has sluggish smart features (or perhaps none at all), a $35 streaming stick is an easy fix.</p><p>The 2026 Fire TV Stick HD runs <a href="https://www.tomsguide.com/entertainment/streaming-devices/amazon-announces-a-new-usd59-fire-tv-stick-and-finally-a-remote-you-can-find-with-alexa"><u>Vega OS</u></a>, Amazon's Linux-based software, which replaces the Android-based Fire OS that powered previous models. Amazon says the changes make it more than 30 percent faster, and it also brings a slimmer body, USB power, Wi-Fi 6 support, and free Alexa+.</p><p>It's not all pros across the board. The resolution caps out at 1080p, you can't sideload third-party apps anymore, and there's no support for Dolby Vision. But if you're shopping for a bedroom, guest room, or an older TV set that you don't primarily use, the Fire TV Stick HD is one of the cheaper <a href="https://www.tomsguide.com/entertainment/streaming-devices/best-streaming-devices"><u>streaming devices</u></a> you should take a closer look at.</p><h3 class="article-body__section" id="section-amazon-fire-tv-stick-hd-review-price-and-availability"><span>Amazon Fire TV Stick HD review: Price and availability</span></h3><p>The Amazon Fire TV Stick HD launched on April 29, 2026, for $34.99, which is the same price as the <a href="https://www.tomsguide.com/tvs/amazon-fire-tv-stick-hd-review"><u>2024 model</u></a> it replaced. It's Amazon's cheapest streaming stick, and it sits below the Fire TV Stick 4K and the Fire TV Stick 4K Max. Amazon ran a limited-time deal that brought the stick down to $21.99 shortly after launch, so we'll likely see temporary price cuts around the holiday shopping season.</p><p>Keep in mind that the stick's new "Direct Power" feature means that it gets power right from your TV's USB port. If your TV doesn't have a USB port, you'll need to pick up an adapter separately.</p><h3 class="article-body__section" id="section-amazon-fire-tv-stick-hd-review-design"><span>Amazon Fire TV Stick HD review: 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:2000px;"><p class="vanilla-image-block" style="padding-top:56.15%;"><img id="hGDRuqWh6izC9ho6UxWSSK" name="Amazon Fire TV Stick HD-9" alt="Amazon Fire TV Stick HD" src="https://cdn.mos.cms.futurecdn.net/hGDRuqWh6izC9ho6UxWSSK-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1123" attribution="" endorsement="" 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 Fire TV Stick HD is about as minimal as a streaming device gets, and Amazon says it's the slimmest Fire TV device the company has made. That makes it really easy to tuck behind a TV or toss in a bag for a trip, and it won't crowd the other ports and cables on your set.</p><p>The only other connection is a USB-C port for power, and thanks to "Direct Power," you can plug it straight into your TV's USB port with the included cable. That means you'll have one less wall adapter to hide, and your setup will look a lot cleaner as a result.</p><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.15%;"><img id="GxKT74MZvYmNBZu44z7KqT" name="Amazon Fire TV Stick HD-8" alt="Amazon Fire TV Stick HD remote" src="https://cdn.mos.cms.futurecdn.net/GxKT74MZvYmNBZu44z7KqT-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1123" attribution="" endorsement="" 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 included Alexa Voice Remote covers all the basics, including voice search, menu navigation, TV power, and volume controls. It doesn't have fancy extras like a remote finder or backlit buttons, but it gets the job done. (If you want Amazon's redesigned Fire TV remote, which I liked a lot more, you'll have to get the Fire TV Stick 4K.)</p><h3 class="article-body__section" id="section-amazon-fire-tv-stick-hd-review-setup"><span>Amazon Fire TV Stick HD review: Setup</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.15%;"><img id="eULPJ2MstBKgUZEfXwrmfW" name="Amazon Fire TV Stick HD-10" alt="Amazon Fire TV Stick HD in back of tv" src="https://cdn.mos.cms.futurecdn.net/eULPJ2MstBKgUZEfXwrmfW-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1123" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Setup is about as easy as it gets. Just plug the stick into your TV's HDMI port, connect the USB-C cable to your TV's USB port, and follow the on-screen prompts. You'll then have to connect to Wi-Fi and sign in with your Amazon account, and you're off to the races.</p><p>Since Vega OS only lets you install apps from the Amazon app store, you should make sure that the ones you use most are actually available. Netflix, YouTube, Disney+, Prime Video, Hulu, and other popular streaming services all run natively, but niche apps may be missing due to the lack of third-party app sideloading, which the older Fire OS allowed you to do.</p><h3 class="article-body__section" id="section-amazon-fire-tv-stick-hd-review-performance"><span>Amazon Fire TV Stick HD review: 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="dpdDJ8sJgBEqoy8MochvBf" name="Amazon Fire TV Stick HD-7" alt="Amazon Fire TV interface" src="https://cdn.mos.cms.futurecdn.net/dpdDJ8sJgBEqoy8MochvBf-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Fire TV Stick HD has a quad-core 1.7GHz processor and 8GB of storage. It can stream up to 1080p resolution with HDR10, HDR10+, and HLG, and it supports Dolby Atmos through HDMI pass-through if you have a compatible <a href="https://www.tomsguide.com/audio/soundbars/best-soundbars"><u>sound setup</u></a>. There's no Dolby Vision here, and it won't output 4K, so it's really only meant for 1080p TV sets.</p><p>Vega OS keeps menus and home screen rows moving smoothly, and apps open quickly. I didn't have any issues switching between my most used apps on the fly. Amazon's "30 percent faster" figure is its own claim, so I wouldn't treat it as fact, but it definitely felt faster than my past Fire OS experiences.</p><p>I also like that the Fire TV Stick HD isn't limited to video. You can pair a Bluetooth game controller and play cloud games through Amazon Luna or Xbox Game Pass, which is a fun bonus, and you can even connect a pair of headphones for late-night viewing. It comes with Alexa+ free of charge, which can come in handy when you're trying to hunt down something new to watch.</p><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="WpYjkvxXqhHnLbU5daENik" name="Amazon Fire TV Stick HD-6" alt="Amazon Fire TV  interface" src="https://cdn.mos.cms.futurecdn.net/WpYjkvxXqhHnLbU5daENik-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The downsides are pretty familiar to past Fire TV Sticks. A big chunk of the Fire TV home screen is taken up by recommendations and sponsored content, and you'll definitely notice it (especially if you're used to Roku's cleaner layout like I am). </p><p>Sideloading third-party apps is also gone, which will bug those who liked using older Fire TV Sticks for apps that aren't available in Amazon's app store. Neither is a dealbreaker for the average viewer, but they're worth knowing about before diving in.</p><h3 class="article-body__section" id="section-amazon-fire-tv-stick-hd-review-verdict"><span>Amazon Fire TV Stick HD review: Verdict</span></h3><p>The Amazon Fire TV Stick HD is a fast, simple, and affordable streaming stick that's a perfect match for older HD TVs and secondary rooms. Vega OS feels speedy, the slim design and USB power keep things neat, and setup takes just a few minutes. You won't get 4K streaming resolution, Dolby Vision, or third-party app sideloading, but for $34.99 (or less on sale), it's hard to complain.</p><p>If you're looking for an alternative pick, the base model <a href="https://www.tomsguide.com/best-picks/best-roku-devices">Roku Streaming Stick</a> ($39) also tops out at 1080p, but has a cleaner interface. </p><p>In Amazon’s ecosystem, the new <a href="https://www.tomsguide.com/entertainment/streaming-devices/among-pricey-streaming-gadgets-the-amazon-fire-tv-stick-4k-is-a-no-fuss-upgrade-for-your-slow-smart-tv">Fire TV Stick 4K</a> costs $25 more, but you get 4K resolution output and a redesigned (and much better) remote. And if you're a tinkerer who wants to sideload apps, the <a href="https://www.tomsguide.com/reviews/amazon-fire-tv-stick-4k-max-2nd-gen">Fire TV Stick 4K Max</a> is the only Amazon stick that still runs Android-based Fire OS.</p><p>If you've got an older 1080p TV and want a cheap way to get streaming apps on it, the Fire TV Stick HD is a solid choice that won't break the bank.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/streaming-devices/amazon-fire-tv-stick-hd-review</link>
                                                                            <description>
                            <![CDATA[ The Amazon Fire TV Stick HD is a tiny, speedy, and affordable way to add smart features to your TV. It tops out at 1080p and drops sideloading Android apps, but at $34.99, it's an easy pick for a non-primary TV setup. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">HE7k8WobbMyDkz2a4dcPdc</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/Z5sFmYRARtAaKUrTJizpqB-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 06 Nov 2026 12:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Streaming Devices]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                    <category><![CDATA[Streaming]]></category>
                                                                                                                    <dc:creator><![CDATA[ Dylan Haas ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/f7bDWZaM3p8SzT9r8EWAea-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/Z5sFmYRARtAaKUrTJizpqB-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Amazon Fire TV Stick HD]]></media:description>                                                            <media:text><![CDATA[Amazon Fire TV Stick HD]]></media:text>
                                <media:title type="plain"><![CDATA[Amazon Fire TV Stick HD]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/Z5sFmYRARtAaKUrTJizpqB-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Streaming sticks don't need to be fancy to hit their mark, and the Amazon Fire TV Stick HD is a great reminder of that. If you've got an older TV that's still going strong but has sluggish smart features (or perhaps none at all), a $35 streaming stick is an easy fix.</p><p>The 2026 Fire TV Stick HD runs <a href="https://www.tomsguide.com/entertainment/streaming-devices/amazon-announces-a-new-usd59-fire-tv-stick-and-finally-a-remote-you-can-find-with-alexa"><u>Vega OS</u></a>, Amazon's Linux-based software, which replaces the Android-based Fire OS that powered previous models. Amazon says the changes make it more than 30 percent faster, and it also brings a slimmer body, USB power, Wi-Fi 6 support, and free Alexa+.</p><p>It's not all pros across the board. The resolution caps out at 1080p, you can't sideload third-party apps anymore, and there's no support for Dolby Vision. But if you're shopping for a bedroom, guest room, or an older TV set that you don't primarily use, the Fire TV Stick HD is one of the cheaper <a href="https://www.tomsguide.com/entertainment/streaming-devices/best-streaming-devices"><u>streaming devices</u></a> you should take a closer look at.</p><h3 class="article-body__section" id="section-amazon-fire-tv-stick-hd-review-price-and-availability"><span>Amazon Fire TV Stick HD review: Price and availability</span></h3><p>The Amazon Fire TV Stick HD launched on April 29, 2026, for $34.99, which is the same price as the <a href="https://www.tomsguide.com/tvs/amazon-fire-tv-stick-hd-review"><u>2024 model</u></a> it replaced. It's Amazon's cheapest streaming stick, and it sits below the Fire TV Stick 4K and the Fire TV Stick 4K Max. Amazon ran a limited-time deal that brought the stick down to $21.99 shortly after launch, so we'll likely see temporary price cuts around the holiday shopping season.</p><p>Keep in mind that the stick's new "Direct Power" feature means that it gets power right from your TV's USB port. If your TV doesn't have a USB port, you'll need to pick up an adapter separately.</p><h3 class="article-body__section" id="section-amazon-fire-tv-stick-hd-review-design"><span>Amazon Fire TV Stick HD review: 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:2000px;"><p class="vanilla-image-block" style="padding-top:56.15%;"><img id="hGDRuqWh6izC9ho6UxWSSK" name="Amazon Fire TV Stick HD-9" alt="Amazon Fire TV Stick HD" src="https://cdn.mos.cms.futurecdn.net/hGDRuqWh6izC9ho6UxWSSK-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1123" attribution="" endorsement="" 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 Fire TV Stick HD is about as minimal as a streaming device gets, and Amazon says it's the slimmest Fire TV device the company has made. That makes it really easy to tuck behind a TV or toss in a bag for a trip, and it won't crowd the other ports and cables on your set.</p><p>The only other connection is a USB-C port for power, and thanks to "Direct Power," you can plug it straight into your TV's USB port with the included cable. That means you'll have one less wall adapter to hide, and your setup will look a lot cleaner as a result.</p><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.15%;"><img id="GxKT74MZvYmNBZu44z7KqT" name="Amazon Fire TV Stick HD-8" alt="Amazon Fire TV Stick HD remote" src="https://cdn.mos.cms.futurecdn.net/GxKT74MZvYmNBZu44z7KqT-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1123" attribution="" endorsement="" 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 included Alexa Voice Remote covers all the basics, including voice search, menu navigation, TV power, and volume controls. It doesn't have fancy extras like a remote finder or backlit buttons, but it gets the job done. (If you want Amazon's redesigned Fire TV remote, which I liked a lot more, you'll have to get the Fire TV Stick 4K.)</p><h3 class="article-body__section" id="section-amazon-fire-tv-stick-hd-review-setup"><span>Amazon Fire TV Stick HD review: Setup</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.15%;"><img id="eULPJ2MstBKgUZEfXwrmfW" name="Amazon Fire TV Stick HD-10" alt="Amazon Fire TV Stick HD in back of tv" src="https://cdn.mos.cms.futurecdn.net/eULPJ2MstBKgUZEfXwrmfW-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1123" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Setup is about as easy as it gets. Just plug the stick into your TV's HDMI port, connect the USB-C cable to your TV's USB port, and follow the on-screen prompts. You'll then have to connect to Wi-Fi and sign in with your Amazon account, and you're off to the races.</p><p>Since Vega OS only lets you install apps from the Amazon app store, you should make sure that the ones you use most are actually available. Netflix, YouTube, Disney+, Prime Video, Hulu, and other popular streaming services all run natively, but niche apps may be missing due to the lack of third-party app sideloading, which the older Fire OS allowed you to do.</p><h3 class="article-body__section" id="section-amazon-fire-tv-stick-hd-review-performance"><span>Amazon Fire TV Stick HD review: 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="dpdDJ8sJgBEqoy8MochvBf" name="Amazon Fire TV Stick HD-7" alt="Amazon Fire TV interface" src="https://cdn.mos.cms.futurecdn.net/dpdDJ8sJgBEqoy8MochvBf-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Fire TV Stick HD has a quad-core 1.7GHz processor and 8GB of storage. It can stream up to 1080p resolution with HDR10, HDR10+, and HLG, and it supports Dolby Atmos through HDMI pass-through if you have a compatible <a href="https://www.tomsguide.com/audio/soundbars/best-soundbars"><u>sound setup</u></a>. There's no Dolby Vision here, and it won't output 4K, so it's really only meant for 1080p TV sets.</p><p>Vega OS keeps menus and home screen rows moving smoothly, and apps open quickly. I didn't have any issues switching between my most used apps on the fly. Amazon's "30 percent faster" figure is its own claim, so I wouldn't treat it as fact, but it definitely felt faster than my past Fire OS experiences.</p><p>I also like that the Fire TV Stick HD isn't limited to video. You can pair a Bluetooth game controller and play cloud games through Amazon Luna or Xbox Game Pass, which is a fun bonus, and you can even connect a pair of headphones for late-night viewing. It comes with Alexa+ free of charge, which can come in handy when you're trying to hunt down something new to watch.</p><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="WpYjkvxXqhHnLbU5daENik" name="Amazon Fire TV Stick HD-6" alt="Amazon Fire TV  interface" src="https://cdn.mos.cms.futurecdn.net/WpYjkvxXqhHnLbU5daENik-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The downsides are pretty familiar to past Fire TV Sticks. A big chunk of the Fire TV home screen is taken up by recommendations and sponsored content, and you'll definitely notice it (especially if you're used to Roku's cleaner layout like I am). </p><p>Sideloading third-party apps is also gone, which will bug those who liked using older Fire TV Sticks for apps that aren't available in Amazon's app store. Neither is a dealbreaker for the average viewer, but they're worth knowing about before diving in.</p><h3 class="article-body__section" id="section-amazon-fire-tv-stick-hd-review-verdict"><span>Amazon Fire TV Stick HD review: Verdict</span></h3><p>The Amazon Fire TV Stick HD is a fast, simple, and affordable streaming stick that's a perfect match for older HD TVs and secondary rooms. Vega OS feels speedy, the slim design and USB power keep things neat, and setup takes just a few minutes. You won't get 4K streaming resolution, Dolby Vision, or third-party app sideloading, but for $34.99 (or less on sale), it's hard to complain.</p><p>If you're looking for an alternative pick, the base model <a href="https://www.tomsguide.com/best-picks/best-roku-devices">Roku Streaming Stick</a> ($39) also tops out at 1080p, but has a cleaner interface. </p><p>In Amazon’s ecosystem, the new <a href="https://www.tomsguide.com/entertainment/streaming-devices/among-pricey-streaming-gadgets-the-amazon-fire-tv-stick-4k-is-a-no-fuss-upgrade-for-your-slow-smart-tv">Fire TV Stick 4K</a> costs $25 more, but you get 4K resolution output and a redesigned (and much better) remote. And if you're a tinkerer who wants to sideload apps, the <a href="https://www.tomsguide.com/reviews/amazon-fire-tv-stick-4k-max-2nd-gen">Fire TV Stick 4K Max</a> is the only Amazon stick that still runs Android-based Fire OS.</p><p>If you've got an older 1080p TV and want a cheap way to get streaming apps on it, the Fire TV Stick HD is a solid choice that won't break the bank.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Prime Video top 10 movies — here’s the 3 worth watching this week (Nov. 2-8) ]]></title>
                                                                                                <dc:content><![CDATA[ <p>With Halloween now squarely in the rear view, the latest <strong>top 10 Prime Video movies</strong> chart isn't quite so spooky this week. However, as a horror nut, that hasn't stopped me from slipping in a slasher for my top three streaming choices for your consideration this week.   </p><p>As always, the Prime Video top 10 most-watched list rotates as the weeks pass, so not every movie that's made the charts this week is a banger. That said, the latest entry in a legendary horror series, a tender Martin Sheen drama, and an absolutely wild-looking Spanish zombie romp should keep you entertained over the next seven days. </p><p>The movies below are taken from <strong>Prime Video’s top 10 as of Monday, November 2, 2026</strong>. Here are the three chart-topping movies on Prime Video you need to add to your watchlist.</p><h3 class="article-body__section" id="section-best-movies-in-the-prime-video-top-10"><span>Best movies in the Prime Video top 10</span></h3><h2 id="apocalypse-z-new-world-2026">‘Apocalypse Z: New World’ (2026)</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/EzDw6-q26Ig" allowfullscreen=""></iframe></div></div><p>The second entry in Prime Video’s Spanish zombie trilogy, “Apocalypse Z: New World,” showcases the amount of smarts you’d expect from your average shuffling brain-biter. But that’s not to say there isn’t fun to be had from this violent romp based on the books of Manel Loureiro. If nothing else, the scenery is certainly pretty… well, until all that viscera gets splattered everywhere. </p><p>Following the first movie "Apocalypse Z: The Beginning of the End”, the TSJ virus has brought the world to its knees. The Spanish government has militarised the Canary Islands to act as a temporary haven, but it’s not long before a dangerous mission is ordered to obtain crucial supplies from an abandoned airfield in Madrid. Cue a bunch of special forces pumping <em>all</em> of the ammo into hordes of zombies, losing many a limb in the process. The action is obviously dumb, but the undead-heavy scenes are at least directed at a keen pace. </p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/Apocalypse-Z-World-Carles-Torrens/dp/B0HM6K5Z62" target="_blank" rel="nofollow"><em><strong>"Apocalypse Z: New World" on Prime Video</strong></em></a><em><strong> now</strong></em></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ORMLNW"></div>                            </div>                            <script src="https://kwizly.com/embed/ORMLNW.js" async=""></script><h2 id="scream-7-39-2026">‘Scream 7' (2026)</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/UJrghaPJ0RY" allowfullscreen=""></iframe></div></div><p>Halloween might be over for another year, but that doesn't mean you can't scare yourself silly catching up on Ghostface’s latest spectacularly stabby antics. With a returning Sidney Prescott (Neve Campbell) now a happily married woman with a kid and her own cute little coffee shop, of course Sid and the masked killer bury the hatchet, promptly spending the full 114-minute runtime catching up over pumpkin spice frappuccinos. Or not...</p><p>The latest incarnation of Ghostface — who may or may not be a face from the past — is gunning for Sidney’s daughter Tatam (Isabel May) and her teenage pals. “Scream 7” has some real fun with the concept of AI deepfakes, making for cool cameos from the franchise’s past that really shouldn’t be possible. Anyway, the action rattles along, the opening scene in Stu Macher’s infamous house is expertly set up, and some of the kills are “Final Destination” level brutal. Brace yourself for one involving a beer tap. Seven entries in, “Scream” absolutely still has it. </p><p><em><strong>Watch </strong></em><a href="https://www.primevideo.com/region/eu/detail/0R4HOUHPV4SU3LSWK7M1K5S5JB" target="_blank" rel="nofollow"><em><strong>"Scream 7" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="39-forget-me-never-39-1999">'Forget Me Never' (1999)</h2><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="SstLRS4DKSNk5fpyJVmvbT" name="JM8GEC-forget-me-never-movie" alt="Martin Sheen in "Forget Me Never"" src="https://cdn.mos.cms.futurecdn.net/SstLRS4DKSNk5fpyJVmvbT-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: Alamy / FilmRise)</span></figcaption></figure><p>Due to its status as a late ‘90s made-for-TV flick, there’s a good chance you might not have seen “Forget Me Never”. Rectify that error this week. The tale of a successful legal aid Diana McGowin (Mia Farrow), the businesswoman’s life gradually begins to unravel after she starts suffering from confusion and short-term memory loss. After a battery of tests Diana is tragically diagnosed with early-on Alzheimer's. And that’s where the twist of this delicately handled drama kicks in. </p><p>As she’s the main breadwinner in her family, Diana decides to keep her illness from her husband Jack (a predictably charming Martin Sheen) and the rest of her family. Though she hides her symptoms for a while, an incident at a conference forces Diana to reveal her Alzheimer’s diagnosis to her loved ones. Though Jack struggles with the initial revelation, he later promises to always be there for her, with Diana going on to form a support group for those suffering from early-onset. A touching drama with strong central performances that elevate this film over lesser made-for-TV fare.  </p><p><em><strong>Watch </strong></em><a href="https://www.primevideo.com/detail/0T7726TIZVNRC5T0T3MT7MY7QO" target="_blank" rel="nofollow"><em><strong>"Forget Me Never" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h3 class="article-body__section" id="section-prime-video-top-10-movies-right-now"><span>Prime Video top 10 movies right now</span></h3><ol start="1"><li>"Apocalypse Z: New World" (2026)</li><li>"Ali G: Who Iz I?" (2026)</li><li>"Hungry" (2026)</li><li>"Scream 7" (2026)</li><li>"Forget Me Never" (1999)</li><li>"First Winter" (1982)</li><li>"The Secret of Moonacre" (2008)</li><li>"Halloween II" (1981)</li><li>"Love of Your Life" (2026)</li><li>"Dark Nature" (2023)</li></ol><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="gdR2W4" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><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/entertainment/prime-video/new-on-prime-video-in-november-2026-all-the-new-movies-and-shows-to-stream-this-month">New on Prime Video in November 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/prime-video-just-added-103-new-movies-here-are-the-5-you-need-to-stream-first">Prime Video just added 103 new movies — 5 to stream first</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/one-of-the-best-road-movies-ever-just-sped-onto-prime-video-you-need-to-watch-this-ridley-scott-masterpiece-right-now">One of the best road movies ever just sped onto Prime Video</a><strong> </strong></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/prime-video/prime-video-top-10-movies-heres-the-3-worth-watching-this-week-nov-2-8</link>
                                                                            <description>
                            <![CDATA[ The Prime Video top 10 most-watched list has been updated once again. I'm here to help you find the movies you'll actually want to stream. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">RM99HHQFSFPgR53drnXBjR</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/eriDkLTxXe8B9oPAQV6Vva-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 02 Nov 2026 14:18:39 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Prime Video]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                    <category><![CDATA[Streaming]]></category>
                                                                                                <author><![CDATA[ dave.meikleham@futurenet.com (Dave Meikleham) ]]></author>                    <dc:creator><![CDATA[ Dave Meikleham ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Rda8e7jGfyTdZLWYJQQ8VY-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Dave is a computing editor at Tom’s Guide and covers everything from cutting-edge laptops, the latest GPU tech, to ultrawide monitors. When he’s not worrying about dead pixels, Dave enjoys regularly rebuilding his PC for absolutely no reason at all. He built his first rig over 20 years ago, and he’s gone through more motherboards than he’s had hot dinners. Probably. &lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;In a previous life, he worked as a video game journalist during a career spanning the best part of two decades. Over that time he worked across both online and print, with bylines for GamesRadar+, PC Gamer, TechRadar, Edge and the Official UK PlayStation Magazine. He’s almost amassed an immeasurable amount of bad puns.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;An avid PC and console gamer, Dave enjoys breaking out Fraps way too often as he obsesses over frame rates. Despite owning a graphics card that costs roughly the same as your average used car, he still enjoys gaming on the go and is regularly glued to his Switch. Away from tech, most of Dave’s time is taken up by walking his husky, obsessing about his various OLED displays and sweating over the fitness of half a dozen Arsenal players on any given week.&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/eriDkLTxXe8B9oPAQV6Vva-1920-80.jpg">
                                                            <media:credit><![CDATA[Prime Video; Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Prime Video logo on yellow blue background]]></media:description>                                                            <media:text><![CDATA[Prime Video logo on yellow blue background]]></media:text>
                                <media:title type="plain"><![CDATA[Prime Video logo on yellow blue background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/eriDkLTxXe8B9oPAQV6Vva-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>With Halloween now squarely in the rear view, the latest <strong>top 10 Prime Video movies</strong> chart isn't quite so spooky this week. However, as a horror nut, that hasn't stopped me from slipping in a slasher for my top three streaming choices for your consideration this week.   </p><p>As always, the Prime Video top 10 most-watched list rotates as the weeks pass, so not every movie that's made the charts this week is a banger. That said, the latest entry in a legendary horror series, a tender Martin Sheen drama, and an absolutely wild-looking Spanish zombie romp should keep you entertained over the next seven days. </p><p>The movies below are taken from <strong>Prime Video’s top 10 as of Monday, November 2, 2026</strong>. Here are the three chart-topping movies on Prime Video you need to add to your watchlist.</p><h3 class="article-body__section" id="section-best-movies-in-the-prime-video-top-10"><span>Best movies in the Prime Video top 10</span></h3><h2 id="apocalypse-z-new-world-2026">‘Apocalypse Z: New World’ (2026)</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/EzDw6-q26Ig" allowfullscreen=""></iframe></div></div><p>The second entry in Prime Video’s Spanish zombie trilogy, “Apocalypse Z: New World,” showcases the amount of smarts you’d expect from your average shuffling brain-biter. But that’s not to say there isn’t fun to be had from this violent romp based on the books of Manel Loureiro. If nothing else, the scenery is certainly pretty… well, until all that viscera gets splattered everywhere. </p><p>Following the first movie "Apocalypse Z: The Beginning of the End”, the TSJ virus has brought the world to its knees. The Spanish government has militarised the Canary Islands to act as a temporary haven, but it’s not long before a dangerous mission is ordered to obtain crucial supplies from an abandoned airfield in Madrid. Cue a bunch of special forces pumping <em>all</em> of the ammo into hordes of zombies, losing many a limb in the process. The action is obviously dumb, but the undead-heavy scenes are at least directed at a keen pace. </p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/Apocalypse-Z-World-Carles-Torrens/dp/B0HM6K5Z62" target="_blank" rel="nofollow"><em><strong>"Apocalypse Z: New World" on Prime Video</strong></em></a><em><strong> now</strong></em></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ORMLNW"></div>                            </div>                            <script src="https://kwizly.com/embed/ORMLNW.js" async=""></script><h2 id="scream-7-39-2026">‘Scream 7' (2026)</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/UJrghaPJ0RY" allowfullscreen=""></iframe></div></div><p>Halloween might be over for another year, but that doesn't mean you can't scare yourself silly catching up on Ghostface’s latest spectacularly stabby antics. With a returning Sidney Prescott (Neve Campbell) now a happily married woman with a kid and her own cute little coffee shop, of course Sid and the masked killer bury the hatchet, promptly spending the full 114-minute runtime catching up over pumpkin spice frappuccinos. Or not...</p><p>The latest incarnation of Ghostface — who may or may not be a face from the past — is gunning for Sidney’s daughter Tatam (Isabel May) and her teenage pals. “Scream 7” has some real fun with the concept of AI deepfakes, making for cool cameos from the franchise’s past that really shouldn’t be possible. Anyway, the action rattles along, the opening scene in Stu Macher’s infamous house is expertly set up, and some of the kills are “Final Destination” level brutal. Brace yourself for one involving a beer tap. Seven entries in, “Scream” absolutely still has it. </p><p><em><strong>Watch </strong></em><a href="https://www.primevideo.com/region/eu/detail/0R4HOUHPV4SU3LSWK7M1K5S5JB" target="_blank" rel="nofollow"><em><strong>"Scream 7" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="39-forget-me-never-39-1999">'Forget Me Never' (1999)</h2><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="SstLRS4DKSNk5fpyJVmvbT" name="JM8GEC-forget-me-never-movie" alt="Martin Sheen in "Forget Me Never"" src="https://cdn.mos.cms.futurecdn.net/SstLRS4DKSNk5fpyJVmvbT-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: Alamy / FilmRise)</span></figcaption></figure><p>Due to its status as a late ‘90s made-for-TV flick, there’s a good chance you might not have seen “Forget Me Never”. Rectify that error this week. The tale of a successful legal aid Diana McGowin (Mia Farrow), the businesswoman’s life gradually begins to unravel after she starts suffering from confusion and short-term memory loss. After a battery of tests Diana is tragically diagnosed with early-on Alzheimer's. And that’s where the twist of this delicately handled drama kicks in. </p><p>As she’s the main breadwinner in her family, Diana decides to keep her illness from her husband Jack (a predictably charming Martin Sheen) and the rest of her family. Though she hides her symptoms for a while, an incident at a conference forces Diana to reveal her Alzheimer’s diagnosis to her loved ones. Though Jack struggles with the initial revelation, he later promises to always be there for her, with Diana going on to form a support group for those suffering from early-onset. A touching drama with strong central performances that elevate this film over lesser made-for-TV fare.  </p><p><em><strong>Watch </strong></em><a href="https://www.primevideo.com/detail/0T7726TIZVNRC5T0T3MT7MY7QO" target="_blank" rel="nofollow"><em><strong>"Forget Me Never" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h3 class="article-body__section" id="section-prime-video-top-10-movies-right-now"><span>Prime Video top 10 movies right now</span></h3><ol start="1"><li>"Apocalypse Z: New World" (2026)</li><li>"Ali G: Who Iz I?" (2026)</li><li>"Hungry" (2026)</li><li>"Scream 7" (2026)</li><li>"Forget Me Never" (1999)</li><li>"First Winter" (1982)</li><li>"The Secret of Moonacre" (2008)</li><li>"Halloween II" (1981)</li><li>"Love of Your Life" (2026)</li><li>"Dark Nature" (2023)</li></ol><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="gdR2W4" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><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/entertainment/prime-video/new-on-prime-video-in-november-2026-all-the-new-movies-and-shows-to-stream-this-month">New on Prime Video in November 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/prime-video-just-added-103-new-movies-here-are-the-5-you-need-to-stream-first">Prime Video just added 103 new movies — 5 to stream first</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/one-of-the-best-road-movies-ever-just-sped-onto-prime-video-you-need-to-watch-this-ridley-scott-masterpiece-right-now">One of the best road movies ever just sped onto Prime Video</a><strong> </strong></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ The Kindle Colorsoft Signature Edition is now my favorite color e-reader — but I wish it weren’t so expensive ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The Amazon Kindle Colorsoft Signature Edition (2026) brings some subtle but welcome updates for the company’s color e-reader. Like the Kindle Paperwhite Signature Edition, this model comes with 32GB of storage and a slimmer design with an aluminum back. It’s not a major departure from its predecessor, but it feels more like a premium device, with a price to match.</p><p>The main reason you’d want this Kindle is its color display. If you read a lot of comics, books with pictures, or just want to see book covers in color, this e-reader delivers. Though the resolution drops to 150ppi in color and the display isn’t as bright as a black-and-white Kindle, having a color display balances that loss.</p><p>Most of what I said in my <a href="https://www.tomsguide.com/computing/e-readers/kindle-paperwhite-signature-edition-2026-review">Kindle Paperwhite Signature Edition (2026) review</a> applies here, as the main difference between the two devices is that one has a color display while the other doesn’t. Unfortunately, one of the biggest negatives I had with the Paperwhite is more pronounced here: the steeper asking price. At $319, it’s certainly a harder recommendation.</p><p>But if you’re willing to pay for this high-end color Kindle, the Amazon Kindle Colorsoft Signature Edition (2026) won’t disappoint. Find out why in my full review!</p><h3 class="article-body__section" id="section-amazon-kindle-colorsoft-signature-edition-2026-review-cheat-sheet"><span>Amazon Kindle Colorsoft Signature Edition (2026) review: Cheat sheet</span></h3><ul><li><strong>What is it?</strong> The Amazon Kindle Colorsoft Signature Edition (2026) is a premium version of the regular color e-reader, featuring an aluminum back casing and 32GB of storage.</li><li><strong>Who is it for?</strong> For Kindle users who want a higher-end version of the Colorsoft or anyone who wants a color e-reader.</li><li><strong>What does it cost?</strong> The Amazon Kindle Colorsoft Signature Edition (2026) costs <a href="https://www.amazon.com/Kindle-Colorsoft-Signature-Edition-Fig-32GB/dp/B0GV5WJH35?th=1" target="_blank" rel="nofollow">$319 on Amazon</a>. It has 32GB of storage and no ad support. The standard Kindle Colorsoft <a href="https://www.amazon.com/dp/B0GHT5P56N" target="_blank" rel="nofollow">costs $289 on Amazon</a>.</li><li><strong>What do we like?</strong> We like the color display, aluminum housing, long battery life, and seamless integration with the Kindle ecosystem.</li><li><strong>What don’t we like?</strong> We don’t like the higher asking price, proprietary wireless charging, and that color images have half the resolution of black and white.</li></ul><h3 class="article-body__section" id="section-amazon-kindle-colorsoft-signature-edition-2026-review-specs"><span>Amazon Kindle Colorsoft Signature Edition (2026) review: Specs</span></h3><div ><table><thead><tr><th class="firstcol empty" ></th><th  ><p><strong>Kindle Colorsoft Signature Edition (2026)</strong></p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p>$319</p></td></tr><tr><td class="firstcol " ><p><strong>Display</strong></p></td><td  ><p>7-inch 300ppi</p></td></tr><tr><td class="firstcol " ><p><strong>Storage</strong></p></td><td  ><p>32GB</p></td></tr><tr><td class="firstcol " ><p><strong>Front light</strong></p></td><td  ><p>Yes (warm light)</p></td></tr><tr><td class="firstcol " ><p><strong>Battery life</strong></p></td><td  ><p>8 weeks (rated)</p></td></tr><tr><td class="firstcol " ><p><strong>Ports</strong></p></td><td  ><p>1x USB-C</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>Wi-Fi</p></td></tr><tr><td class="firstcol " ><p><strong>Waterproof</strong></p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Colors</strong></p></td><td  ><p>Fig, Graphite</p></td></tr><tr><td class="firstcol " ><p><strong>Dimensions</strong></p></td><td  ><p>6.9 x 5.0 x 0.3 inches</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>8.1 oz</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-amazon-kindle-colorsoft-signature-edition-2026-review-the-ups"><span>Amazon Kindle Colorsoft Signature Edition (2026) review: The ups</span></h3><p>The Kindle Colorsoft Signature Edition offers meaningful upgrades, including a more vivid display, a lighter build, and a sturdy aluminum chassis.</p><h2 id="rich-color-display">Rich color 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="moDgaUKAEr98yXMJnnzVWo" name="Kindle Colorsoft Signature Edition (2026)-9" alt="Kindle Colorsoft Signature Edition (2026)" src="https://cdn.mos.cms.futurecdn.net/moDgaUKAEr98yXMJnnzVWo-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 display on the new Kindle Colorsoft is roughly the same as the previous model, except Amazon used a new reverse-stack display construction to make the screen-to-bezel transition more seamless. Other than that, this is still a 7-inch color digital ink display that’s flush with the bezels.</p><p>Now that I’ve had two years of experience with the previous Colorsoft, I know black-and-white content won’t look as bright or as defined as it does on the Paperwhite. It’s certainly a trade-off, since the layer that produces color makes the screen darker overall. I tend to read novels with the Kindle’s front lights off (while I sit near a lamp or other light source), but with the Colorsoft, I turn the device’s lights on for better clarity. It’s not a deal breaker and doesn’t negatively affect my opinion of this reader, but it’s something you should know.</p><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="s2LquoccJLue38Rs5XXXxW" name="Kindle Colorsoft Signature Edition (2026)-4" alt="Kindle Colorsoft Signature Edition (2026)" src="https://cdn.mos.cms.futurecdn.net/s2LquoccJLue38Rs5XXXxW-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>As before, the Colorsoft does an admirable job with color pages. In fact, colors are slightly more vibrant than on the previous model. Sure, the display doesn’t get anywhere as bright as an iPad mini, but the Colorsoft offers a more paper-like look, which is naturally a bit washed out in comparison. It’s a small concession, since seeing the covers of the books in my collection is not only cool, but also makes them easier to identify by color.</p><p>For color, you can choose between Standard and Vivid in the settings. Standard gives you the full range of colors, while Vivid makes the colors pop more. I still prefer Standard because it balances colors well and lets more detail show. Vivid is okay, but image quality isn’t always uniform.</p><p>Black-and-white pages appear at full 300ppi resolution, while color pages are at 150ppi. The drop in resolution is noticeable but not egregious. When reading comics, text is plenty readable, and I have no trouble seeing fine details in the drawings. Zooming in helps you see more detail in smaller drawings, and it doesn’t greatly degrade an image’s quality. I still prefer reading comics on a 13-inch iPad Pro or the 12-inch Alexa Tablet 12 Pro, but reading them on the Colorsoft isn’t terrible.</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="sVNfLbGapYqWEefHXu3Nh9" name="Kindle Colorsoft Signature Edition (2026)-8" alt="Kindle Colorsoft Signature Edition (2026)" src="https://cdn.mos.cms.futurecdn.net/sVNfLbGapYqWEefHXu3Nh9-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 Kindle Colorsoft Signature Edition is a truly elegant e-reader thanks to its soft curves and overall minimal design. My review unit came in Fig, which also enhances the device’s sleek aesthetic. Beyond looks, it’s also quite practical.</p><p>At 6.9 x 5.0 x 0.3 inches and 8.1 oz, the Colorsoft Signature Edition can easily fit into most backpacks and pockets. I traveled to and from work with it and almost always forgot it was there. The aluminum back housing makes this e-reader a tad heavier than the regular Colorsoft, but I found the extra weight negligible.</p><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="chsNpED4TGgKYbXVRo9Wjf" name="Kindle Colorsoft Signature Edition (2026)-3" alt="Kindle Colorsoft Signature Edition (2026)" src="https://cdn.mos.cms.futurecdn.net/chsNpED4TGgKYbXVRo9Wjf-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 huge change is the <a href="https://www.tomsguide.com/computing/e-readers/i-went-hands-on-with-amazons-new-kindles-and-this-one-feature-has-me-excited">repositioned power button</a>, which moves from the bottom of the device to the right-hand side. That’s a feature I loved about the Kindle Scribe, so I’m glad that all Kindles now have it. Now, it’s almost impossible to accidentally shut off a Kindle while you’re reading it, unless you’re holding it unusually.</p><p>Amazon has done a fantastic job with these aluminum Kindles, as they feel more premium while still retaining the classic Kindle design. Sure, this makes Kindles cost more, but I just love how the aluminum e-readers feel in hand.</p><h2 id="enduring-battery-life">Enduring 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="vonmUBNABcLoaiKH9vxQaE" name="Kindle Colorsoft Signature Edition (2026)-2" alt="Kindle Colorsoft Signature Edition (2026)" src="https://cdn.mos.cms.futurecdn.net/vonmUBNABcLoaiKH9vxQaE-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>Kindles are known for their weeks-long battery life, and the Colorsoft Signature Edition is no exception. Amazon claims that its color e-reader can last up to 8 weeks on a single charge. I haven’t used this Colorsoft for nearly that long, but during my two weeks of use, I’ve yet to charge it.</p><p>I read about an hour a day with adaptive brightness on and color set to Standard. In two weeks, the battery dropped from 95% to 68%. Doing some napkin math, I can likely get another month or so of use before I have to recharge at that rate. Needless to say, this is one long-lasting e-reader!</p><h2 id="kindle-ecosystem">Kindle 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:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="mZ7b4Li4nqYcyXGQmLcvjK" name="Kindle Colorsoft Signature Edition (2026)-5" alt="Kindle Colorsoft Signature Edition (2026)" src="https://cdn.mos.cms.futurecdn.net/mZ7b4Li4nqYcyXGQmLcvjK-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 Kindle Colorsoft Signature Edition has the same simple UI as its siblings, so if you’re familiar with the interface, you’ll feel at home.</p><p>You’ll see all the books you’re currently reading or have recently read on the Home page, with a list of recommended books right beneath that. You'll also see curated recommendations from Kindle Unlimited when you scroll further down. Everything refreshes quickly, so it’s easy to click a recommended book and read its description or sample pages to see if you’re interested.</p><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="9nhvqwmovRBAumrjanxJj4" name="Kindle Colorsoft Signature Edition (2026)-6" alt="Kindle Colorsoft Signature Edition (2026)" src="https://cdn.mos.cms.futurecdn.net/9nhvqwmovRBAumrjanxJj4-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>From the drop-down menu, you can toggle options like airplane mode, Bluetooth, and Dark Mode. More options appear when you’re reading a book, such as font, theme, chapter selection, and more. The robust settings let you really curate your reading experience.</p><p>Kindle Store and Goodreads integration are another highlight for me, especially the latter since I enjoy updating my reading status and sharing it with friends who are also on Goodreads. I’m not ashamed to admit that this level of integration is why I find it difficult to move to another e-reader ecosystem, since I’ve been using Kindles for the better part of 10 years. This level of integration is key to truly getting the best Kindle experience.</p><h3 class="article-body__section" id="section-amazon-kindle-colorsoft-signature-edition-2026-review-the-downs"><span>Amazon Kindle Colorsoft Signature Edition (2026) review: The downs</span></h3><p>The Kindle Colorsoft Signature Edition is great, but it's hindered by two major things.</p><h2 id="steep-asking-price">Steep asking 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="5zryhKnA6ffQWP8iFRVpq9" name="Kindle Colorsoft Signature Edition (2026)-10" alt="Kindle Colorsoft Signature Edition (2026)" src="https://cdn.mos.cms.futurecdn.net/5zryhKnA6ffQWP8iFRVpq9-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>Let’s not mince words: the new Kindle Colorsoft Signature Edition isn’t cheap. This was also true about the last model, which started at $279. But now, with component prices climbing every day, you’ll have to pay more for Amazon’s color Kindle.</p><p>The Signature Edition of the Kindle Colorsoft costs a hefty $319. That’s a $40 price bump from the previous model, which is pretty significant. The same is true for the standard $289 Colorsoft, which is also $40 more expensive. So no matter which Colorsoft (or Kindle) you buy now, you’ll have to pay more than before.</p><h2 id="proprietary-charging">Proprietary charging</h2><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="ytoPDgM5jyuDFUbVZijJcE" name="Kindle Colorsoft Signature Edition (2026)-11" alt="Kindle Colorsoft Signature Edition (2026)" src="https://cdn.mos.cms.futurecdn.net/ytoPDgM5jyuDFUbVZijJcE-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 previous Kindle Colorsoft Signature Edition supported Qi charging, a great feature that gave you more versatility when you needed to charge the device. Unfortunately, this feature is no longer available.</p><p>If you want to wirelessly charge the Colorsoft Signature Edition, you’ll need to do so with the Amazon Charging Stand, which costs 59. When placed on this stand, the Kindle charges via the pogo pins on its bottom back side. It’s a neat way to charge the e-reader, but it would have been better if Qi charging were still supported.</p><p>Like I said in my Kindle Paperwhite Signature Edition review, you won’t have to charge the device very often, so Qi charging isn’t necessarily a necessity — nor is the proprietary wireless charger. Still, I wish we didn’t have to trade Qi charging for a wireless charging stand.</p><h3 class="article-body__section" id="section-amazon-kindle-colorsoft-signature-edition-2026-review-verdict"><span>Amazon Kindle Colorsoft Signature Edition (2026) review: Verdict</span></h3><p>The Amazon Kindle Colorsoft Signature Edition (2026) might be pricey, but it delivers an enjoyable reading experience thanks to its sharp color digital ink display, lovely design, and integration with the Kindle Store and Goodreads. Though I still prefer the Kindle Paperwhite Signature Edition for its clearer and sharper black-and-white display, the Colorsoft is still darn impressive.</p><p>If a color display and a premium design aren’t as important as affordability, then the basic Kindle is a great choice starting at $149. If you want a larger display than that basic reader, then the $199 Kindle Paperwhite is another great pick. Of course, if you do want a color Kindle, the standard Kindle Colorsoft with 16GB of storage and ad support isn’t too bad.</p><p>Costs aside, if you liked what I had to say about the Amazon Kindle Colorsoft Signature Edition and don’t mind paying a premium, then I won’t deter you, as it really is a lovely e-reader. Right now, it’s arguably the best of its kind. And given Amazon’s penchant for discounting Kindles during sales events, you can likely get it for a few dollars off. If that happens, then don’t hesitate to get a Colorsoft. You won’t be disappointed.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/e-readers/kindle-colorsoft-signature-edition-2026-review</link>
                                                                            <description>
                            <![CDATA[ The Amazon Kindle Colorsoft Signature Edition (2026) isn’t cheap, but it’s easily Kindle’s best color e-reader yet thanks to its vivid hues and lovely design. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">rznCMjvihFvjW9bJZtD7ek</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/U55N6bVRaCuBgSbnfYwzyZ-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 31 Oct 2026 08:45:00 +0000</pubDate>                                                                                                                                <updated>Sun, 01 Nov 2026 21:34:27 +0000</updated>
                                                                                                                                            <category><![CDATA[E-Readers]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Tablets]]></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/U55N6bVRaCuBgSbnfYwzyZ-1920-80.jpg">
                                                            <media:credit><![CDATA[Tom&amp;#39;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Kindle Colorsoft Signature Edition (2026)]]></media:description>                                                            <media:text><![CDATA[Kindle Colorsoft Signature Edition (2026)]]></media:text>
                                <media:title type="plain"><![CDATA[Kindle Colorsoft Signature Edition (2026)]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/U55N6bVRaCuBgSbnfYwzyZ-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The Amazon Kindle Colorsoft Signature Edition (2026) brings some subtle but welcome updates for the company’s color e-reader. Like the Kindle Paperwhite Signature Edition, this model comes with 32GB of storage and a slimmer design with an aluminum back. It’s not a major departure from its predecessor, but it feels more like a premium device, with a price to match.</p><p>The main reason you’d want this Kindle is its color display. If you read a lot of comics, books with pictures, or just want to see book covers in color, this e-reader delivers. Though the resolution drops to 150ppi in color and the display isn’t as bright as a black-and-white Kindle, having a color display balances that loss.</p><p>Most of what I said in my <a href="https://www.tomsguide.com/computing/e-readers/kindle-paperwhite-signature-edition-2026-review">Kindle Paperwhite Signature Edition (2026) review</a> applies here, as the main difference between the two devices is that one has a color display while the other doesn’t. Unfortunately, one of the biggest negatives I had with the Paperwhite is more pronounced here: the steeper asking price. At $319, it’s certainly a harder recommendation.</p><p>But if you’re willing to pay for this high-end color Kindle, the Amazon Kindle Colorsoft Signature Edition (2026) won’t disappoint. Find out why in my full review!</p><h3 class="article-body__section" id="section-amazon-kindle-colorsoft-signature-edition-2026-review-cheat-sheet"><span>Amazon Kindle Colorsoft Signature Edition (2026) review: Cheat sheet</span></h3><ul><li><strong>What is it?</strong> The Amazon Kindle Colorsoft Signature Edition (2026) is a premium version of the regular color e-reader, featuring an aluminum back casing and 32GB of storage.</li><li><strong>Who is it for?</strong> For Kindle users who want a higher-end version of the Colorsoft or anyone who wants a color e-reader.</li><li><strong>What does it cost?</strong> The Amazon Kindle Colorsoft Signature Edition (2026) costs <a href="https://www.amazon.com/Kindle-Colorsoft-Signature-Edition-Fig-32GB/dp/B0GV5WJH35?th=1" target="_blank" rel="nofollow">$319 on Amazon</a>. It has 32GB of storage and no ad support. The standard Kindle Colorsoft <a href="https://www.amazon.com/dp/B0GHT5P56N" target="_blank" rel="nofollow">costs $289 on Amazon</a>.</li><li><strong>What do we like?</strong> We like the color display, aluminum housing, long battery life, and seamless integration with the Kindle ecosystem.</li><li><strong>What don’t we like?</strong> We don’t like the higher asking price, proprietary wireless charging, and that color images have half the resolution of black and white.</li></ul><h3 class="article-body__section" id="section-amazon-kindle-colorsoft-signature-edition-2026-review-specs"><span>Amazon Kindle Colorsoft Signature Edition (2026) review: Specs</span></h3><div ><table><thead><tr><th class="firstcol empty" ></th><th  ><p><strong>Kindle Colorsoft Signature Edition (2026)</strong></p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p>$319</p></td></tr><tr><td class="firstcol " ><p><strong>Display</strong></p></td><td  ><p>7-inch 300ppi</p></td></tr><tr><td class="firstcol " ><p><strong>Storage</strong></p></td><td  ><p>32GB</p></td></tr><tr><td class="firstcol " ><p><strong>Front light</strong></p></td><td  ><p>Yes (warm light)</p></td></tr><tr><td class="firstcol " ><p><strong>Battery life</strong></p></td><td  ><p>8 weeks (rated)</p></td></tr><tr><td class="firstcol " ><p><strong>Ports</strong></p></td><td  ><p>1x USB-C</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>Wi-Fi</p></td></tr><tr><td class="firstcol " ><p><strong>Waterproof</strong></p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Colors</strong></p></td><td  ><p>Fig, Graphite</p></td></tr><tr><td class="firstcol " ><p><strong>Dimensions</strong></p></td><td  ><p>6.9 x 5.0 x 0.3 inches</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>8.1 oz</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-amazon-kindle-colorsoft-signature-edition-2026-review-the-ups"><span>Amazon Kindle Colorsoft Signature Edition (2026) review: The ups</span></h3><p>The Kindle Colorsoft Signature Edition offers meaningful upgrades, including a more vivid display, a lighter build, and a sturdy aluminum chassis.</p><h2 id="rich-color-display">Rich color 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="moDgaUKAEr98yXMJnnzVWo" name="Kindle Colorsoft Signature Edition (2026)-9" alt="Kindle Colorsoft Signature Edition (2026)" src="https://cdn.mos.cms.futurecdn.net/moDgaUKAEr98yXMJnnzVWo-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 display on the new Kindle Colorsoft is roughly the same as the previous model, except Amazon used a new reverse-stack display construction to make the screen-to-bezel transition more seamless. Other than that, this is still a 7-inch color digital ink display that’s flush with the bezels.</p><p>Now that I’ve had two years of experience with the previous Colorsoft, I know black-and-white content won’t look as bright or as defined as it does on the Paperwhite. It’s certainly a trade-off, since the layer that produces color makes the screen darker overall. I tend to read novels with the Kindle’s front lights off (while I sit near a lamp or other light source), but with the Colorsoft, I turn the device’s lights on for better clarity. It’s not a deal breaker and doesn’t negatively affect my opinion of this reader, but it’s something you should know.</p><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="s2LquoccJLue38Rs5XXXxW" name="Kindle Colorsoft Signature Edition (2026)-4" alt="Kindle Colorsoft Signature Edition (2026)" src="https://cdn.mos.cms.futurecdn.net/s2LquoccJLue38Rs5XXXxW-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>As before, the Colorsoft does an admirable job with color pages. In fact, colors are slightly more vibrant than on the previous model. Sure, the display doesn’t get anywhere as bright as an iPad mini, but the Colorsoft offers a more paper-like look, which is naturally a bit washed out in comparison. It’s a small concession, since seeing the covers of the books in my collection is not only cool, but also makes them easier to identify by color.</p><p>For color, you can choose between Standard and Vivid in the settings. Standard gives you the full range of colors, while Vivid makes the colors pop more. I still prefer Standard because it balances colors well and lets more detail show. Vivid is okay, but image quality isn’t always uniform.</p><p>Black-and-white pages appear at full 300ppi resolution, while color pages are at 150ppi. The drop in resolution is noticeable but not egregious. When reading comics, text is plenty readable, and I have no trouble seeing fine details in the drawings. Zooming in helps you see more detail in smaller drawings, and it doesn’t greatly degrade an image’s quality. I still prefer reading comics on a 13-inch iPad Pro or the 12-inch Alexa Tablet 12 Pro, but reading them on the Colorsoft isn’t terrible.</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="sVNfLbGapYqWEefHXu3Nh9" name="Kindle Colorsoft Signature Edition (2026)-8" alt="Kindle Colorsoft Signature Edition (2026)" src="https://cdn.mos.cms.futurecdn.net/sVNfLbGapYqWEefHXu3Nh9-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 Kindle Colorsoft Signature Edition is a truly elegant e-reader thanks to its soft curves and overall minimal design. My review unit came in Fig, which also enhances the device’s sleek aesthetic. Beyond looks, it’s also quite practical.</p><p>At 6.9 x 5.0 x 0.3 inches and 8.1 oz, the Colorsoft Signature Edition can easily fit into most backpacks and pockets. I traveled to and from work with it and almost always forgot it was there. The aluminum back housing makes this e-reader a tad heavier than the regular Colorsoft, but I found the extra weight negligible.</p><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="chsNpED4TGgKYbXVRo9Wjf" name="Kindle Colorsoft Signature Edition (2026)-3" alt="Kindle Colorsoft Signature Edition (2026)" src="https://cdn.mos.cms.futurecdn.net/chsNpED4TGgKYbXVRo9Wjf-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 huge change is the <a href="https://www.tomsguide.com/computing/e-readers/i-went-hands-on-with-amazons-new-kindles-and-this-one-feature-has-me-excited">repositioned power button</a>, which moves from the bottom of the device to the right-hand side. That’s a feature I loved about the Kindle Scribe, so I’m glad that all Kindles now have it. Now, it’s almost impossible to accidentally shut off a Kindle while you’re reading it, unless you’re holding it unusually.</p><p>Amazon has done a fantastic job with these aluminum Kindles, as they feel more premium while still retaining the classic Kindle design. Sure, this makes Kindles cost more, but I just love how the aluminum e-readers feel in hand.</p><h2 id="enduring-battery-life">Enduring 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="vonmUBNABcLoaiKH9vxQaE" name="Kindle Colorsoft Signature Edition (2026)-2" alt="Kindle Colorsoft Signature Edition (2026)" src="https://cdn.mos.cms.futurecdn.net/vonmUBNABcLoaiKH9vxQaE-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>Kindles are known for their weeks-long battery life, and the Colorsoft Signature Edition is no exception. Amazon claims that its color e-reader can last up to 8 weeks on a single charge. I haven’t used this Colorsoft for nearly that long, but during my two weeks of use, I’ve yet to charge it.</p><p>I read about an hour a day with adaptive brightness on and color set to Standard. In two weeks, the battery dropped from 95% to 68%. Doing some napkin math, I can likely get another month or so of use before I have to recharge at that rate. Needless to say, this is one long-lasting e-reader!</p><h2 id="kindle-ecosystem">Kindle 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:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="mZ7b4Li4nqYcyXGQmLcvjK" name="Kindle Colorsoft Signature Edition (2026)-5" alt="Kindle Colorsoft Signature Edition (2026)" src="https://cdn.mos.cms.futurecdn.net/mZ7b4Li4nqYcyXGQmLcvjK-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 Kindle Colorsoft Signature Edition has the same simple UI as its siblings, so if you’re familiar with the interface, you’ll feel at home.</p><p>You’ll see all the books you’re currently reading or have recently read on the Home page, with a list of recommended books right beneath that. You'll also see curated recommendations from Kindle Unlimited when you scroll further down. Everything refreshes quickly, so it’s easy to click a recommended book and read its description or sample pages to see if you’re interested.</p><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="9nhvqwmovRBAumrjanxJj4" name="Kindle Colorsoft Signature Edition (2026)-6" alt="Kindle Colorsoft Signature Edition (2026)" src="https://cdn.mos.cms.futurecdn.net/9nhvqwmovRBAumrjanxJj4-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>From the drop-down menu, you can toggle options like airplane mode, Bluetooth, and Dark Mode. More options appear when you’re reading a book, such as font, theme, chapter selection, and more. The robust settings let you really curate your reading experience.</p><p>Kindle Store and Goodreads integration are another highlight for me, especially the latter since I enjoy updating my reading status and sharing it with friends who are also on Goodreads. I’m not ashamed to admit that this level of integration is why I find it difficult to move to another e-reader ecosystem, since I’ve been using Kindles for the better part of 10 years. This level of integration is key to truly getting the best Kindle experience.</p><h3 class="article-body__section" id="section-amazon-kindle-colorsoft-signature-edition-2026-review-the-downs"><span>Amazon Kindle Colorsoft Signature Edition (2026) review: The downs</span></h3><p>The Kindle Colorsoft Signature Edition is great, but it's hindered by two major things.</p><h2 id="steep-asking-price">Steep asking 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="5zryhKnA6ffQWP8iFRVpq9" name="Kindle Colorsoft Signature Edition (2026)-10" alt="Kindle Colorsoft Signature Edition (2026)" src="https://cdn.mos.cms.futurecdn.net/5zryhKnA6ffQWP8iFRVpq9-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>Let’s not mince words: the new Kindle Colorsoft Signature Edition isn’t cheap. This was also true about the last model, which started at $279. But now, with component prices climbing every day, you’ll have to pay more for Amazon’s color Kindle.</p><p>The Signature Edition of the Kindle Colorsoft costs a hefty $319. That’s a $40 price bump from the previous model, which is pretty significant. The same is true for the standard $289 Colorsoft, which is also $40 more expensive. So no matter which Colorsoft (or Kindle) you buy now, you’ll have to pay more than before.</p><h2 id="proprietary-charging">Proprietary charging</h2><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="ytoPDgM5jyuDFUbVZijJcE" name="Kindle Colorsoft Signature Edition (2026)-11" alt="Kindle Colorsoft Signature Edition (2026)" src="https://cdn.mos.cms.futurecdn.net/ytoPDgM5jyuDFUbVZijJcE-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 previous Kindle Colorsoft Signature Edition supported Qi charging, a great feature that gave you more versatility when you needed to charge the device. Unfortunately, this feature is no longer available.</p><p>If you want to wirelessly charge the Colorsoft Signature Edition, you’ll need to do so with the Amazon Charging Stand, which costs 59. When placed on this stand, the Kindle charges via the pogo pins on its bottom back side. It’s a neat way to charge the e-reader, but it would have been better if Qi charging were still supported.</p><p>Like I said in my Kindle Paperwhite Signature Edition review, you won’t have to charge the device very often, so Qi charging isn’t necessarily a necessity — nor is the proprietary wireless charger. Still, I wish we didn’t have to trade Qi charging for a wireless charging stand.</p><h3 class="article-body__section" id="section-amazon-kindle-colorsoft-signature-edition-2026-review-verdict"><span>Amazon Kindle Colorsoft Signature Edition (2026) review: Verdict</span></h3><p>The Amazon Kindle Colorsoft Signature Edition (2026) might be pricey, but it delivers an enjoyable reading experience thanks to its sharp color digital ink display, lovely design, and integration with the Kindle Store and Goodreads. Though I still prefer the Kindle Paperwhite Signature Edition for its clearer and sharper black-and-white display, the Colorsoft is still darn impressive.</p><p>If a color display and a premium design aren’t as important as affordability, then the basic Kindle is a great choice starting at $149. If you want a larger display than that basic reader, then the $199 Kindle Paperwhite is another great pick. Of course, if you do want a color Kindle, the standard Kindle Colorsoft with 16GB of storage and ad support isn’t too bad.</p><p>Costs aside, if you liked what I had to say about the Amazon Kindle Colorsoft Signature Edition and don’t mind paying a premium, then I won’t deter you, as it really is a lovely e-reader. Right now, it’s arguably the best of its kind. And given Amazon’s penchant for discounting Kindles during sales events, you can likely get it for a few dollars off. If that happens, then don’t hesitate to get a Colorsoft. You won’t be disappointed.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 3 new to Prime Video movies to watch this weekend — including a classic crime caper ranked as ‘one of the greatest films ever made’ (Oct. 30-Nov. 1) ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The weekend was made for movie watching, and if you're planning to settle down and stream some great movies on Prime Video, I've got three options that definitely should be under consideration. </p><p>Variety is the theme of my picks this week, as each will appeal to different tastes. There's a 2026 horror sequel that's perfect for Halloween on Saturday (Oct. 31), or if you're not feeling a scary movie, how about a romantic drama that will really tug on your heartstrings. Whereas if you just need a laugh, I've found a golden-age classic. </p><p>These are the three new-to-Prime-Video movies I recommend you watch this weekend. Don't waste your precious streaming time scrolling; get watching these movies as soon as the weekend starts.</p><h2 id="scream-7-2026">‘Scream 7’ (2026)</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/UJrghaPJ0RY" allowfullscreen=""></iframe></div></div><p>Cards on the table, in this horror fan’s opinion, “Scream 7” is the weakest installment in the slasher series to date. The return of Neve Campbell, who skipped “Scream 6” over a pay dispute, was welcome, but the result was a very messy movie. Still, if you want a new horror movie to watch on Halloween, you might find some of its creative kills gory good fun. And Campbell paired with Courteney Cox is always a joy. </p><p>After a genuinely excellent opening (which is actually the movie’s high point), events leap to Pine Grove, Indiana, where Ghostface survivor Sidney (Campbell) has built a new life with a husband (Joel McHale) and daughter, Tatum (Isabel May). Sidney is done with her past, but the past isn’t finished with her. When a new mask-wearing killer arrives on the scene, Tatum is the primary target, and Sidney must face a new Ghostface, who might be creating terror from beyond the grave...</p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B0GMYXX8PC" target="_blank" rel="nofollow"><em><strong>"Scream 7" on Prime Video</strong></em></a><em><strong> now</strong></em></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ORMLNW"></div>                            </div>                            <script src="https://kwizly.com/embed/ORMLNW.js" async=""></script><h2 id="love-of-your-life-2026">‘Love of Your Life’ (2026)</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/HzGx48E64Xg" allowfullscreen=""></iframe></div></div><p>Switching gears, if you’ve had your fill of scary movies already this spooky season and want something a little less bloody, why not try “Love of Your Life”? This Prime Video original drama released in early October received solid reviews. It's rated 81% on <a href="https://www.rottentomatoes.com/m/love_of_your_life" target="_blank">Rotten Tomatoes</a>. On the Prime Video original grade curve, that’s a very impressive rating. </p><p>Margaret Qualley stars as Maya, a young nurse living in Boston, who is swept off her feet by the dashing Charlie (Gabriel Basso). However, when the future she imagined is ripped away by tragedy, she is forced to find a new path. She heads to Europe, meets new people, including a charming Brit, Felix (Aaron Pierre), and tries to learn to love again. This romantic drama pairs stunning shots of picturesque places with an emotionally charged story. Yes, it’s somewhat of a standard romantic drama, but the strong cast carries the predictable material.</p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B0HFJCW6VG" target="_blank" rel="nofollow"><em><strong>"Love of Your Life" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="some-like-it-hot-1959">‘Some Like It Hot’ (1959)</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/97TYs2YXbJw" allowfullscreen=""></iframe></div></div><p>In a 2017 BBC poll, “Some Like It Hot” was voted the best comedy movie of all time, a strong enough endorsement for even <a href="https://en.wikipedia.org/wiki/List_of_films_voted_the_best" target="_blank">Wikipedia</a> to list it as “one of the greatest films ever made.” That’s no hyperbole in my opinion; it’s a hoot-worthy crime caper that stars Tony Curtis, Jack Lemmon and the scene-stealing Marilyn Monroe. It’s a real gem of classic Hollywood cinema, an era that I love. They don’t make movies like this anymore! </p><p>In this farcical comedy, two musicians, Joe (Curtis) and Jerry (Lemmon), are looking for a way out of Chicago to escape a group of gangsters after witnessing a Valentine’s Day shootout. Broke and desperate, they opt to join an all-girls band heading to Florida. Concealing their identities to fit in, Joe hopes to win the heart of Sugar Kane Kowalczyk (Monroe), while Jerry is himself wooed by a hoodwinked millionaire. Naturally, a whole load of hilarious situations ensues, and things escalate when the gangsters arrive on the scene.</p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B0DT7GP7FH" target="_blank" rel="nofollow"><em><strong>"Some Like It Hot" on Prime Video</strong></em></a><em><strong> starting November 1</strong></em></p><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="gdR2W4" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><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/entertainment/prime-video/new-on-prime-video-in-november-2026-all-the-new-movies-and-shows-to-stream-this-month">New on Prime Video in November 2026</a></li><li><a href="https://www.tomsguide.com/us/best-streaming-video-services,review-2625.html">The best streaming services in 2026 to subscribe to right now</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/3-new-to-prime-video-thriller-movies-to-watch-this-week-including-daniel-craigs-most-exhilarating-outing-as-james-bond-oct-27-nov-2">3 new to Prime Video thriller movies to watch this week</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/prime-video/3-new-to-prime-video-movies-to-watch-this-weekend-including-a-classic-crime-caper-ranked-as-one-of-the-greatest-films-ever-made-oct-30-nov-1</link>
                                                                            <description>
                            <![CDATA[ Your weekend movie marathon needs to include these three picks on Prime Video; they offer horror, romance and comedy. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Ha7CuHkgQzCi8sqmJqkkcR</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/Z8gngC6oUMTSWE7jgWDT3d-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 30 Oct 2026 11:58:06 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Prime Video]]></category>
                                                    <category><![CDATA[Movies]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                    <category><![CDATA[Streaming]]></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>
                                                                                                                                <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/Z8gngC6oUMTSWE7jgWDT3d-1920-80.jpg">
                                                            <media:credit><![CDATA[Saddam Hossan Mollah / Alamy]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Prime Video logo on orange abstract background]]></media:description>                                                            <media:text><![CDATA[Prime Video logo on orange abstract background]]></media:text>
                                <media:title type="plain"><![CDATA[Prime Video logo on orange abstract background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/Z8gngC6oUMTSWE7jgWDT3d-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The weekend was made for movie watching, and if you're planning to settle down and stream some great movies on Prime Video, I've got three options that definitely should be under consideration. </p><p>Variety is the theme of my picks this week, as each will appeal to different tastes. There's a 2026 horror sequel that's perfect for Halloween on Saturday (Oct. 31), or if you're not feeling a scary movie, how about a romantic drama that will really tug on your heartstrings. Whereas if you just need a laugh, I've found a golden-age classic. </p><p>These are the three new-to-Prime-Video movies I recommend you watch this weekend. Don't waste your precious streaming time scrolling; get watching these movies as soon as the weekend starts.</p><h2 id="scream-7-2026">‘Scream 7’ (2026)</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/UJrghaPJ0RY" allowfullscreen=""></iframe></div></div><p>Cards on the table, in this horror fan’s opinion, “Scream 7” is the weakest installment in the slasher series to date. The return of Neve Campbell, who skipped “Scream 6” over a pay dispute, was welcome, but the result was a very messy movie. Still, if you want a new horror movie to watch on Halloween, you might find some of its creative kills gory good fun. And Campbell paired with Courteney Cox is always a joy. </p><p>After a genuinely excellent opening (which is actually the movie’s high point), events leap to Pine Grove, Indiana, where Ghostface survivor Sidney (Campbell) has built a new life with a husband (Joel McHale) and daughter, Tatum (Isabel May). Sidney is done with her past, but the past isn’t finished with her. When a new mask-wearing killer arrives on the scene, Tatum is the primary target, and Sidney must face a new Ghostface, who might be creating terror from beyond the grave...</p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B0GMYXX8PC" target="_blank" rel="nofollow"><em><strong>"Scream 7" on Prime Video</strong></em></a><em><strong> now</strong></em></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ORMLNW"></div>                            </div>                            <script src="https://kwizly.com/embed/ORMLNW.js" async=""></script><h2 id="love-of-your-life-2026">‘Love of Your Life’ (2026)</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/HzGx48E64Xg" allowfullscreen=""></iframe></div></div><p>Switching gears, if you’ve had your fill of scary movies already this spooky season and want something a little less bloody, why not try “Love of Your Life”? This Prime Video original drama released in early October received solid reviews. It's rated 81% on <a href="https://www.rottentomatoes.com/m/love_of_your_life" target="_blank">Rotten Tomatoes</a>. On the Prime Video original grade curve, that’s a very impressive rating. </p><p>Margaret Qualley stars as Maya, a young nurse living in Boston, who is swept off her feet by the dashing Charlie (Gabriel Basso). However, when the future she imagined is ripped away by tragedy, she is forced to find a new path. She heads to Europe, meets new people, including a charming Brit, Felix (Aaron Pierre), and tries to learn to love again. This romantic drama pairs stunning shots of picturesque places with an emotionally charged story. Yes, it’s somewhat of a standard romantic drama, but the strong cast carries the predictable material.</p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B0HFJCW6VG" target="_blank" rel="nofollow"><em><strong>"Love of Your Life" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="some-like-it-hot-1959">‘Some Like It Hot’ (1959)</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/97TYs2YXbJw" allowfullscreen=""></iframe></div></div><p>In a 2017 BBC poll, “Some Like It Hot” was voted the best comedy movie of all time, a strong enough endorsement for even <a href="https://en.wikipedia.org/wiki/List_of_films_voted_the_best" target="_blank">Wikipedia</a> to list it as “one of the greatest films ever made.” That’s no hyperbole in my opinion; it’s a hoot-worthy crime caper that stars Tony Curtis, Jack Lemmon and the scene-stealing Marilyn Monroe. It’s a real gem of classic Hollywood cinema, an era that I love. They don’t make movies like this anymore! </p><p>In this farcical comedy, two musicians, Joe (Curtis) and Jerry (Lemmon), are looking for a way out of Chicago to escape a group of gangsters after witnessing a Valentine’s Day shootout. Broke and desperate, they opt to join an all-girls band heading to Florida. Concealing their identities to fit in, Joe hopes to win the heart of Sugar Kane Kowalczyk (Monroe), while Jerry is himself wooed by a hoodwinked millionaire. Naturally, a whole load of hilarious situations ensues, and things escalate when the gangsters arrive on the scene.</p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B0DT7GP7FH" target="_blank" rel="nofollow"><em><strong>"Some Like It Hot" on Prime Video</strong></em></a><em><strong> starting November 1</strong></em></p><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="gdR2W4" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><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/entertainment/prime-video/new-on-prime-video-in-november-2026-all-the-new-movies-and-shows-to-stream-this-month">New on Prime Video in November 2026</a></li><li><a href="https://www.tomsguide.com/us/best-streaming-video-services,review-2625.html">The best streaming services in 2026 to subscribe to right now</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/3-new-to-prime-video-thriller-movies-to-watch-this-week-including-daniel-craigs-most-exhilarating-outing-as-james-bond-oct-27-nov-2">3 new to Prime Video thriller movies to watch this week</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Amazon just added 100+ new ways to use Alexa for Shopping —and these are the ones I'm trying first ]]></title>
                                                                                                <dc:content><![CDATA[ <p>This past May, Amazon launched a personalized AI assistant tool primarily meant for shopping called “Alexa for Shopping.” And since its introduction to the Amazon app and site, it has emerged as an extremely helpful tool that can fulfill a wide range of requests.</p><p>With a combination of product knowledge, information gathered from across the web and shopping capabilities powered by a user’s preferences, shopping history &amp; past conversations, Alexa for Shopping stands out as one of the best tools sitting inside the Amazon app and site. Being able to tap into that AI assistant to compare product options, find the best deals, track prices, actually purchase a product, etc., has shown why Alexa for Shopping is such an efficient tool.</p><p>With the holiday shopping season almost upon us, it’s no surprise that Amazon has sought to make it even better and make the online shopping experience even less of a hassle.</p><p>Here are some of the newly added 100+ features that are now available within Alexa for Shopping and the ones I can’t wait to put into action when the time is right.</p><h2 id="alexa-for-shopping-s-newest-capabilities">Alexa for Shopping’s newest capabilities</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="kSN2C9goTMXboNm786DWzf" name="shutterstock_2841046403-2" alt="alexa for shopping" src="https://cdn.mos.cms.futurecdn.net/kSN2C9goTMXboNm786DWzf-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>Amazon announced that Alexa for Shopping has over 100 new capabilities that are geared towards making shopping on Amazon so much easier. Some of the more prominent upgrades worth mentioning are:</p><ul><li><strong>Creating lists: </strong>Alexa for Shopping now lets you create, expand and edit your lists and registries. Simply asking it to “Create a new shopping list” or “Add all to my baby registry” works to make new lists and add additional items to them.</li><li><strong>Inquiring about your Amazon subscriptions and benefits: </strong>Now you can ask Alexa for Shopping about your Amazon-themed subscriptions, such as “What are my Prime benefits?” and “How much have I saved with Prime this year. I’ll be sure to use this feature to find out more about my Audible, Music Unlimited and Luna Premium subscriptions.</li><li><strong>Manage subscriptions: </strong>Now you can tell Alexa for Shopping to “Skip my next delivery” or “Change my delivery to every [number] months to alter your ongoing Amazon subscriptions. I’m sure this applies to Amazon’s recurring delivery service for household, grocery, and personal care items.</li><li><strong>Update instructions for deliveries: </strong>If you want to tell Alexa for Shopping to modify your account’s delivery instructions, it’s as easy as telling it “Change the delivery instructions on my account” and “Add delivery instructions on my [city] address.”</li><li><strong>Get to the bottom of billing and payment questions: </strong>Telling Alexa for Shopping to “Show my gift card balance,” notifying it that “I have an unrecognized charge on my account” and asking it “Where is my refund?” is now possible—resolving any billing and payment errors you may have is thankfully now a thing with Amazon’s AI shopping assistant.</li></ul><p>A month prior, Amazon launched another useful feature that improved Alexa for Shopping. “Update Me When” update has given users personalized notifications that alert them when something new or relevant happens around a new product release. Simply telling it “Update me when a new Kindle Paperwhite launches” sets up a weekly announcement check-in that will only notify users when something major happens on that front. Right now, all of those aforementioned Alexa for Shopping features are available to all US Amazon customers.</p><h2 id="bottom-line-3">Bottom line</h2><p>Amazon is my go-to online shopping site and I’ve gotten even more out of its massive lineup of items thanks to Alexa for Shopping’s assistance. After inquiring about how much I saved with Prime, Alexa for Shopping put everything into an easily understandable format that proves the AI shopping assistant’s latest upgrades are amazing:</p><ul><li><em>Over the past 12 months, you’ve saved $30.00 with the Prime Annual Membership. Here’s the breakdown: </em></li><li><strong>Free delivery: </strong><em>$27.00 saved on delivery fees</em></li><li><strong>Deals &amp; Savings: </strong><em>$3.00 saved through Prime-exclusive deals, Prime Day, and Whole Foods member savings</em></li><li><em><strong>Prime Visa Cashback:</strong></em><em> $0.00</em></li><li><em>Your Prime Annual plan costs $139/year — keep in mind there’s still plenty of value in benefits like Prime Video, Amazon Music Prime, Prime Gaming, and more that aren’t always reflected in your figures.</em></li></ul><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/google-just-unveiled-genie-4-and-it-could-change-video-games-forever" target="_blank">Google just unveiled Genie 4 and it could change video games forever</a></li><li><a href="https://www.tomsguide.com/ai/police-are-using-ai-to-track-where-you-drive-and-your-next-road-trip-could-raise-a-red-flag" target="_blank">Police are using AI to track where you drive — and your next road trip could raise a red flag</a></li><li><a href="https://www.tomsguide.com/ai/hackers-breached-25-servers-including-u-s-government-linked-systems-and-ai-tools-may-have-helped" target="_blank">Hackers breached 25 servers, including U.S. government-linked systems — and AI tools may have helped</a></li></ul><div data-widget-type="comparison" data-model-name="Apple MacBook Neo"></div> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/ai/amazon-just-added-100-new-ways-to-use-alexa-for-shopping-and-these-are-the-ones-im-trying-first</link>
                                                                            <description>
                            <![CDATA[ Hot on the heels of the upcoming gift-giving season, Amazon has updated its Alexa for Shopping AI assistant with hundreds of new capabilities. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">kPPcFm4iQ9KqurSNJBfT7L</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/8vPLUMYrAGCUjp76NdG3nU-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 29 Oct 2026 18:32:40 +0000</pubDate>                                                                                                                                                                                                                                <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/8vPLUMYrAGCUjp76NdG3nU-1920-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[amazon]]></media:description>                                                            <media:text><![CDATA[amazon]]></media:text>
                                <media:title type="plain"><![CDATA[amazon]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/8vPLUMYrAGCUjp76NdG3nU-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>This past May, Amazon launched a personalized AI assistant tool primarily meant for shopping called “Alexa for Shopping.” And since its introduction to the Amazon app and site, it has emerged as an extremely helpful tool that can fulfill a wide range of requests.</p><p>With a combination of product knowledge, information gathered from across the web and shopping capabilities powered by a user’s preferences, shopping history &amp; past conversations, Alexa for Shopping stands out as one of the best tools sitting inside the Amazon app and site. Being able to tap into that AI assistant to compare product options, find the best deals, track prices, actually purchase a product, etc., has shown why Alexa for Shopping is such an efficient tool.</p><p>With the holiday shopping season almost upon us, it’s no surprise that Amazon has sought to make it even better and make the online shopping experience even less of a hassle.</p><p>Here are some of the newly added 100+ features that are now available within Alexa for Shopping and the ones I can’t wait to put into action when the time is right.</p><h2 id="alexa-for-shopping-s-newest-capabilities">Alexa for Shopping’s newest capabilities</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="kSN2C9goTMXboNm786DWzf" name="shutterstock_2841046403-2" alt="alexa for shopping" src="https://cdn.mos.cms.futurecdn.net/kSN2C9goTMXboNm786DWzf-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>Amazon announced that Alexa for Shopping has over 100 new capabilities that are geared towards making shopping on Amazon so much easier. Some of the more prominent upgrades worth mentioning are:</p><ul><li><strong>Creating lists: </strong>Alexa for Shopping now lets you create, expand and edit your lists and registries. Simply asking it to “Create a new shopping list” or “Add all to my baby registry” works to make new lists and add additional items to them.</li><li><strong>Inquiring about your Amazon subscriptions and benefits: </strong>Now you can ask Alexa for Shopping about your Amazon-themed subscriptions, such as “What are my Prime benefits?” and “How much have I saved with Prime this year. I’ll be sure to use this feature to find out more about my Audible, Music Unlimited and Luna Premium subscriptions.</li><li><strong>Manage subscriptions: </strong>Now you can tell Alexa for Shopping to “Skip my next delivery” or “Change my delivery to every [number] months to alter your ongoing Amazon subscriptions. I’m sure this applies to Amazon’s recurring delivery service for household, grocery, and personal care items.</li><li><strong>Update instructions for deliveries: </strong>If you want to tell Alexa for Shopping to modify your account’s delivery instructions, it’s as easy as telling it “Change the delivery instructions on my account” and “Add delivery instructions on my [city] address.”</li><li><strong>Get to the bottom of billing and payment questions: </strong>Telling Alexa for Shopping to “Show my gift card balance,” notifying it that “I have an unrecognized charge on my account” and asking it “Where is my refund?” is now possible—resolving any billing and payment errors you may have is thankfully now a thing with Amazon’s AI shopping assistant.</li></ul><p>A month prior, Amazon launched another useful feature that improved Alexa for Shopping. “Update Me When” update has given users personalized notifications that alert them when something new or relevant happens around a new product release. Simply telling it “Update me when a new Kindle Paperwhite launches” sets up a weekly announcement check-in that will only notify users when something major happens on that front. Right now, all of those aforementioned Alexa for Shopping features are available to all US Amazon customers.</p><h2 id="bottom-line-3">Bottom line</h2><p>Amazon is my go-to online shopping site and I’ve gotten even more out of its massive lineup of items thanks to Alexa for Shopping’s assistance. After inquiring about how much I saved with Prime, Alexa for Shopping put everything into an easily understandable format that proves the AI shopping assistant’s latest upgrades are amazing:</p><ul><li><em>Over the past 12 months, you’ve saved $30.00 with the Prime Annual Membership. Here’s the breakdown: </em></li><li><strong>Free delivery: </strong><em>$27.00 saved on delivery fees</em></li><li><strong>Deals &amp; Savings: </strong><em>$3.00 saved through Prime-exclusive deals, Prime Day, and Whole Foods member savings</em></li><li><em><strong>Prime Visa Cashback:</strong></em><em> $0.00</em></li><li><em>Your Prime Annual plan costs $139/year — keep in mind there’s still plenty of value in benefits like Prime Video, Amazon Music Prime, Prime Gaming, and more that aren’t always reflected in your figures.</em></li></ul><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/google-just-unveiled-genie-4-and-it-could-change-video-games-forever" target="_blank">Google just unveiled Genie 4 and it could change video games forever</a></li><li><a href="https://www.tomsguide.com/ai/police-are-using-ai-to-track-where-you-drive-and-your-next-road-trip-could-raise-a-red-flag" target="_blank">Police are using AI to track where you drive — and your next road trip could raise a red flag</a></li><li><a href="https://www.tomsguide.com/ai/hackers-breached-25-servers-including-u-s-government-linked-systems-and-ai-tools-may-have-helped" target="_blank">Hackers breached 25 servers, including U.S. government-linked systems — and AI tools may have helped</a></li></ul><div data-widget-type="comparison" data-model-name="Apple MacBook Neo"></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Among pricey streaming gadgets, the Amazon Fire TV Stick 4K is a no-fuss upgrade for your slow smart TV ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Roku's streamlined interface has long been my favorite way to watch content. I still use a <a href="https://www.tomsguide.com/tvs/oled-tvs/roku-pro-series-oled-review">Roku TV</a> today, and I haven't made any plans to change that. But I have to admit Amazon's new Fire TV Stick 4K has given me more than a few reasons to reconsider.</p><p>The Fire TV Stick 4K replaces both the 4K Select and 4K Plus streamers, and it's Amazon's first 4K device to run its new Vega OS instead of the Android-based Fire OS. The new stick also has a slimmer body, can use USB power from your TV, and comes with a redesigned remote.</p><p>While it has downsides, including no Dolby Vision support or Android app sideloading, the Fire TV Stick 4K is still a fast, affordable way to bring a sluggish smart TV back to life, making it a real contender among the <a href="https://www.tomsguide.com/entertainment/streaming-devices/best-streaming-devices">best streaming devices</a>.</p><h3 class="article-body__section" id="section-amazon-fire-tv-stick-4k-review-price-and-availability"><span>Amazon Fire TV Stick 4K review: Price and availability</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.15%;"><img id="nCCqoG6VNrZKXBQRDHRmYG" name="Amazon Fire TV Stick 4K-11" alt="Amazon Fire TV Stick 4K" src="https://cdn.mos.cms.futurecdn.net/nCCqoG6VNrZKXBQRDHRmYG-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1123" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><div  class="fancy-box"><div class="fancy_box-title">Amazon Fire TV Stick 4K specs</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>Max resolution: </strong>4K<br /><strong>Supported video: </strong>HDR10, HDR10+, HLG<br /><strong>Supported audio: </strong>Dolby-encoded audio (HDMI pass-through)<br /><strong>Storage</strong>: 8GB<br /><strong>Wi-Fi: </strong>Wi-Fi 6<br /><strong>Cloud gaming: </strong>Amazon Luna, Xbox Game Pass, NVIDIA GeForce NOW (coming soon)</p></div></div><p>Amazon announced the Fire TV Stick 4K on September 30, 2026. It has a list price of $59.99, which sits between the cheaper <a href="https://www.tomsguide.com/entertainment/streaming-devices/amazon-fire-tv-devices-explained-which-streaming-stick-or-cube-is-right-for-you">Fire TV Stick HD</a> ($19.99) and the more powerful <a href="https://www.tomsguide.com/reviews/amazon-fire-tv-stick-4k-max-2nd-gen">Fire TV Stick 4K Max</a> ($84.99). It replaces the 4K Select and the 4K Plus, both of which are being phased out.</p><p>Amazon launched the stick with a $29.99 introductory deal that ran during October's Prime Day sale. The company often discounts its own hardware during sales, so you can probably find it cheap if you wait until Black Friday or a future Prime Day event.</p><p>Keep in mind that the sticker price doesn't cover everything. There's no power adapter or HDMI extender in the box, so if your TV doesn't have a USB port, you'll need to buy some accessories to make it compatible.</p><h3 class="article-body__section" id="section-amazon-fire-tv-stick-4k-review-design"><span>Amazon Fire TV Stick 4K review: 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:2000px;"><p class="vanilla-image-block" style="padding-top:56.15%;"><img id="pRnSsahoXPMvSMdzgHtTSN" name="Amazon Fire TV Stick 4K remote" alt="Amazon Fire TV Stick 4K remote" src="https://cdn.mos.cms.futurecdn.net/pRnSsahoXPMvSMdzgHtTSN-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1123" attribution="" endorsement="" 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 Fire TV Stick 4K is noticeably slimmer than its predecessors, so it's easier to squeeze in next to your other various input cables. The biggest change to the stick itself is "Direct Power," which makes it the first 4K Fire TV Stick that can be powered by your TV's own USB port rather than an outlet. To me, cutting down on cables is always a welcome change.</p><p>The new remote is the real star, though. It's a full redesign with a flat top and curved bottom, and features a metal Home button that's easier to find by touch. A new customizable star button opens Prime Video by default, but can launch any app you assign to it. It'll also control your TV's power and volume controls, so you won't need to keep your old remote around.</p><h3 class="article-body__section" id="section-amazon-fire-tv-stick-4k-review-setup"><span>Amazon Fire TV Stick 4K review: Setup</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.15%;"><img id="uaugsiStTw7cPoK4sYteXT" name="Amazon Fire TV Stick 4K in TV" alt="Amazon Fire TV Stick 4K plugged into TV" src="https://cdn.mos.cms.futurecdn.net/uaugsiStTw7cPoK4sYteXT-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1123" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Setup is about as painless as it gets. Just plug the USB-C cable into the stick, plug the stick into your TV's HDMI port, connect the other end of the cable to your TV's USB port, and drop the two included AAA batteries into the remote. Then connect to Wi-Fi, sign in to your Amazon account, and you're ready to stream.</p><p>Older Fire Sticks that ran Fire OS could sideload third-party Android apps, but because the new stick runs Vega OS, you can only install apps from the Amazon app store. Amazon says it has added more than 2,000 apps since Vega launched, including Spotify, Xbox, and VLC, plus Netflix, Disney+, YouTube, Prime Video, HBO Max, Peacock, and more. Your mileage may vary if you rely on a niche app, so check that your must-haves are available before you buy.</p><h3 class="article-body__section" id="section-amazon-fire-tv-stick-4k-review-performance"><span>Amazon Fire TV Stick 4K review: 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="JmmoZP8yWS5L6xMxCWiJZX" name="Amazon Fire TV Stick 4K-2" alt="Amazon Fire TV interface" src="https://cdn.mos.cms.futurecdn.net/JmmoZP8yWS5L6xMxCWiJZX-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Fire TV Stick 4K has a quad-core 1.7GHz processor, 1GB of RAM, and 8GB of storage. It supports 4K at up to 60 frames per second with HDR10, HDR10+, and HLG, plus Wi-Fi 6. Dolby Atmos works through HDMI pass-through, so you'll need a compatible <a href="https://www.tomsguide.com/audio/soundbars/best-soundbars">soundbar</a> or receiver to get the best-sounding audio.</p><p>The new Vega OS experience is smoother, faster, and more intuitive than the old Fire OS. The home screen and menus felt responsive, and all my apps launched quickly without any hitches. Amazon claims that the stick is 20 to 40 percent faster than a similarly priced competing streaming stick, but it doesn't say which one, so I'd take that with a grain of salt (although you can probably guess <a href="https://www.tomsguide.com/entertainment/streaming-devices/roku-streaming-stick-plus-review-a-slimmed-down-4k-hdr-powerhouse">which one</a> they're talking about).</p><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="zGLo29SvS59h4Dz3tncb4e" name="Amazon Fire TV Stick 4K" alt="Amazon Fire TV interface" src="https://cdn.mos.cms.futurecdn.net/zGLo29SvS59h4Dz3tncb4e-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Alexa+ is another highlight. It's included for free with the Fire TV Stick 4K, and handled all of my requests well. You can ask for a top-rated drama film, then follow up by asking for newer releases, and Alexa+ will narrow your choices down for you. It can also answer questions about what you're watching, and even move Prime Video content to another Fire TV in your home if you have one. </p><p>I'm also a fan of the stick's Bluetooth headphone pairing feature for late-night viewing.</p><p>There are some drawbacks, though. While the home screen is easy to navigate, recommendations and sponsored content take up a big chunk, which got old fast. Also, it lacks Dolby Vision support. This is the first 4K Fire Stick without this feature, so if you've got a <a href="https://www.tomsguide.com/tvs/toms-guide-awards-2026">high-end OLED</a> and want the best possible picture from Netflix and Disney+, you'll be stuck with HDR10+ or HDR10. If you desperately want Dolby Vision, you’ll have to get either the Fire Stick 4K Max or a Fire TV Cube.</p><h3 class="article-body__section" id="section-amazon-fire-tv-stick-4k-review-verdict"><span>Amazon Fire TV Stick 4K review: Verdict</span></h3><p>The Amazon Fire TV Stick 4K is a fast, intuitive, and affordable streaming stick that's an excellent fix for a slow or outdated smart TV. The new remote is a massive improvement; the slim design and USB power make setup easy, Alexa+ is a nice bonus, and Vega OS feels snappy. You'll be giving up Dolby Vision and Android app sideloading, and you might spend a little extra on accessories depending on your setup, but for the price, I think it's a great deal.</p><p>If you're looking for an alternative pick, the closest match is Amazon's own Fire TV Stick 4K Max. It still runs Fire OS, so you can sideload apps, supports Dolby Vision, and is more powerful overall. But it costs $25 more, and you won't get the new remote, so it's up to you to decide if the trade-off is worth it. If you care more about a clean, ad-light interface rather than price, I suggest the <a href="https://www.tomsguide.com/entertainment/streaming-devices/roku-streaming-stick-plus-review-a-slimmed-down-4k-hdr-powerhouse">Roku Streaming Stick Plus</a>.</p><p>All in all, if you want to stream in 4K without spending much, the Fire TV Stick 4K is a great pick, even with its few shortcomings.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/streaming-devices/among-pricey-streaming-gadgets-the-amazon-fire-tv-stick-4k-is-a-no-fuss-upgrade-for-your-slow-smart-tv</link>
                                                                            <description>
                            <![CDATA[ The Amazon Fire TV Stick 4K is a speedy, easy-to-use streaming stick with a huge remote upgrade. It has some quirks, but for most people, it's a fantastic way to upgrade a slow smart TV. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">kQkETorYCT7qPNmXS4TcBf</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/koUzw5sppDxfu4QHLqA4ob-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 29 Oct 2026 08:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Streaming Devices]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                    <category><![CDATA[Streaming]]></category>
                                                                                                                    <dc:creator><![CDATA[ Dylan Haas ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/f7bDWZaM3p8SzT9r8EWAea-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/koUzw5sppDxfu4QHLqA4ob-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Amazon Fire TV Stick 4K]]></media:description>                                                            <media:text><![CDATA[Amazon Fire TV Stick 4K]]></media:text>
                                <media:title type="plain"><![CDATA[Amazon Fire TV Stick 4K]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/koUzw5sppDxfu4QHLqA4ob-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Roku's streamlined interface has long been my favorite way to watch content. I still use a <a href="https://www.tomsguide.com/tvs/oled-tvs/roku-pro-series-oled-review">Roku TV</a> today, and I haven't made any plans to change that. But I have to admit Amazon's new Fire TV Stick 4K has given me more than a few reasons to reconsider.</p><p>The Fire TV Stick 4K replaces both the 4K Select and 4K Plus streamers, and it's Amazon's first 4K device to run its new Vega OS instead of the Android-based Fire OS. The new stick also has a slimmer body, can use USB power from your TV, and comes with a redesigned remote.</p><p>While it has downsides, including no Dolby Vision support or Android app sideloading, the Fire TV Stick 4K is still a fast, affordable way to bring a sluggish smart TV back to life, making it a real contender among the <a href="https://www.tomsguide.com/entertainment/streaming-devices/best-streaming-devices">best streaming devices</a>.</p><h3 class="article-body__section" id="section-amazon-fire-tv-stick-4k-review-price-and-availability"><span>Amazon Fire TV Stick 4K review: Price and availability</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.15%;"><img id="nCCqoG6VNrZKXBQRDHRmYG" name="Amazon Fire TV Stick 4K-11" alt="Amazon Fire TV Stick 4K" src="https://cdn.mos.cms.futurecdn.net/nCCqoG6VNrZKXBQRDHRmYG-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1123" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><div  class="fancy-box"><div class="fancy_box-title">Amazon Fire TV Stick 4K specs</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>Max resolution: </strong>4K<br /><strong>Supported video: </strong>HDR10, HDR10+, HLG<br /><strong>Supported audio: </strong>Dolby-encoded audio (HDMI pass-through)<br /><strong>Storage</strong>: 8GB<br /><strong>Wi-Fi: </strong>Wi-Fi 6<br /><strong>Cloud gaming: </strong>Amazon Luna, Xbox Game Pass, NVIDIA GeForce NOW (coming soon)</p></div></div><p>Amazon announced the Fire TV Stick 4K on September 30, 2026. It has a list price of $59.99, which sits between the cheaper <a href="https://www.tomsguide.com/entertainment/streaming-devices/amazon-fire-tv-devices-explained-which-streaming-stick-or-cube-is-right-for-you">Fire TV Stick HD</a> ($19.99) and the more powerful <a href="https://www.tomsguide.com/reviews/amazon-fire-tv-stick-4k-max-2nd-gen">Fire TV Stick 4K Max</a> ($84.99). It replaces the 4K Select and the 4K Plus, both of which are being phased out.</p><p>Amazon launched the stick with a $29.99 introductory deal that ran during October's Prime Day sale. The company often discounts its own hardware during sales, so you can probably find it cheap if you wait until Black Friday or a future Prime Day event.</p><p>Keep in mind that the sticker price doesn't cover everything. There's no power adapter or HDMI extender in the box, so if your TV doesn't have a USB port, you'll need to buy some accessories to make it compatible.</p><h3 class="article-body__section" id="section-amazon-fire-tv-stick-4k-review-design"><span>Amazon Fire TV Stick 4K review: 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:2000px;"><p class="vanilla-image-block" style="padding-top:56.15%;"><img id="pRnSsahoXPMvSMdzgHtTSN" name="Amazon Fire TV Stick 4K remote" alt="Amazon Fire TV Stick 4K remote" src="https://cdn.mos.cms.futurecdn.net/pRnSsahoXPMvSMdzgHtTSN-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1123" attribution="" endorsement="" 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 Fire TV Stick 4K is noticeably slimmer than its predecessors, so it's easier to squeeze in next to your other various input cables. The biggest change to the stick itself is "Direct Power," which makes it the first 4K Fire TV Stick that can be powered by your TV's own USB port rather than an outlet. To me, cutting down on cables is always a welcome change.</p><p>The new remote is the real star, though. It's a full redesign with a flat top and curved bottom, and features a metal Home button that's easier to find by touch. A new customizable star button opens Prime Video by default, but can launch any app you assign to it. It'll also control your TV's power and volume controls, so you won't need to keep your old remote around.</p><h3 class="article-body__section" id="section-amazon-fire-tv-stick-4k-review-setup"><span>Amazon Fire TV Stick 4K review: Setup</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.15%;"><img id="uaugsiStTw7cPoK4sYteXT" name="Amazon Fire TV Stick 4K in TV" alt="Amazon Fire TV Stick 4K plugged into TV" src="https://cdn.mos.cms.futurecdn.net/uaugsiStTw7cPoK4sYteXT-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1123" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Setup is about as painless as it gets. Just plug the USB-C cable into the stick, plug the stick into your TV's HDMI port, connect the other end of the cable to your TV's USB port, and drop the two included AAA batteries into the remote. Then connect to Wi-Fi, sign in to your Amazon account, and you're ready to stream.</p><p>Older Fire Sticks that ran Fire OS could sideload third-party Android apps, but because the new stick runs Vega OS, you can only install apps from the Amazon app store. Amazon says it has added more than 2,000 apps since Vega launched, including Spotify, Xbox, and VLC, plus Netflix, Disney+, YouTube, Prime Video, HBO Max, Peacock, and more. Your mileage may vary if you rely on a niche app, so check that your must-haves are available before you buy.</p><h3 class="article-body__section" id="section-amazon-fire-tv-stick-4k-review-performance"><span>Amazon Fire TV Stick 4K review: 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="JmmoZP8yWS5L6xMxCWiJZX" name="Amazon Fire TV Stick 4K-2" alt="Amazon Fire TV interface" src="https://cdn.mos.cms.futurecdn.net/JmmoZP8yWS5L6xMxCWiJZX-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Fire TV Stick 4K has a quad-core 1.7GHz processor, 1GB of RAM, and 8GB of storage. It supports 4K at up to 60 frames per second with HDR10, HDR10+, and HLG, plus Wi-Fi 6. Dolby Atmos works through HDMI pass-through, so you'll need a compatible <a href="https://www.tomsguide.com/audio/soundbars/best-soundbars">soundbar</a> or receiver to get the best-sounding audio.</p><p>The new Vega OS experience is smoother, faster, and more intuitive than the old Fire OS. The home screen and menus felt responsive, and all my apps launched quickly without any hitches. Amazon claims that the stick is 20 to 40 percent faster than a similarly priced competing streaming stick, but it doesn't say which one, so I'd take that with a grain of salt (although you can probably guess <a href="https://www.tomsguide.com/entertainment/streaming-devices/roku-streaming-stick-plus-review-a-slimmed-down-4k-hdr-powerhouse">which one</a> they're talking about).</p><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="zGLo29SvS59h4Dz3tncb4e" name="Amazon Fire TV Stick 4K" alt="Amazon Fire TV interface" src="https://cdn.mos.cms.futurecdn.net/zGLo29SvS59h4Dz3tncb4e-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Alexa+ is another highlight. It's included for free with the Fire TV Stick 4K, and handled all of my requests well. You can ask for a top-rated drama film, then follow up by asking for newer releases, and Alexa+ will narrow your choices down for you. It can also answer questions about what you're watching, and even move Prime Video content to another Fire TV in your home if you have one. </p><p>I'm also a fan of the stick's Bluetooth headphone pairing feature for late-night viewing.</p><p>There are some drawbacks, though. While the home screen is easy to navigate, recommendations and sponsored content take up a big chunk, which got old fast. Also, it lacks Dolby Vision support. This is the first 4K Fire Stick without this feature, so if you've got a <a href="https://www.tomsguide.com/tvs/toms-guide-awards-2026">high-end OLED</a> and want the best possible picture from Netflix and Disney+, you'll be stuck with HDR10+ or HDR10. If you desperately want Dolby Vision, you’ll have to get either the Fire Stick 4K Max or a Fire TV Cube.</p><h3 class="article-body__section" id="section-amazon-fire-tv-stick-4k-review-verdict"><span>Amazon Fire TV Stick 4K review: Verdict</span></h3><p>The Amazon Fire TV Stick 4K is a fast, intuitive, and affordable streaming stick that's an excellent fix for a slow or outdated smart TV. The new remote is a massive improvement; the slim design and USB power make setup easy, Alexa+ is a nice bonus, and Vega OS feels snappy. You'll be giving up Dolby Vision and Android app sideloading, and you might spend a little extra on accessories depending on your setup, but for the price, I think it's a great deal.</p><p>If you're looking for an alternative pick, the closest match is Amazon's own Fire TV Stick 4K Max. It still runs Fire OS, so you can sideload apps, supports Dolby Vision, and is more powerful overall. But it costs $25 more, and you won't get the new remote, so it's up to you to decide if the trade-off is worth it. If you care more about a clean, ad-light interface rather than price, I suggest the <a href="https://www.tomsguide.com/entertainment/streaming-devices/roku-streaming-stick-plus-review-a-slimmed-down-4k-hdr-powerhouse">Roku Streaming Stick Plus</a>.</p><p>All in all, if you want to stream in 4K without spending much, the Fire TV Stick 4K is a great pick, even with its few shortcomings.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ New on Prime Video in November 2026: All the new movies and shows to stream this month ]]></title>
                                                                                                <dc:content><![CDATA[ <p>With November here and the holidays right around the corner, <a href="https://www.tomsguide.com/entertainment/streaming/prime-video"><strong>Prime Video</strong></a> is loading up its shelves with fresh movies and shows to keep you company as the nights get longer. Whether you’re after an epic fantasy return, a star-studded biopic or a cozy Christmas rom-com, there’s a lot worth clearing some couch time for this month.</p><p>As usual, Prime Video has shared its full November 2026 release schedule with every confirmed title and its streaming date. From the full list, I’ve picked the biggest, buzziest movies and shows coming to the service this month, so you know exactly what to keep on your radar. Check out everything new on Prime Video in November 2026.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-WQQbzW"></div>                            </div>                            <script src="https://kwizly.com/embed/WQQbzW.js" async=""></script><h3 class="article-body__section" id="section-new-on-prime-video-in-november-2026-top-picks"><span>New on Prime Video in November 2026: Top picks</span></h3><h2 id="39-the-lord-of-the-rings-the-rings-of-power-39-season-3-nov-11">'The Lord of the Rings: The Rings of Power' season 3 (Nov. 11)</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/maP_Kyy3DCA" allowfullscreen=""></iframe></div></div><p>Prime Video’s big-budget “Lord of the Rings” prequel returns for a third season set thousands of years before Frodo ever left the Shire. Chronicling the Second Age of Middle-earth, the series follows the rise of the dark lord Sauron (Charlie Vickers) and the forging of the Rings of Power, with Morfydd Clark’s Galadriel still determined to stop him. After a second season that deepened the war across Middle-earth, season 3 pushes the conflict closer to all-out catastrophe.</p><p><em><strong>Stream </strong></em><a href="https://www.primevideo.com/detail/0TUVXIO58IUNEPNBF8363Z7YGL" target="_blank" rel="nofollow"><em><strong>"Rings of Power" season 3 on Prime Video</strong></em></a><em><strong> from Nov. 11</strong></em></p><h2 id="madden-nov-18">‘Madden’ (Nov. 18)</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/xzh7HzLXXpk" allowfullscreen=""></iframe></div></div><p>Nicolas Cage transforms into one of football’s most beloved figures in this Prime Video original. “Madden” traces the life of John Madden (Cage), from his Super Bowl-winning years coaching the Oakland Raiders and his partnership with owner Al Davis (Christian Bale) to his legendary broadcasting career and the creation of the blockbuster “Madden NFL” video game franchise. Whether you're a football devotee or just love firing up one of the games here and there, this is must-watch material for anyone who loves the sport. </p><p><em><strong>Stream </strong></em><a href="https://www.amazon.com/gp/video/detail/B0G6MQSW53" target="_blank" rel="nofollow"><em><strong>"Madden" on Prime Video</strong></em></a><em><strong> from Nov. 18</strong></em></p><h2 id="they-will-kill-you-nov-20">‘They Will Kill You’ (Nov. 20)</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/DfD6-Gf9AeE" allowfullscreen=""></iframe></div></div><p>If you’re in the mood for something bloody and fast, “They Will Kill You” is plenty of mayhem for anyone to handle. It stars Zazie Beetz as Asia, an ex-convict who takes a housekeeping job at a swanky New York high-rise called the Virgil to track down her missing sister. There's just one problem: The building is a 12-story death trap run by a Satanic cult. Fortunately for her, she’s far more dangerous than anyone expects, and she fights her way through the carnage as best she can, which makes for a bloody good time for fans of movies like "Ready or Not."</p><p><em><strong>Stream </strong></em><a href="https://www.amazon.com/gp/video/detail/B0GKWT8V6L" target="_blank" rel="nofollow"><em><strong>"They Will Kill You" on Prime Video</strong></em></a><em><strong> from Nov. 20</strong></em></p><h2 id="clashing-through-the-snow-nov-23">‘Clashing Through the Snow’ (Nov. 23)</h2><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="G2XApEcBkHQHnZ34jmWVgn" name="clashingthroughthesnow" alt="Christopher Briney and Michelle Randolph in Clashing Through the Snow" src="https://cdn.mos.cms.futurecdn.net/G2XApEcBkHQHnZ34jmWVgn-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: Prime Video)</span></figcaption></figure><p>This cozy holiday rom-com strands two rival publishing editors, played by Christopher Briney (“The Summer I Turned Pretty”) and Michelle Randolph (“Landman”), at a snowed-in airport and forces them to share a rental car all the way to New York. The catch is that they’re secretly competing for the same career-saving book deal, which makes their road trip more tense than you might have guessed.  The movie has a scene-stealing supporting cast that includes Lukas Gage, Julia Fox and Paris Hilton, and it's perfect for settling into the winter holidays.</p><p><em><strong>Stream "Clashing Through the Snow" on Prime Video from Nov. 23</strong></em></p><h2 id="blade-runner-2099-nov-25">‘Blade Runner 2099’ (Nov. 25)</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/AwK5KxoJsvk" allowfullscreen=""></iframe></div></div><p>The world of "Blade Runner" expands onto the small screen with this ambitious new series. Set 50 years after the events of "Blade Runner 2049," "Blade Runner 2099" imagines a Los Angeles reshaped by the artificial humans known as replicants. Michelle Yeoh is an aging replicant Blade Runner, with Hunter Schafer as Cora, a fugitive who takes on the identity of a Blade Runner in one last bid to stop running. If you're a fan of the neon-soaked franchise, this next direction for it is a no-brainer. </p><p><em><strong>Stream </strong></em><a href="https://www.amazon.com/gp/video/detail/B0H8MGR6PV" target="_blank" rel="nofollow"><em><strong>"Blade Runner 2099" on Prime Video</strong></em></a><em><strong> from Nov. 25</strong></em></p><h3 class="article-body__section" id="section-new-shows-on-prime-video-in-november-2026"><span>New shows on Prime Video in November 2026</span></h3><h2 id="november-1">November 1</h2><ul><li>iZombie S1-S5 (2015)</li></ul><p><strong>November 4</strong></p><ul><li>The Greatest (2026)</li></ul><p><strong>November 5</strong></p><ul><li>Terrell &amp; T.O. (2026)</li></ul><p><strong>November 11</strong></p><ul><li>The Lord of the Rings: The Rings of Power S3 (2026)</li></ul><p><strong>November 14</strong></p><ul><li>Frasier S1-2 (2023)</li></ul><p><strong>November 15</strong></p><ul><li>The Chosen S6 (2026)</li></ul><p><strong>November 25 </strong></p><ul><li>Blade Runner 2099 (2026)</li></ul><h2 id="november-30">November 30</h2><ul><li>The Boy Who Stole Billions? (2026)</li></ul><h3 class="article-body__section" id="section-new-movies-on-prime-video-in-october-2026"><span>New movies on Prime Video in October 2026</span></h3><p><strong>November 1</strong></p><ul><li>A Belle For Christmas (2014)</li><li>A Christmas Carol (1999)</li><li>A Christmas Wedding Tail (2011)</li><li>A Different Kind Of Christmas (1996)</li><li>A Hobo's Christmas (1987)</li><li>A Shot In The Dark (1964)</li><li>A Very Barry Christmas (2008)</li><li>A Very Harold &amp; Kumar Christmas (2011)</li><li>A Wonderful Christmas (2005)</li><li>Agent Cody Banks (2003)</li><li>Agent Cody Banks 2: Destination London (2004)</li><li>All Dogs Go To Heaven (1989)</li><li>All Mine To Give (1957)</li><li>American Made (2017)</li><li>Annie Hall (1977)</li><li>Bad Santa (2003)</li><li>Bad Santa 2 (2016)</li><li>Be Cool (2005)</li><li>Blink Twice (2024)</li><li>California Straight Ahead (1937)</li><li>Chance Of Snow (2002)</li><li>Christmas Classics: O' Christmas Tree (1999)</li><li>Christmas In Connecticut (1945)</li><li>Christmas In Paradise (2022)</li><li>Darkest Hour (2017)</li><li>Dear Santa (2024)</li><li>Deck The Halls (2011)</li><li>Duck Soup (1933)</li><li>Elf (2003)</li><li>Elf: Buddy's Musical Christmas (2014)</li><li>Get Shorty (1995)</li><li>Good Will Hunting (1998)</li><li>Gretel &amp; Hansel (2020)</li><li>Hang 'Em High (1968)</li><li>Holiday Affair (1949)</li><li>Hot Tub Time Machine (2010)</li><li>Hot Tub Time Machine 2 (2015)</li><li>I Cover The War (1937)</li><li>If You Believe (1999)</li><li>I'll Be Home For Christmas (1998)</li><li>Imitation Of Life (1959)</li><li>In The Heat Of The Night (1967)</li><li>It Happened On Fifth Avenue (1947)</li><li>iZombie S1-S5 (2015)</li><li>Jack Frost (1979)</li><li>Jeepers Creepers (2001)</li><li>Jeepers Creepers 2 (2003)</li><li>Jesus Revolution (2023)</li><li>Jet Pilot (1957)</li><li>Jingle All The Way (1996)</li><li>Last Holiday (2006)</li><li>Last Tango In Paris (1973)</li><li>Let's Have Kids (2026)</li><li>Like A Boss (2020)</li><li>Mean Girls (2004)</li><li>Mermaids (1990)</li><li>No Hard Feelings (2023)</li><li>Nothing Like The Holidays (2008)</li><li>Reap The Wild Wind (1942)</li><li>Reindeer In Here (2022)</li><li>Remember The Night (1940)</li><li>Robin Hood (2010)</li><li>Rudolph And Frosty's Christmas In July (2014)</li><li>Rudolph's Shiny New Year (2013)</li><li>Santa Who? (1997)</li><li>Scooby-Doo! Haunted Holidays (2012)</li><li>Scrooged (1988)</li><li>Sea Spoilers (1936)</li><li>Some Like It Hot (1959)</li><li>Soul Plane (2004)</li><li>Species (1995)</li><li>Surviving Christmas (2004)</li><li>Tank Girl (1995)</li><li>The Addams Family (2019)</li><li>The Addams Family 2 (2021)</li><li>The Conqueror (1956)</li><li>The Delta Force (1986)</li><li>The Front Page (1974)</li><li>The Happy Elf (2005)</li><li>The Heiress (1949)</li><li>The Internship (2026)</li><li>The Manchurian Candidate (1962)</li><li>The Nativity Story (2006)</li><li>The Pink Panther (1964)</li><li>The Pink Panther (2006)</li><li>The Pink Panther 2 (2009)</li><li>The Public Eye (1972)</li><li>The Return Of The Living Dead (1985)</li><li>The Rundown (2003)</li><li>The Spoilers (1942)</li><li>The Tangerine Bear (2000)</li><li>The Wolf Of Snow Hollow (2020)</li><li>Thomas Kinkade's Christmas Cottage (2008)</li><li>Three Wise Guys (2005)</li><li>Tower Heist (2011)</li><li>Twins (1988)</li><li>Tyler Perry's A Madea Christmas (2013)</li><li>Ulzana's Raid (1972)</li><li>Uncle Drew (2018)</li><li>Valley Girl (2020)</li><li>Wargames (1983)</li><li>We Wish You A Merry Christmas (1999)</li><li>Yoroï (2025)</li><li>Zoot Suit (1982)</li></ul><p><strong>November 11</strong></p><ul><li>The Book Of Clarence (2024)</li></ul><p><strong>November 18</strong></p><ul><li>Madden (2026)</li></ul><p><strong>November 20</strong></p><ul><li>They Will Kill You (2026)</li></ul><p><strong>November 23</strong></p><ul><li>Clashing Through the Snow (2026)</li></ul><p><strong>November 28</strong></p><ul><li>Lord Of The Rings, The: The War Of The Rohirrim (2024)</li></ul><h3 class="article-body__section" id="section-live-sports"><span>Live sports</span></h3><h2 id="november-5">November 5</h2><ul><li>Thursday Night Football on Prime (2026)</li></ul><p><strong>November 6</strong></p><ul><li>NBA on Prime (2026)</li><li>ONE Championship on Prime (2026)</li></ul><p><strong>November 7</strong></p><ul><li>NWSL on Prime (2026)</li></ul><p><strong>November 12</strong></p><ul><li>Thursday Night Football on Prime (2026)</li></ul><h2 id="november-13">November 13</h2><ul><li>NBA on Prime (2026)</li></ul><h2 id="november-19">November 19</h2><ul><li>Thursday Night Football on Prime (2026)</li></ul><h2 id="november-20">November 20</h2><ul><li>NBA on Prime (2026)</li></ul><h2 id="november-27">November 27</h2><ul><li>The Farmers Insurance Skins Game on Prime (2026)</li><li>NBA on Prime (2026)</li><li>Thursday Night Football on Prime (2026)</li></ul><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="gdR2W4" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><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/entertainment/streaming/bookgirlies-rise-here-are-the-upcoming-book-to-screen-adaptations-that-im-genuinely-excited-about">Upcoming book-to-screen adaptations I'm excited about</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/3-best-psychological-thriller-movies-on-prime-video-you-probably-havent-seen">3 best psychological thriller movies on Prime Video</a></li><li><a href="https://www.tomsguide.com/entertainment/streaming/3-acclaimed-dramas-with-90-percent-on-rotten-tomatoes-to-watch-free-on-pluto-tv-including-bo-burnhams-slept-on-coming-of-age-tale">3 acclaimed dramas with 90%+ on Rotten Tomatoes on Pluto TV</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/prime-video/new-on-prime-video-in-november-2026-all-the-new-movies-and-shows-to-stream-this-month</link>
                                                                            <description>
                            <![CDATA[ Our guide to the best new movies and shows you can stream on Prime Video in November 2026. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Dxw2FKVmmXL49PcXTzRZ86</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/q5arBLX4hzJNvdbpqJKhZe-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 29 Oct 2026 04:01:00 +0000</pubDate>                                                                                                                                <updated>Thu, 29 Oct 2026 19:07:35 +0000</updated>
                                                                                                                                            <category><![CDATA[Prime Video]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                    <category><![CDATA[Streaming]]></category>
                                                                                                                    <dc:creator><![CDATA[ Brittany Vincent ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/JDgb6vqXHys3nrFJpkRCub-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/q5arBLX4hzJNvdbpqJKhZe-1920-80.jpg">
                                                            <media:credit><![CDATA[Alamy]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Prime Video logo on blue abstract background]]></media:description>                                                            <media:text><![CDATA[Prime Video logo on blue abstract background]]></media:text>
                                <media:title type="plain"><![CDATA[Prime Video logo on blue abstract background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/q5arBLX4hzJNvdbpqJKhZe-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>With November here and the holidays right around the corner, <a href="https://www.tomsguide.com/entertainment/streaming/prime-video"><strong>Prime Video</strong></a> is loading up its shelves with fresh movies and shows to keep you company as the nights get longer. Whether you’re after an epic fantasy return, a star-studded biopic or a cozy Christmas rom-com, there’s a lot worth clearing some couch time for this month.</p><p>As usual, Prime Video has shared its full November 2026 release schedule with every confirmed title and its streaming date. From the full list, I’ve picked the biggest, buzziest movies and shows coming to the service this month, so you know exactly what to keep on your radar. Check out everything new on Prime Video in November 2026.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-WQQbzW"></div>                            </div>                            <script src="https://kwizly.com/embed/WQQbzW.js" async=""></script><h3 class="article-body__section" id="section-new-on-prime-video-in-november-2026-top-picks"><span>New on Prime Video in November 2026: Top picks</span></h3><h2 id="39-the-lord-of-the-rings-the-rings-of-power-39-season-3-nov-11">'The Lord of the Rings: The Rings of Power' season 3 (Nov. 11)</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/maP_Kyy3DCA" allowfullscreen=""></iframe></div></div><p>Prime Video’s big-budget “Lord of the Rings” prequel returns for a third season set thousands of years before Frodo ever left the Shire. Chronicling the Second Age of Middle-earth, the series follows the rise of the dark lord Sauron (Charlie Vickers) and the forging of the Rings of Power, with Morfydd Clark’s Galadriel still determined to stop him. After a second season that deepened the war across Middle-earth, season 3 pushes the conflict closer to all-out catastrophe.</p><p><em><strong>Stream </strong></em><a href="https://www.primevideo.com/detail/0TUVXIO58IUNEPNBF8363Z7YGL" target="_blank" rel="nofollow"><em><strong>"Rings of Power" season 3 on Prime Video</strong></em></a><em><strong> from Nov. 11</strong></em></p><h2 id="madden-nov-18">‘Madden’ (Nov. 18)</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/xzh7HzLXXpk" allowfullscreen=""></iframe></div></div><p>Nicolas Cage transforms into one of football’s most beloved figures in this Prime Video original. “Madden” traces the life of John Madden (Cage), from his Super Bowl-winning years coaching the Oakland Raiders and his partnership with owner Al Davis (Christian Bale) to his legendary broadcasting career and the creation of the blockbuster “Madden NFL” video game franchise. Whether you're a football devotee or just love firing up one of the games here and there, this is must-watch material for anyone who loves the sport. </p><p><em><strong>Stream </strong></em><a href="https://www.amazon.com/gp/video/detail/B0G6MQSW53" target="_blank" rel="nofollow"><em><strong>"Madden" on Prime Video</strong></em></a><em><strong> from Nov. 18</strong></em></p><h2 id="they-will-kill-you-nov-20">‘They Will Kill You’ (Nov. 20)</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/DfD6-Gf9AeE" allowfullscreen=""></iframe></div></div><p>If you’re in the mood for something bloody and fast, “They Will Kill You” is plenty of mayhem for anyone to handle. It stars Zazie Beetz as Asia, an ex-convict who takes a housekeeping job at a swanky New York high-rise called the Virgil to track down her missing sister. There's just one problem: The building is a 12-story death trap run by a Satanic cult. Fortunately for her, she’s far more dangerous than anyone expects, and she fights her way through the carnage as best she can, which makes for a bloody good time for fans of movies like "Ready or Not."</p><p><em><strong>Stream </strong></em><a href="https://www.amazon.com/gp/video/detail/B0GKWT8V6L" target="_blank" rel="nofollow"><em><strong>"They Will Kill You" on Prime Video</strong></em></a><em><strong> from Nov. 20</strong></em></p><h2 id="clashing-through-the-snow-nov-23">‘Clashing Through the Snow’ (Nov. 23)</h2><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="G2XApEcBkHQHnZ34jmWVgn" name="clashingthroughthesnow" alt="Christopher Briney and Michelle Randolph in Clashing Through the Snow" src="https://cdn.mos.cms.futurecdn.net/G2XApEcBkHQHnZ34jmWVgn-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: Prime Video)</span></figcaption></figure><p>This cozy holiday rom-com strands two rival publishing editors, played by Christopher Briney (“The Summer I Turned Pretty”) and Michelle Randolph (“Landman”), at a snowed-in airport and forces them to share a rental car all the way to New York. The catch is that they’re secretly competing for the same career-saving book deal, which makes their road trip more tense than you might have guessed.  The movie has a scene-stealing supporting cast that includes Lukas Gage, Julia Fox and Paris Hilton, and it's perfect for settling into the winter holidays.</p><p><em><strong>Stream "Clashing Through the Snow" on Prime Video from Nov. 23</strong></em></p><h2 id="blade-runner-2099-nov-25">‘Blade Runner 2099’ (Nov. 25)</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/AwK5KxoJsvk" allowfullscreen=""></iframe></div></div><p>The world of "Blade Runner" expands onto the small screen with this ambitious new series. Set 50 years after the events of "Blade Runner 2049," "Blade Runner 2099" imagines a Los Angeles reshaped by the artificial humans known as replicants. Michelle Yeoh is an aging replicant Blade Runner, with Hunter Schafer as Cora, a fugitive who takes on the identity of a Blade Runner in one last bid to stop running. If you're a fan of the neon-soaked franchise, this next direction for it is a no-brainer. </p><p><em><strong>Stream </strong></em><a href="https://www.amazon.com/gp/video/detail/B0H8MGR6PV" target="_blank" rel="nofollow"><em><strong>"Blade Runner 2099" on Prime Video</strong></em></a><em><strong> from Nov. 25</strong></em></p><h3 class="article-body__section" id="section-new-shows-on-prime-video-in-november-2026"><span>New shows on Prime Video in November 2026</span></h3><h2 id="november-1">November 1</h2><ul><li>iZombie S1-S5 (2015)</li></ul><p><strong>November 4</strong></p><ul><li>The Greatest (2026)</li></ul><p><strong>November 5</strong></p><ul><li>Terrell &amp; T.O. (2026)</li></ul><p><strong>November 11</strong></p><ul><li>The Lord of the Rings: The Rings of Power S3 (2026)</li></ul><p><strong>November 14</strong></p><ul><li>Frasier S1-2 (2023)</li></ul><p><strong>November 15</strong></p><ul><li>The Chosen S6 (2026)</li></ul><p><strong>November 25 </strong></p><ul><li>Blade Runner 2099 (2026)</li></ul><h2 id="november-30">November 30</h2><ul><li>The Boy Who Stole Billions? (2026)</li></ul><h3 class="article-body__section" id="section-new-movies-on-prime-video-in-october-2026"><span>New movies on Prime Video in October 2026</span></h3><p><strong>November 1</strong></p><ul><li>A Belle For Christmas (2014)</li><li>A Christmas Carol (1999)</li><li>A Christmas Wedding Tail (2011)</li><li>A Different Kind Of Christmas (1996)</li><li>A Hobo's Christmas (1987)</li><li>A Shot In The Dark (1964)</li><li>A Very Barry Christmas (2008)</li><li>A Very Harold &amp; Kumar Christmas (2011)</li><li>A Wonderful Christmas (2005)</li><li>Agent Cody Banks (2003)</li><li>Agent Cody Banks 2: Destination London (2004)</li><li>All Dogs Go To Heaven (1989)</li><li>All Mine To Give (1957)</li><li>American Made (2017)</li><li>Annie Hall (1977)</li><li>Bad Santa (2003)</li><li>Bad Santa 2 (2016)</li><li>Be Cool (2005)</li><li>Blink Twice (2024)</li><li>California Straight Ahead (1937)</li><li>Chance Of Snow (2002)</li><li>Christmas Classics: O' Christmas Tree (1999)</li><li>Christmas In Connecticut (1945)</li><li>Christmas In Paradise (2022)</li><li>Darkest Hour (2017)</li><li>Dear Santa (2024)</li><li>Deck The Halls (2011)</li><li>Duck Soup (1933)</li><li>Elf (2003)</li><li>Elf: Buddy's Musical Christmas (2014)</li><li>Get Shorty (1995)</li><li>Good Will Hunting (1998)</li><li>Gretel &amp; Hansel (2020)</li><li>Hang 'Em High (1968)</li><li>Holiday Affair (1949)</li><li>Hot Tub Time Machine (2010)</li><li>Hot Tub Time Machine 2 (2015)</li><li>I Cover The War (1937)</li><li>If You Believe (1999)</li><li>I'll Be Home For Christmas (1998)</li><li>Imitation Of Life (1959)</li><li>In The Heat Of The Night (1967)</li><li>It Happened On Fifth Avenue (1947)</li><li>iZombie S1-S5 (2015)</li><li>Jack Frost (1979)</li><li>Jeepers Creepers (2001)</li><li>Jeepers Creepers 2 (2003)</li><li>Jesus Revolution (2023)</li><li>Jet Pilot (1957)</li><li>Jingle All The Way (1996)</li><li>Last Holiday (2006)</li><li>Last Tango In Paris (1973)</li><li>Let's Have Kids (2026)</li><li>Like A Boss (2020)</li><li>Mean Girls (2004)</li><li>Mermaids (1990)</li><li>No Hard Feelings (2023)</li><li>Nothing Like The Holidays (2008)</li><li>Reap The Wild Wind (1942)</li><li>Reindeer In Here (2022)</li><li>Remember The Night (1940)</li><li>Robin Hood (2010)</li><li>Rudolph And Frosty's Christmas In July (2014)</li><li>Rudolph's Shiny New Year (2013)</li><li>Santa Who? (1997)</li><li>Scooby-Doo! Haunted Holidays (2012)</li><li>Scrooged (1988)</li><li>Sea Spoilers (1936)</li><li>Some Like It Hot (1959)</li><li>Soul Plane (2004)</li><li>Species (1995)</li><li>Surviving Christmas (2004)</li><li>Tank Girl (1995)</li><li>The Addams Family (2019)</li><li>The Addams Family 2 (2021)</li><li>The Conqueror (1956)</li><li>The Delta Force (1986)</li><li>The Front Page (1974)</li><li>The Happy Elf (2005)</li><li>The Heiress (1949)</li><li>The Internship (2026)</li><li>The Manchurian Candidate (1962)</li><li>The Nativity Story (2006)</li><li>The Pink Panther (1964)</li><li>The Pink Panther (2006)</li><li>The Pink Panther 2 (2009)</li><li>The Public Eye (1972)</li><li>The Return Of The Living Dead (1985)</li><li>The Rundown (2003)</li><li>The Spoilers (1942)</li><li>The Tangerine Bear (2000)</li><li>The Wolf Of Snow Hollow (2020)</li><li>Thomas Kinkade's Christmas Cottage (2008)</li><li>Three Wise Guys (2005)</li><li>Tower Heist (2011)</li><li>Twins (1988)</li><li>Tyler Perry's A Madea Christmas (2013)</li><li>Ulzana's Raid (1972)</li><li>Uncle Drew (2018)</li><li>Valley Girl (2020)</li><li>Wargames (1983)</li><li>We Wish You A Merry Christmas (1999)</li><li>Yoroï (2025)</li><li>Zoot Suit (1982)</li></ul><p><strong>November 11</strong></p><ul><li>The Book Of Clarence (2024)</li></ul><p><strong>November 18</strong></p><ul><li>Madden (2026)</li></ul><p><strong>November 20</strong></p><ul><li>They Will Kill You (2026)</li></ul><p><strong>November 23</strong></p><ul><li>Clashing Through the Snow (2026)</li></ul><p><strong>November 28</strong></p><ul><li>Lord Of The Rings, The: The War Of The Rohirrim (2024)</li></ul><h3 class="article-body__section" id="section-live-sports"><span>Live sports</span></h3><h2 id="november-5">November 5</h2><ul><li>Thursday Night Football on Prime (2026)</li></ul><p><strong>November 6</strong></p><ul><li>NBA on Prime (2026)</li><li>ONE Championship on Prime (2026)</li></ul><p><strong>November 7</strong></p><ul><li>NWSL on Prime (2026)</li></ul><p><strong>November 12</strong></p><ul><li>Thursday Night Football on Prime (2026)</li></ul><h2 id="november-13">November 13</h2><ul><li>NBA on Prime (2026)</li></ul><h2 id="november-19">November 19</h2><ul><li>Thursday Night Football on Prime (2026)</li></ul><h2 id="november-20">November 20</h2><ul><li>NBA on Prime (2026)</li></ul><h2 id="november-27">November 27</h2><ul><li>The Farmers Insurance Skins Game on Prime (2026)</li><li>NBA on Prime (2026)</li><li>Thursday Night Football on Prime (2026)</li></ul><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="gdR2W4" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><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/entertainment/streaming/bookgirlies-rise-here-are-the-upcoming-book-to-screen-adaptations-that-im-genuinely-excited-about">Upcoming book-to-screen adaptations I'm excited about</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/3-best-psychological-thriller-movies-on-prime-video-you-probably-havent-seen">3 best psychological thriller movies on Prime Video</a></li><li><a href="https://www.tomsguide.com/entertainment/streaming/3-acclaimed-dramas-with-90-percent-on-rotten-tomatoes-to-watch-free-on-pluto-tv-including-bo-burnhams-slept-on-coming-of-age-tale">3 acclaimed dramas with 90%+ on Rotten Tomatoes on Pluto TV</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I tested the new Kindle Paperwhite Signature Edition for two weeks — and it’s almost perfect ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The new Amazon Kindle Paperwhite Signature Edition ($249) might be pricey, but it’s one of the <a href="https://www.tomsguide.com/us/best-e-readers,review-2766.html">best Kindles</a> right now. Like the new basic <a href="https://www.tomsguide.com/computing/e-readers/amazon-kindle-2026-review">Kindle (2026)</a> I also reviewed, this model adds several upgrades that improve the reading experience.</p><p>This e-reader is lighter and thinner than before, making it easier to carry and hold for longer reading sessions. Amazon moved the power button from the bottom of the device to the right-hand side, virtually eliminating accidental shutdowns. The aluminum rear housing also gives the device a more premium feel. There are also connectors on the back for Amazon’s new wireless charging dock.</p><p>While the design has been overhauled, the display remains largely unchanged. The panel is still 7 inches with a 300ppi resolution. As a result, black-and-white pages and images look sharp and well-defined. In addition, the ambient light sensor automatically adjusts the front light, while the accelerometer rotates the screen when you change orientation.</p><p>The Kindle Paperwhite Signature Edition might not be revolutionary, but it offers enough meaningful upgrades that make it worth considering — especially if you own a Kindle released before 2021. Read on to see if the Kindle Paperwhite Signature Edition is the right e-reader for you.</p><h3 class="article-body__section" id="section-amazon-kindle-paperwhite-signature-edition-2026-review-cheat-sheet"><span>Amazon Kindle Paperwhite Signature Edition (2026) review: Cheat sheet</span></h3><ul><li><strong>What is it?</strong> The Kindle Paperwhite Signature Edition is a higher-end version of the Kindle Paperwhite, featuring more storage, and aluminum design, and wireless charging.</li><li><strong>Who is it for?</strong> For folks who want an e-reader that feels more like a smartphone and that supports wireless charging.</li><li><strong>What does it cost?</strong> The Amazon Kindle Paperwhite Signature Edition <a href="https://www.amazon.com/dp/B0GV621HD7" target="_blank" rel="nofollow">costs $249 on Amazon</a>. This model comes with 32GB of storage and with no ad support.</li><li><strong>What do we like?</strong> We like the thinner design, sharp 7-inch display, aluminum back, epic battery life, and the Kindle ecosystem.</li><li><strong>What don’t we like?</strong> We don't like the higher asking price and that wireless charging requires a $59 charging dock.</li></ul><h3 class="article-body__section" id="section-amazon-kindle-paperwhite-signature-edition-2026-review-specs"><span>Amazon Kindle Paperwhite Signature Edition (2026) review: Specs</span></h3><div ><table><thead><tr><th class="firstcol empty" ></th><th  ><p><strong>Kindle Paperwhite Signature Edition (2026)</strong></p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p>$249</p></td></tr><tr><td class="firstcol " ><p><strong>Display</strong></p></td><td  ><p>7-inch 300ppi</p></td></tr><tr><td class="firstcol " ><p><strong>Storage</strong></p></td><td  ><p>32GB</p></td></tr><tr><td class="firstcol " ><p><strong>Front light</strong></p></td><td  ><p>Yes (warm light)</p></td></tr><tr><td class="firstcol " ><p><strong>Battery life</strong></p></td><td  ><p>12 weeks (rated)</p></td></tr><tr><td class="firstcol " ><p><strong>Ports</strong></p></td><td  ><p>1x USB-C</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>Wi-Fi</p></td></tr><tr><td class="firstcol " ><p><strong>Waterproof</strong></p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Colors</strong></p></td><td  ><p>Seaglass Green, Graphite</p></td></tr><tr><td class="firstcol " ><p><strong>Dimensions</strong></p></td><td  ><p>6.9 x 5.0 x 0.3 inches</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>8.1 oz</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-amazon-kindle-paperwhite-signature-edition-2026-review-the-ups"><span>Amazon Kindle Paperwhite Signature Edition (2026) review: The ups</span></h3><p>The new Kindle Paperwhite Signature Edition impresses thanks to its sleek design, brilliant display, long-lasting battery life, and seamless integration with the Kindle ecosystem.</p><h2 id="svelte-design">Svelte 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="43fH5KEaZKLgotgf65HuCH" name="Kindle Paperwhite Signature Edition (2026)-2" alt="Amazon Kindle Paperwhite Signature Edition (2026)" src="https://cdn.mos.cms.futurecdn.net/43fH5KEaZKLgotgf65HuCH-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 Kindle Paperwhite Signature Edition doesn’t radically reinvent a Kindle’s design, but the subtle upgrades make for a sleeker e-reader that’s also great to hold. In short: Amazon took what worked and made it better.</p><p>My favorite new design aspect is the aluminum back since it makes this Kindle Paperwhite feel like holding a smartphone. The soft, rounded edges are also quite elegant. At 6.9 x 5.0 x 0.3 inches, it’s small enough to slip into your backpack or even a jeans back pocket. The aluminum adds some weight to the Paperwhite, but the even weight distribution helps mitigate that.</p><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="P5dXV8SWCCsywfJoFPm5F" name="Kindle Paperwhite Signature Edition (2026)-6" alt="Amazon Kindle Paperwhite Signature Edition (2026)" src="https://cdn.mos.cms.futurecdn.net/P5dXV8SWCCsywfJoFPm5F-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>Having the power button on the right-hand side instead of at the bottom is a huge game-changer, especially if you always accidentally shut off older Kindles. The button itself is pretty unintrusive and doesn’t diminish the device’s svelte design. I’m glad this is now a standard feature of all current Kindles.</p><h2 id="sharp-display">Sharp 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="ergENjQkv6U8tH5tGEq2MP" name="Kindle Paperwhite Signature Edition (2026)-7" alt="Amazon Kindle Paperwhite Signature Edition (2026)" src="https://cdn.mos.cms.futurecdn.net/ergENjQkv6U8tH5tGEq2MP-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>Like the previous model, the new Kindle Paperwhite Signature Edition has a 7-inch display with 300ppi resolution. The screen is still flush with the bezels, but Amazon has employed a new reverse stack display construction to make the transition from screen to bezel even more seamless.</p><p>Black-and-white text looks phenomenal, with everything having the paper-like quality I’ve come to expect from Kindles. Even with the front lights off (in a well-lit room), text is always extremely legible, even if you opt for a smaller font size. If you do enable the Kindle’s lights, you can have it automatically adjust to the ambient lighting, and even enable warm light.  The latter two features are especially useful for reading at night.</p><p>The Kindle Paperwhite is also great for reading black-and-white comics. This is especially true for manga, as the Paperwhite is about an inch smaller than a tankōbon book. I still prefer reading comics on an iPad Pro M5 or the Alexa Tablet 12 Pro, but the Paperwhite does a good job of handling them in a pinch.</p><p>The display generally does a decent job of diffusing glare, but you’ll still get some, depending on where you’re reading. Sure, you don’t get the same kind of glare as on a glossy display, but you’ll see some here if the lighting conditions are especially harsh. All that is to say that the display isn’t anti-glare as advertised, but it does a fine job of minimizing glare overall.</p><h2 id="epic-battery-life">Epic 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="anLwy2ESwkbyNkUjXzoAcX" name="Kindle Paperwhite Signature Edition (2026)-5" alt="Amazon Kindle Paperwhite Signature Edition (2026)" src="https://cdn.mos.cms.futurecdn.net/anLwy2ESwkbyNkUjXzoAcX-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>As with every Kindle, expect weeks' worth of battery life from the Paperwhite Signature Edition. Though I haven’t had the e-reader long enough to test whether or not Amazon’s claimed 12 weeks of battery life are true, I’ve yet to charge it during my past two weeks of use.</p><p>During my time, I read around an hour a day with adaptive brightness on. From 95% battery where I began, the Paperwhite is at 70% battery after two weeks. At this rate, I should get another five and a half weeks before I need to recharge, which is fantastic.</p><p>Considering how Amazon’s testing involves reading for 30 minutes a day with the backlight at 13, the company’s 12-hour claim isn’t that far off. All that’s to say that the Kindle Paperwhite Signature Edition will last you for weeks and weeks.</p><h2 id="kindle-ecosystem-2">Kindle 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:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="vDPadbK46LTLj7rdwUeF4c" name="Kindle Paperwhite Signature Edition (2026)-9" alt="Amazon Kindle Paperwhite Signature Edition (2026)" src="https://cdn.mos.cms.futurecdn.net/vDPadbK46LTLj7rdwUeF4c-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 reasons that I and many others love Kindles is because of the user-friendliness. Not only is the device itself easy to use, but its connections to the Kindle Store and Goodreads provide a fuller experience. Not much has changed on that end, which isn’t a bad thing whatsoever.</p><p>The Home page shows all your active reads along with recent purchases. Right beneath this, a "Top Picks For You" row highlights recommendations based on your personal reading history. Similar curated recommendations populate the Kindle Unlimited and subsequent sections as you scroll down. Overall, these tailored suggestions are pretty accurate.</p><p>The drop-down menu serves as your primary control center for toggling options like airplane mode, <a href="https://www.tomsguide.com/tag/bluetooth">Bluetooth</a>, sync, brightness, and dark mode, as well as accessing the full settings screen. While this menu lets you check device info and wireless options, it remains relatively basic compared to what you would find on the <a href="https://www.tomsguide.com/best-picks/best-phones">best phones</a>.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="RWLgchdpXmeQgF8hAk4G5B" name="Kindle Paperwhite Signature Edition (2026)-3" alt="Amazon Kindle Paperwhite Signature Edition (2026)" src="https://cdn.mos.cms.futurecdn.net/RWLgchdpXmeQgF8hAk4G5B-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>There are more options when you’re reading a book, such as changing the font size, font type, line spacing, and more. Beyond those, you can skip to specific chapters, highlight words or sections, get dictionary definitions, and more. I’m a big fan of the dictionary feature, which comes in clutch when reading old books that might have words I’m unfamiliar with.</p><p>Integration with the Kindle Store and Goodreads makes it a cinch to purchase books and update your reading status (respectively). I get a lot of use from the latter, since I’m obsessed with keeping track of the books I’m reading. I know some folks don’t care for Goodreads, but I think it’s great for my needs.</p><h3 class="article-body__section" id="section-amazon-kindle-paperwhite-signature-edition-2026-review-the-downs"><span>Amazon Kindle Paperwhite Signature Edition (2026) review: The downs</span></h3><p>While the Kindle Paperwhite Signature Edition has a lot to offer, it has some drawbacks that keep it from being perfect.</p><h2 id="proprietary-wireless-charging">Proprietary wireless charging</h2><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="VbRFgBBfegbwKKF3SJeFjT" name="Kindle Paperwhite Signature Edition (2026)-8" alt="Amazon Kindle Paperwhite Signature Edition (2026)" src="https://cdn.mos.cms.futurecdn.net/VbRFgBBfegbwKKF3SJeFjT-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 Kindle Paperwhite Signature Edition supports wireless charging, but with a catch. Whereas the previous model supported Qi charging, this Kindle now has pogo pin charging designed to work exclusively with the new Amazon Charging Stand. If you want this peripheral, you’ll have to pay $59.</p><p>While you can still just charge the Kindle via its USB-C port, it’s a bummer that we can’t use Qi charging like we could before. Yes, the Amazon Charging Stand is an elegant way to charge your Kindle. But considering the price point and how you’ll rarely need to charge the Paperwhite, it’s hard to justify the need for it.</p><h2 id="higher-asking-price">Higher asking 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="su9m8qwsBrwcBVoWE4TExh" name="Kindle Paperwhite Signature Edition (2026)-10" alt="Amazon Kindle Paperwhite Signature Edition (2026)" src="https://cdn.mos.cms.futurecdn.net/su9m8qwsBrwcBVoWE4TExh-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>In fairness, the Signature Edition Kindles were always the pricier Kindles. But now that all Kindles are more expensive than their previous models, the cost is even higher.</p><p>Whereas the previous Kindle Paperwhite Signature Edition started at $189, the new model costs $249. Sure, you get 32GB of RAM, no ads, and an aluminum chassis, but that $60 price hike still stings!</p><p>Thankfully, you will likely be able to get this Kindle at a lower price during one of Amazon’s Prime Day events or Black Friday.</p><h3 class="article-body__section" id="section-amazon-kindle-paperwhite-signature-edition-2026-review-verdict"><span>Amazon Kindle Paperwhite Signature Edition (2026) review: Verdict</span></h3><p>The Amazon Kindle Paperwhite Signature Edition (2026) might come at a higher price, but it’s arguably the best iteration of Amazon’s flagship e-reader thanks to its smart upgrades. After using it for the better part of two weeks, it’ll be hard for me to go back to the previous model. It just feels so good to hold and read on for hours on end.</p><p>You won’t be disappointed with the Kindle Paperwhite Signature Edition (2026), but if you want to spend less, the standard Kindle Paperwhite costs a more affordable $199. And if you’re okay with a smaller device, the new basic Kindle is a fantastic e-reader that starts at $149.</p><p>That said, if you can afford it, you won’t go wrong with the Kindle Paperwhite Signature Edition. It's really that good.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/e-readers/kindle-paperwhite-signature-edition-2026-review</link>
                                                                            <description>
                            <![CDATA[ The Kindle Paperwhite Signature Edition (2026) delivers many meaningful upgrades to Amazon's flagship e-reader. However, expect to pay more for said upgrades. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">y554NLwm3MnpxD3C8AzWLB</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/VQy5gsPsA7P5q47i6pSZan-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 28 Oct 2026 13:07:40 +0000</pubDate>                                                                                                                                <updated>Wed, 28 Oct 2026 13:30:12 +0000</updated>
                                                                                                                                            <category><![CDATA[E-Readers]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Tablets]]></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/VQy5gsPsA7P5q47i6pSZan-1920-80.jpg">
                                                            <media:credit><![CDATA[Tom&amp;#39;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Amazon Kindle Paperwhite Signature Edition (2026)]]></media:description>                                                            <media:text><![CDATA[Amazon Kindle Paperwhite Signature Edition (2026)]]></media:text>
                                <media:title type="plain"><![CDATA[Amazon Kindle Paperwhite Signature Edition (2026)]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/VQy5gsPsA7P5q47i6pSZan-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The new Amazon Kindle Paperwhite Signature Edition ($249) might be pricey, but it’s one of the <a href="https://www.tomsguide.com/us/best-e-readers,review-2766.html">best Kindles</a> right now. Like the new basic <a href="https://www.tomsguide.com/computing/e-readers/amazon-kindle-2026-review">Kindle (2026)</a> I also reviewed, this model adds several upgrades that improve the reading experience.</p><p>This e-reader is lighter and thinner than before, making it easier to carry and hold for longer reading sessions. Amazon moved the power button from the bottom of the device to the right-hand side, virtually eliminating accidental shutdowns. The aluminum rear housing also gives the device a more premium feel. There are also connectors on the back for Amazon’s new wireless charging dock.</p><p>While the design has been overhauled, the display remains largely unchanged. The panel is still 7 inches with a 300ppi resolution. As a result, black-and-white pages and images look sharp and well-defined. In addition, the ambient light sensor automatically adjusts the front light, while the accelerometer rotates the screen when you change orientation.</p><p>The Kindle Paperwhite Signature Edition might not be revolutionary, but it offers enough meaningful upgrades that make it worth considering — especially if you own a Kindle released before 2021. Read on to see if the Kindle Paperwhite Signature Edition is the right e-reader for you.</p><h3 class="article-body__section" id="section-amazon-kindle-paperwhite-signature-edition-2026-review-cheat-sheet"><span>Amazon Kindle Paperwhite Signature Edition (2026) review: Cheat sheet</span></h3><ul><li><strong>What is it?</strong> The Kindle Paperwhite Signature Edition is a higher-end version of the Kindle Paperwhite, featuring more storage, and aluminum design, and wireless charging.</li><li><strong>Who is it for?</strong> For folks who want an e-reader that feels more like a smartphone and that supports wireless charging.</li><li><strong>What does it cost?</strong> The Amazon Kindle Paperwhite Signature Edition <a href="https://www.amazon.com/dp/B0GV621HD7" target="_blank" rel="nofollow">costs $249 on Amazon</a>. This model comes with 32GB of storage and with no ad support.</li><li><strong>What do we like?</strong> We like the thinner design, sharp 7-inch display, aluminum back, epic battery life, and the Kindle ecosystem.</li><li><strong>What don’t we like?</strong> We don't like the higher asking price and that wireless charging requires a $59 charging dock.</li></ul><h3 class="article-body__section" id="section-amazon-kindle-paperwhite-signature-edition-2026-review-specs"><span>Amazon Kindle Paperwhite Signature Edition (2026) review: Specs</span></h3><div ><table><thead><tr><th class="firstcol empty" ></th><th  ><p><strong>Kindle Paperwhite Signature Edition (2026)</strong></p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p>$249</p></td></tr><tr><td class="firstcol " ><p><strong>Display</strong></p></td><td  ><p>7-inch 300ppi</p></td></tr><tr><td class="firstcol " ><p><strong>Storage</strong></p></td><td  ><p>32GB</p></td></tr><tr><td class="firstcol " ><p><strong>Front light</strong></p></td><td  ><p>Yes (warm light)</p></td></tr><tr><td class="firstcol " ><p><strong>Battery life</strong></p></td><td  ><p>12 weeks (rated)</p></td></tr><tr><td class="firstcol " ><p><strong>Ports</strong></p></td><td  ><p>1x USB-C</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>Wi-Fi</p></td></tr><tr><td class="firstcol " ><p><strong>Waterproof</strong></p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Colors</strong></p></td><td  ><p>Seaglass Green, Graphite</p></td></tr><tr><td class="firstcol " ><p><strong>Dimensions</strong></p></td><td  ><p>6.9 x 5.0 x 0.3 inches</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>8.1 oz</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-amazon-kindle-paperwhite-signature-edition-2026-review-the-ups"><span>Amazon Kindle Paperwhite Signature Edition (2026) review: The ups</span></h3><p>The new Kindle Paperwhite Signature Edition impresses thanks to its sleek design, brilliant display, long-lasting battery life, and seamless integration with the Kindle ecosystem.</p><h2 id="svelte-design">Svelte 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="43fH5KEaZKLgotgf65HuCH" name="Kindle Paperwhite Signature Edition (2026)-2" alt="Amazon Kindle Paperwhite Signature Edition (2026)" src="https://cdn.mos.cms.futurecdn.net/43fH5KEaZKLgotgf65HuCH-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 Kindle Paperwhite Signature Edition doesn’t radically reinvent a Kindle’s design, but the subtle upgrades make for a sleeker e-reader that’s also great to hold. In short: Amazon took what worked and made it better.</p><p>My favorite new design aspect is the aluminum back since it makes this Kindle Paperwhite feel like holding a smartphone. The soft, rounded edges are also quite elegant. At 6.9 x 5.0 x 0.3 inches, it’s small enough to slip into your backpack or even a jeans back pocket. The aluminum adds some weight to the Paperwhite, but the even weight distribution helps mitigate that.</p><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="P5dXV8SWCCsywfJoFPm5F" name="Kindle Paperwhite Signature Edition (2026)-6" alt="Amazon Kindle Paperwhite Signature Edition (2026)" src="https://cdn.mos.cms.futurecdn.net/P5dXV8SWCCsywfJoFPm5F-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>Having the power button on the right-hand side instead of at the bottom is a huge game-changer, especially if you always accidentally shut off older Kindles. The button itself is pretty unintrusive and doesn’t diminish the device’s svelte design. I’m glad this is now a standard feature of all current Kindles.</p><h2 id="sharp-display">Sharp 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="ergENjQkv6U8tH5tGEq2MP" name="Kindle Paperwhite Signature Edition (2026)-7" alt="Amazon Kindle Paperwhite Signature Edition (2026)" src="https://cdn.mos.cms.futurecdn.net/ergENjQkv6U8tH5tGEq2MP-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>Like the previous model, the new Kindle Paperwhite Signature Edition has a 7-inch display with 300ppi resolution. The screen is still flush with the bezels, but Amazon has employed a new reverse stack display construction to make the transition from screen to bezel even more seamless.</p><p>Black-and-white text looks phenomenal, with everything having the paper-like quality I’ve come to expect from Kindles. Even with the front lights off (in a well-lit room), text is always extremely legible, even if you opt for a smaller font size. If you do enable the Kindle’s lights, you can have it automatically adjust to the ambient lighting, and even enable warm light.  The latter two features are especially useful for reading at night.</p><p>The Kindle Paperwhite is also great for reading black-and-white comics. This is especially true for manga, as the Paperwhite is about an inch smaller than a tankōbon book. I still prefer reading comics on an iPad Pro M5 or the Alexa Tablet 12 Pro, but the Paperwhite does a good job of handling them in a pinch.</p><p>The display generally does a decent job of diffusing glare, but you’ll still get some, depending on where you’re reading. Sure, you don’t get the same kind of glare as on a glossy display, but you’ll see some here if the lighting conditions are especially harsh. All that is to say that the display isn’t anti-glare as advertised, but it does a fine job of minimizing glare overall.</p><h2 id="epic-battery-life">Epic 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="anLwy2ESwkbyNkUjXzoAcX" name="Kindle Paperwhite Signature Edition (2026)-5" alt="Amazon Kindle Paperwhite Signature Edition (2026)" src="https://cdn.mos.cms.futurecdn.net/anLwy2ESwkbyNkUjXzoAcX-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>As with every Kindle, expect weeks' worth of battery life from the Paperwhite Signature Edition. Though I haven’t had the e-reader long enough to test whether or not Amazon’s claimed 12 weeks of battery life are true, I’ve yet to charge it during my past two weeks of use.</p><p>During my time, I read around an hour a day with adaptive brightness on. From 95% battery where I began, the Paperwhite is at 70% battery after two weeks. At this rate, I should get another five and a half weeks before I need to recharge, which is fantastic.</p><p>Considering how Amazon’s testing involves reading for 30 minutes a day with the backlight at 13, the company’s 12-hour claim isn’t that far off. All that’s to say that the Kindle Paperwhite Signature Edition will last you for weeks and weeks.</p><h2 id="kindle-ecosystem-2">Kindle 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:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="vDPadbK46LTLj7rdwUeF4c" name="Kindle Paperwhite Signature Edition (2026)-9" alt="Amazon Kindle Paperwhite Signature Edition (2026)" src="https://cdn.mos.cms.futurecdn.net/vDPadbK46LTLj7rdwUeF4c-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 reasons that I and many others love Kindles is because of the user-friendliness. Not only is the device itself easy to use, but its connections to the Kindle Store and Goodreads provide a fuller experience. Not much has changed on that end, which isn’t a bad thing whatsoever.</p><p>The Home page shows all your active reads along with recent purchases. Right beneath this, a "Top Picks For You" row highlights recommendations based on your personal reading history. Similar curated recommendations populate the Kindle Unlimited and subsequent sections as you scroll down. Overall, these tailored suggestions are pretty accurate.</p><p>The drop-down menu serves as your primary control center for toggling options like airplane mode, <a href="https://www.tomsguide.com/tag/bluetooth">Bluetooth</a>, sync, brightness, and dark mode, as well as accessing the full settings screen. While this menu lets you check device info and wireless options, it remains relatively basic compared to what you would find on the <a href="https://www.tomsguide.com/best-picks/best-phones">best phones</a>.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="RWLgchdpXmeQgF8hAk4G5B" name="Kindle Paperwhite Signature Edition (2026)-3" alt="Amazon Kindle Paperwhite Signature Edition (2026)" src="https://cdn.mos.cms.futurecdn.net/RWLgchdpXmeQgF8hAk4G5B-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>There are more options when you’re reading a book, such as changing the font size, font type, line spacing, and more. Beyond those, you can skip to specific chapters, highlight words or sections, get dictionary definitions, and more. I’m a big fan of the dictionary feature, which comes in clutch when reading old books that might have words I’m unfamiliar with.</p><p>Integration with the Kindle Store and Goodreads makes it a cinch to purchase books and update your reading status (respectively). I get a lot of use from the latter, since I’m obsessed with keeping track of the books I’m reading. I know some folks don’t care for Goodreads, but I think it’s great for my needs.</p><h3 class="article-body__section" id="section-amazon-kindle-paperwhite-signature-edition-2026-review-the-downs"><span>Amazon Kindle Paperwhite Signature Edition (2026) review: The downs</span></h3><p>While the Kindle Paperwhite Signature Edition has a lot to offer, it has some drawbacks that keep it from being perfect.</p><h2 id="proprietary-wireless-charging">Proprietary wireless charging</h2><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="VbRFgBBfegbwKKF3SJeFjT" name="Kindle Paperwhite Signature Edition (2026)-8" alt="Amazon Kindle Paperwhite Signature Edition (2026)" src="https://cdn.mos.cms.futurecdn.net/VbRFgBBfegbwKKF3SJeFjT-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 Kindle Paperwhite Signature Edition supports wireless charging, but with a catch. Whereas the previous model supported Qi charging, this Kindle now has pogo pin charging designed to work exclusively with the new Amazon Charging Stand. If you want this peripheral, you’ll have to pay $59.</p><p>While you can still just charge the Kindle via its USB-C port, it’s a bummer that we can’t use Qi charging like we could before. Yes, the Amazon Charging Stand is an elegant way to charge your Kindle. But considering the price point and how you’ll rarely need to charge the Paperwhite, it’s hard to justify the need for it.</p><h2 id="higher-asking-price">Higher asking 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="su9m8qwsBrwcBVoWE4TExh" name="Kindle Paperwhite Signature Edition (2026)-10" alt="Amazon Kindle Paperwhite Signature Edition (2026)" src="https://cdn.mos.cms.futurecdn.net/su9m8qwsBrwcBVoWE4TExh-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>In fairness, the Signature Edition Kindles were always the pricier Kindles. But now that all Kindles are more expensive than their previous models, the cost is even higher.</p><p>Whereas the previous Kindle Paperwhite Signature Edition started at $189, the new model costs $249. Sure, you get 32GB of RAM, no ads, and an aluminum chassis, but that $60 price hike still stings!</p><p>Thankfully, you will likely be able to get this Kindle at a lower price during one of Amazon’s Prime Day events or Black Friday.</p><h3 class="article-body__section" id="section-amazon-kindle-paperwhite-signature-edition-2026-review-verdict"><span>Amazon Kindle Paperwhite Signature Edition (2026) review: Verdict</span></h3><p>The Amazon Kindle Paperwhite Signature Edition (2026) might come at a higher price, but it’s arguably the best iteration of Amazon’s flagship e-reader thanks to its smart upgrades. After using it for the better part of two weeks, it’ll be hard for me to go back to the previous model. It just feels so good to hold and read on for hours on end.</p><p>You won’t be disappointed with the Kindle Paperwhite Signature Edition (2026), but if you want to spend less, the standard Kindle Paperwhite costs a more affordable $199. And if you’re okay with a smaller device, the new basic Kindle is a fantastic e-reader that starts at $149.</p><p>That said, if you can afford it, you won’t go wrong with the Kindle Paperwhite Signature Edition. It's really that good.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Prime Video top 10 shows — here’s the 3 worth binge-watching this week (Oct. 28-Nov. 3) ]]></title>
                                                                                                <dc:content><![CDATA[ <p>When you settle down to binge-watch some television on Prime Video, the last thing you want to do is waste time scrolling through the platform’s near-endless library. That’s where the Prime Video top 10 list comes into play. It gives you a snapshot look at the shows that are currently drawing the most interest from your fellow subscribers. </p><p>However, it’s not uncommon for subpar series to find a spot on the ranking. Heck, I’ve seen shows I’d firmly label a “skip” manage to hold down the No. 1 spot. Which is why I’m combing through today’s Prime Video top 10 shows list to pick out three series actually worth watching.</p><p>My picks are based on the <strong>Prime Video top 10 as of Wednesday, October 28</strong>, and include action, horror and romance. There’s a pick for (nearly) all tastes, so let’s dive into them…</p><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="gdR2W4" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><h3 class="article-body__section" id="section-best-shows-in-the-prime-video-top-10"><span>Best shows in the Prime Video top 10</span></h3><h2 id="the-terminal-list">‘The Terminal List’</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/x9FvvsC0B5Q" allowfullscreen=""></iframe></div></div><p>“The Terminal List” season 2 wrapped up last week, so while weekly watchers will no doubt be disappointed not to find a new episode on Prime Video this week, if you’ve been holding fire to binge-watch the entire sophomore run, it's time to pull the trigger. The show is based on the novel “True Believer” by Jack Carr, a follow-up to the book "The Terminal List", which was adapted for the show's first season. In short, this action-thriller original is made for fans of “Reacher.”</p><p>I won’t delve into season 2 spoilers, in case you’re totally fresh to the series, but in season 1, it follows James Reece (spot the same initials as a certain Lee Child literary creation…), played by Chris Pratt. Reece is a US Navy SEAL who returns home from war after his platoon is ambushed on the front lines. Once back on U.S. soil, he faces survivor's guilt, unreliable memories, and dark forces working against him that could threaten the lives of everybody he holds dear.</p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B09K9M94L7" target="_blank" rel="nofollow"><em><strong>"The Terminal List" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="carrie">‘Carrie’</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/jkUw2nh6fT0" allowfullscreen=""></iframe></div></div><p>Prime Video’s television take on Stephen King’s debut novel, previously adapted into a chilling horror movie starring Sissy Spacek, is <em>the </em>show you need for Halloween week. I was a skeptic, unsure how showrunner Mike Flanagan could stretch a relatively short novel across roughly eight hours of TV, but consider me a total convert. It might not quite top the 1976 film, but it comes a heck of a lot closer than I ever imagined. </p><p>The setup is simple: Carrie White (Summer H. Howell) is a young outcast, tormented at school by a mean girl who makes Regina George look friendly, and terrorized at home by her religious mother, Margaret (Samantha Sloyan). When she discovers she possesses telekinetic powers, she’s set on a path to a terrifying rampage. What 2026’s “Carrie” does so well is expand the story, bringing in modern elements such as social media bullying to great effect. Mike Flanagan has done it again!</p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B0H8R9DQHS" target="_blank" rel="nofollow"><em><strong>"Carrie" on Prime Video </strong></em></a><em><strong>now</strong></em></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKyVMe"></div>                            </div>                            <script src="https://kwizly.com/embed/OKyVMe.js" async=""></script><h2 id="off-campus">‘Off Campus’</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/wAozjf2frxw" allowfullscreen=""></iframe></div></div><p>Part of the en vogue sports-based romantic drama subgenre, “Off Campus” followed in the footsteps of last year’s breakout hit “Heated Rivalry.” It premiered back in May, and yet all these months later it's a constant on Prime Video's top 10 most-watched list, proving this romance is no flash in the pan. A second season is on the way, so get caught up if you somehow missed the almost unavoidable buzz in the spring.</p><p>Like its aforementioned contemporary, “Off Campus” presents a steamy romance on the ice rink. It follows music major Hannah Wells (Ella Bright), who falls for the college’s star hockey player, Garrett Graham (Belmont Cameli). But naturally, their romance isn’t smooth skating, and plenty of hurdles are thrown in their path. It’s not afraid of melodrama, embracing the genre’s cheesy tropes, and the chemistry between Bright and Cameli glues it all together.</p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B0GN8NL4Q1" target="_blank" rel="nofollow"><em><strong>"Off Campus" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h3 class="article-body__section" id="section-prime-video-top-10-shows-right-now"><span>Prime Video top 10 shows right now</span></h3><ol start="1"><li>"The Terminal List"</li><li>"Carrie"</li><li>"Neagley"</li><li>"Reacher"</li><li>"The Rainmaker"</li><li>"Off Campus"</li><li>"Wild Cards"</li><li>"Seeking Persephone"</li><li>"Sterling Point"</li><li>"Blue Ridge"</li></ol><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/entertainment/prime-video/new-on-prime-video-in-october-2026-top-new-movies-and-shows-to-stream-this-month">Everything new on Prime Video in October 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/5-best-movies-to-stream-on-prime-video-for-halloween-2026">5 best movies to stream on Prime Video for Halloween 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/3-new-to-prime-video-thriller-movies-to-watch-this-week-including-daniel-craigs-most-exhilarating-outing-as-james-bond-oct-27-nov-2">3 new to Prime Video thriller movies to watch this week</a></li></ul><div data-model-name="Roku Streaming Stick 4K (2021),Roku Express 4K+,Google Chromecast with Google TV,Apple TV 4K (2022),Roku Express 4K+ (2021),Amazon Fire TV Stick 4K Max 2023" data-widget-type="multimodelreview" data-widget-title="Streaming device deals not to miss"></div> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/prime-video/prime-video-top-10-shows-heres-the-3-worth-binge-watching-this-week-oct-28-nov-3</link>
                                                                            <description>
                            <![CDATA[ Prime Video's top 10 most-watched TV shows list has been updated, and I'm picking out my three favorites for your watchlist ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">FMR8oF5SrRdMBq48YPmqbm</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/q5arBLX4hzJNvdbpqJKhZe-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 28 Oct 2026 12:03:01 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Prime Video]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                    <category><![CDATA[Streaming]]></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>
                                                                                                                                <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/q5arBLX4hzJNvdbpqJKhZe-1920-80.jpg">
                                                            <media:credit><![CDATA[Alamy]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Prime Video logo on blue abstract background]]></media:description>                                                            <media:text><![CDATA[Prime Video logo on blue abstract background]]></media:text>
                                <media:title type="plain"><![CDATA[Prime Video logo on blue abstract background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/q5arBLX4hzJNvdbpqJKhZe-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>When you settle down to binge-watch some television on Prime Video, the last thing you want to do is waste time scrolling through the platform’s near-endless library. That’s where the Prime Video top 10 list comes into play. It gives you a snapshot look at the shows that are currently drawing the most interest from your fellow subscribers. </p><p>However, it’s not uncommon for subpar series to find a spot on the ranking. Heck, I’ve seen shows I’d firmly label a “skip” manage to hold down the No. 1 spot. Which is why I’m combing through today’s Prime Video top 10 shows list to pick out three series actually worth watching.</p><p>My picks are based on the <strong>Prime Video top 10 as of Wednesday, October 28</strong>, and include action, horror and romance. There’s a pick for (nearly) all tastes, so let’s dive into them…</p><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="gdR2W4" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><h3 class="article-body__section" id="section-best-shows-in-the-prime-video-top-10"><span>Best shows in the Prime Video top 10</span></h3><h2 id="the-terminal-list">‘The Terminal List’</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/x9FvvsC0B5Q" allowfullscreen=""></iframe></div></div><p>“The Terminal List” season 2 wrapped up last week, so while weekly watchers will no doubt be disappointed not to find a new episode on Prime Video this week, if you’ve been holding fire to binge-watch the entire sophomore run, it's time to pull the trigger. The show is based on the novel “True Believer” by Jack Carr, a follow-up to the book "The Terminal List", which was adapted for the show's first season. In short, this action-thriller original is made for fans of “Reacher.”</p><p>I won’t delve into season 2 spoilers, in case you’re totally fresh to the series, but in season 1, it follows James Reece (spot the same initials as a certain Lee Child literary creation…), played by Chris Pratt. Reece is a US Navy SEAL who returns home from war after his platoon is ambushed on the front lines. Once back on U.S. soil, he faces survivor's guilt, unreliable memories, and dark forces working against him that could threaten the lives of everybody he holds dear.</p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B09K9M94L7" target="_blank" rel="nofollow"><em><strong>"The Terminal List" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="carrie">‘Carrie’</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/jkUw2nh6fT0" allowfullscreen=""></iframe></div></div><p>Prime Video’s television take on Stephen King’s debut novel, previously adapted into a chilling horror movie starring Sissy Spacek, is <em>the </em>show you need for Halloween week. I was a skeptic, unsure how showrunner Mike Flanagan could stretch a relatively short novel across roughly eight hours of TV, but consider me a total convert. It might not quite top the 1976 film, but it comes a heck of a lot closer than I ever imagined. </p><p>The setup is simple: Carrie White (Summer H. Howell) is a young outcast, tormented at school by a mean girl who makes Regina George look friendly, and terrorized at home by her religious mother, Margaret (Samantha Sloyan). When she discovers she possesses telekinetic powers, she’s set on a path to a terrifying rampage. What 2026’s “Carrie” does so well is expand the story, bringing in modern elements such as social media bullying to great effect. Mike Flanagan has done it again!</p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B0H8R9DQHS" target="_blank" rel="nofollow"><em><strong>"Carrie" on Prime Video </strong></em></a><em><strong>now</strong></em></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OKyVMe"></div>                            </div>                            <script src="https://kwizly.com/embed/OKyVMe.js" async=""></script><h2 id="off-campus">‘Off Campus’</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/wAozjf2frxw" allowfullscreen=""></iframe></div></div><p>Part of the en vogue sports-based romantic drama subgenre, “Off Campus” followed in the footsteps of last year’s breakout hit “Heated Rivalry.” It premiered back in May, and yet all these months later it's a constant on Prime Video's top 10 most-watched list, proving this romance is no flash in the pan. A second season is on the way, so get caught up if you somehow missed the almost unavoidable buzz in the spring.</p><p>Like its aforementioned contemporary, “Off Campus” presents a steamy romance on the ice rink. It follows music major Hannah Wells (Ella Bright), who falls for the college’s star hockey player, Garrett Graham (Belmont Cameli). But naturally, their romance isn’t smooth skating, and plenty of hurdles are thrown in their path. It’s not afraid of melodrama, embracing the genre’s cheesy tropes, and the chemistry between Bright and Cameli glues it all together.</p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B0GN8NL4Q1" target="_blank" rel="nofollow"><em><strong>"Off Campus" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h3 class="article-body__section" id="section-prime-video-top-10-shows-right-now"><span>Prime Video top 10 shows right now</span></h3><ol start="1"><li>"The Terminal List"</li><li>"Carrie"</li><li>"Neagley"</li><li>"Reacher"</li><li>"The Rainmaker"</li><li>"Off Campus"</li><li>"Wild Cards"</li><li>"Seeking Persephone"</li><li>"Sterling Point"</li><li>"Blue Ridge"</li></ol><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/entertainment/prime-video/new-on-prime-video-in-october-2026-top-new-movies-and-shows-to-stream-this-month">Everything new on Prime Video in October 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/5-best-movies-to-stream-on-prime-video-for-halloween-2026">5 best movies to stream on Prime Video for Halloween 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/3-new-to-prime-video-thriller-movies-to-watch-this-week-including-daniel-craigs-most-exhilarating-outing-as-james-bond-oct-27-nov-2">3 new to Prime Video thriller movies to watch this week</a></li></ul><div data-model-name="Roku Streaming Stick 4K (2021),Roku Express 4K+,Google Chromecast with Google TV,Apple TV 4K (2022),Roku Express 4K+ (2021),Amazon Fire TV Stick 4K Max 2023" data-widget-type="multimodelreview" data-widget-title="Streaming device deals not to miss"></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Amazon's Echo Dot just got a big upgrade, but it's no longer the bargain it once was ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Once upon a time, the Amazon Echo Dot was the company's least expensive <a href="https://www.tomsguide.com/us/best-smart-speakers,review-4480.html">smart speaker</a>, selling for $50 or less during Black Friday. Those days are long gone, but Amazon thinks it's added enough to the new Echo Dot to justify its new price of $99. </p><p>The sixth-generation Echo Dot, which comes four years after its predecessor, has a similar design, with an acoustic fabric covering the front of the speaker, and a hard plastic shell around the back. The Alexa bar — the small LED strip that lets you know when the AI is listening — is now just a small arc in the front, rather than a circle running around the bottom of the device. Maybe Amazon thought it looked a bit too much like the <a href="https://www.tomsguide.com/audio/smart-speakers/google-home-speaker-review">Google Home Speaker</a>?</p><div class="product"><a data-dimension112="9aea4f9e-d2d5-11f1-9cf4-4b5cab410cb6" data-action="Deal Block" data-label="Echo Dot" data-dimension48="Echo Dot" data-dimension25="$99" href="https://www.amazon.com/dp/B0FXN2JWST" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:881px;"><p class="vanilla-image-block" style="padding-top:95.23%;"><img id="eCBsJdMmkwSsmuc9PQaxdG" name="Echo Dot" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/eCBsJdMmkwSsmuc9PQaxdG-1920-80.jpg" mos="" align="middle" fullscreen="" width="881" height="839" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p>The 2026 Amazon Echo Dot has a slightly larger speaker than its predecessor, but Amazon says it delivers up to 50% more bass. It has the company's newest AZ3 processor for faster Alexa+ responses, and four mics to better pick up your voice.<a class="view-deal button" href="https://www.amazon.com/dp/B0FXN2JWST" target="_blank" rel="nofollow" data-dimension112="9aea4f9e-d2d5-11f1-9cf4-4b5cab410cb6" data-action="Deal Block" data-label="Echo Dot" data-dimension48="Echo Dot" data-dimension25="$99">View Deal</a></p></div><p>Despite the outward similarities, Amazon has beefed up the internals of the Echo Dot. It has a marginally larger full-range driver (1.75 inches vs. 1.73 inches) that the company says will deliver crisper vocals and 50% more bass than the previous generation. Its new A23 processor is also better suited for handling on-device Alexa+ requests, so that you'll get faster responses. </p><p>And, the addition of a fourth microphone means that Alexa+ should be able to more easily pick up your voice, even if the room is noisy.  </p><p>While the previous Echo Dot had both presence and temperature sensors, the newest model has Amazon's Omnisense sensor, which is basically those two sensors in one, but also uses AI to help provide more proactive suggestions.</p><p>As before, the Echo Dot has an Eero Wi-Fi extender built in, and supports Zigbee, Matter, and Thread. However, it has a hub built into the speaker itself, so it should be easier to further extend your smart home network.</p><p>The Echo Dot goes on sale today (Oct. 28) for $99, and is available in Graphite, Glacier White, Agave Green, and Coral Pink. The Amazon Kids Echo Dot, which comes in Octopus and Penguin, starts at $109.99.</p><h2 id="amazon-echo-studio-with-camera">Amazon Echo Studio with Camera</h2><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="f3GR5vyCUCDZHBHj5GSfem" name="echo studio with camera" alt="Amazon Echo Studio with camera" src="https://cdn.mos.cms.futurecdn.net/f3GR5vyCUCDZHBHj5GSfem-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Amazon is also adding a camera to its top-end smart speaker; this will most likely appeal to those who have a Fire TV device, and want to upgrade their speakers. You can already use the <a href="https://www.tomsguide.com/audio/smart-speakers/amazon-echo-studio-2025-review">Echo Studios</a> as output devices for your Fire TV (<a href="https://www.tomsguide.com/audio/smart-speakers/i-used-the-echo-dot-max-and-echo-studio-to-create-an-alexa-home-theater-heres-how-it-sounds">I hooked up four Echo Studios to create a full surround system</a>), but the Echo Studio with Camera enables one more feature.</p><p>Now, if you say "Alexa, call my mom," it will initiate a video call using your Fire TV device and the camera in the Echo Studio. This way, you can both see your caller and be seen by them. During the demo, Amazon executive Panos Panay made a video call to his parents, who seemed both bemused and a little befuddled (it was pretty early in the day for them). </p><p>However, you can also use the camera in conjunction with Alexa+, and have it identify objects, something Amazon said could be helpful for those with vision impairments.</p><p>The Echo Studio with Home Camera costs $249 — $30 more than the regular Echo Studio — and available in Graphite. You can buy a stand for the Studio separately for $39.</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/home/smart-home/i-went-hands-on-with-the-new-amazon-echo-show-16-and-it-looks-like-the-most-complete-smart-display-yet">I went hands-on with the new Amazon Echo Show 16, and it looks like the most complete smart display yet</a></li><li><a href="https://www.tomsguide.com/audio/smart-speakers/the-amazon-echo-time-could-be-my-new-bedside-smart-clock">The Amazon Echo Time could be my new bedside smart clock</a></li><li><a href="https://www.tomsguide.com//home/smart-home/i-cant-believe-it-took-amazon-this-long-to-come-out-with-an-alexa-photo-frame">I can't believe it took Amazon this long to come out with an Alexa Photo Frame</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/audio/smart-speakers/amazon-just-updated-the-echo-dot-but-its-no-longer-the-bargain-it-once-was</link>
                                                                            <description>
                            <![CDATA[ The new Amazon Echo Dot offers better sound and a faster processor for Alexa+ queries, while the Amazon Echo Studio now has a built-in camera. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">FdrBjG6pc9jZupn3eQFYdm</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/PCC82jFPtkLp2XD7cJkSib-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 28 Oct 2026 12:00:00 +0000</pubDate>                                                                                                                                <updated>Wed, 28 Oct 2026 13:43:49 +0000</updated>
                                                                                                                                            <category><![CDATA[Smart Speakers]]></category>
                                                    <category><![CDATA[Smart Home]]></category>
                                                    <category><![CDATA[Audio]]></category>
                                                    <category><![CDATA[Speakers]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                <author><![CDATA[ mike.prospero@futurenet.com (Mike Prospero) ]]></author>                    <dc:creator><![CDATA[ Mike Prospero ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/xeJFBrJwXQzCqXLZXBFBKQ-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Michael A. Prospero is the U.S. Editor-in-Chief for Tom’s Guide.  In his spare time, he also tests out the latest drones, electric scooters, and smart home gadgets, such as video doorbells. Before his tenure at Tom&#039;s Guide, he was the Reviews Editor for Laptop Magazine, a reporter at Fast Company, the Times of Trenton, and, many eons back, an intern at George magazine. He received his undergraduate degree from Boston College, where he worked on the campus newspaper The Heights, and then attended the Columbia University school of Journalism. When he’s not testing out the latest running watch, electric scooter, or skiing or training for a marathon, he’s probably using the latest sous vide machine, smoker, or pizza oven, to the delight — or chagrin — of his family.&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/PCC82jFPtkLp2XD7cJkSib-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Amazon echo dot 2026]]></media:description>                                                            <media:text><![CDATA[Amazon echo dot 2026]]></media:text>
                                <media:title type="plain"><![CDATA[Amazon echo dot 2026]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/PCC82jFPtkLp2XD7cJkSib-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Once upon a time, the Amazon Echo Dot was the company's least expensive <a href="https://www.tomsguide.com/us/best-smart-speakers,review-4480.html">smart speaker</a>, selling for $50 or less during Black Friday. Those days are long gone, but Amazon thinks it's added enough to the new Echo Dot to justify its new price of $99. </p><p>The sixth-generation Echo Dot, which comes four years after its predecessor, has a similar design, with an acoustic fabric covering the front of the speaker, and a hard plastic shell around the back. The Alexa bar — the small LED strip that lets you know when the AI is listening — is now just a small arc in the front, rather than a circle running around the bottom of the device. Maybe Amazon thought it looked a bit too much like the <a href="https://www.tomsguide.com/audio/smart-speakers/google-home-speaker-review">Google Home Speaker</a>?</p><div class="product"><a data-dimension112="9aea4f9e-d2d5-11f1-9cf4-4b5cab410cb6" data-action="Deal Block" data-label="Echo Dot" data-dimension48="Echo Dot" data-dimension25="$99" href="https://www.amazon.com/dp/B0FXN2JWST" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:881px;"><p class="vanilla-image-block" style="padding-top:95.23%;"><img id="eCBsJdMmkwSsmuc9PQaxdG" name="Echo Dot" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/eCBsJdMmkwSsmuc9PQaxdG-1920-80.jpg" mos="" align="middle" fullscreen="" width="881" height="839" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p>The 2026 Amazon Echo Dot has a slightly larger speaker than its predecessor, but Amazon says it delivers up to 50% more bass. It has the company's newest AZ3 processor for faster Alexa+ responses, and four mics to better pick up your voice.<a class="view-deal button" href="https://www.amazon.com/dp/B0FXN2JWST" target="_blank" rel="nofollow" data-dimension112="9aea4f9e-d2d5-11f1-9cf4-4b5cab410cb6" data-action="Deal Block" data-label="Echo Dot" data-dimension48="Echo Dot" data-dimension25="$99">View Deal</a></p></div><p>Despite the outward similarities, Amazon has beefed up the internals of the Echo Dot. It has a marginally larger full-range driver (1.75 inches vs. 1.73 inches) that the company says will deliver crisper vocals and 50% more bass than the previous generation. Its new A23 processor is also better suited for handling on-device Alexa+ requests, so that you'll get faster responses. </p><p>And, the addition of a fourth microphone means that Alexa+ should be able to more easily pick up your voice, even if the room is noisy.  </p><p>While the previous Echo Dot had both presence and temperature sensors, the newest model has Amazon's Omnisense sensor, which is basically those two sensors in one, but also uses AI to help provide more proactive suggestions.</p><p>As before, the Echo Dot has an Eero Wi-Fi extender built in, and supports Zigbee, Matter, and Thread. However, it has a hub built into the speaker itself, so it should be easier to further extend your smart home network.</p><p>The Echo Dot goes on sale today (Oct. 28) for $99, and is available in Graphite, Glacier White, Agave Green, and Coral Pink. The Amazon Kids Echo Dot, which comes in Octopus and Penguin, starts at $109.99.</p><h2 id="amazon-echo-studio-with-camera">Amazon Echo Studio with Camera</h2><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="f3GR5vyCUCDZHBHj5GSfem" name="echo studio with camera" alt="Amazon Echo Studio with camera" src="https://cdn.mos.cms.futurecdn.net/f3GR5vyCUCDZHBHj5GSfem-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Amazon is also adding a camera to its top-end smart speaker; this will most likely appeal to those who have a Fire TV device, and want to upgrade their speakers. You can already use the <a href="https://www.tomsguide.com/audio/smart-speakers/amazon-echo-studio-2025-review">Echo Studios</a> as output devices for your Fire TV (<a href="https://www.tomsguide.com/audio/smart-speakers/i-used-the-echo-dot-max-and-echo-studio-to-create-an-alexa-home-theater-heres-how-it-sounds">I hooked up four Echo Studios to create a full surround system</a>), but the Echo Studio with Camera enables one more feature.</p><p>Now, if you say "Alexa, call my mom," it will initiate a video call using your Fire TV device and the camera in the Echo Studio. This way, you can both see your caller and be seen by them. During the demo, Amazon executive Panos Panay made a video call to his parents, who seemed both bemused and a little befuddled (it was pretty early in the day for them). </p><p>However, you can also use the camera in conjunction with Alexa+, and have it identify objects, something Amazon said could be helpful for those with vision impairments.</p><p>The Echo Studio with Home Camera costs $249 — $30 more than the regular Echo Studio — and available in Graphite. You can buy a stand for the Studio separately for $39.</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/home/smart-home/i-went-hands-on-with-the-new-amazon-echo-show-16-and-it-looks-like-the-most-complete-smart-display-yet">I went hands-on with the new Amazon Echo Show 16, and it looks like the most complete smart display yet</a></li><li><a href="https://www.tomsguide.com/audio/smart-speakers/the-amazon-echo-time-could-be-my-new-bedside-smart-clock">The Amazon Echo Time could be my new bedside smart clock</a></li><li><a href="https://www.tomsguide.com//home/smart-home/i-cant-believe-it-took-amazon-this-long-to-come-out-with-an-alexa-photo-frame">I can't believe it took Amazon this long to come out with an Alexa Photo Frame</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ The Amazon Echo Time could be my new bedside smart clock ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Over the years, Amazon has released several Echo Dot-like <a href="https://www.tomsguide.com/us/best-smart-speakers,review-4480.html">smart speakers</a> with miniature displays, which were mostly designed to show you the time and weather. There was the Echo Dot with Clock (a design we loved) as well as the slightly more involved <a href="https://www.tomsguide.com/home/smart-home/amazon-echo-spot-review">Echo Spot</a>.</p><p>With the new Amazon Echo Time, the company is reviving the look of the <a href="https://www.tomsguide.com/us/amazon-echo-spot,review-4984.html">original Echo Spot</a>, packing a circular touchscreen into an orb-like smart speaker, in the hopes that it can reclaim an *ahem* spot on your nightstand.</p><div class="instagram-embed"><blockquote class="instagram-media"  data-instgrm-version="6" style="width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);"><p><a href="https://www.instagram.com/p/DfCYgqThz8C/" target="_blank">A post shared by Tom's Guide (@tomsguide)</a></p><p>A photo posted by </p></blockquote></div><h2 id="price-and-release-date">Price and release date</h2><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="wM8cYV5WzeQ9Z5SjxungN4" name="Echo Time group" alt="Amazon echo time group shot" src="https://cdn.mos.cms.futurecdn.net/wM8cYV5WzeQ9Z5SjxungN4-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Echo Time goes on sale today (Oct. 28) for $199.99. You can get it in Graphite, Glacier White, and Coral Pink. Amazon also sells matching adjustable stands for $39. </p><p>Like other Echo devices, there's a kid's version of the Echo Time that costs $209, and includes a one-year subscription to Amazon Kids+. The Amazon Kids Echo Time comes in Galactic Grape and Cosmic Lime.</p><div class="product"><a data-dimension112="50d3c9fc-d2d6-11f1-bc08-27139fcab415" data-action="Deal Block" data-label="Echo Time" data-dimension48="Echo Time" data-dimension25="$199" href="https://www.amazon.com/dp/B0GG1YNSPD" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:820px;"><p class="vanilla-image-block" style="padding-top:91.71%;"><img id="pBjusiVwkvYrthjGKqrHB9" name="Echo Time" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/pBjusiVwkvYrthjGKqrHB9-1920-80.jpg" mos="" align="middle" fullscreen="" width="820" height="752" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p>The Echo Time is Amazon's newest smart clock, has customizable faces, and uses an Omnipresence sensor and Alexa+ to be smarter about what time it wakes you in the morning.<a class="view-deal button" href="https://www.amazon.com/dp/B0GG1YNSPD" target="_blank" rel="nofollow" data-dimension112="50d3c9fc-d2d6-11f1-bc08-27139fcab415" data-action="Deal Block" data-label="Echo Time" data-dimension48="Echo Time" data-dimension25="$199">View Deal</a></p></div><h2 id="a-customizable-clock-face">A customizable clock face</h2><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.75%;"><img id="8z5Aw9wxwk76mrSreJaVM8" name="echo time" alt="Amazon echo time" src="https://cdn.mos.cms.futurecdn.net/8z5Aw9wxwk76mrSreJaVM8-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1135" attribution="" endorsement="" 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 standout feature of the Echo Time is the 3.2-inch display; the Time comes with hundreds of clock faces, all of which are customizable. Among the faces are ones for sports teams as well as other licensed properties like Harry Potter and the DC Universe.</p><p>The Echo Time's display also changes throughout the day, so as better to incorporate your natural cycles; it slowly brightens in the morning, and at night it dims automatically and reduces is blue light output to help you fall asleep more easily.</p><h2 id="a-smarter-alarm">A smarter alarm</h2><p>Similar to its newer Echo smart speakers, the Echo Time has Amazon's Omnisense sensor array, which can detect things such as presence and temperature, along with an ultrasound sensor to monitor for breathing. </p><p>Alexa+ uses these sensors to monitor your sleep, and can then adjust your desired wake-up time from 10 to 60 minutes, tailoring it for what it thinks is the optimal time to get you out of bed. </p><p>If you have other smart home devices, you can also add them to your wakeup routine, such as having a bedside light slowly turn on. </p><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:59.85%;"><img id="hsUQRuMcGPP4G7hsXPkZ5C" name="Echo time side" alt="side view of Amazon Echo time" src="https://cdn.mos.cms.futurecdn.net/hsUQRuMcGPP4G7hsXPkZ5C-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1197" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>At $199, the Echo Time isn't cheap; the current <a href="https://www.amazon.com/dp/B0BFC8DR7C" target="_blank" rel="nofollow">Echo Spot costs half as much</a>, and also serves its function well, and you get all the same Alexa+ functionality — it even acts as an <a href="https://www.tomsguide.com/features/the-echo-dot-now-works-as-an-eero-mesh-extender-just-how-good-is-it">Eero Wi-Fi extender</a>. However, the Echo Time could appeal to those who want something that can better monitor their sleep, and make sure they wake up at the right time.</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/home/smart-home/i-went-hands-on-with-the-new-amazon-echo-show-16-and-it-looks-like-the-most-complete-smart-display-yet"><strong>I went hands-on with the new Amazon Echo Show 16, and it looks like the most complete smart display yet</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com//home/smart-home/i-cant-believe-it-took-amazon-this-long-to-come-out-with-an-alexa-photo-frame"><strong>I can't believe it took Amazon this long to come out with an Alexa Photo Frame</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/audio/smart-speakers/amazon-just-updated-the-echo-dot-but-its-no-longer-the-bargain-it-once-was"><strong>Amazon just updated the Echo Dot, but it's no longer the bargain it once was</strong></a><strong></strong></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/audio/smart-speakers/the-amazon-echo-time-could-be-my-new-bedside-smart-clock</link>
                                                                            <description>
                            <![CDATA[ Amazon's new smart clock, the Echo Time, uses sensors and Alexa+ to wake you up at the ideal time. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">9fjoVqXxqZ7ZJdn2ghb86b</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/GN6Krx8i6dwec8q2e2rkZh-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 28 Oct 2026 12:00:00 +0000</pubDate>                                                                                                                                <updated>Wed, 28 Oct 2026 13:48:54 +0000</updated>
                                                                                                                                            <category><![CDATA[Smart Speakers]]></category>
                                                    <category><![CDATA[Smart Home]]></category>
                                                    <category><![CDATA[Audio]]></category>
                                                    <category><![CDATA[Speakers]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                <author><![CDATA[ mike.prospero@futurenet.com (Mike Prospero) ]]></author>                    <dc:creator><![CDATA[ Mike Prospero ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/xeJFBrJwXQzCqXLZXBFBKQ-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Michael A. Prospero is the U.S. Editor-in-Chief for Tom’s Guide.  In his spare time, he also tests out the latest drones, electric scooters, and smart home gadgets, such as video doorbells. Before his tenure at Tom&#039;s Guide, he was the Reviews Editor for Laptop Magazine, a reporter at Fast Company, the Times of Trenton, and, many eons back, an intern at George magazine. He received his undergraduate degree from Boston College, where he worked on the campus newspaper The Heights, and then attended the Columbia University school of Journalism. When he’s not testing out the latest running watch, electric scooter, or skiing or training for a marathon, he’s probably using the latest sous vide machine, smoker, or pizza oven, to the delight — or chagrin — of his family.&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/GN6Krx8i6dwec8q2e2rkZh-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[echo time kids]]></media:description>                                                            <media:text><![CDATA[echo time kids]]></media:text>
                                <media:title type="plain"><![CDATA[echo time kids]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/GN6Krx8i6dwec8q2e2rkZh-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Over the years, Amazon has released several Echo Dot-like <a href="https://www.tomsguide.com/us/best-smart-speakers,review-4480.html">smart speakers</a> with miniature displays, which were mostly designed to show you the time and weather. There was the Echo Dot with Clock (a design we loved) as well as the slightly more involved <a href="https://www.tomsguide.com/home/smart-home/amazon-echo-spot-review">Echo Spot</a>.</p><p>With the new Amazon Echo Time, the company is reviving the look of the <a href="https://www.tomsguide.com/us/amazon-echo-spot,review-4984.html">original Echo Spot</a>, packing a circular touchscreen into an orb-like smart speaker, in the hopes that it can reclaim an *ahem* spot on your nightstand.</p><div class="instagram-embed"><blockquote class="instagram-media"  data-instgrm-version="6" style="width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);"><p><a href="https://www.instagram.com/p/DfCYgqThz8C/" target="_blank">A post shared by Tom's Guide (@tomsguide)</a></p><p>A photo posted by </p></blockquote></div><h2 id="price-and-release-date">Price and release date</h2><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="wM8cYV5WzeQ9Z5SjxungN4" name="Echo Time group" alt="Amazon echo time group shot" src="https://cdn.mos.cms.futurecdn.net/wM8cYV5WzeQ9Z5SjxungN4-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Echo Time goes on sale today (Oct. 28) for $199.99. You can get it in Graphite, Glacier White, and Coral Pink. Amazon also sells matching adjustable stands for $39. </p><p>Like other Echo devices, there's a kid's version of the Echo Time that costs $209, and includes a one-year subscription to Amazon Kids+. The Amazon Kids Echo Time comes in Galactic Grape and Cosmic Lime.</p><div class="product"><a data-dimension112="50d3c9fc-d2d6-11f1-bc08-27139fcab415" data-action="Deal Block" data-label="Echo Time" data-dimension48="Echo Time" data-dimension25="$199" href="https://www.amazon.com/dp/B0GG1YNSPD" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:820px;"><p class="vanilla-image-block" style="padding-top:91.71%;"><img id="pBjusiVwkvYrthjGKqrHB9" name="Echo Time" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/pBjusiVwkvYrthjGKqrHB9-1920-80.jpg" mos="" align="middle" fullscreen="" width="820" height="752" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p>The Echo Time is Amazon's newest smart clock, has customizable faces, and uses an Omnipresence sensor and Alexa+ to be smarter about what time it wakes you in the morning.<a class="view-deal button" href="https://www.amazon.com/dp/B0GG1YNSPD" target="_blank" rel="nofollow" data-dimension112="50d3c9fc-d2d6-11f1-bc08-27139fcab415" data-action="Deal Block" data-label="Echo Time" data-dimension48="Echo Time" data-dimension25="$199">View Deal</a></p></div><h2 id="a-customizable-clock-face">A customizable clock face</h2><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.75%;"><img id="8z5Aw9wxwk76mrSreJaVM8" name="echo time" alt="Amazon echo time" src="https://cdn.mos.cms.futurecdn.net/8z5Aw9wxwk76mrSreJaVM8-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1135" attribution="" endorsement="" 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 standout feature of the Echo Time is the 3.2-inch display; the Time comes with hundreds of clock faces, all of which are customizable. Among the faces are ones for sports teams as well as other licensed properties like Harry Potter and the DC Universe.</p><p>The Echo Time's display also changes throughout the day, so as better to incorporate your natural cycles; it slowly brightens in the morning, and at night it dims automatically and reduces is blue light output to help you fall asleep more easily.</p><h2 id="a-smarter-alarm">A smarter alarm</h2><p>Similar to its newer Echo smart speakers, the Echo Time has Amazon's Omnisense sensor array, which can detect things such as presence and temperature, along with an ultrasound sensor to monitor for breathing. </p><p>Alexa+ uses these sensors to monitor your sleep, and can then adjust your desired wake-up time from 10 to 60 minutes, tailoring it for what it thinks is the optimal time to get you out of bed. </p><p>If you have other smart home devices, you can also add them to your wakeup routine, such as having a bedside light slowly turn on. </p><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:59.85%;"><img id="hsUQRuMcGPP4G7hsXPkZ5C" name="Echo time side" alt="side view of Amazon Echo time" src="https://cdn.mos.cms.futurecdn.net/hsUQRuMcGPP4G7hsXPkZ5C-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1197" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>At $199, the Echo Time isn't cheap; the current <a href="https://www.amazon.com/dp/B0BFC8DR7C" target="_blank" rel="nofollow">Echo Spot costs half as much</a>, and also serves its function well, and you get all the same Alexa+ functionality — it even acts as an <a href="https://www.tomsguide.com/features/the-echo-dot-now-works-as-an-eero-mesh-extender-just-how-good-is-it">Eero Wi-Fi extender</a>. However, the Echo Time could appeal to those who want something that can better monitor their sleep, and make sure they wake up at the right time.</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/home/smart-home/i-went-hands-on-with-the-new-amazon-echo-show-16-and-it-looks-like-the-most-complete-smart-display-yet"><strong>I went hands-on with the new Amazon Echo Show 16, and it looks like the most complete smart display yet</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com//home/smart-home/i-cant-believe-it-took-amazon-this-long-to-come-out-with-an-alexa-photo-frame"><strong>I can't believe it took Amazon this long to come out with an Alexa Photo Frame</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/audio/smart-speakers/amazon-just-updated-the-echo-dot-but-its-no-longer-the-bargain-it-once-was"><strong>Amazon just updated the Echo Dot, but it's no longer the bargain it once was</strong></a><strong></strong></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I can't believe it took Amazon this long to come out with an Alexa Photo Frame ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Over the years, Amazon has come out with a bunch of really goofy products with Alexa inside: fashion assistants, wall clocks, light-up buttons, and even a smart ring. Yet, it's taken until now for the company to release a smart photo frame. </p><p>Perhaps the wait was worth it. While the new Alexa Photo Frame doesn't break any new ground design-wise when compared with the <a href="https://www.tomsguide.com/best-picks/best-digital-photo-frames">best digital photo frames</a>, Amazon is using Alexa+ to intelligently curate all of those photos you have stored on your phone or elsewhere. You actually might finally see that picture you took during you vacation to Aruba five years ago. </p><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="b6ACNyyWPGsWwZsR5EwzLb" name="Alexa photo frame options" alt="Alexa photo frame colors" src="https://cdn.mos.cms.futurecdn.net/b6ACNyyWPGsWwZsR5EwzLb-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Alexa Photo Frame looks like your standard digital photo frame. It has a 10-inch, 1280 x 800  anti-glare touchscreen, and comes in three finishes: black plastic ($199), or birch or walnut wood frames, which cost $229. All models are available starting today (Oct. 28). </p><p>However, once you set up the photo frame, Alexa+ will start to work its magic. First, it will analyze all of the pictures in your library, and then its classifies them based on who's in the pictures, what people are doing, the time of year it was taken, and more.</p><p>Then, it will display the photos on the Frame based on factors like the time of year. So, for example, you'd see holiday photos in December, and beach pictures in the summer. </p><div class="product"><a data-dimension112="60d85916-d2d7-11f1-9a5c-1f776eb2b810" data-action="Deal Block" data-label="Alexa Photo Frame" data-dimension48="Alexa Photo Frame" data-dimension25="$199" href="https://www.amazon.com/dp/B0G7LPJC7G" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1311px;"><p class="vanilla-image-block" style="padding-top:75.29%;"><img id="9iQ5jsoScsLnfjnTcywegJ" name="Alexa Photo Frame" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/9iQ5jsoScsLnfjnTcywegJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="1311" height="987" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p>The Alexa Photo Frame starts at $199 for the black model, but rises to $229 if you want the Walnut or Birch models. It has a 10-inch, 1280 x 800-pixel touchscreen. It can only be used in landscape, and is not wall-mountable. <a class="view-deal button" href="https://www.amazon.com/dp/B0G7LPJC7G" target="_blank" rel="nofollow" data-dimension112="60d85916-d2d7-11f1-9a5c-1f776eb2b810" data-action="Deal Block" data-label="Alexa Photo Frame" data-dimension48="Alexa Photo Frame" data-dimension25="$199">View Deal</a></p></div><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="vRSMhDkpabnuTGFCMhMsBf" name="Alexa Photo Frame" alt="Alexa photo frame" src="https://cdn.mos.cms.futurecdn.net/vRSMhDkpabnuTGFCMhMsBf-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>But, Alexa+ can also understand context, so it might pull two pictures of your kid, taken years apart, of them doing a similar activity, and display them side-by-side. </p><p>Of course, you can also curate what appears on the Frame, or if you decide to gift a frame to a parent or loved one. So if you give one to your parents, you can make sure that they only see pictures of your kids, for instance. </p><p>Also, if you want to tug at the heartstrings a little more, you can also attach audio clips to photos, so that when you tap on a picture on-screen, grandparents can hear their grandkids wishing them well.</p><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="2LVqVEq9Fp3qQYgLEJAZ3j" name="Alexa photo frame back" alt="Back side of Alexa photo frame" src="https://cdn.mos.cms.futurecdn.net/2LVqVEq9Fp3qQYgLEJAZ3j-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Alexa Photo Frame also acts as a smart speaker — not that you'd want to play music on it — so you could ask Alexa+ to display photos of your dog at a park, or pictures from a particular year. </p><p>Like other Alexa devices, you can turn off the microphone on the Photo Frame, select the notifications you receive, adjust the brightness of the screen, and more. However, it only works in landscape mode.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.20%;"><img id="5M9okR3sL8ewCVptWxXxp6" name="Alexa Photo frame" alt="Alexa Photo frame" src="https://cdn.mos.cms.futurecdn.net/5M9okR3sL8ewCVptWxXxp6-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1124" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>While the Alexa Photo Frame can be used by anyone, it makes the most sense for those who are Amazon Prime members, as they can store an unlimited number of photos in the cloud, and use certain Alexa+ features as part of their subscription. If you don't have a Prime subscription, you get 5GB of free cloud storage, with plans starting at $1.99/month for 100GB of storage.</p><p>At $199, the Alexa Photo Frame is priced competitively with some of our favorite models. For example, the <a href="https://auraframes.com/digital-frames/color/aspen-ink-mat">Aura Aspen</a>, which is a 12-inch model, costs $229. Coming in time for the holidays, I can easily see this being a popular gifting item.</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/audio/smart-speakers/amazon-just-updated-the-echo-dot-but-its-no-longer-the-bargain-it-once-was">Amazon just updated the Echo Dot, but it's no longer the bargain it once was</a></li><li><a href="https://www.tomsguide.com/home/smart-home/i-went-hands-on-with-the-new-amazon-echo-show-16-and-it-looks-like-the-most-complete-smart-display-yet">I went hands-on with the new Amazon Echo Show 16, and it looks like the most complete smart display yet</a></li><li><a href="https://www.tomsguide.com/audio/smart-speakers/the-amazon-echo-time-could-be-my-new-bedside-smart-clock">The Amazon Echo Time could be my new bedside smart clock</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/home/smart-home/i-cant-believe-it-took-amazon-this-long-to-come-out-with-an-alexa-photo-frame</link>
                                                                            <description>
                            <![CDATA[ Amazon's new Alexa Photo Frame uses AI to curate all of the pictures in your collection, and display them intelligently. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">6i7yRv5RAkV8zAcL2pBiz8</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/CKJFRXukLRoqzz2DdDFrpT-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 28 Oct 2026 12:00:00 +0000</pubDate>                                                                                                                                <updated>Wed, 28 Oct 2026 17:29:34 +0000</updated>
                                                                                                                                            <category><![CDATA[Smart Home]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                <author><![CDATA[ mike.prospero@futurenet.com (Mike Prospero) ]]></author>                    <dc:creator><![CDATA[ Mike Prospero ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/xeJFBrJwXQzCqXLZXBFBKQ-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Michael A. Prospero is the U.S. Editor-in-Chief for Tom’s Guide.  In his spare time, he also tests out the latest drones, electric scooters, and smart home gadgets, such as video doorbells. Before his tenure at Tom&#039;s Guide, he was the Reviews Editor for Laptop Magazine, a reporter at Fast Company, the Times of Trenton, and, many eons back, an intern at George magazine. He received his undergraduate degree from Boston College, where he worked on the campus newspaper The Heights, and then attended the Columbia University school of Journalism. When he’s not testing out the latest running watch, electric scooter, or skiing or training for a marathon, he’s probably using the latest sous vide machine, smoker, or pizza oven, to the delight — or chagrin — of his family.&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/CKJFRXukLRoqzz2DdDFrpT-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Alexa photo frame]]></media:description>                                                            <media:text><![CDATA[Alexa photo frame]]></media:text>
                                <media:title type="plain"><![CDATA[Alexa photo frame]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/CKJFRXukLRoqzz2DdDFrpT-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Over the years, Amazon has come out with a bunch of really goofy products with Alexa inside: fashion assistants, wall clocks, light-up buttons, and even a smart ring. Yet, it's taken until now for the company to release a smart photo frame. </p><p>Perhaps the wait was worth it. While the new Alexa Photo Frame doesn't break any new ground design-wise when compared with the <a href="https://www.tomsguide.com/best-picks/best-digital-photo-frames">best digital photo frames</a>, Amazon is using Alexa+ to intelligently curate all of those photos you have stored on your phone or elsewhere. You actually might finally see that picture you took during you vacation to Aruba five years ago. </p><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="b6ACNyyWPGsWwZsR5EwzLb" name="Alexa photo frame options" alt="Alexa photo frame colors" src="https://cdn.mos.cms.futurecdn.net/b6ACNyyWPGsWwZsR5EwzLb-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Alexa Photo Frame looks like your standard digital photo frame. It has a 10-inch, 1280 x 800  anti-glare touchscreen, and comes in three finishes: black plastic ($199), or birch or walnut wood frames, which cost $229. All models are available starting today (Oct. 28). </p><p>However, once you set up the photo frame, Alexa+ will start to work its magic. First, it will analyze all of the pictures in your library, and then its classifies them based on who's in the pictures, what people are doing, the time of year it was taken, and more.</p><p>Then, it will display the photos on the Frame based on factors like the time of year. So, for example, you'd see holiday photos in December, and beach pictures in the summer. </p><div class="product"><a data-dimension112="60d85916-d2d7-11f1-9a5c-1f776eb2b810" data-action="Deal Block" data-label="Alexa Photo Frame" data-dimension48="Alexa Photo Frame" data-dimension25="$199" href="https://www.amazon.com/dp/B0G7LPJC7G" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1311px;"><p class="vanilla-image-block" style="padding-top:75.29%;"><img id="9iQ5jsoScsLnfjnTcywegJ" name="Alexa Photo Frame" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/9iQ5jsoScsLnfjnTcywegJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="1311" height="987" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p>The Alexa Photo Frame starts at $199 for the black model, but rises to $229 if you want the Walnut or Birch models. It has a 10-inch, 1280 x 800-pixel touchscreen. It can only be used in landscape, and is not wall-mountable. <a class="view-deal button" href="https://www.amazon.com/dp/B0G7LPJC7G" target="_blank" rel="nofollow" data-dimension112="60d85916-d2d7-11f1-9a5c-1f776eb2b810" data-action="Deal Block" data-label="Alexa Photo Frame" data-dimension48="Alexa Photo Frame" data-dimension25="$199">View Deal</a></p></div><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="vRSMhDkpabnuTGFCMhMsBf" name="Alexa Photo Frame" alt="Alexa photo frame" src="https://cdn.mos.cms.futurecdn.net/vRSMhDkpabnuTGFCMhMsBf-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>But, Alexa+ can also understand context, so it might pull two pictures of your kid, taken years apart, of them doing a similar activity, and display them side-by-side. </p><p>Of course, you can also curate what appears on the Frame, or if you decide to gift a frame to a parent or loved one. So if you give one to your parents, you can make sure that they only see pictures of your kids, for instance. </p><p>Also, if you want to tug at the heartstrings a little more, you can also attach audio clips to photos, so that when you tap on a picture on-screen, grandparents can hear their grandkids wishing them well.</p><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="2LVqVEq9Fp3qQYgLEJAZ3j" name="Alexa photo frame back" alt="Back side of Alexa photo frame" src="https://cdn.mos.cms.futurecdn.net/2LVqVEq9Fp3qQYgLEJAZ3j-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Alexa Photo Frame also acts as a smart speaker — not that you'd want to play music on it — so you could ask Alexa+ to display photos of your dog at a park, or pictures from a particular year. </p><p>Like other Alexa devices, you can turn off the microphone on the Photo Frame, select the notifications you receive, adjust the brightness of the screen, and more. However, it only works in landscape mode.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.20%;"><img id="5M9okR3sL8ewCVptWxXxp6" name="Alexa Photo frame" alt="Alexa Photo frame" src="https://cdn.mos.cms.futurecdn.net/5M9okR3sL8ewCVptWxXxp6-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1124" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>While the Alexa Photo Frame can be used by anyone, it makes the most sense for those who are Amazon Prime members, as they can store an unlimited number of photos in the cloud, and use certain Alexa+ features as part of their subscription. If you don't have a Prime subscription, you get 5GB of free cloud storage, with plans starting at $1.99/month for 100GB of storage.</p><p>At $199, the Alexa Photo Frame is priced competitively with some of our favorite models. For example, the <a href="https://auraframes.com/digital-frames/color/aspen-ink-mat">Aura Aspen</a>, which is a 12-inch model, costs $229. Coming in time for the holidays, I can easily see this being a popular gifting item.</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/audio/smart-speakers/amazon-just-updated-the-echo-dot-but-its-no-longer-the-bargain-it-once-was">Amazon just updated the Echo Dot, but it's no longer the bargain it once was</a></li><li><a href="https://www.tomsguide.com/home/smart-home/i-went-hands-on-with-the-new-amazon-echo-show-16-and-it-looks-like-the-most-complete-smart-display-yet">I went hands-on with the new Amazon Echo Show 16, and it looks like the most complete smart display yet</a></li><li><a href="https://www.tomsguide.com/audio/smart-speakers/the-amazon-echo-time-could-be-my-new-bedside-smart-clock">The Amazon Echo Time could be my new bedside smart clock</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I went hands-on with the new Amazon Echo Show 16, and it looks like the most complete smart display yet ]]></title>
                                                                                                <dc:content><![CDATA[ <p>When Amazon lifted the veil off its new Echo Show 16, I thought I was looking at a miniaturized version of <a href="https://www.tomsguide.com/computing/monitors/i-spent-a-week-with-dual-apple-studio-displays-and-realized-ive-been-lying-to-myself-about-glossy-screens-for-years">Apple's Studio Display</a>. But no, I was looking at Amazon's newest smart display, one that looks like it could beat the <a href="https://www.tomsguide.com/home/smart-home/i-saw-apples-homeview-early-7-things-you-need-to-know-about-the-smart-home-display">HomeView</a> in more ways than one. </p><p>I had a chance to check out the Amazon Echo Show 16, which is available for preorder starting today (Oct. 28), and will ship later this year. Here's how Amazon's newest smart display really distinguishes itself from the pack — even if its starting price of $499 could make it a reach for some.</p><div class="instagram-embed"><blockquote class="instagram-media"  data-instgrm-version="6" style="width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);"><p><a href="https://www.instagram.com/p/DfCYiGuh2oX/" target="_blank">A post shared by Tom's Guide (@tomsguide)</a></p><p>A photo posted by </p></blockquote></div><h2 id="price-and-availability">Price and availability</h2><p>The Echo Show 16 is available for preorder starting today (Oct. 28) at Amazon.com, and will ship on December 16. <a href="https://www.amazon.com/dp/B0G37245M5?ref=amzdv_ucc_dp_lod_B0G37245M5_B0G37245M5" target="_blank" rel="nofollow">The model with the standard glossy display costs $499</a>, while the Nanomatte display is $569. If you preorder the device, you can get $100 off the price.</p><p>If you're not planning to wall mount the device, a swivel stand is available for $69, and a swivel-and-tilt stand costs $124. </p><h2 id="design">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:2002px;"><p class="vanilla-image-block" style="padding-top:56.19%;"><img id="uRJ4kV6cnFMZanbWj7HVcC" name="echo show 16 side view" alt="echo show 16 side view" src="https://cdn.mos.cms.futurecdn.net/uRJ4kV6cnFMZanbWj7HVcC-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: Future)</span></figcaption></figure><p>The Echo Show 16 is the most refined smart display from Amazon I've seen; the panel itself isn't as thin as the <a href="https://www.tomsguide.com/home/smart-home/echo-show-8-4th-gen-review">Echo Show 8</a> or Echo Show 10, but that's because the speakers are housed behind the display, rather than sitting in a bulbous base. As a result, the Echo Show 16 looks more like something you'd connect to your desktop, rather than a standalone device. </p><p>The rear of the Echo Show 16 is thicker than most other tablets, as it houses eight subwoofers. Around the front is a 13MP camera, which has a digital zoom to keep you in frame if you're moving around. </p><p>The screen itself measures 16 inches diagonally, and has a resolution of 1920 x 1080. Like the <a href="https://www.tomsguide.com/computing/android-tablets/amazon-alexa-tablet-12-pro-review">Alexa Tablet 12 Pro tablet</a>, you can get the Echo Show 16 with either a glossy finish, or with a nanomatte display, which cuts down on glare.</p><p>Sadly, the aluminum stand costs $69 extra, so unless you plan to wall-mount it, you'll have to cough up a little more. </p><h2 id="a-redesigned-alexa-interface">A redesigned Alexa + interface</h2><p>Amazon has once again redesigned the interface on its Echo Shows, this time making <a href="https://www.tomsguide.com/ai/alexa-now-available-for-everyone-and-theres-even-a-free-tier-for-non-prime-members">Alexa+</a> more prominent. Now, all Alexa+ interactions are saved as "cards" which are displayed as a widget on the screen. Tap on the card, and it expands to show you the transcript from that interaction, as well as supporting documents, images and links.</p><p>For example, if you ask Alexa+ how to grow tomatoes, it might present cards for different types of tomatoes, tips on watering, fertilizing, and which might grow best in your area.</p><p>Alexa+ will then organize all of the cards by type, theme, date, or any other categorization it thinks is appropriate, so you can more easily find them at a later time. A special Card gallery shows all of them at a glance. </p><p>Amazon's Alexa+ smartphone app will also get a similar treatment; by design, any cards you create on your phone will stay there until you share them with the Echo Show.  </p><p>The Calendar view — now called Family Organizer — also sees a refresh. In addition to showing everyone's schedule, there's now a tab for meal planning, so you can lay out everything you want to cook for the week.</p><h2 id="smarter-home-view">Smarter home view</h2><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="tnpnpodpTL69DMcKq8kUnG" name="echo Show 16 home map" alt="echo Show 16 home map" src="https://cdn.mos.cms.futurecdn.net/tnpnpodpTL69DMcKq8kUnG-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>For those with a lot of smart home devices, the Echo Show's new Home Map takes what's currently available to the next level. Now, all of your smart home devices are displayed in a 3D map of your house, where you can view, arrange, and control all of them.</p><p>For example, if there's a smart light in a bedroom, you can tap on the icon to turn the light on and off, dim it, or change its color, if that's an option. Cleverly, the icon on the screen will also reflect the current state of the device — so, if a light is glowing red, its icon will also have a reddish halo. Or, if a smart speaker is playing music, the screen will show you the song title. </p><p>If you have <a href="https://www.tomsguide.com/face-off/ring-video-doorbell-3-vs-doorbell-pro">Ring cameras</a>, the Home Map will show icons of people and vehicles around your house moving in real time, based on what the cameras are seeing. If you have familiar faces enabled in the Ring app, the Home Map will also identify those people, too. An Amazon rep said that Blink integration was also coming in the future. I found it to be both cool and a bit creepy — kind of like a high-tech Marauder's Map from Harry Potter.</p><h2 id="fire-tv">Fire TV</h2><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:58.95%;"><img id="kD7NdYz5g3GBBrpQrtUF3N" name="echo show 16 fire tv" alt="echo show 16 fire tv" src="https://cdn.mos.cms.futurecdn.net/kD7NdYz5g3GBBrpQrtUF3N-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1179" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Like previous Echo Shows, the 16 also acts as a Fire TV device, making it really well suited for those who want a small TV in their kitchen. Like the <a href="https://www.tomsguide.com/reviews/amazon-echo-show-15">Echo Show 15</a> and <a href="https://www.tomsguide.com/home/smart-home/echo-show-21-review">Echo Show 21</a>, the Echo Show 16 will also ship with a Fire TV remote, so that you don't have to rely on touch or voice to find the show you're looking for. </p><p>Of all of the Echo Show features I've used over the years, it's probably the one I've used the most.</p><h2 id="outlook">Outlook</h2><p>The hardware design of the new Echo Show 16 is impressive, but it's the new interface that might just have won me over. While I still want to take more time to really dive into it, I liked how it shows all of your interactions with Alexa+ in a smart, easily accessible way. I am curious to see how easy it will be to find everything once you have a lot of saved prompts, but it looks like Amazon has found a smart way to show everything on the screen. The new smart home interface also looks like it should make it much easier for me to manage all my devices. </p><p>This same interface will be rolling out to other Echo Show devices, so you don't need to rush out and buy the new Echo Show 16, unless you want the new design or the nanomatte display. We hope to get one in soon to test, 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/audio/smart-speakers/amazon-just-updated-the-echo-dot-but-its-no-longer-the-bargain-it-once-was">Amazon just updated the Echo Dot, but it's no longer the bargain it once was</a></li><li><a href="https://www.tomsguide.com//home/smart-home/i-cant-believe-it-took-amazon-this-long-to-come-out-with-an-alexa-photo-frame">I can't believe it took Amazon this long to come out with an Alexa Photo Frame</a></li><li><a href="https://www.tomsguide.com/audio/smart-speakers/the-amazon-echo-time-could-be-my-new-bedside-smart-clock">The Amazon Echo Time could be my new bedside smart clock</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/home/smart-home/i-went-hands-on-with-the-new-amazon-echo-show-16-and-it-looks-like-the-most-complete-smart-display-yet</link>
                                                                            <description>
                            <![CDATA[ The new Amazon Echo Show 16 looks amazingly sleek, but its redesigned interface is also amazing. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Jc8xF3oSG7QBaDxNFBkVf3</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/jNYDBiXqRWCCHp6VhjgTH3-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 28 Oct 2026 12:00:00 +0000</pubDate>                                                                                                                                <updated>Wed, 28 Oct 2026 20:04:37 +0000</updated>
                                                                                                                                            <category><![CDATA[Smart Home]]></category>
                                                    <category><![CDATA[Smart Speakers]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                    <category><![CDATA[Audio]]></category>
                                                    <category><![CDATA[Speakers]]></category>
                                                                                                <author><![CDATA[ mike.prospero@futurenet.com (Mike Prospero) ]]></author>                    <dc:creator><![CDATA[ Mike Prospero ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/xeJFBrJwXQzCqXLZXBFBKQ-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Michael A. Prospero is the U.S. Editor-in-Chief for Tom’s Guide.  In his spare time, he also tests out the latest drones, electric scooters, and smart home gadgets, such as video doorbells. Before his tenure at Tom&#039;s Guide, he was the Reviews Editor for Laptop Magazine, a reporter at Fast Company, the Times of Trenton, and, many eons back, an intern at George magazine. He received his undergraduate degree from Boston College, where he worked on the campus newspaper The Heights, and then attended the Columbia University school of Journalism. When he’s not testing out the latest running watch, electric scooter, or skiing or training for a marathon, he’s probably using the latest sous vide machine, smoker, or pizza oven, to the delight — or chagrin — of his family.&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/jNYDBiXqRWCCHp6VhjgTH3-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Amazon Echo Show 16]]></media:description>                                                            <media:text><![CDATA[Amazon Echo Show 16]]></media:text>
                                <media:title type="plain"><![CDATA[Amazon Echo Show 16]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/jNYDBiXqRWCCHp6VhjgTH3-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>When Amazon lifted the veil off its new Echo Show 16, I thought I was looking at a miniaturized version of <a href="https://www.tomsguide.com/computing/monitors/i-spent-a-week-with-dual-apple-studio-displays-and-realized-ive-been-lying-to-myself-about-glossy-screens-for-years">Apple's Studio Display</a>. But no, I was looking at Amazon's newest smart display, one that looks like it could beat the <a href="https://www.tomsguide.com/home/smart-home/i-saw-apples-homeview-early-7-things-you-need-to-know-about-the-smart-home-display">HomeView</a> in more ways than one. </p><p>I had a chance to check out the Amazon Echo Show 16, which is available for preorder starting today (Oct. 28), and will ship later this year. Here's how Amazon's newest smart display really distinguishes itself from the pack — even if its starting price of $499 could make it a reach for some.</p><div class="instagram-embed"><blockquote class="instagram-media"  data-instgrm-version="6" style="width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);"><p><a href="https://www.instagram.com/p/DfCYiGuh2oX/" target="_blank">A post shared by Tom's Guide (@tomsguide)</a></p><p>A photo posted by </p></blockquote></div><h2 id="price-and-availability">Price and availability</h2><p>The Echo Show 16 is available for preorder starting today (Oct. 28) at Amazon.com, and will ship on December 16. <a href="https://www.amazon.com/dp/B0G37245M5?ref=amzdv_ucc_dp_lod_B0G37245M5_B0G37245M5" target="_blank" rel="nofollow">The model with the standard glossy display costs $499</a>, while the Nanomatte display is $569. If you preorder the device, you can get $100 off the price.</p><p>If you're not planning to wall mount the device, a swivel stand is available for $69, and a swivel-and-tilt stand costs $124. </p><h2 id="design">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:2002px;"><p class="vanilla-image-block" style="padding-top:56.19%;"><img id="uRJ4kV6cnFMZanbWj7HVcC" name="echo show 16 side view" alt="echo show 16 side view" src="https://cdn.mos.cms.futurecdn.net/uRJ4kV6cnFMZanbWj7HVcC-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: Future)</span></figcaption></figure><p>The Echo Show 16 is the most refined smart display from Amazon I've seen; the panel itself isn't as thin as the <a href="https://www.tomsguide.com/home/smart-home/echo-show-8-4th-gen-review">Echo Show 8</a> or Echo Show 10, but that's because the speakers are housed behind the display, rather than sitting in a bulbous base. As a result, the Echo Show 16 looks more like something you'd connect to your desktop, rather than a standalone device. </p><p>The rear of the Echo Show 16 is thicker than most other tablets, as it houses eight subwoofers. Around the front is a 13MP camera, which has a digital zoom to keep you in frame if you're moving around. </p><p>The screen itself measures 16 inches diagonally, and has a resolution of 1920 x 1080. Like the <a href="https://www.tomsguide.com/computing/android-tablets/amazon-alexa-tablet-12-pro-review">Alexa Tablet 12 Pro tablet</a>, you can get the Echo Show 16 with either a glossy finish, or with a nanomatte display, which cuts down on glare.</p><p>Sadly, the aluminum stand costs $69 extra, so unless you plan to wall-mount it, you'll have to cough up a little more. </p><h2 id="a-redesigned-alexa-interface">A redesigned Alexa + interface</h2><p>Amazon has once again redesigned the interface on its Echo Shows, this time making <a href="https://www.tomsguide.com/ai/alexa-now-available-for-everyone-and-theres-even-a-free-tier-for-non-prime-members">Alexa+</a> more prominent. Now, all Alexa+ interactions are saved as "cards" which are displayed as a widget on the screen. Tap on the card, and it expands to show you the transcript from that interaction, as well as supporting documents, images and links.</p><p>For example, if you ask Alexa+ how to grow tomatoes, it might present cards for different types of tomatoes, tips on watering, fertilizing, and which might grow best in your area.</p><p>Alexa+ will then organize all of the cards by type, theme, date, or any other categorization it thinks is appropriate, so you can more easily find them at a later time. A special Card gallery shows all of them at a glance. </p><p>Amazon's Alexa+ smartphone app will also get a similar treatment; by design, any cards you create on your phone will stay there until you share them with the Echo Show.  </p><p>The Calendar view — now called Family Organizer — also sees a refresh. In addition to showing everyone's schedule, there's now a tab for meal planning, so you can lay out everything you want to cook for the week.</p><h2 id="smarter-home-view">Smarter home view</h2><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="tnpnpodpTL69DMcKq8kUnG" name="echo Show 16 home map" alt="echo Show 16 home map" src="https://cdn.mos.cms.futurecdn.net/tnpnpodpTL69DMcKq8kUnG-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>For those with a lot of smart home devices, the Echo Show's new Home Map takes what's currently available to the next level. Now, all of your smart home devices are displayed in a 3D map of your house, where you can view, arrange, and control all of them.</p><p>For example, if there's a smart light in a bedroom, you can tap on the icon to turn the light on and off, dim it, or change its color, if that's an option. Cleverly, the icon on the screen will also reflect the current state of the device — so, if a light is glowing red, its icon will also have a reddish halo. Or, if a smart speaker is playing music, the screen will show you the song title. </p><p>If you have <a href="https://www.tomsguide.com/face-off/ring-video-doorbell-3-vs-doorbell-pro">Ring cameras</a>, the Home Map will show icons of people and vehicles around your house moving in real time, based on what the cameras are seeing. If you have familiar faces enabled in the Ring app, the Home Map will also identify those people, too. An Amazon rep said that Blink integration was also coming in the future. I found it to be both cool and a bit creepy — kind of like a high-tech Marauder's Map from Harry Potter.</p><h2 id="fire-tv">Fire TV</h2><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:58.95%;"><img id="kD7NdYz5g3GBBrpQrtUF3N" name="echo show 16 fire tv" alt="echo show 16 fire tv" src="https://cdn.mos.cms.futurecdn.net/kD7NdYz5g3GBBrpQrtUF3N-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1179" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Like previous Echo Shows, the 16 also acts as a Fire TV device, making it really well suited for those who want a small TV in their kitchen. Like the <a href="https://www.tomsguide.com/reviews/amazon-echo-show-15">Echo Show 15</a> and <a href="https://www.tomsguide.com/home/smart-home/echo-show-21-review">Echo Show 21</a>, the Echo Show 16 will also ship with a Fire TV remote, so that you don't have to rely on touch or voice to find the show you're looking for. </p><p>Of all of the Echo Show features I've used over the years, it's probably the one I've used the most.</p><h2 id="outlook">Outlook</h2><p>The hardware design of the new Echo Show 16 is impressive, but it's the new interface that might just have won me over. While I still want to take more time to really dive into it, I liked how it shows all of your interactions with Alexa+ in a smart, easily accessible way. I am curious to see how easy it will be to find everything once you have a lot of saved prompts, but it looks like Amazon has found a smart way to show everything on the screen. The new smart home interface also looks like it should make it much easier for me to manage all my devices. </p><p>This same interface will be rolling out to other Echo Show devices, so you don't need to rush out and buy the new Echo Show 16, unless you want the new design or the nanomatte display. We hope to get one in soon to test, 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/audio/smart-speakers/amazon-just-updated-the-echo-dot-but-its-no-longer-the-bargain-it-once-was">Amazon just updated the Echo Dot, but it's no longer the bargain it once was</a></li><li><a href="https://www.tomsguide.com//home/smart-home/i-cant-believe-it-took-amazon-this-long-to-come-out-with-an-alexa-photo-frame">I can't believe it took Amazon this long to come out with an Alexa Photo Frame</a></li><li><a href="https://www.tomsguide.com/audio/smart-speakers/the-amazon-echo-time-could-be-my-new-bedside-smart-clock">The Amazon Echo Time could be my new bedside smart clock</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Prime Video top 10 movies — here’s the 3 worth watching this week (Oct. 26-Nov. 1) ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Halloween week is finally upon us, so it’s only right that I picked out an ultra nasty slasher from the latest <strong>top 10 Prime Video movies</strong> chart. I’ve Sherlocked my way through the streamer’s latest additions to bring you a trio of choices I hope you’ll enjoy. </p><p>Prime Video’s top 10 can vary from week to week, and the latest updated chart follows that path. There’s one genuine stinker in there for my money, but most of the flicks are at least inoffensive. The picks I’ve opted for include the late update of a truly iconic horror franchise, a new Ryan Gosling-produced romantic drama, and John Wick kicking <em>all</em> the keester in a extremely fun sequel. </p><p>The movies below are taken from Prime Video’s top 10 as of Monday, October 26, 2026. So try not to let Ghostface slice and dice your TV so that you can enjoy my picks of chart-topping flicks that are worth your time this week. </p><h3 class="article-body__section" id="section-best-movies-in-the-prime-video-top-10"><span>Best movies in the Prime Video top 10</span></h3><h2 id="scream-7-39-2026-2">‘Scream 7' (2026)</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/4g8OciWNJn4" allowfullscreen=""></iframe></div></div><p>As the original slasher’s late Stu Macher once screeched: “It’s gonna be a scream, baby!” And y’know what? For a seventh entry, “Scream 7” is a surprisingly sharp horror flick. Wait, did I say “late Stu Macher”? Thanks to an early plot reveal — this really isn’t a spoiler — it turns out Macher might still be alive, even though Sidney Prescott very much dropped a giant CRT TV on his demented head. </p><p>Has one of the OG Ghostface killers somehow survived or are AI deepfakes at play? The movie has fun with this premise, resulting in some surprising cameos. As for Sidney (Neve Campbell), she’s moved away from Woodsboro and is now living in Pine Grove, Indiana with her husband Mark (Joel McHale) and their daughter Tatum (Isabel May). Of course, this being "Scream," another Ghostface is soon on the loose and targeting Tatum and her teenage chums. The final act’s reveal disappoints, but the kills in “Scream 7” are brilliantly brutal, and the opening scene set in Macher’s house is an all-timer. </p><p><em><strong>Watch </strong></em><a href="https://www.primevideo.com/region/eu/detail/0R4HOUHPV4SU3LSWK7M1K5S5JB" target="_blank" rel="nofollow"><em><strong>"Scream 7" on Prime Video</strong></em></a><em><strong> now</strong></em></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ORMLNW"></div>                            </div>                            <script src="https://kwizly.com/embed/ORMLNW.js" async=""></script><h2 id="love-of-your-life-2026-2">‘Love of Your Life’ (2026)</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/ApfyawDLHFQ" allowfullscreen=""></iframe></div></div><p>Forgive me for coming to this tear-inducing drama as a Margaret Qualley fan who has only recently watched her in 2024’s “The Substance." Needless to say, the jump from gruesome body horror to tender weeper took some adjustment. In this new Prime Original, Qualley plays young Bostonian nurse Maya who falls for the handsome Charlie (The Night’s Agent’s Gabriel Basso) after buying a set of drawers from him. No, <em>really</em>. </p><p>In an effort to process her grief, she becomes a digital nomad, hooking up with randoms in glamorous cities like Lisbon and Luxembourg. It’s only when she meets charming single dad Felix (Aaron Pierre) that she can start to address her past trauma. Look, this is a paint-by-numbers exploration of heartbreak and loss, but the cast do well with the script they’re given and there’s no question the picturesque scenery helps proceedings. And yes, Ryan Gosling did actually help produce this. </p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B0HFJCW6VG" target="_blank" rel="nofollow"><em><strong>"Love of Your Life" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="39-john-wick-chapter-4-39-2023">'John Wick: Chapter 4' (2023)</h2><p>Four entries in, you really think the bad guys would stop messing with Keanu Reeves’ titular assassin. At this point, Wick is more unkillable than a Terminator riding a T-Rex. Alas, the evil High Table just can’t take a lesson, so after John killed their leader last time out, they recruit Bill Skarsgård’s Pennywise … sorry, the Marquis Vincent de Gramont to eliminate Wick and his allies. Apologies, I get campy nobleman and killer clowns mixed up all the time. </p><p>After Gramont destroys the New York Continental, Wick is forced on a globe-hopping quest that eventually concludes with a pistols-at-dawn showdown in Paris. Before that, John is reunited with some familiar faces, and it continues to be a pleasure to see that Keanu can pull off the series’ legendary fight choreography so convincingly. Once again, the gun fu is utterly on point here. Donnie Yen is also a welcome addition, and his blind hitman’s breathtaking clash with Wick is arguably the highlight of the movie.   </p><p><em><strong>Watch </strong></em><a href="" target="_blank" rel="nofollow"><em><strong>John Wick: Chapter 4 on Prime Video</strong></em></a><em><strong> now</strong></em></p><h3 class="article-body__section" id="section-prime-video-top-10-movies-right-now"><span>Prime Video top 10 movies right now</span></h3><ol start="1"><li>"Love of Your Life" (2026)</li><li>"Masterplan" (2026)</li><li>"Forget Me Never" (1999)</li><li>"First Winter" (1982)</li><li>"Scream 7" (2026)</li><li>"The Love Hypothesis" (2026)</li><li>"Dark Nature" (2023)</li><li>"Now You See Me: Now You Don't" (2025)</li><li>"John Wick Chapter 4" (2023)</li><li>"Masters of the Universe" (2026)</li></ol><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="gdR2W4" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><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/entertainment/prime-video/new-on-prime-video-in-october-2026-top-new-movies-and-shows-to-stream-this-month">New on Prime Video in October 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/streaming/scream-movies-ranked">All 7 'Scream' movies ranked</a></li><li><a href="https://www.tomsguide.com/entertainment/netflix/5-best-new-to-netflix-movies-and-shows-to-stream-this-week-oct-26-nov-1">5 best new to Netflix movies and shows to stream this week (Oct. 26-Nov. 1)</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/prime-video/prime-video-top-10-movies-heres-the-3-worth-watching-this-week-oct-26-nov-1</link>
                                                                            <description>
                            <![CDATA[ The Prime Video top 10 most-watched list has been updated once again. I'm here to help you find the movies you'll actually want to stream. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">jPZ9dVAmnTDYoyoTdmHVUV</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/KFAWy2ARKTf8LL9yy3E8y3-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 26 Oct 2026 13:50:26 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Prime Video]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                    <category><![CDATA[Streaming]]></category>
                                                                                                <author><![CDATA[ dave.meikleham@futurenet.com (Dave Meikleham) ]]></author>                    <dc:creator><![CDATA[ Dave Meikleham ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Rda8e7jGfyTdZLWYJQQ8VY-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Dave is a computing editor at Tom’s Guide and covers everything from cutting-edge laptops, the latest GPU tech, to ultrawide monitors. When he’s not worrying about dead pixels, Dave enjoys regularly rebuilding his PC for absolutely no reason at all. He built his first rig over 20 years ago, and he’s gone through more motherboards than he’s had hot dinners. Probably. &lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;In a previous life, he worked as a video game journalist during a career spanning the best part of two decades. Over that time he worked across both online and print, with bylines for GamesRadar+, PC Gamer, TechRadar, Edge and the Official UK PlayStation Magazine. He’s almost amassed an immeasurable amount of bad puns.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;An avid PC and console gamer, Dave enjoys breaking out Fraps way too often as he obsesses over frame rates. Despite owning a graphics card that costs roughly the same as your average used car, he still enjoys gaming on the go and is regularly glued to his Switch. Away from tech, most of Dave’s time is taken up by walking his husky, obsessing about his various OLED displays and sweating over the fitness of half a dozen Arsenal players on any given week.&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/KFAWy2ARKTf8LL9yy3E8y3-1920-80.jpg">
                                                            <media:credit><![CDATA[Prime Video; Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Prime Video logo on a orange film reel background]]></media:description>                                                            <media:text><![CDATA[Prime Video logo on a orange film reel background]]></media:text>
                                <media:title type="plain"><![CDATA[Prime Video logo on a orange film reel background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/KFAWy2ARKTf8LL9yy3E8y3-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Halloween week is finally upon us, so it’s only right that I picked out an ultra nasty slasher from the latest <strong>top 10 Prime Video movies</strong> chart. I’ve Sherlocked my way through the streamer’s latest additions to bring you a trio of choices I hope you’ll enjoy. </p><p>Prime Video’s top 10 can vary from week to week, and the latest updated chart follows that path. There’s one genuine stinker in there for my money, but most of the flicks are at least inoffensive. The picks I’ve opted for include the late update of a truly iconic horror franchise, a new Ryan Gosling-produced romantic drama, and John Wick kicking <em>all</em> the keester in a extremely fun sequel. </p><p>The movies below are taken from Prime Video’s top 10 as of Monday, October 26, 2026. So try not to let Ghostface slice and dice your TV so that you can enjoy my picks of chart-topping flicks that are worth your time this week. </p><h3 class="article-body__section" id="section-best-movies-in-the-prime-video-top-10"><span>Best movies in the Prime Video top 10</span></h3><h2 id="scream-7-39-2026-2">‘Scream 7' (2026)</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/4g8OciWNJn4" allowfullscreen=""></iframe></div></div><p>As the original slasher’s late Stu Macher once screeched: “It’s gonna be a scream, baby!” And y’know what? For a seventh entry, “Scream 7” is a surprisingly sharp horror flick. Wait, did I say “late Stu Macher”? Thanks to an early plot reveal — this really isn’t a spoiler — it turns out Macher might still be alive, even though Sidney Prescott very much dropped a giant CRT TV on his demented head. </p><p>Has one of the OG Ghostface killers somehow survived or are AI deepfakes at play? The movie has fun with this premise, resulting in some surprising cameos. As for Sidney (Neve Campbell), she’s moved away from Woodsboro and is now living in Pine Grove, Indiana with her husband Mark (Joel McHale) and their daughter Tatum (Isabel May). Of course, this being "Scream," another Ghostface is soon on the loose and targeting Tatum and her teenage chums. The final act’s reveal disappoints, but the kills in “Scream 7” are brilliantly brutal, and the opening scene set in Macher’s house is an all-timer. </p><p><em><strong>Watch </strong></em><a href="https://www.primevideo.com/region/eu/detail/0R4HOUHPV4SU3LSWK7M1K5S5JB" target="_blank" rel="nofollow"><em><strong>"Scream 7" on Prime Video</strong></em></a><em><strong> now</strong></em></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ORMLNW"></div>                            </div>                            <script src="https://kwizly.com/embed/ORMLNW.js" async=""></script><h2 id="love-of-your-life-2026-2">‘Love of Your Life’ (2026)</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/ApfyawDLHFQ" allowfullscreen=""></iframe></div></div><p>Forgive me for coming to this tear-inducing drama as a Margaret Qualley fan who has only recently watched her in 2024’s “The Substance." Needless to say, the jump from gruesome body horror to tender weeper took some adjustment. In this new Prime Original, Qualley plays young Bostonian nurse Maya who falls for the handsome Charlie (The Night’s Agent’s Gabriel Basso) after buying a set of drawers from him. No, <em>really</em>. </p><p>In an effort to process her grief, she becomes a digital nomad, hooking up with randoms in glamorous cities like Lisbon and Luxembourg. It’s only when she meets charming single dad Felix (Aaron Pierre) that she can start to address her past trauma. Look, this is a paint-by-numbers exploration of heartbreak and loss, but the cast do well with the script they’re given and there’s no question the picturesque scenery helps proceedings. And yes, Ryan Gosling did actually help produce this. </p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B0HFJCW6VG" target="_blank" rel="nofollow"><em><strong>"Love of Your Life" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="39-john-wick-chapter-4-39-2023">'John Wick: Chapter 4' (2023)</h2><p>Four entries in, you really think the bad guys would stop messing with Keanu Reeves’ titular assassin. At this point, Wick is more unkillable than a Terminator riding a T-Rex. Alas, the evil High Table just can’t take a lesson, so after John killed their leader last time out, they recruit Bill Skarsgård’s Pennywise … sorry, the Marquis Vincent de Gramont to eliminate Wick and his allies. Apologies, I get campy nobleman and killer clowns mixed up all the time. </p><p>After Gramont destroys the New York Continental, Wick is forced on a globe-hopping quest that eventually concludes with a pistols-at-dawn showdown in Paris. Before that, John is reunited with some familiar faces, and it continues to be a pleasure to see that Keanu can pull off the series’ legendary fight choreography so convincingly. Once again, the gun fu is utterly on point here. Donnie Yen is also a welcome addition, and his blind hitman’s breathtaking clash with Wick is arguably the highlight of the movie.   </p><p><em><strong>Watch </strong></em><a href="" target="_blank" rel="nofollow"><em><strong>John Wick: Chapter 4 on Prime Video</strong></em></a><em><strong> now</strong></em></p><h3 class="article-body__section" id="section-prime-video-top-10-movies-right-now"><span>Prime Video top 10 movies right now</span></h3><ol start="1"><li>"Love of Your Life" (2026)</li><li>"Masterplan" (2026)</li><li>"Forget Me Never" (1999)</li><li>"First Winter" (1982)</li><li>"Scream 7" (2026)</li><li>"The Love Hypothesis" (2026)</li><li>"Dark Nature" (2023)</li><li>"Now You See Me: Now You Don't" (2025)</li><li>"John Wick Chapter 4" (2023)</li><li>"Masters of the Universe" (2026)</li></ol><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="gdR2W4" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><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/entertainment/prime-video/new-on-prime-video-in-october-2026-top-new-movies-and-shows-to-stream-this-month">New on Prime Video in October 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/streaming/scream-movies-ranked">All 7 'Scream' movies ranked</a></li><li><a href="https://www.tomsguide.com/entertainment/netflix/5-best-new-to-netflix-movies-and-shows-to-stream-this-week-oct-26-nov-1">5 best new to Netflix movies and shows to stream this week (Oct. 26-Nov. 1)</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ The Alexa Tablet 12 Pro has strong Alexa+ integration — but it’s the hardware that won me over ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Amazon’s Alexa Tablet 12 Pro ($499 to start) is an Android tablet that completely surprised me. As the flagship of the new <a href="https://www.tomsguide.com/computing/android-tablets/fire-tablets-are-dead-amazon-announces-new-alexa-tablet-lineup-running-android">Alexa tablet line</a>, which effectively replaces Amazon Fire tablets, this slate runs on Android and is built to work seamlessly with <a href="https://www.tomsguide.com/ai/alexa-release-date-cost-devices-and-all-the-new-ai-features">Alexa+</a>. While that integration is certainly a selling point, I’m truly impressed by the hardware that elevates this Android tablet above its peers and even puts it on par with the <a href="https://www.tomsguide.com/best-picks/best-ipad">best iPads</a>.</p><p>The sturdy aluminum unibody is great in hand, making it feel like a premium device. It’s also thin and light enough to hold comfortably for extended periods. My favorite feature is the 12-inch 2.8K display. Though it’s not an OLED, everything you see looks bright and colorful. The optional Nanomatte anti-glare option is also a huge game-changer.</p><p>This Alexa tablet runs full-blown Android, bringing Google Play services to an Amazon tablet for the first time. It also serves as an excellent replacement for the <a href="https://www.tomsguide.com/us/best-e-readers,review-2766.html">best Kindles</a>. This helps make the Alexa tablet feel like an extension of the Amazon ecosystem, though that part might not matter much if you don’t already own Alexa devices or a Kindle.</p><p>After using the Amazon Alexa Tablet 12 Pro as my daily driver for watching videos and reading for the better part of a week, I can comfortably say it’s one of the <a href="https://www.tomsguide.com/best-picks/best-android-tablets">best Android tablets</a> and <a href="https://www.tomsguide.com/best-picks/best-tablet">best tablets</a> right now. Sure, it’s not for everyone, but if you’re an Alexa user or want a slate with an anti-glare screen, you won’t go wrong here. Find out more in my full review.</p><h3 class="article-body__section" id="section-amazon-alexa-tablet-12-pro-review-cheat-sheet"><span>Amazon Alexa Tablet 12 Pro review: Cheat sheet</span></h3><ul><li><strong>What is it?</strong> As its name suggests, the Amazon Alexa Tablet 12 Pro is a slate built to work with the Alexa ecosystem. Beyond that, it’s an Android tablet that arguably rivals Apple’s entry-level iPad.</li><li><strong>Who is it for?</strong> This device is for folks who want a tablet that can control their Alexa devices or an Android slate with an anti-glare display.</li><li><strong>What does it cost?</strong> The <a href="https://www.amazon.com/dp/B0DT2G69GW?th=1" target="_blank" rel="nofollow">Amazon Alexa Tablet 12 Pro starts at $499</a> for a model with 8GB of RAM and 128GB of storage. For $150 more, <a href="https://www.amazon.com/dp/B0FMS8C99W?th=1" target="_blank" rel="nofollow">you can add a Nanomatte display</a>. The most <a href="https://www.amazon.com/dp/B0DT25J8W8?th=1" target="_blank" rel="nofollow">expensive stand-alone model with 256GB</a> of storage and a Nanomatte display costs $679. A productivity bundle that includes the Alexa Pro Keyboard and Alexa Pro Pen is also on sale for $799.</li><li><strong>What do we like?</strong> We like the sleek design, lovely display, Alexa+ integration, smooth performance, and long-lasting battery life.</li><li><strong>What don’t we like?</strong> We don’t like the high cost of upgrading storage and moving to the Nanomatte model. The peripherals can also get quite pricey.</li></ul><h3 class="article-body__section" id="section-amazon-alexa-tablet-12-pro-review-specs"><span>Amazon Alexa Tablet 12 Pro review: Specs</span></h3><div ><table><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>Amazon Alexa Tablet 12 Pro (starting)</strong></p></td><td  ><p><strong>Amazon Alexa Tablet 12 Pro (tested)</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p>$499</p></td><td  ><p>$679</p></td></tr><tr><td class="firstcol " ><p><strong>Display</strong></p></td><td  ><p>12-inch | 2800 x 1840 | 120Hz | 3:2 aspect ratio</p></td><td  ><p>12-inch | 2800 x 1840 | 120Hz | 3:2 aspect ratio</p></td></tr><tr><td class="firstcol " ><p><strong>Chip</strong></p></td><td  ><p>MediaTek Dimensity 8400 </p></td><td  ><p>MediaTek Dimensity 8400 </p></td></tr><tr><td class="firstcol " ><p><strong>Memory</strong></p></td><td  ><p>8GB</p></td><td  ><p>16GB</p></td></tr><tr><td class="firstcol " ><p><strong>Storage</strong></p></td><td  ><p>128GB</p></td><td  ><p>256GB</p></td></tr><tr><td class="firstcol " ><p><strong>Cameras</strong></p></td><td  ><p>8MP front camera | 13MP rear camera (both w 1080p video)</p></td><td  ><p>8MP front camera | 13MP rear camera (both w 1080p video)</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>Wi-Fi 6, Bluetooth 5.3</p></td><td  ><p>Wi-Fi 6, Bluetooth 5.3</p></td></tr><tr><td class="firstcol " ><p><strong>Ports</strong></p></td><td  ><p>1x USB-C</p></td><td  ><p>1x USB-C</p></td></tr><tr><td class="firstcol " ><p><strong>Size</strong></p></td><td  ><p>10.66 x 7.24 x 0.26 inches </p></td><td  ><p>10.66 x 7.24 x 0.26 inches </p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>1.2 pounds</p></td><td  ><p>1.2 pounds</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-amazon-alexa-tablet-12-pro-review-the-ups"><span>Amazon Alexa Tablet 12 Pro review: The ups</span></h3><p>The Alexa Tablet 12 Pro has a lot to offer, thanks to its superb display, sleek design, long battery life, and smart Alexa integration.</p><h2 id="sleek-design">Sleek 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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="jGmcsAoWw4HxeLsCS97tcU" name="Alexa Tablet 12 Pro-7" alt="Amazon Alexa Tablet 12 Pro" src="https://cdn.mos.cms.futurecdn.net/jGmcsAoWw4HxeLsCS97tcU-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>Amazon didn’t reinvent the wheel of tablet design, as the Alexa Tablet has the basic form of modern-day slates. That said, it’s a beautiful aluminum slab with a slim profile and elegant curves. The all-black chassis also gives the tablet an air of sophistication.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="syYWdMhG4BZ9YNkustUBES" name="Alexa Tablet 12 Pro-6" alt="Amazon Alexa Tablet 12 Pro" src="https://cdn.mos.cms.futurecdn.net/syYWdMhG4BZ9YNkustUBES-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 design is decidedly minimalist. In landscape, the power button sits on the top-left edge, while the volume buttons sit on the top-left corner. The 8MP front camera lies right in the center, along the thin bezel. On the back, you’ll find the 13MP rear camera and the Alexa logo. Like most modern tablets, it has a single USB-C port on the right side, or bottom if you’re holding the tablet in portrait mode.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="HyuP2scCa5FGVn2eW4mDcY" name="Alexa Tablet 12 Pro-9" alt="Amazon Alexa Tablet 12 Pro" src="https://cdn.mos.cms.futurecdn.net/HyuP2scCa5FGVn2eW4mDcY-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>Speakers flank the left and right sides, and they’re pretty good for tablet audio. Dialogue-heavy podcasts and videos sound great, with clear, distinct voices. The speakers also do a good job with movies and TV shows that feature a wide range of audio. And while music can lack bass, it’s still plenty punchy and clear.</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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="JofdMYaqrjT9D6dvpHkhgZ" name="Alexa Tablet 12 Pro-11" alt="Amazon Alexa Tablet 12 Pro" src="https://cdn.mos.cms.futurecdn.net/JofdMYaqrjT9D6dvpHkhgZ-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 12-inch display on the Alexa Tablet 12 Pro is a wonder to behold. Everything appears crystal clear, thanks to the sharp 2800 x 1840 resolution that brings out even the smallest details. While this isn’t an OLED, it still delivers excellent contrast between dark and light elements. Colors are vivid, and the overall brightness never overwhelms.</p><p>I watched a lot of YouTube videos during my testing, and I loved how the matte display diffused the lighting in my living area. Whether it’s bright and bold animated series like <a href="https://www.tomsguide.com/entertainment/prime-video/invincible-season-4-get-ready-for-the-baddest-villain-ever">Invincible</a> or gritty action shows like <a href="https://www.tomsguide.com/news/best-shows-like-reacher">Reacher</a>, everything looks fantastic. I also appreciate how the matte display on this tablet doesn’t soften color nearly as much as I’ve seen on other devices utilizing similar tech.</p><div ><table><caption>Display benchmark results</caption><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>Alexa Tablet 12 Pro</strong></p></td><td  ><p><strong>Apple iPad (11th gen)</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Nits (brightness)</strong></p></td><td  ><p>547 (SDR) | 555 (HDR)</p></td><td  ><p>506 (SDR) | 496 (HDR) </p></td></tr><tr><td class="firstcol " ><p><strong>sRGB</strong></p></td><td  ><p>109.7%</p></td><td  ><p>108.8% </p></td></tr><tr><td class="firstcol " ><p><strong>DCI-P3</strong></p></td><td  ><p>77.7%</p></td><td  ><p>77.1% </p></td></tr><tr><td class="firstcol " ><p><strong>Delta-E</strong></p></td><td  ><p>0.22</p></td><td  ><p>0.30</p></td></tr></tbody></table></div><p>How did the Alexa Tablet 12 Pro do in our display benchmarks? As you can see above, color reproduction (sRGB and DCI-P3) isn’t oversaturated, and color accuracy (Delta-E) matches other tablets and laptops we’ve tested.</p><p>The numbers line up with my experience, as I found the hues generally looked natural. HDR brightness doesn’t get as high as on other devices, but to my eyes, the brightness was just perfect. Numbers-wise, the Alexa Tablet 12 Pro is comparable to the <a href="https://www.tomsguide.com/computing/ipads/ipad-11-2025-review">Apple iPad 11</a>.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="SRbrcE2xVpabnsQPmGtVUo" name="Alexa Tablet 12 Pro-12" alt="Amazon Alexa Tablet 12 Pro" src="https://cdn.mos.cms.futurecdn.net/SRbrcE2xVpabnsQPmGtVUo-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 display on my review unit has a slightly rough texture that mimics paper, which is great for reading. Speaking of reading, comic books look gorgeous because the matte display slightly mutes colors, creating a more paper-like appearance. If you’re into reading digital comics like I am, this is arguably the best tablet for reading your favorite funnies.</p><h2 id="strong-performance">Strong 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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="xNNSrCUvmDJJk22EnMVHhh" name="Alexa Tablet 12 Pro-25" alt="Amazon Alexa Tablet 12 Pro" src="https://cdn.mos.cms.futurecdn.net/xNNSrCUvmDJJk22EnMVHhh-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 Alexa Tablet 12 Pro delivers solid performance for an Android tablet, thanks to its mid-range MediaTek Dimensity 8400 processor and 8GB of RAM. While this isn’t a workhorse tablet, it generally performs well for web browsing and video streaming. However, I noticed that performance slowed when I opened up multiple Chrome tabs and other apps.</p><div ><table><caption>Performance benchmarks</caption><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>Amazon Alexa Tablet 12 Pro</strong></p></td><td  ><p><strong>Apple iPad (11th gen)</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Geekbench 6 (single-core / multi-core)</strong></p></td><td  ><p>1666 / 6677</p></td><td  ><p>2589 / 6176 </p></td></tr><tr><td class="firstcol " ><p><strong>3DMark Wild Life Extreme Unlimited (score/fps)</strong></p></td><td  ><p>3376 / 20.2</p></td><td  ><p>2623 / 15.7</p></td></tr></tbody></table></div><p>On the Geekbench 6 CPU test, Amazon’s new tablet scored similarly to the Apple iPad 11 in both single- and multi-core performance. These results match my experience: throwing too much at Amazon’s slate makes it struggle.</p><p>You can certainly use this tablet for productivity, especially with its optional peripherals, but it won’t replace a traditional laptop. However, if you’re using Amazon’s slate mainly for entertainment and light work in Google Docs, its performance won’t disappoint.</p><h2 id="long-battery-life">Long 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="cRxrXz4eK8NrQSTkCwBCen" name="Alexa Tablet 12 Pro-23" alt="Amazon Alexa Tablet 12 Pro" src="https://cdn.mos.cms.futurecdn.net/cRxrXz4eK8NrQSTkCwBCen-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 Alexa Tablet 12 Pro delivers excellent battery life. In our battery life test, which involves continuous web surfing over Wi-Fi with the display set to 150 nits of brightness, the tablet endured for an astonishing 13 hours and 17 minutes! As you can see below, that’s almost two hours longer than the iPad 11.</p><div ><table><caption>Battery life test</caption><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>Time (hours:mins)</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Amazon Alexa Tablet 12 Pro</strong></p></td><td  ><p>13:17</p></td></tr><tr><td class="firstcol " ><p><strong>Apple iPad (11th gen)</strong></p></td><td  ><p>11:25</p></td></tr></tbody></table></div><p>During a stay-at-home weekend, when I sporadically watched YouTube videos and read comics and novels with the display at 70% brightness, the tablet generally dropped from 80% battery to the low 40s over 16 hours.</p><p>On weeknights when I’m only home in the evening, the battery drops by about 10% over four hours of use. This is more than enough for all-day usage!</p><h2 id="seamless-amazon-ecosystem-integration">Seamless Amazon ecosystem integration</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="TTJ34AboNJvXVtfq6MVpC6" name="Alexa Tablet 12 Pro-5" alt="Amazon Alexa Tablet 12 Pro" src="https://cdn.mos.cms.futurecdn.net/TTJ34AboNJvXVtfq6MVpC6-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 Alexa Tablet 12 Pro works great as a standalone slate, but it really shines as a hub for your Amazon devices and apps. As Amazon says, the tablet has the intelligence of Alexa+ and has built-in access to Google Play Store apps. And naturally, the tablet also works well as a Kindle.</p><p>I own an Amazon Echo Dot and have two smart lights that support Alexa. When I was winding down for the night, I could dim the lights right on the tablet instead of pulling out my phone to open the Alexa app. And if I wanted to fire up a song on my Echo Dot, I either typed or vocalized the request to the tablet. All of this was relatively seamless. If you don’t care to chat with Alexa, you can go into settings to swap to Google or Bing’s respective voice assistants.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="gVEZ9NujTfuxj3RyS2yFbf" name="Alexa Tablet 12 Pro-24" alt="Amazon Alexa Tablet 12 Pro" src="https://cdn.mos.cms.futurecdn.net/gVEZ9NujTfuxj3RyS2yFbf-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’m a fan of Kindles, so I loved using this tablet as another Kindle device. When you open the Kindle app, a fun wave-like animation washes across the screen. This isn’t just for show, as the tablet instantly lowers blue light and disables notifications to replicate the Kindle reading experience. This also helps extend battery life. I also like that it has three visual modes: full color, muted colors like on a <a href="https://www.tomsguide.com/computing/e-readers/kindle-colorsoft-2026-review">Kindle Colorsoft</a>, or full black and white.</p><p>If you own a lot of Alexa-supported devices, this Alexa tablet does a nice job of letting you control them all. It serves that purpose well, but it might not be a feature for everyone, which leads us into the next section…</p><h2 id="sharp-cameras">Sharp cameras</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:75.00%;"><img id="W9MWh8NbSFjQ3xjH9WsPEG" name="Alexa Tablet 12 Pro front camera" alt="Amazon Alexa Tablet 12 Pro" src="https://cdn.mos.cms.futurecdn.net/W9MWh8NbSFjQ3xjH9WsPEG-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1920" 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 you want to look your best on video calls or snap some photos, the tablet’s front and rear cameras are up to the task. The front 8MP camera captures details of my face, clothing, and background, as you can see above.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:75.00%;"><img id="LSsmecC4i56gk9Mh93TCuR" name="Alexa Tablet 12 Pro back camera" alt="Amazon Alexa Tablet 12 Pro" src="https://cdn.mos.cms.futurecdn.net/LSsmecC4i56gk9Mh93TCuR-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1920" 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>Then there’s the 13MP back camera, which also captures details nicely. While I wouldn’t personally use a tablet to take selfies or capture video, I’m impressed by the strong resolution both cameras deliver.</p><h3 class="article-body__section" id="section-amazon-alexa-tablet-12-pro-review-the-downs"><span>Amazon Alexa Tablet 12 Pro review: The downs</span></h3><p>While the Amazon Alexa Tablet 12 Pro is a great Android tablet, it has its drawbacks.</p><h2 id="for-amazon-users-only">For Amazon users only</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="tnP9nTjmQss2C6Q2jyWFDZ" name="Alexa Tablet 12 Pro-4" alt="Amazon Alexa Tablet 12 Pro" src="https://cdn.mos.cms.futurecdn.net/tnP9nTjmQss2C6Q2jyWFDZ-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>This is a very Alexa-centric tablet. That's clear the moment you see the home screen, where you’ll find an assortment of Amazon apps like Prime Video, Audible, Kindle, the Silk browser… and even Luna!</p><p>And since it runs on Android, you can also quickly access a slew of Google apps. If that wasn’t enough, UI elements like an Alexa+ widget in the bottom-right corner also remind you that this is an Alexa device.</p><p>All of this can be extremely handy for folks who often utilize Amazon and Google apps. I use many of the latter and several of the former, and it’s nice being able to access those apps quickly. However, if you’re not invested in the Amazon ecosystem, they might as well be bloatware, especially if you just want a no-frills Android tablet.</p><p>Speaking of Android, it’s still not nearly as snappy and consistent as <a href="https://www.tomsguide.com/computing/vr-ar/ipados-27-everything-coming-to-the-apples-beloved-tablets">iPadOS</a>. There is always a slight bit of delay when scrolling through pages on sites and apps. I also had some apps take forever to load or completely crash unexpectedly. Those instances aren’t frequent, but they happen far more often than they do on an iPad.</p><h2 id="expensive-peripherals">Expensive peripherals</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="AzZGtXeyUF9yMbYBef5cd4" name="Alexa Tablet 12 Pro-LIST1" alt="Amazon Alexa Tablet 12 Pro" src="https://cdn.mos.cms.futurecdn.net/AzZGtXeyUF9yMbYBef5cd4-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 get even more use from the Alexa Tablet 12 Pro, you can purchase the Alexa Pro Keyboard and Alexa Pro Pen.</p><p>The Pro Keyboard isn't just for typing; it also doubles as a protective case for the tablet. This peripheral has a leather-like texture that feels good against your fingers and palms. The membrane keys are better than you’d expect for a tablet keyboard, with nice travel distance and even spacing. I don’t have problems typing on this keyboard, even with my big hands. I also like the dedicated Alexa button beside the arrow keys that instantly brings up the AI assistant.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Uo5W9NiuW4e63q4n6wQ76D" name="Alexa Tablet 12 Pro-19" alt="Amazon Alexa Tablet 12 Pro" src="https://cdn.mos.cms.futurecdn.net/Uo5W9NiuW4e63q4n6wQ76D-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 Pro Pen is a pretty great stylus, having a similar weight and feel to an Apple Pencil Pro. Thanks to the tablet’s matte texture, writing with the stylus (almost) feels like writing on paper. Writing notes in the margins of a Kindle book is almost identical to doing the same action on a Kindle Scribe — which makes sense given how they’re both Amazon devices.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Lo8sZjUTNjoPjKLSsfN86H" name="Alexa Tablet 12 Pro-15" alt="Amazon Alexa Tablet 12 Pro" src="https://cdn.mos.cms.futurecdn.net/Lo8sZjUTNjoPjKLSsfN86H-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 I think the Pro Keyboard and Pro Pen are excellent peripherals, they’re both pretty expensive — the former costs $149 and the latter $89. There’s currently a $799 bundle that saves you $120, but that’s still a steep price to pay on top of the tablet.</p><h3 class="article-body__section" id="section-amazon-alexa-tablet-12-pro-review-verdict"><span>Amazon Alexa Tablet 12 Pro review: Verdict</span></h3><p>I enjoyed my time with the Amazon Alexa Tablet 12 Pro, as it’s a far better slate than I expected. Sure, Android can be somewhat sluggish, and I've rarely (if ever) needed to interact with Alexa+, but the excellent hardware ultimately won me over. The design is perfect, and the Nanomatte display makes for a wonderful viewing and reading experience. I also love how this tablet doubles as a Kindle.</p><p>Serious Alexa or Google users will find a lot to like about the Alexa Tablet 12 Pro. If you don’t fall into that category, the iPad 11 offers a more responsive, stable operating system and has almost all the apps and services on the Alexa Tablet 12 Pro. But if you liked what I had to say about this slate, then you should consider checking it out. You might end up loving it as much as I have!</p> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/android-tablets/amazon-alexa-tablet-12-pro-review</link>
                                                                            <description>
                            <![CDATA[ The Alexa Tablet 12 Pro is built for Amazon’s ecosystem, but it’s also a fantastic Android tablet, thanks to its sleek design, sharp display, and long battery life. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">TWoHPgKHtnimPCwMC6cLpn</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/pyS5Kj6DeHhWa9ueJUXHoc-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 25 Oct 2026 06:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Android Tablets]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Tablets]]></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/pyS5Kj6DeHhWa9ueJUXHoc-1920-80.jpg">
                                                            <media:credit><![CDATA[Tom&amp;#39;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Amazon Alexa Tablet 12 Pro]]></media:description>                                                            <media:text><![CDATA[Amazon Alexa Tablet 12 Pro]]></media:text>
                                <media:title type="plain"><![CDATA[Amazon Alexa Tablet 12 Pro]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/pyS5Kj6DeHhWa9ueJUXHoc-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Amazon’s Alexa Tablet 12 Pro ($499 to start) is an Android tablet that completely surprised me. As the flagship of the new <a href="https://www.tomsguide.com/computing/android-tablets/fire-tablets-are-dead-amazon-announces-new-alexa-tablet-lineup-running-android">Alexa tablet line</a>, which effectively replaces Amazon Fire tablets, this slate runs on Android and is built to work seamlessly with <a href="https://www.tomsguide.com/ai/alexa-release-date-cost-devices-and-all-the-new-ai-features">Alexa+</a>. While that integration is certainly a selling point, I’m truly impressed by the hardware that elevates this Android tablet above its peers and even puts it on par with the <a href="https://www.tomsguide.com/best-picks/best-ipad">best iPads</a>.</p><p>The sturdy aluminum unibody is great in hand, making it feel like a premium device. It’s also thin and light enough to hold comfortably for extended periods. My favorite feature is the 12-inch 2.8K display. Though it’s not an OLED, everything you see looks bright and colorful. The optional Nanomatte anti-glare option is also a huge game-changer.</p><p>This Alexa tablet runs full-blown Android, bringing Google Play services to an Amazon tablet for the first time. It also serves as an excellent replacement for the <a href="https://www.tomsguide.com/us/best-e-readers,review-2766.html">best Kindles</a>. This helps make the Alexa tablet feel like an extension of the Amazon ecosystem, though that part might not matter much if you don’t already own Alexa devices or a Kindle.</p><p>After using the Amazon Alexa Tablet 12 Pro as my daily driver for watching videos and reading for the better part of a week, I can comfortably say it’s one of the <a href="https://www.tomsguide.com/best-picks/best-android-tablets">best Android tablets</a> and <a href="https://www.tomsguide.com/best-picks/best-tablet">best tablets</a> right now. Sure, it’s not for everyone, but if you’re an Alexa user or want a slate with an anti-glare screen, you won’t go wrong here. Find out more in my full review.</p><h3 class="article-body__section" id="section-amazon-alexa-tablet-12-pro-review-cheat-sheet"><span>Amazon Alexa Tablet 12 Pro review: Cheat sheet</span></h3><ul><li><strong>What is it?</strong> As its name suggests, the Amazon Alexa Tablet 12 Pro is a slate built to work with the Alexa ecosystem. Beyond that, it’s an Android tablet that arguably rivals Apple’s entry-level iPad.</li><li><strong>Who is it for?</strong> This device is for folks who want a tablet that can control their Alexa devices or an Android slate with an anti-glare display.</li><li><strong>What does it cost?</strong> The <a href="https://www.amazon.com/dp/B0DT2G69GW?th=1" target="_blank" rel="nofollow">Amazon Alexa Tablet 12 Pro starts at $499</a> for a model with 8GB of RAM and 128GB of storage. For $150 more, <a href="https://www.amazon.com/dp/B0FMS8C99W?th=1" target="_blank" rel="nofollow">you can add a Nanomatte display</a>. The most <a href="https://www.amazon.com/dp/B0DT25J8W8?th=1" target="_blank" rel="nofollow">expensive stand-alone model with 256GB</a> of storage and a Nanomatte display costs $679. A productivity bundle that includes the Alexa Pro Keyboard and Alexa Pro Pen is also on sale for $799.</li><li><strong>What do we like?</strong> We like the sleek design, lovely display, Alexa+ integration, smooth performance, and long-lasting battery life.</li><li><strong>What don’t we like?</strong> We don’t like the high cost of upgrading storage and moving to the Nanomatte model. The peripherals can also get quite pricey.</li></ul><h3 class="article-body__section" id="section-amazon-alexa-tablet-12-pro-review-specs"><span>Amazon Alexa Tablet 12 Pro review: Specs</span></h3><div ><table><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>Amazon Alexa Tablet 12 Pro (starting)</strong></p></td><td  ><p><strong>Amazon Alexa Tablet 12 Pro (tested)</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p>$499</p></td><td  ><p>$679</p></td></tr><tr><td class="firstcol " ><p><strong>Display</strong></p></td><td  ><p>12-inch | 2800 x 1840 | 120Hz | 3:2 aspect ratio</p></td><td  ><p>12-inch | 2800 x 1840 | 120Hz | 3:2 aspect ratio</p></td></tr><tr><td class="firstcol " ><p><strong>Chip</strong></p></td><td  ><p>MediaTek Dimensity 8400 </p></td><td  ><p>MediaTek Dimensity 8400 </p></td></tr><tr><td class="firstcol " ><p><strong>Memory</strong></p></td><td  ><p>8GB</p></td><td  ><p>16GB</p></td></tr><tr><td class="firstcol " ><p><strong>Storage</strong></p></td><td  ><p>128GB</p></td><td  ><p>256GB</p></td></tr><tr><td class="firstcol " ><p><strong>Cameras</strong></p></td><td  ><p>8MP front camera | 13MP rear camera (both w 1080p video)</p></td><td  ><p>8MP front camera | 13MP rear camera (both w 1080p video)</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>Wi-Fi 6, Bluetooth 5.3</p></td><td  ><p>Wi-Fi 6, Bluetooth 5.3</p></td></tr><tr><td class="firstcol " ><p><strong>Ports</strong></p></td><td  ><p>1x USB-C</p></td><td  ><p>1x USB-C</p></td></tr><tr><td class="firstcol " ><p><strong>Size</strong></p></td><td  ><p>10.66 x 7.24 x 0.26 inches </p></td><td  ><p>10.66 x 7.24 x 0.26 inches </p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>1.2 pounds</p></td><td  ><p>1.2 pounds</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-amazon-alexa-tablet-12-pro-review-the-ups"><span>Amazon Alexa Tablet 12 Pro review: The ups</span></h3><p>The Alexa Tablet 12 Pro has a lot to offer, thanks to its superb display, sleek design, long battery life, and smart Alexa integration.</p><h2 id="sleek-design">Sleek 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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="jGmcsAoWw4HxeLsCS97tcU" name="Alexa Tablet 12 Pro-7" alt="Amazon Alexa Tablet 12 Pro" src="https://cdn.mos.cms.futurecdn.net/jGmcsAoWw4HxeLsCS97tcU-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>Amazon didn’t reinvent the wheel of tablet design, as the Alexa Tablet has the basic form of modern-day slates. That said, it’s a beautiful aluminum slab with a slim profile and elegant curves. The all-black chassis also gives the tablet an air of sophistication.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="syYWdMhG4BZ9YNkustUBES" name="Alexa Tablet 12 Pro-6" alt="Amazon Alexa Tablet 12 Pro" src="https://cdn.mos.cms.futurecdn.net/syYWdMhG4BZ9YNkustUBES-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 design is decidedly minimalist. In landscape, the power button sits on the top-left edge, while the volume buttons sit on the top-left corner. The 8MP front camera lies right in the center, along the thin bezel. On the back, you’ll find the 13MP rear camera and the Alexa logo. Like most modern tablets, it has a single USB-C port on the right side, or bottom if you’re holding the tablet in portrait mode.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="HyuP2scCa5FGVn2eW4mDcY" name="Alexa Tablet 12 Pro-9" alt="Amazon Alexa Tablet 12 Pro" src="https://cdn.mos.cms.futurecdn.net/HyuP2scCa5FGVn2eW4mDcY-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>Speakers flank the left and right sides, and they’re pretty good for tablet audio. Dialogue-heavy podcasts and videos sound great, with clear, distinct voices. The speakers also do a good job with movies and TV shows that feature a wide range of audio. And while music can lack bass, it’s still plenty punchy and clear.</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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="JofdMYaqrjT9D6dvpHkhgZ" name="Alexa Tablet 12 Pro-11" alt="Amazon Alexa Tablet 12 Pro" src="https://cdn.mos.cms.futurecdn.net/JofdMYaqrjT9D6dvpHkhgZ-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 12-inch display on the Alexa Tablet 12 Pro is a wonder to behold. Everything appears crystal clear, thanks to the sharp 2800 x 1840 resolution that brings out even the smallest details. While this isn’t an OLED, it still delivers excellent contrast between dark and light elements. Colors are vivid, and the overall brightness never overwhelms.</p><p>I watched a lot of YouTube videos during my testing, and I loved how the matte display diffused the lighting in my living area. Whether it’s bright and bold animated series like <a href="https://www.tomsguide.com/entertainment/prime-video/invincible-season-4-get-ready-for-the-baddest-villain-ever">Invincible</a> or gritty action shows like <a href="https://www.tomsguide.com/news/best-shows-like-reacher">Reacher</a>, everything looks fantastic. I also appreciate how the matte display on this tablet doesn’t soften color nearly as much as I’ve seen on other devices utilizing similar tech.</p><div ><table><caption>Display benchmark results</caption><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>Alexa Tablet 12 Pro</strong></p></td><td  ><p><strong>Apple iPad (11th gen)</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Nits (brightness)</strong></p></td><td  ><p>547 (SDR) | 555 (HDR)</p></td><td  ><p>506 (SDR) | 496 (HDR) </p></td></tr><tr><td class="firstcol " ><p><strong>sRGB</strong></p></td><td  ><p>109.7%</p></td><td  ><p>108.8% </p></td></tr><tr><td class="firstcol " ><p><strong>DCI-P3</strong></p></td><td  ><p>77.7%</p></td><td  ><p>77.1% </p></td></tr><tr><td class="firstcol " ><p><strong>Delta-E</strong></p></td><td  ><p>0.22</p></td><td  ><p>0.30</p></td></tr></tbody></table></div><p>How did the Alexa Tablet 12 Pro do in our display benchmarks? As you can see above, color reproduction (sRGB and DCI-P3) isn’t oversaturated, and color accuracy (Delta-E) matches other tablets and laptops we’ve tested.</p><p>The numbers line up with my experience, as I found the hues generally looked natural. HDR brightness doesn’t get as high as on other devices, but to my eyes, the brightness was just perfect. Numbers-wise, the Alexa Tablet 12 Pro is comparable to the <a href="https://www.tomsguide.com/computing/ipads/ipad-11-2025-review">Apple iPad 11</a>.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="SRbrcE2xVpabnsQPmGtVUo" name="Alexa Tablet 12 Pro-12" alt="Amazon Alexa Tablet 12 Pro" src="https://cdn.mos.cms.futurecdn.net/SRbrcE2xVpabnsQPmGtVUo-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 display on my review unit has a slightly rough texture that mimics paper, which is great for reading. Speaking of reading, comic books look gorgeous because the matte display slightly mutes colors, creating a more paper-like appearance. If you’re into reading digital comics like I am, this is arguably the best tablet for reading your favorite funnies.</p><h2 id="strong-performance">Strong 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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="xNNSrCUvmDJJk22EnMVHhh" name="Alexa Tablet 12 Pro-25" alt="Amazon Alexa Tablet 12 Pro" src="https://cdn.mos.cms.futurecdn.net/xNNSrCUvmDJJk22EnMVHhh-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 Alexa Tablet 12 Pro delivers solid performance for an Android tablet, thanks to its mid-range MediaTek Dimensity 8400 processor and 8GB of RAM. While this isn’t a workhorse tablet, it generally performs well for web browsing and video streaming. However, I noticed that performance slowed when I opened up multiple Chrome tabs and other apps.</p><div ><table><caption>Performance benchmarks</caption><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>Amazon Alexa Tablet 12 Pro</strong></p></td><td  ><p><strong>Apple iPad (11th gen)</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Geekbench 6 (single-core / multi-core)</strong></p></td><td  ><p>1666 / 6677</p></td><td  ><p>2589 / 6176 </p></td></tr><tr><td class="firstcol " ><p><strong>3DMark Wild Life Extreme Unlimited (score/fps)</strong></p></td><td  ><p>3376 / 20.2</p></td><td  ><p>2623 / 15.7</p></td></tr></tbody></table></div><p>On the Geekbench 6 CPU test, Amazon’s new tablet scored similarly to the Apple iPad 11 in both single- and multi-core performance. These results match my experience: throwing too much at Amazon’s slate makes it struggle.</p><p>You can certainly use this tablet for productivity, especially with its optional peripherals, but it won’t replace a traditional laptop. However, if you’re using Amazon’s slate mainly for entertainment and light work in Google Docs, its performance won’t disappoint.</p><h2 id="long-battery-life">Long 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="cRxrXz4eK8NrQSTkCwBCen" name="Alexa Tablet 12 Pro-23" alt="Amazon Alexa Tablet 12 Pro" src="https://cdn.mos.cms.futurecdn.net/cRxrXz4eK8NrQSTkCwBCen-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 Alexa Tablet 12 Pro delivers excellent battery life. In our battery life test, which involves continuous web surfing over Wi-Fi with the display set to 150 nits of brightness, the tablet endured for an astonishing 13 hours and 17 minutes! As you can see below, that’s almost two hours longer than the iPad 11.</p><div ><table><caption>Battery life test</caption><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>Time (hours:mins)</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Amazon Alexa Tablet 12 Pro</strong></p></td><td  ><p>13:17</p></td></tr><tr><td class="firstcol " ><p><strong>Apple iPad (11th gen)</strong></p></td><td  ><p>11:25</p></td></tr></tbody></table></div><p>During a stay-at-home weekend, when I sporadically watched YouTube videos and read comics and novels with the display at 70% brightness, the tablet generally dropped from 80% battery to the low 40s over 16 hours.</p><p>On weeknights when I’m only home in the evening, the battery drops by about 10% over four hours of use. This is more than enough for all-day usage!</p><h2 id="seamless-amazon-ecosystem-integration">Seamless Amazon ecosystem integration</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="TTJ34AboNJvXVtfq6MVpC6" name="Alexa Tablet 12 Pro-5" alt="Amazon Alexa Tablet 12 Pro" src="https://cdn.mos.cms.futurecdn.net/TTJ34AboNJvXVtfq6MVpC6-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 Alexa Tablet 12 Pro works great as a standalone slate, but it really shines as a hub for your Amazon devices and apps. As Amazon says, the tablet has the intelligence of Alexa+ and has built-in access to Google Play Store apps. And naturally, the tablet also works well as a Kindle.</p><p>I own an Amazon Echo Dot and have two smart lights that support Alexa. When I was winding down for the night, I could dim the lights right on the tablet instead of pulling out my phone to open the Alexa app. And if I wanted to fire up a song on my Echo Dot, I either typed or vocalized the request to the tablet. All of this was relatively seamless. If you don’t care to chat with Alexa, you can go into settings to swap to Google or Bing’s respective voice assistants.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="gVEZ9NujTfuxj3RyS2yFbf" name="Alexa Tablet 12 Pro-24" alt="Amazon Alexa Tablet 12 Pro" src="https://cdn.mos.cms.futurecdn.net/gVEZ9NujTfuxj3RyS2yFbf-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’m a fan of Kindles, so I loved using this tablet as another Kindle device. When you open the Kindle app, a fun wave-like animation washes across the screen. This isn’t just for show, as the tablet instantly lowers blue light and disables notifications to replicate the Kindle reading experience. This also helps extend battery life. I also like that it has three visual modes: full color, muted colors like on a <a href="https://www.tomsguide.com/computing/e-readers/kindle-colorsoft-2026-review">Kindle Colorsoft</a>, or full black and white.</p><p>If you own a lot of Alexa-supported devices, this Alexa tablet does a nice job of letting you control them all. It serves that purpose well, but it might not be a feature for everyone, which leads us into the next section…</p><h2 id="sharp-cameras">Sharp cameras</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:75.00%;"><img id="W9MWh8NbSFjQ3xjH9WsPEG" name="Alexa Tablet 12 Pro front camera" alt="Amazon Alexa Tablet 12 Pro" src="https://cdn.mos.cms.futurecdn.net/W9MWh8NbSFjQ3xjH9WsPEG-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1920" 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 you want to look your best on video calls or snap some photos, the tablet’s front and rear cameras are up to the task. The front 8MP camera captures details of my face, clothing, and background, as you can see above.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:75.00%;"><img id="LSsmecC4i56gk9Mh93TCuR" name="Alexa Tablet 12 Pro back camera" alt="Amazon Alexa Tablet 12 Pro" src="https://cdn.mos.cms.futurecdn.net/LSsmecC4i56gk9Mh93TCuR-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1920" 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>Then there’s the 13MP back camera, which also captures details nicely. While I wouldn’t personally use a tablet to take selfies or capture video, I’m impressed by the strong resolution both cameras deliver.</p><h3 class="article-body__section" id="section-amazon-alexa-tablet-12-pro-review-the-downs"><span>Amazon Alexa Tablet 12 Pro review: The downs</span></h3><p>While the Amazon Alexa Tablet 12 Pro is a great Android tablet, it has its drawbacks.</p><h2 id="for-amazon-users-only">For Amazon users only</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="tnP9nTjmQss2C6Q2jyWFDZ" name="Alexa Tablet 12 Pro-4" alt="Amazon Alexa Tablet 12 Pro" src="https://cdn.mos.cms.futurecdn.net/tnP9nTjmQss2C6Q2jyWFDZ-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>This is a very Alexa-centric tablet. That's clear the moment you see the home screen, where you’ll find an assortment of Amazon apps like Prime Video, Audible, Kindle, the Silk browser… and even Luna!</p><p>And since it runs on Android, you can also quickly access a slew of Google apps. If that wasn’t enough, UI elements like an Alexa+ widget in the bottom-right corner also remind you that this is an Alexa device.</p><p>All of this can be extremely handy for folks who often utilize Amazon and Google apps. I use many of the latter and several of the former, and it’s nice being able to access those apps quickly. However, if you’re not invested in the Amazon ecosystem, they might as well be bloatware, especially if you just want a no-frills Android tablet.</p><p>Speaking of Android, it’s still not nearly as snappy and consistent as <a href="https://www.tomsguide.com/computing/vr-ar/ipados-27-everything-coming-to-the-apples-beloved-tablets">iPadOS</a>. There is always a slight bit of delay when scrolling through pages on sites and apps. I also had some apps take forever to load or completely crash unexpectedly. Those instances aren’t frequent, but they happen far more often than they do on an iPad.</p><h2 id="expensive-peripherals">Expensive peripherals</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="AzZGtXeyUF9yMbYBef5cd4" name="Alexa Tablet 12 Pro-LIST1" alt="Amazon Alexa Tablet 12 Pro" src="https://cdn.mos.cms.futurecdn.net/AzZGtXeyUF9yMbYBef5cd4-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 get even more use from the Alexa Tablet 12 Pro, you can purchase the Alexa Pro Keyboard and Alexa Pro Pen.</p><p>The Pro Keyboard isn't just for typing; it also doubles as a protective case for the tablet. This peripheral has a leather-like texture that feels good against your fingers and palms. The membrane keys are better than you’d expect for a tablet keyboard, with nice travel distance and even spacing. I don’t have problems typing on this keyboard, even with my big hands. I also like the dedicated Alexa button beside the arrow keys that instantly brings up the AI assistant.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Uo5W9NiuW4e63q4n6wQ76D" name="Alexa Tablet 12 Pro-19" alt="Amazon Alexa Tablet 12 Pro" src="https://cdn.mos.cms.futurecdn.net/Uo5W9NiuW4e63q4n6wQ76D-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 Pro Pen is a pretty great stylus, having a similar weight and feel to an Apple Pencil Pro. Thanks to the tablet’s matte texture, writing with the stylus (almost) feels like writing on paper. Writing notes in the margins of a Kindle book is almost identical to doing the same action on a Kindle Scribe — which makes sense given how they’re both Amazon devices.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Lo8sZjUTNjoPjKLSsfN86H" name="Alexa Tablet 12 Pro-15" alt="Amazon Alexa Tablet 12 Pro" src="https://cdn.mos.cms.futurecdn.net/Lo8sZjUTNjoPjKLSsfN86H-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 I think the Pro Keyboard and Pro Pen are excellent peripherals, they’re both pretty expensive — the former costs $149 and the latter $89. There’s currently a $799 bundle that saves you $120, but that’s still a steep price to pay on top of the tablet.</p><h3 class="article-body__section" id="section-amazon-alexa-tablet-12-pro-review-verdict"><span>Amazon Alexa Tablet 12 Pro review: Verdict</span></h3><p>I enjoyed my time with the Amazon Alexa Tablet 12 Pro, as it’s a far better slate than I expected. Sure, Android can be somewhat sluggish, and I've rarely (if ever) needed to interact with Alexa+, but the excellent hardware ultimately won me over. The design is perfect, and the Nanomatte display makes for a wonderful viewing and reading experience. I also love how this tablet doubles as a Kindle.</p><p>Serious Alexa or Google users will find a lot to like about the Alexa Tablet 12 Pro. If you don’t fall into that category, the iPad 11 offers a more responsive, stable operating system and has almost all the apps and services on the Alexa Tablet 12 Pro. But if you liked what I had to say about this slate, then you should consider checking it out. You might end up loving it as much as I have!</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I used the new Kindle (2026) for a week — and it’s the best entry-level ereader yet ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The Amazon Kindle (2026) delivers several meaningful updates for Amazon’s popular e-reader. And while these upgrades make for a more pleasant reading experience, they come at a steeper price for this entry-level model.</p><p>Unlike the <a href="https://www.tomsguide.com/tablets/e-readers/kindle-2024-review">Amazon Kindle (2024)</a> and prior iterations, the new Kindle features a flush display for a streamlined look, similar to the Kindle Paperwhite and Kindle Colorsoft. Like those two higher-end models, you can upgrade to a Kindle with an aluminum design. The power button is now on the right-hand side of the device instead of at the bottom.</p><p>This is certainly one of the <a href="https://www.tomsguide.com/us/best-e-readers,review-2766.html">best Kindles</a>, but it’s not perfect. The main sticking point is the new $149 asking price — which is a lot for an e-reader without adjustable warm light. The new plastic design no longer feels cheap, but even that doesn’t make the $40 price bump easier to swallow. And if you want the aluminum version, prepare to pay $189.</p><p>If you’re brand-new to Kindles and want to see what they’re all about, the asking price might be worth it, since it still delivers a fantastic e-reading experience and a robust digital library. However, if you own an older model, you won’t miss much by skipping this iteration. Find out more in my full review of the Kindle (2026).</p><h3 class="article-body__section" id="section-amazon-kindle-2026-review-cheat-sheet"><span>Amazon Kindle (2026) review: Cheat sheet</span></h3><ul><li><strong>What is it?</strong> The new entry-level Kindle model, now featuring a more flush display, a new power button location, and an optional aluminum design.</li><li><strong>Who is it for?</strong> For those with very old Kindles or who want an aluminum Kindle.</li><li><strong>What does it cost?</strong> The new Kindle (2026) <a href="https://www.amazon.com/dp/B0FXJ9PGSJ?ref=amzdv_ucc_dp_lod_B0FZD5SKRS_B0FXJ8VZ39&amp;th=1" target="_blank" rel="nofollow">starts at $149 on Amazon</a>. This model has 16GB of storage and is lockscreen ad-supported — which you can remove for an extra $20. The $189 aluminum model isn’t ad-supported and packs 32GB of storage.</li><li><strong>What do we like?</strong> We like the streamlined, uniform design, easy portability, sharp 6-inch display, and the optional aluminum design.</li><li><strong>What don’t we like?</strong> We don’t like the $50 price hike and the lack of adjustable warm light.</li></ul><h3 class="article-body__section" id="section-amazon-kindle-2026-review-specs"><span>Amazon Kindle (2026) review: Specs</span></h3><div ><table><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>Kindle 2026 (starting)</strong></p></td><td  ><p><strong>Kindle 2026 (aluminum)</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p>$149</p></td><td  ><p>$189</p></td></tr><tr><td class="firstcol " ><p><strong>Display</strong></p></td><td  ><p>6-inch 300ppi</p></td><td  ><p>6-inch 300ppi</p></td></tr><tr><td class="firstcol " ><p><strong>Storage</strong></p></td><td  ><p>16GB</p></td><td  ><p>32GB</p></td></tr><tr><td class="firstcol " ><p><strong>Front light</strong></p></td><td  ><p>Yes (no warm light)</p></td><td  ><p>Yes (no warm light)</p></td></tr><tr><td class="firstcol " ><p><strong>Battery life</strong></p></td><td  ><p>6 weeks (rated)</p></td><td  ><p>6 weeks (rated)</p></td></tr><tr><td class="firstcol " ><p><strong>Ports</strong></p></td><td  ><p>1x USB-C</p></td><td  ><p>1x USB-C</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>Wi-Fi</p></td><td  ><p>Wi-Fi</p></td></tr><tr><td class="firstcol " ><p><strong>Waterproof</strong></p></td><td  ><p>No</p></td><td  ><p>No</p></td></tr><tr><td class="firstcol " ><p><strong>Colors</strong></p></td><td  ><p>Graphite, Ube</p></td><td  ><p>Alpine Sky Aluminum, Seaglass Green Aluminum </p></td></tr><tr><td class="firstcol " ><p><strong>Dimensions</strong></p></td><td  ><p>4.3 x 6.0 x 0.3 inches</p></td><td  ><p>4.3 x 6.0 x 0.3 inches</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>4.9 oz</p></td><td  ><p>5.7 oz</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-amazon-kindle-2026-review-the-ups"><span>Amazon Kindle (2026) review: The ups</span></h3><p>There’s a lot to like about the new Kindle, including its sharp, flush display, streamlined, portable design, snappy interface, and long battery life.</p><h2 id="streamlined-design">Streamlined 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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="UnV3FxmxvH3Q3cCXSnnmbB" name="Kindle 2026-7" alt="Amazon Kindle 2026" src="https://cdn.mos.cms.futurecdn.net/UnV3FxmxvH3Q3cCXSnnmbB-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 new Kindle has been streamlined with more rounded edges and a slightly thinner profile. The most immediate difference is that the display is now flush with the bezels, so there’s no longer a gap between them. Thanks to these changes, the Kindle now appears closer to the <a href="https://www.tomsguide.com/tablets/e-readers/kindle-paperwhite-2024-review">Paperwhite</a> and <a href="https://www.tomsguide.com/computing/e-readers/kindle-colorsoft-2026-review">Colorsoft</a>, just smaller.</p><p>This Kindle has a plastic chassis, but it feels more premium thanks to its slightly rougher texture and rigidity. That “hollow” sound you’d experience when tapping the tablet’s back is completely gone. The bezels are generally the same size as before, especially the larger bottom one where you’d generally place your thumb when reading.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="UBLhbWtAtHMVNeKeR9cDWo" name="Kindle 2026-13" alt="Amazon Kindle 2026" src="https://cdn.mos.cms.futurecdn.net/UBLhbWtAtHMVNeKeR9cDWo-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 other big change is that the power button has been repositioned from the bottom to the right-hand side. The <a href="https://www.tomsguide.com/computing/e-readers/kindle-scribe-2025-review">Kindle Scribe</a> also has its power button in the same location, so it’s good to see this and the other new Kindles follow suit. Not accidentally pressing the power button is a huge game-changer, and I’m glad Amazon finally fixed it.</p><p>My review unit came in the new Ube color, which is a fancy name for purple. Graphite (or black) is good for a more traditional look, but I’m a fan of Ube since it gives the Kindle some flair.</p><p>I also tested the aluminum model, and it's my favorite to hold because it feels like a smartphone. This model weighs slightly more than the non-aluminum model, but it doesn’t feel uncomfortable to hold even over long periods.</p><h2 id="sharp-display-2">Sharp 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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="yGZ2UPcHvebJsq7kkQ6vnH" name="Kindle 2026-LIST2" alt="Amazon Kindle 2026" src="https://cdn.mos.cms.futurecdn.net/yGZ2UPcHvebJsq7kkQ6vnH-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>Aside from the flush design, the display is virtually identical to the previous one, with its 6-inch size and 300ppi resolution. This resolution matches that of the larger Kindles, so you still get a reading experience that’s pleasing and easy on the eyes.</p><p>There’s no adjustable warm light (more on that later), but as before, you can turn the brightness up fairly high or turn it off completely. But whether you read with the front lights on or off, the black text on white backgrounds looks sharp and defined. The same is true in dark mode. If you find it hard to read, you can always go into a book’s settings to adjust the font size, font type, line spacing, and more.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="3BFAGAZJo6iRx7SG82gkp8" name="Kindle 2026-8" alt="Amazon Kindle 2026" src="https://cdn.mos.cms.futurecdn.net/3BFAGAZJo6iRx7SG82gkp8-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’s a slight drawback for comic book fans. Unless you have excellent vision or don’t mind pinching and zooming, you’re going to have a hard time reading your favorite stories on this device due to the 6-inch screen. Manga, with its larger panels and often fewer dialogue balloons, fares a bit better, but the Kindle is best for reading standard text.</p><p>Lastly, while Amazon advertises that the Kindle has a glare-free display, that’s not entirely accurate. Don’t get me wrong, you get significantly less glare on this device than you would on a tablet with a glossy display. However, if you’re under direct sunlight, you’ll still see a diffuse glare. If that happens, you’ll need to adjust your viewing angle to compensate for the glare—or find a nice shaded area.</p><h2 id="long-battery-life-2">Long 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="ywb4xeifRMzh8nscDPMMuN" name="Kindle 2026-9" alt="Amazon Kindle 2026" src="https://cdn.mos.cms.futurecdn.net/ywb4xeifRMzh8nscDPMMuN-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>One of the best things about Kindles is their epic battery life, and this one is no different. Amazon says you can get 6 weeks of battery life on this device. While I haven’t used it long enough to test that claim, I expect this Kindle will last just as long on a single charge as older models I’ve used.</p><p>To get the 6 weeks of battery Amazon touts, you’ll need to shut off wireless, read about 30 minutes per day, and keep the backlight at 13. If you’re an avid reader, then you’ll likely read for much longer per day. You might also want to bump up the brightness. This will drain the battery faster, but you’ll likely still get a good two or three weeks before you need to recharge.</p><p>As for me, I read about an hour on a weekday and about two to three hours a day on the weekend, with the backlight off and Wi-Fi enabled. I’ve used the Kindle for about a week, and the battery is around 83%, down from 95% when I began reading. Doing the math, it’ll likely be a few more weeks before I have to recharge, which is awesome.</p><h2 id="excellent-kindle-experience">Excellent Kindle 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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="PWSTEb78Wkq94dGHkEbAEV" name="Kindle 2026-15" alt="Amazon Kindle 2026" src="https://cdn.mos.cms.futurecdn.net/PWSTEb78Wkq94dGHkEbAEV-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>If you’re familiar with Kindles, then you’ll be at home here, as it’s largely the same experience as before.</p><p>On the Home page, you’ll see a list of all the books you’re currently reading or have recently purchased from Amazon’s site or your Kindle. Directly below that is a “Top Picks For You” section that features books similar to those in your library. The same is true for the top Kindle Unlimited and other sections further down. For the most part, the recommendations are pretty spot on.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="v9RGzBy3cGUj5ZPHNEyERb" name="Kindle 2026-17" alt="Amazon Kindle 2026" src="https://cdn.mos.cms.futurecdn.net/v9RGzBy3cGUj5ZPHNEyERb-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 Kindle's dropdown menu is the main hub for enabling settings such as airplane mode, <a href="https://www.tomsguide.com/tag/bluetooth">Bluetooth</a>, sync, brightness, and dark mode. You can also jump to the settings page from here. In the settings menu, you can view device information and wireless settings, but don't expect the kind of robust settings menu found on the <a href="https://www.tomsguide.com/best-picks/best-phones">best phones</a>.</p><p>You get more options when you’re actually reading a book, as I mentioned before. Beyond those, you can skip to specific chapters, highlight words or sections, get dictionary definitions, and more. The dictionary feature is especially handy when reading old books with unfamiliar words.</p><p>Kindle store and Goodreads integrations are present, and they’re a nice way to easily purchase your next read or update friends on your book progress (respectively). Some aren’t fond of Goodreads, but it’s one of my favorite social platforms—and a good way to track how many books I’ve read each year.</p><h3 class="article-body__section" id="section-amazon-kindle-2026-review-the-downs"><span>Amazon Kindle (2026) review: The downs</span></h3><p>Though I’m a big fan of the Kindle, it has some flaws worth discussing.</p><h2 id="steeper-asking-price">Steeper asking 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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ipzNkVNAUUUMv8s3FTePka" name="Kindle 2026-6" alt="Amazon Kindle 2026" src="https://cdn.mos.cms.futurecdn.net/ipzNkVNAUUUMv8s3FTePka-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>One of the entry-level Kindle’s main selling points was its relative affordability. While the new Kindle isn’t exorbitantly priced, it still stings that it costs $40 more than the previous model.</p><p>I can’t say the higher asking price won’t be worth it to everyone, as the upgrades do make for a better e-reader. However, as much as I appreciate the new chassis, repositioned power button, and flush display, they’re not essential — especially if you’re happy with the Kindle you own.</p><p>Amazon always has Kindle sales, especially during Black Friday or its own Amazon Prime Day events. So my advice is to wait for one of those times if you’re considering buying a new Kindle.</p><h2 id="no-warm-light-option">No warm light option</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="h9M3jNouY3fBcAYJKPGNdg" name="Kindle 2026-11" alt="Amazon Kindle 2026" src="https://cdn.mos.cms.futurecdn.net/h9M3jNouY3fBcAYJKPGNdg-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>People weren’t happy that previous basic Kindles lacked adjustable warm light like the Paperwhite and Colorsoft. I always forgave this due to the Kindle’s relative affordability. However, at the new $149 sticker price, I think this should have been standard.</p><p>If you’re like me and mostly read with the Kindle’s lights off while sitting by an external light source, then you won’t miss adjustable warm light. But if you need a front-lit screen to help you read and you’re trying to minimize your exposure to blue light, you might be frustrated that you don’t have the warm light option.</p><h3 class="article-body__section" id="section-amazon-kindle-2026-review-verdict"><span>Amazon Kindle (2026) review: Verdict</span></h3><p>The basic Kindle is now more like its larger siblings, which is both a blessing and a curse. The flush display and sturdy design make it feel more premium. Objectively, this is the finest Kindle yet. However, those upgrades come at a cost, which puts the once super-affordable Kindle closer in price to the Paperwhite and Colorsoft — though those are also more expensive than before.</p><p>That said, if the price doesn’t deter you and you want a top-of-the-line basic Kindle, you won’t go wrong with this model. This is especially true if you splurge on the $189 aluminum model. If you’re using a Kindle that’s half a decade old, or if you’re brand-new to the Kindle ecosystem, you’ll be impressed by what this small wonder offers.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/e-readers/amazon-kindle-2026-review</link>
                                                                            <description>
                            <![CDATA[ The Kindle (2026) updates Amazon's entry-level e-reader with a flush display and thinner design. Although it costs $40 more, it's still a fantastic device. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">3AEqaZYUVkXUA9CFZevL8Z</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/C9YKXkseKZYvDd9wgBZCJg-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 24 Oct 2026 11:00:00 +0000</pubDate>                                                                                                                                <updated>Mon, 26 Oct 2026 17:39:40 +0000</updated>
                                                                                                                                            <category><![CDATA[E-Readers]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Tablets]]></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/C9YKXkseKZYvDd9wgBZCJg-1920-80.jpg">
                                                            <media:credit><![CDATA[Tom&amp;#39;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Amazon Kindle 2026]]></media:description>                                                            <media:text><![CDATA[Amazon Kindle 2026]]></media:text>
                                <media:title type="plain"><![CDATA[Amazon Kindle 2026]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/C9YKXkseKZYvDd9wgBZCJg-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The Amazon Kindle (2026) delivers several meaningful updates for Amazon’s popular e-reader. And while these upgrades make for a more pleasant reading experience, they come at a steeper price for this entry-level model.</p><p>Unlike the <a href="https://www.tomsguide.com/tablets/e-readers/kindle-2024-review">Amazon Kindle (2024)</a> and prior iterations, the new Kindle features a flush display for a streamlined look, similar to the Kindle Paperwhite and Kindle Colorsoft. Like those two higher-end models, you can upgrade to a Kindle with an aluminum design. The power button is now on the right-hand side of the device instead of at the bottom.</p><p>This is certainly one of the <a href="https://www.tomsguide.com/us/best-e-readers,review-2766.html">best Kindles</a>, but it’s not perfect. The main sticking point is the new $149 asking price — which is a lot for an e-reader without adjustable warm light. The new plastic design no longer feels cheap, but even that doesn’t make the $40 price bump easier to swallow. And if you want the aluminum version, prepare to pay $189.</p><p>If you’re brand-new to Kindles and want to see what they’re all about, the asking price might be worth it, since it still delivers a fantastic e-reading experience and a robust digital library. However, if you own an older model, you won’t miss much by skipping this iteration. Find out more in my full review of the Kindle (2026).</p><h3 class="article-body__section" id="section-amazon-kindle-2026-review-cheat-sheet"><span>Amazon Kindle (2026) review: Cheat sheet</span></h3><ul><li><strong>What is it?</strong> The new entry-level Kindle model, now featuring a more flush display, a new power button location, and an optional aluminum design.</li><li><strong>Who is it for?</strong> For those with very old Kindles or who want an aluminum Kindle.</li><li><strong>What does it cost?</strong> The new Kindle (2026) <a href="https://www.amazon.com/dp/B0FXJ9PGSJ?ref=amzdv_ucc_dp_lod_B0FZD5SKRS_B0FXJ8VZ39&amp;th=1" target="_blank" rel="nofollow">starts at $149 on Amazon</a>. This model has 16GB of storage and is lockscreen ad-supported — which you can remove for an extra $20. The $189 aluminum model isn’t ad-supported and packs 32GB of storage.</li><li><strong>What do we like?</strong> We like the streamlined, uniform design, easy portability, sharp 6-inch display, and the optional aluminum design.</li><li><strong>What don’t we like?</strong> We don’t like the $50 price hike and the lack of adjustable warm light.</li></ul><h3 class="article-body__section" id="section-amazon-kindle-2026-review-specs"><span>Amazon Kindle (2026) review: Specs</span></h3><div ><table><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>Kindle 2026 (starting)</strong></p></td><td  ><p><strong>Kindle 2026 (aluminum)</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p>$149</p></td><td  ><p>$189</p></td></tr><tr><td class="firstcol " ><p><strong>Display</strong></p></td><td  ><p>6-inch 300ppi</p></td><td  ><p>6-inch 300ppi</p></td></tr><tr><td class="firstcol " ><p><strong>Storage</strong></p></td><td  ><p>16GB</p></td><td  ><p>32GB</p></td></tr><tr><td class="firstcol " ><p><strong>Front light</strong></p></td><td  ><p>Yes (no warm light)</p></td><td  ><p>Yes (no warm light)</p></td></tr><tr><td class="firstcol " ><p><strong>Battery life</strong></p></td><td  ><p>6 weeks (rated)</p></td><td  ><p>6 weeks (rated)</p></td></tr><tr><td class="firstcol " ><p><strong>Ports</strong></p></td><td  ><p>1x USB-C</p></td><td  ><p>1x USB-C</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>Wi-Fi</p></td><td  ><p>Wi-Fi</p></td></tr><tr><td class="firstcol " ><p><strong>Waterproof</strong></p></td><td  ><p>No</p></td><td  ><p>No</p></td></tr><tr><td class="firstcol " ><p><strong>Colors</strong></p></td><td  ><p>Graphite, Ube</p></td><td  ><p>Alpine Sky Aluminum, Seaglass Green Aluminum </p></td></tr><tr><td class="firstcol " ><p><strong>Dimensions</strong></p></td><td  ><p>4.3 x 6.0 x 0.3 inches</p></td><td  ><p>4.3 x 6.0 x 0.3 inches</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>4.9 oz</p></td><td  ><p>5.7 oz</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-amazon-kindle-2026-review-the-ups"><span>Amazon Kindle (2026) review: The ups</span></h3><p>There’s a lot to like about the new Kindle, including its sharp, flush display, streamlined, portable design, snappy interface, and long battery life.</p><h2 id="streamlined-design">Streamlined 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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="UnV3FxmxvH3Q3cCXSnnmbB" name="Kindle 2026-7" alt="Amazon Kindle 2026" src="https://cdn.mos.cms.futurecdn.net/UnV3FxmxvH3Q3cCXSnnmbB-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 new Kindle has been streamlined with more rounded edges and a slightly thinner profile. The most immediate difference is that the display is now flush with the bezels, so there’s no longer a gap between them. Thanks to these changes, the Kindle now appears closer to the <a href="https://www.tomsguide.com/tablets/e-readers/kindle-paperwhite-2024-review">Paperwhite</a> and <a href="https://www.tomsguide.com/computing/e-readers/kindle-colorsoft-2026-review">Colorsoft</a>, just smaller.</p><p>This Kindle has a plastic chassis, but it feels more premium thanks to its slightly rougher texture and rigidity. That “hollow” sound you’d experience when tapping the tablet’s back is completely gone. The bezels are generally the same size as before, especially the larger bottom one where you’d generally place your thumb when reading.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="UBLhbWtAtHMVNeKeR9cDWo" name="Kindle 2026-13" alt="Amazon Kindle 2026" src="https://cdn.mos.cms.futurecdn.net/UBLhbWtAtHMVNeKeR9cDWo-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 other big change is that the power button has been repositioned from the bottom to the right-hand side. The <a href="https://www.tomsguide.com/computing/e-readers/kindle-scribe-2025-review">Kindle Scribe</a> also has its power button in the same location, so it’s good to see this and the other new Kindles follow suit. Not accidentally pressing the power button is a huge game-changer, and I’m glad Amazon finally fixed it.</p><p>My review unit came in the new Ube color, which is a fancy name for purple. Graphite (or black) is good for a more traditional look, but I’m a fan of Ube since it gives the Kindle some flair.</p><p>I also tested the aluminum model, and it's my favorite to hold because it feels like a smartphone. This model weighs slightly more than the non-aluminum model, but it doesn’t feel uncomfortable to hold even over long periods.</p><h2 id="sharp-display-2">Sharp 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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="yGZ2UPcHvebJsq7kkQ6vnH" name="Kindle 2026-LIST2" alt="Amazon Kindle 2026" src="https://cdn.mos.cms.futurecdn.net/yGZ2UPcHvebJsq7kkQ6vnH-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>Aside from the flush design, the display is virtually identical to the previous one, with its 6-inch size and 300ppi resolution. This resolution matches that of the larger Kindles, so you still get a reading experience that’s pleasing and easy on the eyes.</p><p>There’s no adjustable warm light (more on that later), but as before, you can turn the brightness up fairly high or turn it off completely. But whether you read with the front lights on or off, the black text on white backgrounds looks sharp and defined. The same is true in dark mode. If you find it hard to read, you can always go into a book’s settings to adjust the font size, font type, line spacing, and more.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="3BFAGAZJo6iRx7SG82gkp8" name="Kindle 2026-8" alt="Amazon Kindle 2026" src="https://cdn.mos.cms.futurecdn.net/3BFAGAZJo6iRx7SG82gkp8-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’s a slight drawback for comic book fans. Unless you have excellent vision or don’t mind pinching and zooming, you’re going to have a hard time reading your favorite stories on this device due to the 6-inch screen. Manga, with its larger panels and often fewer dialogue balloons, fares a bit better, but the Kindle is best for reading standard text.</p><p>Lastly, while Amazon advertises that the Kindle has a glare-free display, that’s not entirely accurate. Don’t get me wrong, you get significantly less glare on this device than you would on a tablet with a glossy display. However, if you’re under direct sunlight, you’ll still see a diffuse glare. If that happens, you’ll need to adjust your viewing angle to compensate for the glare—or find a nice shaded area.</p><h2 id="long-battery-life-2">Long 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="ywb4xeifRMzh8nscDPMMuN" name="Kindle 2026-9" alt="Amazon Kindle 2026" src="https://cdn.mos.cms.futurecdn.net/ywb4xeifRMzh8nscDPMMuN-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>One of the best things about Kindles is their epic battery life, and this one is no different. Amazon says you can get 6 weeks of battery life on this device. While I haven’t used it long enough to test that claim, I expect this Kindle will last just as long on a single charge as older models I’ve used.</p><p>To get the 6 weeks of battery Amazon touts, you’ll need to shut off wireless, read about 30 minutes per day, and keep the backlight at 13. If you’re an avid reader, then you’ll likely read for much longer per day. You might also want to bump up the brightness. This will drain the battery faster, but you’ll likely still get a good two or three weeks before you need to recharge.</p><p>As for me, I read about an hour on a weekday and about two to three hours a day on the weekend, with the backlight off and Wi-Fi enabled. I’ve used the Kindle for about a week, and the battery is around 83%, down from 95% when I began reading. Doing the math, it’ll likely be a few more weeks before I have to recharge, which is awesome.</p><h2 id="excellent-kindle-experience">Excellent Kindle 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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="PWSTEb78Wkq94dGHkEbAEV" name="Kindle 2026-15" alt="Amazon Kindle 2026" src="https://cdn.mos.cms.futurecdn.net/PWSTEb78Wkq94dGHkEbAEV-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>If you’re familiar with Kindles, then you’ll be at home here, as it’s largely the same experience as before.</p><p>On the Home page, you’ll see a list of all the books you’re currently reading or have recently purchased from Amazon’s site or your Kindle. Directly below that is a “Top Picks For You” section that features books similar to those in your library. The same is true for the top Kindle Unlimited and other sections further down. For the most part, the recommendations are pretty spot on.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="v9RGzBy3cGUj5ZPHNEyERb" name="Kindle 2026-17" alt="Amazon Kindle 2026" src="https://cdn.mos.cms.futurecdn.net/v9RGzBy3cGUj5ZPHNEyERb-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 Kindle's dropdown menu is the main hub for enabling settings such as airplane mode, <a href="https://www.tomsguide.com/tag/bluetooth">Bluetooth</a>, sync, brightness, and dark mode. You can also jump to the settings page from here. In the settings menu, you can view device information and wireless settings, but don't expect the kind of robust settings menu found on the <a href="https://www.tomsguide.com/best-picks/best-phones">best phones</a>.</p><p>You get more options when you’re actually reading a book, as I mentioned before. Beyond those, you can skip to specific chapters, highlight words or sections, get dictionary definitions, and more. The dictionary feature is especially handy when reading old books with unfamiliar words.</p><p>Kindle store and Goodreads integrations are present, and they’re a nice way to easily purchase your next read or update friends on your book progress (respectively). Some aren’t fond of Goodreads, but it’s one of my favorite social platforms—and a good way to track how many books I’ve read each year.</p><h3 class="article-body__section" id="section-amazon-kindle-2026-review-the-downs"><span>Amazon Kindle (2026) review: The downs</span></h3><p>Though I’m a big fan of the Kindle, it has some flaws worth discussing.</p><h2 id="steeper-asking-price">Steeper asking 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:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ipzNkVNAUUUMv8s3FTePka" name="Kindle 2026-6" alt="Amazon Kindle 2026" src="https://cdn.mos.cms.futurecdn.net/ipzNkVNAUUUMv8s3FTePka-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>One of the entry-level Kindle’s main selling points was its relative affordability. While the new Kindle isn’t exorbitantly priced, it still stings that it costs $40 more than the previous model.</p><p>I can’t say the higher asking price won’t be worth it to everyone, as the upgrades do make for a better e-reader. However, as much as I appreciate the new chassis, repositioned power button, and flush display, they’re not essential — especially if you’re happy with the Kindle you own.</p><p>Amazon always has Kindle sales, especially during Black Friday or its own Amazon Prime Day events. So my advice is to wait for one of those times if you’re considering buying a new Kindle.</p><h2 id="no-warm-light-option">No warm light option</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="h9M3jNouY3fBcAYJKPGNdg" name="Kindle 2026-11" alt="Amazon Kindle 2026" src="https://cdn.mos.cms.futurecdn.net/h9M3jNouY3fBcAYJKPGNdg-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>People weren’t happy that previous basic Kindles lacked adjustable warm light like the Paperwhite and Colorsoft. I always forgave this due to the Kindle’s relative affordability. However, at the new $149 sticker price, I think this should have been standard.</p><p>If you’re like me and mostly read with the Kindle’s lights off while sitting by an external light source, then you won’t miss adjustable warm light. But if you need a front-lit screen to help you read and you’re trying to minimize your exposure to blue light, you might be frustrated that you don’t have the warm light option.</p><h3 class="article-body__section" id="section-amazon-kindle-2026-review-verdict"><span>Amazon Kindle (2026) review: Verdict</span></h3><p>The basic Kindle is now more like its larger siblings, which is both a blessing and a curse. The flush display and sturdy design make it feel more premium. Objectively, this is the finest Kindle yet. However, those upgrades come at a cost, which puts the once super-affordable Kindle closer in price to the Paperwhite and Colorsoft — though those are also more expensive than before.</p><p>That said, if the price doesn’t deter you and you want a top-of-the-line basic Kindle, you won’t go wrong with this model. This is especially true if you splurge on the $189 aluminum model. If you’re using a Kindle that’s half a decade old, or if you’re brand-new to the Kindle ecosystem, you’ll be impressed by what this small wonder offers.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 3 best new to Prime Video shows to binge-watch this weekend —including the return of a Chris Pratt action favorite (Oct. 23-25) ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Are you already fatigued by Halloween content? Yes, the weeks leading up to All Hallows' Eve can feel like a relentless stream of spooky series and sinister flicks, so sometimes we want something a little <em>less</em> in the holiday spirit. Thankfully, <a href="https://www.tomsguide.com/entertainment/streaming/prime-video">Prime Video</a> has plenty of Halloween-free titles for you to enjoy this weekend when you need a break from all of the gore and ghouls. (Though don't worry, the streamer's <a href="https://www.tomsguide.com/entertainment/prime-video/new-on-prime-video-in-october-2026-top-new-movies-and-shows-to-stream-this-month">October 2026 schedule</a> is still jam-packed with horror movies and supernatural dramas, if you're still happily celebrating all things spooky season.) </p><p>First up is the return of the Chris Pratt-led thriller series "<a href="https://www.tomsguide.com/news/the-terminal-list-release-date-and-time-how-to-watch-chris-pratts-new-show-online"><strong>The Terminal List</strong></a>," which promises just as much high-stakes action in its second installment. Rom-com fans can swoon over "<strong>Love in Disguise</strong>," a new South Korean office romance series that follows a conglomerate heir and his new secretary, who just happens to secretly be a former special forces officer now working undercover. </p><p>And if you <em>do</em> want a little taste of Halloween goodness, there's a festive new edition of Britain's "<strong>Last One Laughing</strong>," in which the comedian contestants not only have to keep a straight face but also refrain from screaming or they receive a penalty. </p><p>Without further ado, here are three top picks that are worth streaming on Prime Video this weekend. </p><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="gdR2W4" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><h2 id="39-the-terminal-list-39-season-2">'The Terminal List' season 2</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/sGmhziz9MoE" allowfullscreen=""></iframe></div></div><p><strong>What it’s about: </strong>More than four years after the series' debut on Prime Video, Chris Pratt is back as former Navy SEAL James Reece. With his personal revenge list from season one officially completed, Reece is now a fugitive and hiding out in Mozambique—that is, until the CIA tracks him down and tasks him with taking down a dangerous international terrorist network in exchange for a presidential pardon. His globe-trotting efforts see Reece cross paths with CIA officer Freddy Strain (Gabriel Luna) and slick mercenary Jules Landry (Luke Hemsworth), among others. </p><p><strong>Why you should watch it:</strong> The military thriller series has been a massive hit for the Amazon <a href="https://www.tomsguide.com/us/best-streaming-video-services,review-2625.html">streaming service</a>, especially if you're a fan of similarly tense action-thrillers like "<a href="https://www.tomsguide.com/entertainment/prime-video/alan-ritchson-does-his-best-john-wick-impression-in-a-hyper-violent-reacher-season-4-finale">Reacher</a>" and "Jack Ryan." And season two is only going to get bigger—the eight-episode follow-up will expand Reece's story to exotic international locales, from Europe to the Middle East to North Africa. </p><p><em><strong>Stream </strong></em><a href="https://www.amazon.com/gp/video/detail/B09HYNH8TK" target="_blank" rel="nofollow"><em><strong>"The Terminal List" season 2 on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="39-last-one-laughing-halloween-39">'Last One Laughing: Halloween'</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/v2IksvXLQgo" allowfullscreen=""></iframe></div></div><p><strong>What it’s about: </strong>The UK edition of "Last One Laughing" returns on October 23 on Prime Video, but this time with a Halloween twist. Throughout the four-part special, our famously funny contestants—including Jack Dee, Daisy May Cooper, Phil Wang, Lou Sanders, Reece Shearsmith, Harriet Dyer and Tom Allen, who join series host Jimmy Carr and deputy Roisin Conaty—not only aren't allowed to laugh but also to scream, which is made far more difficult thanks to jump scares and spooky gags throughout. </p><p><strong>Why you should watch it:</strong> The "Last One Laughing" franchise is well-loved by viewers (the comedic competition has a strong 97% Popcornmeter rating on Rotten Tomatoes) thanks to the simple, silly pleasure of watching a group of comedians get locked in a room for hours and try to make each other laugh. Consider the Halloween edition a lighthearted reprieve from the holiday's usually much darker fare. </p><p><em><strong>Stream </strong></em><a href="https://www.amazon.com/dp/B0HFF6VW2D?lv=shuf&amp;yl_hp_np=1&amp;channelId=500&amp;plpRedirect=mhFallback" target="_blank" rel="nofollow"><em><strong>"Last One Laughing: Halloween" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="39-love-in-disguise-39">'Love in Disguise'</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/y7PVVWg6nRk" allowfullscreen=""></iframe></div></div><p><strong>What it’s about: </strong>Equal parts workplace rom-com and mystery series, this 12-episode South Korean comedy stars Seol In-ah as Kang Jae-hee, a former special forces officer turned police detective, who is assigned to investigate cold-blooded conglomerate heir and murder suspect Yoon Yi-jun (Yim Si-wan). To do so, she pulls a Yentl, disguising herself as a man and infiltrating his team as a male secretary to get close to Yi-jun. Things get exponentially more complicated, however, when romantic feelings start developing between the pair. </p><p><strong>Why you should watch it:</strong> "Love in Disguise" was already a hit before it premiered on Prime Video—it's based on the viral web novel and webtoon "Why Don’t You Know It’s a Girl?," which garnered over 8.15 million views. Like its source material, the new rom-com stands out from other genre titles thanks to its fun play on gender dynamics and sexual identity. </p><p><em><strong>Stream </strong></em><a href="https://www.primevideo.com/detail/0INEYNSINLQC82ZUIFLK7VNV09" target="_blank" rel="nofollow"><em><strong>"Love in Disguise" on Prime Video</strong></em></a><em><strong> now</strong></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/entertainment/prime-video/carrie-review-mike-flanagan-proves-theres-more-to-this-story-than-prom-night">Prime Video’s ‘Carrie’ is one of the best shows I’ve seen in 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/5-best-movies-to-stream-on-prime-video-for-halloween-2026">5 best movies to stream on Prime Video for Halloween 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/prime-video-top-10-shows-heres-the-3-worth-binge-watching-this-week-october-21-27">Prime Video top 10 shows — here’s the 3 worth binge-watching this week (October 21-27)</a></li></ul><div data-model-name="Amazon Prime Video" data-widget-type="review" data-widget-title="Today's best streaming deals"></div> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/prime-video/3-best-new-to-prime-video-shows-to-binge-watch-this-weekend-including-the-return-of-a-chris-pratt-action-favorite-oct-23-25</link>
                                                                            <description>
                            <![CDATA[ Planning to binge some shows you’ve never seen before this weekend? Here's our weekly guide to the best new to Prime Video series you should stream right now. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">ACSe5RpNXFf67kPiFkuXi7</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/EuSJxVT8M9g4CuaEmFrUtn-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 23 Oct 2026 16:40:00 +0000</pubDate>                                                                                                                                <updated>Sat, 24 Oct 2026 12:21:23 +0000</updated>
                                                                                                                                            <category><![CDATA[Prime Video]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                    <category><![CDATA[Streaming]]></category>
                                                                                                                    <dc:creator><![CDATA[ Christina Izzo ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/LMncQCRNbbLXxxjbfZJvWE-320-70.jpeg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/EuSJxVT8M9g4CuaEmFrUtn-1920-80.jpg">
                                                            <media:credit><![CDATA[Tom&#039;s Guide/ Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Prime Video logo]]></media:description>                                                            <media:text><![CDATA[Prime Video logo]]></media:text>
                                <media:title type="plain"><![CDATA[Prime Video logo]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/EuSJxVT8M9g4CuaEmFrUtn-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Are you already fatigued by Halloween content? Yes, the weeks leading up to All Hallows' Eve can feel like a relentless stream of spooky series and sinister flicks, so sometimes we want something a little <em>less</em> in the holiday spirit. Thankfully, <a href="https://www.tomsguide.com/entertainment/streaming/prime-video">Prime Video</a> has plenty of Halloween-free titles for you to enjoy this weekend when you need a break from all of the gore and ghouls. (Though don't worry, the streamer's <a href="https://www.tomsguide.com/entertainment/prime-video/new-on-prime-video-in-october-2026-top-new-movies-and-shows-to-stream-this-month">October 2026 schedule</a> is still jam-packed with horror movies and supernatural dramas, if you're still happily celebrating all things spooky season.) </p><p>First up is the return of the Chris Pratt-led thriller series "<a href="https://www.tomsguide.com/news/the-terminal-list-release-date-and-time-how-to-watch-chris-pratts-new-show-online"><strong>The Terminal List</strong></a>," which promises just as much high-stakes action in its second installment. Rom-com fans can swoon over "<strong>Love in Disguise</strong>," a new South Korean office romance series that follows a conglomerate heir and his new secretary, who just happens to secretly be a former special forces officer now working undercover. </p><p>And if you <em>do</em> want a little taste of Halloween goodness, there's a festive new edition of Britain's "<strong>Last One Laughing</strong>," in which the comedian contestants not only have to keep a straight face but also refrain from screaming or they receive a penalty. </p><p>Without further ado, here are three top picks that are worth streaming on Prime Video this weekend. </p><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="gdR2W4" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><h2 id="39-the-terminal-list-39-season-2">'The Terminal List' season 2</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/sGmhziz9MoE" allowfullscreen=""></iframe></div></div><p><strong>What it’s about: </strong>More than four years after the series' debut on Prime Video, Chris Pratt is back as former Navy SEAL James Reece. With his personal revenge list from season one officially completed, Reece is now a fugitive and hiding out in Mozambique—that is, until the CIA tracks him down and tasks him with taking down a dangerous international terrorist network in exchange for a presidential pardon. His globe-trotting efforts see Reece cross paths with CIA officer Freddy Strain (Gabriel Luna) and slick mercenary Jules Landry (Luke Hemsworth), among others. </p><p><strong>Why you should watch it:</strong> The military thriller series has been a massive hit for the Amazon <a href="https://www.tomsguide.com/us/best-streaming-video-services,review-2625.html">streaming service</a>, especially if you're a fan of similarly tense action-thrillers like "<a href="https://www.tomsguide.com/entertainment/prime-video/alan-ritchson-does-his-best-john-wick-impression-in-a-hyper-violent-reacher-season-4-finale">Reacher</a>" and "Jack Ryan." And season two is only going to get bigger—the eight-episode follow-up will expand Reece's story to exotic international locales, from Europe to the Middle East to North Africa. </p><p><em><strong>Stream </strong></em><a href="https://www.amazon.com/gp/video/detail/B09HYNH8TK" target="_blank" rel="nofollow"><em><strong>"The Terminal List" season 2 on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="39-last-one-laughing-halloween-39">'Last One Laughing: Halloween'</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/v2IksvXLQgo" allowfullscreen=""></iframe></div></div><p><strong>What it’s about: </strong>The UK edition of "Last One Laughing" returns on October 23 on Prime Video, but this time with a Halloween twist. Throughout the four-part special, our famously funny contestants—including Jack Dee, Daisy May Cooper, Phil Wang, Lou Sanders, Reece Shearsmith, Harriet Dyer and Tom Allen, who join series host Jimmy Carr and deputy Roisin Conaty—not only aren't allowed to laugh but also to scream, which is made far more difficult thanks to jump scares and spooky gags throughout. </p><p><strong>Why you should watch it:</strong> The "Last One Laughing" franchise is well-loved by viewers (the comedic competition has a strong 97% Popcornmeter rating on Rotten Tomatoes) thanks to the simple, silly pleasure of watching a group of comedians get locked in a room for hours and try to make each other laugh. Consider the Halloween edition a lighthearted reprieve from the holiday's usually much darker fare. </p><p><em><strong>Stream </strong></em><a href="https://www.amazon.com/dp/B0HFF6VW2D?lv=shuf&amp;yl_hp_np=1&amp;channelId=500&amp;plpRedirect=mhFallback" target="_blank" rel="nofollow"><em><strong>"Last One Laughing: Halloween" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="39-love-in-disguise-39">'Love in Disguise'</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/y7PVVWg6nRk" allowfullscreen=""></iframe></div></div><p><strong>What it’s about: </strong>Equal parts workplace rom-com and mystery series, this 12-episode South Korean comedy stars Seol In-ah as Kang Jae-hee, a former special forces officer turned police detective, who is assigned to investigate cold-blooded conglomerate heir and murder suspect Yoon Yi-jun (Yim Si-wan). To do so, she pulls a Yentl, disguising herself as a man and infiltrating his team as a male secretary to get close to Yi-jun. Things get exponentially more complicated, however, when romantic feelings start developing between the pair. </p><p><strong>Why you should watch it:</strong> "Love in Disguise" was already a hit before it premiered on Prime Video—it's based on the viral web novel and webtoon "Why Don’t You Know It’s a Girl?," which garnered over 8.15 million views. Like its source material, the new rom-com stands out from other genre titles thanks to its fun play on gender dynamics and sexual identity. </p><p><em><strong>Stream </strong></em><a href="https://www.primevideo.com/detail/0INEYNSINLQC82ZUIFLK7VNV09" target="_blank" rel="nofollow"><em><strong>"Love in Disguise" on Prime Video</strong></em></a><em><strong> now</strong></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/entertainment/prime-video/carrie-review-mike-flanagan-proves-theres-more-to-this-story-than-prom-night">Prime Video’s ‘Carrie’ is one of the best shows I’ve seen in 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/5-best-movies-to-stream-on-prime-video-for-halloween-2026">5 best movies to stream on Prime Video for Halloween 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/prime-video-top-10-shows-heres-the-3-worth-binge-watching-this-week-october-21-27">Prime Video top 10 shows — here’s the 3 worth binge-watching this week (October 21-27)</a></li></ul><div data-model-name="Amazon Prime Video" data-widget-type="review" data-widget-title="Today's best streaming deals"></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Spring is here, and your floors need a refresh — I've found one robot vacuum that should make the cut at 59% off ]]></title>
                                                                                                <dc:content><![CDATA[ <p>It's Spring Cleaning season, and as a homebody, there's nothing better than coming back to a clean house. </p><p>IMHO, one of the most tiresome spring cleaning tasks is vacuuming and mopping hard floors, and as someone who struggles with spring-awoken hay fever and easily triggered dust allergies, I hate doing it. And it seems I'm not the only one. </p><p>According to <a href="https://afterpay-newsroom.yourcreative.com.au/wp-content/uploads/2025/12/Afterpaid-091225-R2.pdf" target="_blank">Afterpay's Afterpaid report</a>, which analyses shopping and cultural trends based on transaction data, robot vacuum purchases surged by 49% in 2025, with more Aussies turning to automation to handle the task entirely. </p><p>After reviewing some of the <a href="https://www.tomsguide.com/us/best-robot-vacuums,review-2000.html" target="_blank">best robot vacuums</a> during my tenure at Tom's Guide, I cannot recommend automated floor cleaning enough. You can pop your preferred robot on a schedule, select different modes for different rooms, and block key zones you want it to avoid. </p><p>That said, finding a great-value robot vacuum can be difficult, especially if you have tighter purse strings. However, Amazon's got you covered with this <a href="https://www.amazon.com.au/Suction-Runtime-Navigation-Cleaning-Control/dp/B0FB3J5XQB" target="_blank">59% off deal on Dreame's F10 Plus robot vacuum and mop</a>. Now under AU$300, this Dreame machine is ideal for new robot vacuum users, as it offers impressive suction power, easy smart controls via the app, and has mopping capabilities for fuss-free floor care. </p><div class="product"><a data-dimension112="293d4468-cdc2-11f1-ad5b-5f7bbcc55ee0" data-action="Deal Block" data-label="F10 Plus Robot Vacuum and Mop Combo" data-dimension48="F10 Plus Robot Vacuum and Mop Combo" data-dimension25="$284.98" href="https://www.amazon.com.au/Suction-Runtime-Navigation-Cleaning-Control/dp/B0FB3J5XQB" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="Hzzngeepg2T5m8Fq6pN8TJ" name="dreame-f10-plus-robot-vacuum-and-mop-com-852e71a0-2404-42bd-b0da-095f6297dda5.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/Hzzngeepg2T5m8Fq6pN8TJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/Suction-Runtime-Navigation-Cleaning-Control/dp/B0FB3J5XQB" target="_blank" rel="nofollow" data-dimension112="293d4468-cdc2-11f1-ad5b-5f7bbcc55ee0" data-action="Deal Block" data-label="F10 Plus Robot Vacuum and Mop Combo" data-dimension48="F10 Plus Robot Vacuum and Mop Combo" data-dimension25="$284.98">F10 Plus Robot Vacuum and Mop Combo: was $699 now $284.98</a></strong><br />Discounted to under AU$300, Dreame's F10 Plus robot vacuum has 13,000pa suction power, up to 300-min runtime, and smart navigation, thanks to integrated LiDAR tech. The F10 Plus works alongside the Dreame app and can be activated via voice control. <a class="view-deal button" href="https://www.amazon.com.au/Suction-Runtime-Navigation-Cleaning-Control/dp/B0FB3J5XQB" target="_blank" rel="nofollow" data-dimension112="293d4468-cdc2-11f1-ad5b-5f7bbcc55ee0" data-action="Deal Block" data-label="F10 Plus Robot Vacuum and Mop Combo" data-dimension48="F10 Plus Robot Vacuum and Mop Combo" data-dimension25="$284.98">View Deal</a></p></div><p>If you're in the market for a budget-friendly robot vacuum, Dreame's F10 is one to consider. </p><p>With 13,000Pa suction power, this robot will keep your floors clean, dust- and debris-free. It also comes with a self-cleaning docking station and a dust bag that can hold up to 90 days of dirt, so it'll be an entirely hands-free process for at least a few months before you replace the bag. </p><p>And as mentioned, through the app, you can set up scheduled days, times, or areas to clean while you're home (or away), so you'll never have to think about vacuuming and mopping again. </p><p>That said, spring cleaning isn't just about tidying your floors. It's also a great time to upgrade your cleaning products, try new home appliances and establish routines to keep your house clean all year round, not just in the warmer months. </p><p>If you've already got a trusty robot vacuum and want to try other spring cleaning upgrades, I've found 8 bestselling cleaning products and appliances on Amazon below. These recommendations include my personal picks — <a href="https://www.amazon.com.au/Stardrops-Stuff-Miracle-Scrubber-Cleaning/dp/B0CP4FGSW8/ref=sr_1_24" target="_blank">The Pink Stuff </a>has been a game-changer in my house, and I love the smell of <a href="https://www.amazon.com.au/Koala-Eco-Multi-purpose-Mandarin-Concentrate/dp/B0C9ZKMTBC/" target="_blank">Koala Eco's multipurpose cleaner</a> — but overall, each product has garnered plenty of 4-star reviews on Amazon. </p><h3 class="article-body__section" id="section-spring-cleaning-essentials"><span>Spring Cleaning essentials</span></h3>        <div class="featured_product_block featured_block_hero" data-id="293d454e-cdc2-11f1-8b87-693e8dfecd03">            <a href="https://www.amazon.com.au/Scrub-Daddy-Original-Yellow-Household/dp/B00J420JEC/" data-model-name="The Original Scrub Daddy - Multipurpose Cleaning Sponge" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:141.64%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/7kEPTWir8BhFMxfBLtwzbn.jpg" alt="The Original Scrub Daddy - Multipurpose Cleaning Sponge - Soft in Warm Water, Firm in Cold Water for Tough Cleaning - Scratch Free, Odour Resistant, Ergonomic" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Scrub Daddy</div>                                        <div class="featured__title">The Original Scrub Daddy - Multipurpose Cleaning Sponge</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="293d45b2-cdc2-11f1-a5d2-818bed76817e">            <a href="https://www.amazon.com.au/Stardrops-Stuff-Miracle-Scrubber-Cleaning/dp/B0CP4FGSW8/ref=sr_1_24" data-model-name="The Miracle Scrubber Kit" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:147.93%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/nVPPdkTv2juy8BqJMPsRTi.jpg" alt="The Pink Stuff Sonic Scrubber Kit for Miracle Cleaning Paste - Electric Scrubber With Interchangeable Heads - Ideal for Effective Cleaning of Hard to Reach Places" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>The Pink Stuff</div>                                        <div class="featured__title">The Miracle Scrubber Kit</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="293d462a-cdc2-11f1-aeb2-ed06fcf9a947">            <a href="https://www.amazon.com.au/Koala-Eco-Mandarin-Peppermint-milliliters/dp/B07TK8NDK4/" data-model-name="Natural Mandarin and Peppermint Floor Cleaner 500ml" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/U7NRSAmoTurJSGBQfxtNVm.jpg" alt="Koala Eco Natural Mandarin and Peppermint Floor Cleaner 500 Ml" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Koala Eco</div>                                        <div class="featured__title">Natural Mandarin and Peppermint Floor Cleaner 500ml</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="293d468e-cdc2-11f1-b211-dff7f9fea696">            <a href="https://www.amazon.com.au/Koala-Eco-Multi-purpose-Mandarin-Concentrate/dp/B0C9ZKMTBC/" data-model-name="Natural Multi-Purpose Kitchen Cleaner Lemon Myrtle &amp; Mandarin Concentrate 500ml" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/XJ3fD9K5QQo7ekWFnxtShn.jpg" alt="Koala Eco Natural Multi-Purpose Kitchen Cleaner Lemon Myrtle &amp; Mandarin Concentrate, 500 Ml" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Koala Eco</div>                                        <div class="featured__title">Natural Multi-Purpose Kitchen Cleaner Lemon Myrtle &amp; Mandarin Concentrate 500ml</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="293d46f2-cdc2-11f1-8785-bd9b54e67e61">            <a href="https://www.amazon.com.au/BISSELL-PowerFresh-Cleaner-System-2233F/dp/B07DM2P5JX" data-model-name="Powerfresh Slim Multi-Purpose Steam Cleaner System" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/eD3KHP282JVkiGb7PGx4t.jpg" alt="Bissell Powerfresh Slim 2233f | Multi-Purpose Steam Cleaner System, 3-1 Steam Mop With Tools to Clean Hard Floors, Grout, Stovetops, Ovens, Windows, Refresh Garments, Curtains, Upholstery" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Bissell</div>                                        <div class="featured__title">Powerfresh Slim Multi-Purpose Steam Cleaner System</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="293d474c-cdc2-11f1-8e58-818c36e8ad99">            <a href="https://www.amazon.com.au/dp/B0G5YDSZBV" data-model-name="Qrevo Curv 2 Flow Robot Vacuum &amp; Roller Mop" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/SEP2Ccb3qxMEZMgXC6cK59.jpg" alt="Roborock Qrevo Curv 2 Flow Robot Vacuum&amp;roller Mop, Powerful 20000pa Suction, Rear-Time Roller Cleaning W/ 2.5x Pressure, Lift Up for Carpet,edge Cleaning, Zero-Tangling, Self-Emptying, Hot Air Drying" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>roborock</div>                                        <div class="featured__title">Qrevo Curv 2 Flow Robot Vacuum &amp; Roller Mop</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="293d47a6-cdc2-11f1-b308-8984b3141b51">            <a href="https://www.amazon.com.au/dp/B0GWPVYWRJ" data-model-name="H60 Hub Plus Cordless Vacuum Cleaner With Auto-Empty Dock" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/DssFVEgdaYES53kvnVKoW9.jpg" alt="Roborock H60 Hub Plus Cordless Vacuum Cleaner With Auto-Empty Dock, 170aw Max Suction, 0% Tangle Rate, 140° Ultra-Wide Green Led Light, Up to 80 Min Runtime, Anti-Tangle Brush for Carpets" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Roborock</div>                                        <div class="featured__title">H60 Hub Plus Cordless Vacuum Cleaner With Auto-Empty Dock</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="293d480a-cdc2-11f1-816c-2321212f2c47">            <a href="https://www.amazon.com.au/Bissell-36984-Spotclean-Purple/dp/B074JF68TY" data-model-name="Spotclean Portable Carpet &amp; Upholstery Spot Cleaner" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/zVtRDT3RykZEW9tPQQeup8.jpg" alt="Bissell Spotclean 36984 | Portable Carpet &amp; Upholstery Spot Cleaner, Powerful 330w Motor, Specialised Formulas &amp; Tools for Tough Stains, Pet Messes &amp; Odour Removal" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Bissell</div>                                        <div class="featured__title">Spotclean Portable Carpet &amp; Upholstery Spot Cleaner</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/home/spring-is-here-and-your-floors-need-a-refresh-ive-found-one-robot-vacuum-that-should-make-the-cut-at-59-percent-off</link>
                                                                            <description>
                            <![CDATA[ Looking to upgrade outdated appliances to get your spring cleaning sorted? I've found one robot vacuum that's under AU$300. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">98XVfNfufbuGP9ndhy3MM9</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/kXXSwSQTMjmfmB8dk8YncD-1920-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Thu, 22 Oct 2026 04:20:28 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Home]]></category>
                                                                                                <author><![CDATA[ lucy.scotting@futurenet.com (Lucy Scotting) ]]></author>                    <dc:creator><![CDATA[ Lucy Scotting ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PQTnAGVHEDNmwJEbWkaqHV-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Lucy Scotting is a staff writer for Tom’s Guide Australia, primarily covering lifestyle, streaming and internet-related news. Lucy started her career writing for HR and staffing industry publications, covering emerging tech, business and finance.&lt;/p&gt;&lt;p&gt;In her spare time, Lucy can be found watching sci-fi movies, working on her dystopian fiction novel (in progress since 2017) or hanging out with her dog, Fletcher. If she’s not found doing any of the above, she’s likely on her next adventure to a new city, country, or continent. &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/kXXSwSQTMjmfmB8dk8YncD-1920-80.png">
                                                            <media:credit><![CDATA[Future / Dreame]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Dreame f10 plus robot vacuum]]></media:description>                                                            <media:text><![CDATA[Dreame f10 plus robot vacuum]]></media:text>
                                <media:title type="plain"><![CDATA[Dreame f10 plus robot vacuum]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/kXXSwSQTMjmfmB8dk8YncD-1920-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>It's Spring Cleaning season, and as a homebody, there's nothing better than coming back to a clean house. </p><p>IMHO, one of the most tiresome spring cleaning tasks is vacuuming and mopping hard floors, and as someone who struggles with spring-awoken hay fever and easily triggered dust allergies, I hate doing it. And it seems I'm not the only one. </p><p>According to <a href="https://afterpay-newsroom.yourcreative.com.au/wp-content/uploads/2025/12/Afterpaid-091225-R2.pdf" target="_blank">Afterpay's Afterpaid report</a>, which analyses shopping and cultural trends based on transaction data, robot vacuum purchases surged by 49% in 2025, with more Aussies turning to automation to handle the task entirely. </p><p>After reviewing some of the <a href="https://www.tomsguide.com/us/best-robot-vacuums,review-2000.html" target="_blank">best robot vacuums</a> during my tenure at Tom's Guide, I cannot recommend automated floor cleaning enough. You can pop your preferred robot on a schedule, select different modes for different rooms, and block key zones you want it to avoid. </p><p>That said, finding a great-value robot vacuum can be difficult, especially if you have tighter purse strings. However, Amazon's got you covered with this <a href="https://www.amazon.com.au/Suction-Runtime-Navigation-Cleaning-Control/dp/B0FB3J5XQB" target="_blank">59% off deal on Dreame's F10 Plus robot vacuum and mop</a>. Now under AU$300, this Dreame machine is ideal for new robot vacuum users, as it offers impressive suction power, easy smart controls via the app, and has mopping capabilities for fuss-free floor care. </p><div class="product"><a data-dimension112="293d4468-cdc2-11f1-ad5b-5f7bbcc55ee0" data-action="Deal Block" data-label="F10 Plus Robot Vacuum and Mop Combo" data-dimension48="F10 Plus Robot Vacuum and Mop Combo" data-dimension25="$284.98" href="https://www.amazon.com.au/Suction-Runtime-Navigation-Cleaning-Control/dp/B0FB3J5XQB" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="Hzzngeepg2T5m8Fq6pN8TJ" name="dreame-f10-plus-robot-vacuum-and-mop-com-852e71a0-2404-42bd-b0da-095f6297dda5.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/Hzzngeepg2T5m8Fq6pN8TJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/Suction-Runtime-Navigation-Cleaning-Control/dp/B0FB3J5XQB" target="_blank" rel="nofollow" data-dimension112="293d4468-cdc2-11f1-ad5b-5f7bbcc55ee0" data-action="Deal Block" data-label="F10 Plus Robot Vacuum and Mop Combo" data-dimension48="F10 Plus Robot Vacuum and Mop Combo" data-dimension25="$284.98">F10 Plus Robot Vacuum and Mop Combo: was $699 now $284.98</a></strong><br />Discounted to under AU$300, Dreame's F10 Plus robot vacuum has 13,000pa suction power, up to 300-min runtime, and smart navigation, thanks to integrated LiDAR tech. The F10 Plus works alongside the Dreame app and can be activated via voice control. <a class="view-deal button" href="https://www.amazon.com.au/Suction-Runtime-Navigation-Cleaning-Control/dp/B0FB3J5XQB" target="_blank" rel="nofollow" data-dimension112="293d4468-cdc2-11f1-ad5b-5f7bbcc55ee0" data-action="Deal Block" data-label="F10 Plus Robot Vacuum and Mop Combo" data-dimension48="F10 Plus Robot Vacuum and Mop Combo" data-dimension25="$284.98">View Deal</a></p></div><p>If you're in the market for a budget-friendly robot vacuum, Dreame's F10 is one to consider. </p><p>With 13,000Pa suction power, this robot will keep your floors clean, dust- and debris-free. It also comes with a self-cleaning docking station and a dust bag that can hold up to 90 days of dirt, so it'll be an entirely hands-free process for at least a few months before you replace the bag. </p><p>And as mentioned, through the app, you can set up scheduled days, times, or areas to clean while you're home (or away), so you'll never have to think about vacuuming and mopping again. </p><p>That said, spring cleaning isn't just about tidying your floors. It's also a great time to upgrade your cleaning products, try new home appliances and establish routines to keep your house clean all year round, not just in the warmer months. </p><p>If you've already got a trusty robot vacuum and want to try other spring cleaning upgrades, I've found 8 bestselling cleaning products and appliances on Amazon below. These recommendations include my personal picks — <a href="https://www.amazon.com.au/Stardrops-Stuff-Miracle-Scrubber-Cleaning/dp/B0CP4FGSW8/ref=sr_1_24" target="_blank">The Pink Stuff </a>has been a game-changer in my house, and I love the smell of <a href="https://www.amazon.com.au/Koala-Eco-Multi-purpose-Mandarin-Concentrate/dp/B0C9ZKMTBC/" target="_blank">Koala Eco's multipurpose cleaner</a> — but overall, each product has garnered plenty of 4-star reviews on Amazon. </p><h3 class="article-body__section" id="section-spring-cleaning-essentials"><span>Spring Cleaning essentials</span></h3>        <div class="featured_product_block featured_block_hero" data-id="293d454e-cdc2-11f1-8b87-693e8dfecd03">            <a href="https://www.amazon.com.au/Scrub-Daddy-Original-Yellow-Household/dp/B00J420JEC/" data-model-name="The Original Scrub Daddy - Multipurpose Cleaning Sponge" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:141.64%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/7kEPTWir8BhFMxfBLtwzbn.jpg" alt="The Original Scrub Daddy - Multipurpose Cleaning Sponge - Soft in Warm Water, Firm in Cold Water for Tough Cleaning - Scratch Free, Odour Resistant, Ergonomic" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Scrub Daddy</div>                                        <div class="featured__title">The Original Scrub Daddy - Multipurpose Cleaning Sponge</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="293d45b2-cdc2-11f1-a5d2-818bed76817e">            <a href="https://www.amazon.com.au/Stardrops-Stuff-Miracle-Scrubber-Cleaning/dp/B0CP4FGSW8/ref=sr_1_24" data-model-name="The Miracle Scrubber Kit" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:147.93%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/nVPPdkTv2juy8BqJMPsRTi.jpg" alt="The Pink Stuff Sonic Scrubber Kit for Miracle Cleaning Paste - Electric Scrubber With Interchangeable Heads - Ideal for Effective Cleaning of Hard to Reach Places" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>The Pink Stuff</div>                                        <div class="featured__title">The Miracle Scrubber Kit</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="293d462a-cdc2-11f1-aeb2-ed06fcf9a947">            <a href="https://www.amazon.com.au/Koala-Eco-Mandarin-Peppermint-milliliters/dp/B07TK8NDK4/" data-model-name="Natural Mandarin and Peppermint Floor Cleaner 500ml" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/U7NRSAmoTurJSGBQfxtNVm.jpg" alt="Koala Eco Natural Mandarin and Peppermint Floor Cleaner 500 Ml" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Koala Eco</div>                                        <div class="featured__title">Natural Mandarin and Peppermint Floor Cleaner 500ml</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="293d468e-cdc2-11f1-b211-dff7f9fea696">            <a href="https://www.amazon.com.au/Koala-Eco-Multi-purpose-Mandarin-Concentrate/dp/B0C9ZKMTBC/" data-model-name="Natural Multi-Purpose Kitchen Cleaner Lemon Myrtle &amp; Mandarin Concentrate 500ml" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/XJ3fD9K5QQo7ekWFnxtShn.jpg" alt="Koala Eco Natural Multi-Purpose Kitchen Cleaner Lemon Myrtle &amp; Mandarin Concentrate, 500 Ml" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Koala Eco</div>                                        <div class="featured__title">Natural Multi-Purpose Kitchen Cleaner Lemon Myrtle &amp; Mandarin Concentrate 500ml</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="293d46f2-cdc2-11f1-8785-bd9b54e67e61">            <a href="https://www.amazon.com.au/BISSELL-PowerFresh-Cleaner-System-2233F/dp/B07DM2P5JX" data-model-name="Powerfresh Slim Multi-Purpose Steam Cleaner System" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/eD3KHP282JVkiGb7PGx4t.jpg" alt="Bissell Powerfresh Slim 2233f | Multi-Purpose Steam Cleaner System, 3-1 Steam Mop With Tools to Clean Hard Floors, Grout, Stovetops, Ovens, Windows, Refresh Garments, Curtains, Upholstery" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Bissell</div>                                        <div class="featured__title">Powerfresh Slim Multi-Purpose Steam Cleaner System</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="293d474c-cdc2-11f1-8e58-818c36e8ad99">            <a href="https://www.amazon.com.au/dp/B0G5YDSZBV" data-model-name="Qrevo Curv 2 Flow Robot Vacuum &amp; Roller Mop" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/SEP2Ccb3qxMEZMgXC6cK59.jpg" alt="Roborock Qrevo Curv 2 Flow Robot Vacuum&amp;roller Mop, Powerful 20000pa Suction, Rear-Time Roller Cleaning W/ 2.5x Pressure, Lift Up for Carpet,edge Cleaning, Zero-Tangling, Self-Emptying, Hot Air Drying" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>roborock</div>                                        <div class="featured__title">Qrevo Curv 2 Flow Robot Vacuum &amp; Roller Mop</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="293d47a6-cdc2-11f1-b308-8984b3141b51">            <a href="https://www.amazon.com.au/dp/B0GWPVYWRJ" data-model-name="H60 Hub Plus Cordless Vacuum Cleaner With Auto-Empty Dock" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/DssFVEgdaYES53kvnVKoW9.jpg" alt="Roborock H60 Hub Plus Cordless Vacuum Cleaner With Auto-Empty Dock, 170aw Max Suction, 0% Tangle Rate, 140° Ultra-Wide Green Led Light, Up to 80 Min Runtime, Anti-Tangle Brush for Carpets" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Roborock</div>                                        <div class="featured__title">H60 Hub Plus Cordless Vacuum Cleaner With Auto-Empty Dock</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="293d480a-cdc2-11f1-816c-2321212f2c47">            <a href="https://www.amazon.com.au/Bissell-36984-Spotclean-Purple/dp/B074JF68TY" data-model-name="Spotclean Portable Carpet &amp; Upholstery Spot Cleaner" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/zVtRDT3RykZEW9tPQQeup8.jpg" alt="Bissell Spotclean 36984 | Portable Carpet &amp; Upholstery Spot Cleaner, Powerful 330w Motor, Specialised Formulas &amp; Tools for Tough Stains, Pet Messes &amp; Odour Removal" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Bissell</div>                                        <div class="featured__title">Spotclean Portable Carpet &amp; Upholstery Spot Cleaner</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Prime Video top 10 movies — here’s the 3 worth watching this week (Oct. 19-25) ]]></title>
                                                                                                <dc:content><![CDATA[ <p>We’re getting ever closer to Halloween, and there’s plenty of scares to be had in Prime Video’s top 10 movie chart this week. I’ve combed through the platform’s weekly hits to find the films worthy of your precious streaming time. </p><p>Prime Video’s top 10 usually isn’t stuffed full of bona fide classics, and this week is no different. Still, I think you’ll enjoy the trio of picks I’ve gone with, which include an emotional new drama starring Margaret Qualley, the latest entry in an iconic horror series and a light-hearted criminal caper led by Stanley Tucci. </p><p>The movies below are taken from <strong>Prime Video’s top 10 as of Monday, October 19, 2026</strong>. So break out the teeth-rotting treats and prepare to laugh, cry and gasp at my pick of flicks that are actually worth streaming. </p><h3 class="article-body__section" id="section-best-movies-in-the-prime-video-top-10"><span>Best movies in the Prime Video top 10</span></h3><h2 id="love-of-your-life-2026-3">‘Love of Your Life’ (2026)</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/HzGx48E64Xg" allowfullscreen=""></iframe></div></div><p>Get your hankies ready for a new weepy. Following nurse Maya (Margaret Qualley), a pandemic-related tragedy sees the Boston healer up sticks to Europe, where she becomes a reclusive digital nomad. Unlike the rest of us who spent our time rewatching old episodes of "DuckTales" during lockdown, Maya ends up flitting through unfulfilling casual relationships, which only worsens her grief. </p><p>Qualley once again impresses in a leading role, even if the material is a little sappy. Still, the supporting cast, including Patrick Schwarzenegger, Aaron Pierre and Gabriel Basso, is reasonably strong and the globe-hopping plot, which takes in Lisbon, Luxembourg and Tokyo, is handsomely shot. Perhaps the most surprising thing about “Love of Your Life”? It’s produced by Ryan Gosling. Sadly for fans of “Drive,” there’s a distinct lack of action in this sincere, well-meaning drama.  </p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B0HFJCW6VG" target="_blank" rel="nofollow"><em><strong>"Love of Your Life" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="scream-7-39-2026-3">‘Scream 7' (2026)</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/UJrghaPJ0RY" allowfullscreen=""></iframe></div></div><p>Sidney Prescott returns to the iconic horror franchise after star Neve Campbell sat “Scream 6” out due to a pay dispute. One of the OG Final Girls, it’s great to see the series’ main star back and dueling yet another version of Ghostface. Considering we’re now seven slashers in, it’s impressive that “Scream 7” still has the appetite for the kill. </p><p>This time out we’re treated to a very different version of Sidney. Now happily married and a protective mom to Tatam (Isabel May), our hero’s suburban life is turned upside down when a new Ghostface turns up to slice and dice. Or should that be an old Ghostface? The movie has some fun playing around with the notion of AI deepfakes, resulting in a few surprising cameos. The opening scene set in the original film’s infamous house and one kill that feels like it’s been lifted from “Final Destination” are particular highlights.  </p><p><em><strong>Watch </strong></em><a href="https://www.primevideo.com/region/eu/detail/0R4HOUHPV4SU3LSWK7M1K5S5JB" target="_blank" rel="nofollow"><em><strong>"Scream 7" on Prime Video</strong></em></a><em><strong> now</strong></em></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ORMLNW"></div>                            </div>                            <script src="https://kwizly.com/embed/ORMLNW.js" async=""></script><h2 id="masterplan-2026">‘Masterplan’ (2026)</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/gc0t8AfMP6k" allowfullscreen=""></iframe></div></div><p>You’ve got to admire Stanley Tucci. Not only does he seem to spend most of his existence travelling while making fettuccine so delicious you want to dive into your TV, he seemingly has a “movie must be set in Italy” clause in any new project. In fairness, only part of “Masterplan” is set in the land of pasta (an early heist in Lake Como), with the main action taking Tucci’s talented thief to Paris. </p><p>Why is this pilfering scoundrel in the City of Love with a couple of up-and-coming heists artists? To steal the Mona Lisa from the Louvre. Obviously. There’s an early(ish) reveal that further juices up proceedings too. Though at first ambitious thieves Chiara (Simona Tabasco) and Jay (Victor Belmondo) appear to have little in common other than a talent for stealing stuff, they actually have a deeper hidden connection. This crime comedy is breezy and good-natured, with Tucci in typically good form. </p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B0HJGRZTZ4" target="_blank" rel="nofollow"><em><strong>"Masterplan" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h3 class="article-body__section" id="section-prime-video-top-10-movies-right-now"><span>Prime Video top 10 movies right now</span></h3><ol start="1"><li>"Love of Your Life" (2026)</li><li>"Scream 7" (2026)</li><li>"The Love Hypothesis" (2026)</li><li>"The Secret of Moonacre" (2008)</li><li>"Now You See Me: Now You Don't" (2025)</li><li>"Dark Nature" (2023)</li><li>"Forget Me Never" (1999)</li><li>"Masterplan" (2026)</li><li>"First Winter" (1982)</li><li>"Reign of Fire" (2002)</li></ol><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="gdR2W4" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><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/entertainment/prime-video/new-on-prime-video-in-october-2026-top-new-movies-and-shows-to-stream-this-month">New on Prime Video in October 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/streaming/scream-movies-ranked">All 7 'Scream' movies ranked</a></li><li><a href="https://www.tomsguide.com/us/best-streaming-video-services,review-2625.html">The best streaming services in 2026</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/prime-video/prime-video-top-10-movies-heres-the-3-worth-watching-this-week-oct-19-25</link>
                                                                            <description>
                            <![CDATA[ The Prime Video top 10 most-watched list has been updated once again. I'm here to help you find the flicks that are actually worth streaming. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">oJu53SHr4CUMFVSPgBBQwf</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/yYWhHhHw6vuqJmkxBCWs8d-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 19 Oct 2026 13:02:36 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Prime Video]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                    <category><![CDATA[Streaming]]></category>
                                                                                                <author><![CDATA[ dave.meikleham@futurenet.com (Dave Meikleham) ]]></author>                    <dc:creator><![CDATA[ Dave Meikleham ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Rda8e7jGfyTdZLWYJQQ8VY-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Dave is a computing editor at Tom’s Guide and covers everything from cutting-edge laptops, the latest GPU tech, to ultrawide monitors. When he’s not worrying about dead pixels, Dave enjoys regularly rebuilding his PC for absolutely no reason at all. He built his first rig over 20 years ago, and he’s gone through more motherboards than he’s had hot dinners. Probably. &lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;In a previous life, he worked as a video game journalist during a career spanning the best part of two decades. Over that time he worked across both online and print, with bylines for GamesRadar+, PC Gamer, TechRadar, Edge and the Official UK PlayStation Magazine. He’s almost amassed an immeasurable amount of bad puns.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;An avid PC and console gamer, Dave enjoys breaking out Fraps way too often as he obsesses over frame rates. Despite owning a graphics card that costs roughly the same as your average used car, he still enjoys gaming on the go and is regularly glued to his Switch. Away from tech, most of Dave’s time is taken up by walking his husky, obsessing about his various OLED displays and sweating over the fitness of half a dozen Arsenal players on any given week.&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/yYWhHhHw6vuqJmkxBCWs8d-1920-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Prime Video logo for streaming]]></media:description>                                                            <media:text><![CDATA[Prime Video logo for streaming]]></media:text>
                                <media:title type="plain"><![CDATA[Prime Video logo for streaming]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/yYWhHhHw6vuqJmkxBCWs8d-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>We’re getting ever closer to Halloween, and there’s plenty of scares to be had in Prime Video’s top 10 movie chart this week. I’ve combed through the platform’s weekly hits to find the films worthy of your precious streaming time. </p><p>Prime Video’s top 10 usually isn’t stuffed full of bona fide classics, and this week is no different. Still, I think you’ll enjoy the trio of picks I’ve gone with, which include an emotional new drama starring Margaret Qualley, the latest entry in an iconic horror series and a light-hearted criminal caper led by Stanley Tucci. </p><p>The movies below are taken from <strong>Prime Video’s top 10 as of Monday, October 19, 2026</strong>. So break out the teeth-rotting treats and prepare to laugh, cry and gasp at my pick of flicks that are actually worth streaming. </p><h3 class="article-body__section" id="section-best-movies-in-the-prime-video-top-10"><span>Best movies in the Prime Video top 10</span></h3><h2 id="love-of-your-life-2026-3">‘Love of Your Life’ (2026)</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/HzGx48E64Xg" allowfullscreen=""></iframe></div></div><p>Get your hankies ready for a new weepy. Following nurse Maya (Margaret Qualley), a pandemic-related tragedy sees the Boston healer up sticks to Europe, where she becomes a reclusive digital nomad. Unlike the rest of us who spent our time rewatching old episodes of "DuckTales" during lockdown, Maya ends up flitting through unfulfilling casual relationships, which only worsens her grief. </p><p>Qualley once again impresses in a leading role, even if the material is a little sappy. Still, the supporting cast, including Patrick Schwarzenegger, Aaron Pierre and Gabriel Basso, is reasonably strong and the globe-hopping plot, which takes in Lisbon, Luxembourg and Tokyo, is handsomely shot. Perhaps the most surprising thing about “Love of Your Life”? It’s produced by Ryan Gosling. Sadly for fans of “Drive,” there’s a distinct lack of action in this sincere, well-meaning drama.  </p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B0HFJCW6VG" target="_blank" rel="nofollow"><em><strong>"Love of Your Life" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="scream-7-39-2026-3">‘Scream 7' (2026)</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/UJrghaPJ0RY" allowfullscreen=""></iframe></div></div><p>Sidney Prescott returns to the iconic horror franchise after star Neve Campbell sat “Scream 6” out due to a pay dispute. One of the OG Final Girls, it’s great to see the series’ main star back and dueling yet another version of Ghostface. Considering we’re now seven slashers in, it’s impressive that “Scream 7” still has the appetite for the kill. </p><p>This time out we’re treated to a very different version of Sidney. Now happily married and a protective mom to Tatam (Isabel May), our hero’s suburban life is turned upside down when a new Ghostface turns up to slice and dice. Or should that be an old Ghostface? The movie has some fun playing around with the notion of AI deepfakes, resulting in a few surprising cameos. The opening scene set in the original film’s infamous house and one kill that feels like it’s been lifted from “Final Destination” are particular highlights.  </p><p><em><strong>Watch </strong></em><a href="https://www.primevideo.com/region/eu/detail/0R4HOUHPV4SU3LSWK7M1K5S5JB" target="_blank" rel="nofollow"><em><strong>"Scream 7" on Prime Video</strong></em></a><em><strong> now</strong></em></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ORMLNW"></div>                            </div>                            <script src="https://kwizly.com/embed/ORMLNW.js" async=""></script><h2 id="masterplan-2026">‘Masterplan’ (2026)</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/gc0t8AfMP6k" allowfullscreen=""></iframe></div></div><p>You’ve got to admire Stanley Tucci. Not only does he seem to spend most of his existence travelling while making fettuccine so delicious you want to dive into your TV, he seemingly has a “movie must be set in Italy” clause in any new project. In fairness, only part of “Masterplan” is set in the land of pasta (an early heist in Lake Como), with the main action taking Tucci’s talented thief to Paris. </p><p>Why is this pilfering scoundrel in the City of Love with a couple of up-and-coming heists artists? To steal the Mona Lisa from the Louvre. Obviously. There’s an early(ish) reveal that further juices up proceedings too. Though at first ambitious thieves Chiara (Simona Tabasco) and Jay (Victor Belmondo) appear to have little in common other than a talent for stealing stuff, they actually have a deeper hidden connection. This crime comedy is breezy and good-natured, with Tucci in typically good form. </p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B0HJGRZTZ4" target="_blank" rel="nofollow"><em><strong>"Masterplan" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h3 class="article-body__section" id="section-prime-video-top-10-movies-right-now"><span>Prime Video top 10 movies right now</span></h3><ol start="1"><li>"Love of Your Life" (2026)</li><li>"Scream 7" (2026)</li><li>"The Love Hypothesis" (2026)</li><li>"The Secret of Moonacre" (2008)</li><li>"Now You See Me: Now You Don't" (2025)</li><li>"Dark Nature" (2023)</li><li>"Forget Me Never" (1999)</li><li>"Masterplan" (2026)</li><li>"First Winter" (1982)</li><li>"Reign of Fire" (2002)</li></ol><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="gdR2W4" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><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/entertainment/prime-video/new-on-prime-video-in-october-2026-top-new-movies-and-shows-to-stream-this-month">New on Prime Video in October 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/streaming/scream-movies-ranked">All 7 'Scream' movies ranked</a></li><li><a href="https://www.tomsguide.com/us/best-streaming-video-services,review-2625.html">The best streaming services in 2026</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 3 best new to Prime Video shows you should binge-watch this weekend —including a reboot of cinema's most infamous killer doll (Oct. 16-18) ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Michael Myers’ favorite time of year is almost here. With Halloween right around the corner, the <a href="https://www.tomsguide.com/entertainment/prime-video/new-on-prime-video-in-october-2026-top-new-movies-and-shows-to-stream-this-month">new on Prime Video in October 2026</a> schedule is peppered with spooky shows. </p><p>First up for your streaming consideration is <strong>“Carrie”</strong>. This outstanding update of Stephen King’s iconic novel is an eight-part supernatural chiller helmed by Mike Flanagan. Sensitively handled and genuinely unsettling, newcomer Summer H. Howell shines as the bullied teen who deals with trauma by developing telekinetic powers.</p><p>Craving something equally twisted? May I present <strong>“Helluva Boss”</strong>. Now back for its third season, this adult animation with the odd musical interlude once again follows Blitzo and his demonic crew as they carry out hits for the grudge-bearing residents of Hell. </p><p>Lastly, we have <strong>“Chucky”</strong>. All three seasons of this small-screen spin on the legendary homicidal doll are now available to stream. Good Guys definitely don’t finish last in this darkly comedic reboot of a legit horror icon. </p><p>Hungry for more details? Here are three top picks that are worth streaming on Prime Video this weekend. Get ready to carve those pumpkins, people. All Hallow’s Eve is almost upon us. </p><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="gdR2W4" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><h2 id="39-carrie-39-2026">'Carrie' (2026)</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/jkUw2nh6fT0" allowfullscreen=""></iframe></div></div><p><strong>What it’s about: </strong>In this modern update of a horror classic, Carrie White is played by Summer H. Howell. The action picks up right after the bright but socially ostracized teen loses her father. Having been homeschooled her whole life, the sudden passing of her parent forces Carrie to attend public school for the first time. Cue a vicious cycle of bullying from her classmates that touches upon the perils of social media abuse. The mental anguish Carrie suffers soon awakens telekinetic abilities, culminating in a famously bloody prom night.</p><p><strong>Why you should watch it:</strong> A reimagination of Brian De Palma’s iconic 1977 horror film, which was based on the hit Stephen King novel, “Carrie” is the ideal binge-watch for this Halloween season. The modern take on teen bullying hits hard, and newcomer Howell is absolutely superb in the titular role. </p><p><em><strong>Stream </strong></em><a href="https://www.amazon.com/gp/video/detail/B0H8R9DQHS" target="_blank" rel="nofollow"><em><strong>"Carrie" on Prime Video</strong></em></a><em><strong> now</strong></em></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-X11zEX"></div>                            </div>                            <script src="https://kwizly.com/embed/X11zEX.js" async=""></script><h2 id="39-helluva-boss-39-2019">'Helluva Boss' (2019)</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/WylSo1LhWfY" allowfullscreen=""></iframe></div></div><p><strong>What it’s about: </strong>A dark adult animation that follows the musical misadventures of I.M.P. (Immediate Murder Professionals). This not-so-merry band of demonic assassins is tasked with handling the wet work of disgruntled sinners serving eternity in Hell, all of whom want to enact revenge on the living. I.M.P.’s leader Blitzo and their team can’t reach Earth without a magic book, so the loud-mouthed ghoul is forced into a romance with the demon prince Stolas, who just so happens to possess such a supernatural tome. </p><p><strong>Why you should watch it:</strong> “Helluva Boss” has come a hell of a long way since its origins as an animated YouTube sketch series. Season three is the longest yet, with a promised 15 episodes (the last eight are set to air in 2027). The show’s demented laughs and colorful musical numbers deliver twisted good times. </p><p><em><strong>Stream </strong></em><a href="https://www.amazon.com/gp/video/detail/B0FHJHX1YZ" target="_blank" rel="nofollow"><em><strong>"Helluva Boss" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="39-chucky-39-2021">'Chucky' (2021) </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/oBNH-PY730k" allowfullscreen=""></iframe></div></div><p><strong>What it’s about: </strong>The most famous killer doll in the history of cinema comes to the small screen in a three-season show that combines chuckles and knife-wielding deaths. Unlike the movies, this streaming hit features flashbacks that lift the lid on Chucky’s past to a time when he was known as the Lakeshore Strangler. In the present, the former Charles Lee Ray terrorizes a town in New Jersey after he’s picked up by a lonely teen. Fan favorites from the flicks also return, including Jennifer Tilly’s Tiffany Valentine — our devil doll’s love interest first seen in 1998’s “Bride of Chucky”. </p><p><strong>Why you should watch it:</strong> Brad Dourif is in typically delicious form playing the Good Guy doll gone bad. Though season one is relatively grounded (well, by killer doll standards), the action soon escalates, with the possessed proceedings eventually reaching the White House. Do we wanna play, Chucky? You bet! </p><p><em><strong>Stream </strong></em><a href="https://www.amazon.com/dp/B0CGW8Y1KP" target="_blank" rel="nofollow"><em><strong>"Chucky" on Prime Video</strong></em></a><em><strong> now</strong></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/entertainment/prime-video/new-on-prime-video-in-october-2026-top-new-movies-and-shows-to-stream-this-month">New on Prime Video in October 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/carrie-review-mike-flanagan-proves-theres-more-to-this-story-than-prom-night">Prime Video’s ‘Carrie’ is one of the best shows I’ve seen in 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/prime-video-top-10-movies-heres-the-3-worth-watching-this-week-oct-12-18">Prime Video top 10 movies — here’s the 3 worth watching</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/prime-video/3-best-new-to-prime-video-shows-you-should-binge-watch-this-weekend-including-a-reboot-of-cinemas-most-infamous-killer-doll-oct-16-18</link>
                                                                            <description>
                            <![CDATA[ Planning to binge some shows you’ve never seen before this weekend? Here's our weekly guide to the best new to Prime Video series you should stream right now. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">99GTwAfbHfxGVqjttgSsCh</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/EuSJxVT8M9g4CuaEmFrUtn-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 16 Oct 2026 08:49:01 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Prime Video]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                    <category><![CDATA[Streaming]]></category>
                                                                                                <author><![CDATA[ dave.meikleham@futurenet.com (Dave Meikleham) ]]></author>                    <dc:creator><![CDATA[ Dave Meikleham ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Rda8e7jGfyTdZLWYJQQ8VY-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Dave is a computing editor at Tom’s Guide and covers everything from cutting-edge laptops, the latest GPU tech, to ultrawide monitors. When he’s not worrying about dead pixels, Dave enjoys regularly rebuilding his PC for absolutely no reason at all. He built his first rig over 20 years ago, and he’s gone through more motherboards than he’s had hot dinners. Probably. &lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;In a previous life, he worked as a video game journalist during a career spanning the best part of two decades. Over that time he worked across both online and print, with bylines for GamesRadar+, PC Gamer, TechRadar, Edge and the Official UK PlayStation Magazine. He’s almost amassed an immeasurable amount of bad puns.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;An avid PC and console gamer, Dave enjoys breaking out Fraps way too often as he obsesses over frame rates. Despite owning a graphics card that costs roughly the same as your average used car, he still enjoys gaming on the go and is regularly glued to his Switch. Away from tech, most of Dave’s time is taken up by walking his husky, obsessing about his various OLED displays and sweating over the fitness of half a dozen Arsenal players on any given week.&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/EuSJxVT8M9g4CuaEmFrUtn-1920-80.jpg">
                                                            <media:credit><![CDATA[Tom&#039;s Guide/ Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Prime Video logo]]></media:description>                                                            <media:text><![CDATA[Prime Video logo]]></media:text>
                                <media:title type="plain"><![CDATA[Prime Video logo]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/EuSJxVT8M9g4CuaEmFrUtn-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Michael Myers’ favorite time of year is almost here. With Halloween right around the corner, the <a href="https://www.tomsguide.com/entertainment/prime-video/new-on-prime-video-in-october-2026-top-new-movies-and-shows-to-stream-this-month">new on Prime Video in October 2026</a> schedule is peppered with spooky shows. </p><p>First up for your streaming consideration is <strong>“Carrie”</strong>. This outstanding update of Stephen King’s iconic novel is an eight-part supernatural chiller helmed by Mike Flanagan. Sensitively handled and genuinely unsettling, newcomer Summer H. Howell shines as the bullied teen who deals with trauma by developing telekinetic powers.</p><p>Craving something equally twisted? May I present <strong>“Helluva Boss”</strong>. Now back for its third season, this adult animation with the odd musical interlude once again follows Blitzo and his demonic crew as they carry out hits for the grudge-bearing residents of Hell. </p><p>Lastly, we have <strong>“Chucky”</strong>. All three seasons of this small-screen spin on the legendary homicidal doll are now available to stream. Good Guys definitely don’t finish last in this darkly comedic reboot of a legit horror icon. </p><p>Hungry for more details? Here are three top picks that are worth streaming on Prime Video this weekend. Get ready to carve those pumpkins, people. All Hallow’s Eve is almost upon us. </p><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="gdR2W4" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><h2 id="39-carrie-39-2026">'Carrie' (2026)</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/jkUw2nh6fT0" allowfullscreen=""></iframe></div></div><p><strong>What it’s about: </strong>In this modern update of a horror classic, Carrie White is played by Summer H. Howell. The action picks up right after the bright but socially ostracized teen loses her father. Having been homeschooled her whole life, the sudden passing of her parent forces Carrie to attend public school for the first time. Cue a vicious cycle of bullying from her classmates that touches upon the perils of social media abuse. The mental anguish Carrie suffers soon awakens telekinetic abilities, culminating in a famously bloody prom night.</p><p><strong>Why you should watch it:</strong> A reimagination of Brian De Palma’s iconic 1977 horror film, which was based on the hit Stephen King novel, “Carrie” is the ideal binge-watch for this Halloween season. The modern take on teen bullying hits hard, and newcomer Howell is absolutely superb in the titular role. </p><p><em><strong>Stream </strong></em><a href="https://www.amazon.com/gp/video/detail/B0H8R9DQHS" target="_blank" rel="nofollow"><em><strong>"Carrie" on Prime Video</strong></em></a><em><strong> now</strong></em></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-X11zEX"></div>                            </div>                            <script src="https://kwizly.com/embed/X11zEX.js" async=""></script><h2 id="39-helluva-boss-39-2019">'Helluva Boss' (2019)</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/WylSo1LhWfY" allowfullscreen=""></iframe></div></div><p><strong>What it’s about: </strong>A dark adult animation that follows the musical misadventures of I.M.P. (Immediate Murder Professionals). This not-so-merry band of demonic assassins is tasked with handling the wet work of disgruntled sinners serving eternity in Hell, all of whom want to enact revenge on the living. I.M.P.’s leader Blitzo and their team can’t reach Earth without a magic book, so the loud-mouthed ghoul is forced into a romance with the demon prince Stolas, who just so happens to possess such a supernatural tome. </p><p><strong>Why you should watch it:</strong> “Helluva Boss” has come a hell of a long way since its origins as an animated YouTube sketch series. Season three is the longest yet, with a promised 15 episodes (the last eight are set to air in 2027). The show’s demented laughs and colorful musical numbers deliver twisted good times. </p><p><em><strong>Stream </strong></em><a href="https://www.amazon.com/gp/video/detail/B0FHJHX1YZ" target="_blank" rel="nofollow"><em><strong>"Helluva Boss" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="39-chucky-39-2021">'Chucky' (2021) </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/oBNH-PY730k" allowfullscreen=""></iframe></div></div><p><strong>What it’s about: </strong>The most famous killer doll in the history of cinema comes to the small screen in a three-season show that combines chuckles and knife-wielding deaths. Unlike the movies, this streaming hit features flashbacks that lift the lid on Chucky’s past to a time when he was known as the Lakeshore Strangler. In the present, the former Charles Lee Ray terrorizes a town in New Jersey after he’s picked up by a lonely teen. Fan favorites from the flicks also return, including Jennifer Tilly’s Tiffany Valentine — our devil doll’s love interest first seen in 1998’s “Bride of Chucky”. </p><p><strong>Why you should watch it:</strong> Brad Dourif is in typically delicious form playing the Good Guy doll gone bad. Though season one is relatively grounded (well, by killer doll standards), the action soon escalates, with the possessed proceedings eventually reaching the White House. Do we wanna play, Chucky? You bet! </p><p><em><strong>Stream </strong></em><a href="https://www.amazon.com/dp/B0CGW8Y1KP" target="_blank" rel="nofollow"><em><strong>"Chucky" on Prime Video</strong></em></a><em><strong> now</strong></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/entertainment/prime-video/new-on-prime-video-in-october-2026-top-new-movies-and-shows-to-stream-this-month">New on Prime Video in October 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/carrie-review-mike-flanagan-proves-theres-more-to-this-story-than-prom-night">Prime Video’s ‘Carrie’ is one of the best shows I’ve seen in 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/prime-video-top-10-movies-heres-the-3-worth-watching-this-week-oct-12-18">Prime Video top 10 movies — here’s the 3 worth watching</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 3 new to Prime Video thriller movies to watch this week — including one of the best James Bond movies of all time, and it doesn’t star Daniel Craig (Oct. 13-19) ]]></title>
                                                                                                <dc:content><![CDATA[ <p>If you need some mid-week thrills, then Prime Video has you covered. The streaming service has recently refreshed its movie library, and I’ve combed through the recent additions to pick out three thriller movies worthy of your watchlist.</p><p>My picks this week include a compulsive sports drama that brought the Rocky franchise into the modern day. It’s a legacy sequel done right. Or how about one of the best Bond movies ever made, and I’m not talking about one from Daniel Craig’s tenure as the British superspy either. Finally, for those wanting something properly new, there’s a Prime Video original heist caper.</p><p>These are the new to Prime Video thriller movies that need to be on your radar this week.</p><h3 class="article-body__section" id="section-3-best-new-to-prime-video-thriller-movies-this-week"><span>3 best new to Prime Video thriller movies this week</span></h3><h2 id="creed-2015">‘Creed’ (2015)</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/Uv554B7YHk4" allowfullscreen=""></iframe></div></div><p>It’s easy to be a little cynical about legacy sequels. Hollywood loves bringing back classic series with modern installments that attempt to mix the new and the old. The results aren’t always great, but “Creed” is a quintessential example of the formula done almost perfectly. Released nearly a decade after 2006’s “Rocky Balboa,” it takes the sports drama series in a new direction, with a new underdog hero, while fiercely respecting what came before. Hot take incoming: In my Rocky ranking, it falls behind only the practically peerless 1976 original.</p><p>Oscar-winner Michael B. Jordan plays Adonis "Donnie" Johnson, the illegitimate youngest son of former heavyweight champion Apollo Creed. He’s desperate for his own shot at the big time, to prove that he’s worthy of the Creed name. In steps Rocky Balboa (Sylvester Stallone), also a previous world champion and Apollo’s old rival, to train Donnie. The duo’s bond rapidly develops inside and outside the ring as Donnie fights for his chance at glory.</p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B0HCXP7B53" target="_blank" rel="nofollow"><em><strong>"Creed" on Prime Video</strong></em></a><em><strong> now</strong></em></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W5xY3e"></div>                            </div>                            <script src="https://kwizly.com/embed/W5xY3e.js" async=""></script><h2 id="goldeneye-1995">‘Goldeneye’ (1995)</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/8Zw8ylP4buA" allowfullscreen=""></iframe></div></div><p>Of all the actors to step into the role of James Bond, Pierce Brosnan was perhaps the most unfortunate. He was a great pick to play the suave British spy, but was let down by generally poor material, tortuous production cycles, and ropey 2000s CGI effects. However, his 007 debut, “GoldenEye,” is right up there with the very best Bond movies ever made. It’s a thrilling spy flick that boasts a memorable villain, great action moments, and brought elements to the series that persisted even beyond Brosnan’s time in the tuxedo, such as Judi Dench’s turn as Bond’s handler M.</p><p>The first Bond movie to be wholly original, without taking plot points from an Ian Fleming novel, it begins with 007 and 006, Alec Trevelyan (Sean Bean), infiltrating a chemical weapons facility. The mission goes south and ends in tragedy. “GoldenEye” then flashes forward nine years as the British spy learns that an experimental satellite weapon system has fallen into the wrong hands. The trail leads him to Russia, but this time Bond faces his most dangerous foe yet, somebody who knows his moves and how to best them.</p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B0DS6GMVJG" target="_blank" rel="nofollow"><em><strong>"GoldenEye" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="masterplan-2026-2">‘Masterplan’ (2026)</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/gc0t8AfMP6k" allowfullscreen=""></iframe></div></div><p>Prime Video’s library drops are a great opportunity to rewatch old favorites or catch up on the best movies of years gone by that you missed the first time around. However, if you’re craving something genuinely <em>new </em>this week, then how about “Masterplan,” Prime Video’s new original heist caper. If a daring scheme to steal the Mona Lisa isn’t enough to convince you to watch this comedy-thriller, Stanley Tucci in the leading role should tip you over the edge. The “Devil Wears Prada” star is always an incredibly charming on-screen presence.</p><p>Tucci plays a master thief preparing for retirement, but not before attempting to pull off the heist of a lifetime: Stealing the Mona Lisa from the Louvre Museum. It’s only the most prized and highly secure on-display painting in the world! To assist, he recruits Chiara (Simona Tabasco), a tech whiz, and Jay (Victor Belmondo), an explosives expert, before revealing they are actually his long-lost children. This heist is an unconventional family reunion, and it turns out that stealing the priceless painting might be easier than getting this estranged family to work together without a fight.</p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B0HJGR59RZ" target="_blank" rel="nofollow"><em><strong>"Masterplan" on Prime Video</strong></em></a><em><strong> starting October 16</strong></em></p><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="gdR2W4" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><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/entertainment/prime-video/new-on-prime-video-in-october-2026-top-new-movies-and-shows-to-stream-this-month#section-new-movies-on-prime-video-in-october-2026">New on Prime Video in October 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/prime-video-top-10-movies-heres-the-3-worth-watching-this-week-oct-12-18">Prime Video top 10 movies — here’s the 3 worth watching</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/carrie-review-mike-flanagan-proves-theres-more-to-this-story-than-prom-night">Prime Video’s ‘Carrie’ is one of the best shows this year</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/prime-video/3-new-to-prime-video-thriller-movies-to-watch-this-week-including-one-of-the-best-james-bond-movies-of-all-time-and-it-doesnt-star-daniel-craig-oct-13-19</link>
                                                                            <description>
                            <![CDATA[ I've combed through the new movies added to Prime Video and found three excellent thrillers worth watching this week. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">zgxAhZMmY4PSyXtqipKJpb</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/qYDhM9dx63YdRw4BjCBEhb-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 13 Oct 2026 11:41:03 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Prime Video]]></category>
                                                    <category><![CDATA[Movies]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                    <category><![CDATA[Streaming]]></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>
                                                                                                                                <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/qYDhM9dx63YdRw4BjCBEhb-1920-80.jpg">
                                                            <media:credit><![CDATA[Prime Video; Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Prime Video logo on a purple gold background]]></media:description>                                                            <media:text><![CDATA[Prime Video logo on a purple gold background]]></media:text>
                                <media:title type="plain"><![CDATA[Prime Video logo on a purple gold background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/qYDhM9dx63YdRw4BjCBEhb-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>If you need some mid-week thrills, then Prime Video has you covered. The streaming service has recently refreshed its movie library, and I’ve combed through the recent additions to pick out three thriller movies worthy of your watchlist.</p><p>My picks this week include a compulsive sports drama that brought the Rocky franchise into the modern day. It’s a legacy sequel done right. Or how about one of the best Bond movies ever made, and I’m not talking about one from Daniel Craig’s tenure as the British superspy either. Finally, for those wanting something properly new, there’s a Prime Video original heist caper.</p><p>These are the new to Prime Video thriller movies that need to be on your radar this week.</p><h3 class="article-body__section" id="section-3-best-new-to-prime-video-thriller-movies-this-week"><span>3 best new to Prime Video thriller movies this week</span></h3><h2 id="creed-2015">‘Creed’ (2015)</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/Uv554B7YHk4" allowfullscreen=""></iframe></div></div><p>It’s easy to be a little cynical about legacy sequels. Hollywood loves bringing back classic series with modern installments that attempt to mix the new and the old. The results aren’t always great, but “Creed” is a quintessential example of the formula done almost perfectly. Released nearly a decade after 2006’s “Rocky Balboa,” it takes the sports drama series in a new direction, with a new underdog hero, while fiercely respecting what came before. Hot take incoming: In my Rocky ranking, it falls behind only the practically peerless 1976 original.</p><p>Oscar-winner Michael B. Jordan plays Adonis "Donnie" Johnson, the illegitimate youngest son of former heavyweight champion Apollo Creed. He’s desperate for his own shot at the big time, to prove that he’s worthy of the Creed name. In steps Rocky Balboa (Sylvester Stallone), also a previous world champion and Apollo’s old rival, to train Donnie. The duo’s bond rapidly develops inside and outside the ring as Donnie fights for his chance at glory.</p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B0HCXP7B53" target="_blank" rel="nofollow"><em><strong>"Creed" on Prime Video</strong></em></a><em><strong> now</strong></em></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W5xY3e"></div>                            </div>                            <script src="https://kwizly.com/embed/W5xY3e.js" async=""></script><h2 id="goldeneye-1995">‘Goldeneye’ (1995)</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/8Zw8ylP4buA" allowfullscreen=""></iframe></div></div><p>Of all the actors to step into the role of James Bond, Pierce Brosnan was perhaps the most unfortunate. He was a great pick to play the suave British spy, but was let down by generally poor material, tortuous production cycles, and ropey 2000s CGI effects. However, his 007 debut, “GoldenEye,” is right up there with the very best Bond movies ever made. It’s a thrilling spy flick that boasts a memorable villain, great action moments, and brought elements to the series that persisted even beyond Brosnan’s time in the tuxedo, such as Judi Dench’s turn as Bond’s handler M.</p><p>The first Bond movie to be wholly original, without taking plot points from an Ian Fleming novel, it begins with 007 and 006, Alec Trevelyan (Sean Bean), infiltrating a chemical weapons facility. The mission goes south and ends in tragedy. “GoldenEye” then flashes forward nine years as the British spy learns that an experimental satellite weapon system has fallen into the wrong hands. The trail leads him to Russia, but this time Bond faces his most dangerous foe yet, somebody who knows his moves and how to best them.</p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B0DS6GMVJG" target="_blank" rel="nofollow"><em><strong>"GoldenEye" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="masterplan-2026-2">‘Masterplan’ (2026)</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/gc0t8AfMP6k" allowfullscreen=""></iframe></div></div><p>Prime Video’s library drops are a great opportunity to rewatch old favorites or catch up on the best movies of years gone by that you missed the first time around. However, if you’re craving something genuinely <em>new </em>this week, then how about “Masterplan,” Prime Video’s new original heist caper. If a daring scheme to steal the Mona Lisa isn’t enough to convince you to watch this comedy-thriller, Stanley Tucci in the leading role should tip you over the edge. The “Devil Wears Prada” star is always an incredibly charming on-screen presence.</p><p>Tucci plays a master thief preparing for retirement, but not before attempting to pull off the heist of a lifetime: Stealing the Mona Lisa from the Louvre Museum. It’s only the most prized and highly secure on-display painting in the world! To assist, he recruits Chiara (Simona Tabasco), a tech whiz, and Jay (Victor Belmondo), an explosives expert, before revealing they are actually his long-lost children. This heist is an unconventional family reunion, and it turns out that stealing the priceless painting might be easier than getting this estranged family to work together without a fight.</p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B0HJGR59RZ" target="_blank" rel="nofollow"><em><strong>"Masterplan" on Prime Video</strong></em></a><em><strong> starting October 16</strong></em></p><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="gdR2W4" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><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/entertainment/prime-video/new-on-prime-video-in-october-2026-top-new-movies-and-shows-to-stream-this-month#section-new-movies-on-prime-video-in-october-2026">New on Prime Video in October 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/prime-video-top-10-movies-heres-the-3-worth-watching-this-week-oct-12-18">Prime Video top 10 movies — here’s the 3 worth watching</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/carrie-review-mike-flanagan-proves-theres-more-to-this-story-than-prom-night">Prime Video’s ‘Carrie’ is one of the best shows this year</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Prime Video top 10 movies — here’s the 3 worth watching this week (Oct. 12-18) ]]></title>
                                                                                                <dc:content><![CDATA[ <p>It’s the start of a new week, which means it’s once again time to comb through the best of Prime Video's top 10 chart. There’s no need to endlessly scroll through the streaming platform’s ever-expanding library when I can quickly recommend a trio of winning flicks that are currently storming the service. </p><p>Prime Video’s top 10 isn’t always stuffed with instant classics, yet I found it pretty easy to pick out three choices this week. My picks include a breezy rom-com that’s generating a lot of buzz, the fourth entry in an action icon’s legendary franchise, and a thriller that packs in both set pieces and smarts. </p><p>The movies below are taken from <strong>Prime Video’s top 10 as of Monday, October 12, 2026</strong>. Though not every movie in this list is going to be up your alley, I’m confident you'll enjoy my picks. </p><h3 class="article-body__section" id="section-best-movies-in-the-prime-video-top-10"><span>Best movies in the Prime Video top 10</span></h3><h2 id="the-love-hypothesis-2026">‘The Love Hypothesis’ (2026)</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/xwdamnfS6IM" allowfullscreen=""></iframe></div></div><p>I’m normally allergic to rom-coms, but I had a surprising amount of fun with this one. A knowingly silly adaptation of Ali Hazelwood’s bestseller, “The Love Hypothesis" gets a decent amount of mileage out of its semi-ludicrous premise. Centering around the fake relationship between PhD candidate Olive Smith (Lili Reinhart) and the gruff, socially inept professor Adam Carlsen (Tom Bateman), this light-hearted romance reminded me of “How to Lose a Guy in 10 Days”.  </p><p>If you can get past the thoroughly stupid premise, there are laughs to be had in “The Love Hypothesis”. Once I accepted that two intellectuals would enter into a pretend relationship after an accidental kiss in a hallway, I let myself go along for the vaguely absurd ride. As the fake couple tries to convince Olive’s friends that she’s over her previous crush, the pair are repeatedly plunged into awkward social situations… mainly because the grumpy professor has problems acting like a human. Silly setup or not, Reinhart and Bateman’s chemistry sizzles.   </p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B0H4WZS7VX" target="_blank" rel="nofollow"><em><strong>"The Love Hypothesis" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="john-wick-chapter-4-39-2023">‘John Wick: Chapter 4' (2023)</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/qEVUtrk8_B4" allowfullscreen=""></iframe></div></div><p>Despite the fact I’m still very much not over what they did to his puppy in the first film, I can’t resist Keanu’s iconic hitman. Acting as the final chapter in the “gun fu” saga (for now at least), “John Wick: Chapter 4” is an energetic actioner that revels in high-octane fight sequences without ever taking itself too seriously. Though he was almost 60 when he filmed this, it’s a pleasure to see Reeves can still whoop <em>all</em> the butt. </p><p>After the High Table’s Marquis (Bill Skarsgård) destroys the New York Continental, Wick once again finds himself on the run. The setting this time out is downright epic, with John’s bullet-ridden adventure taking him to Morocco, Tokyo and Berlin, before culminating in a suitably cinematic duel in Paris. Donnie Yen is a particularly welcome new addition to the cast, once again going full “Rogue One” by playing a blind martial arts expert. I’m not sure where the next entry goes after this instalment’s fairly definitive conclusion, but I’m eager to find out. </p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B0B8TK1TTT" target="_blank" rel="nofollow"><em><strong>"John Wick: Chapter 4" on Prime Video</strong></em></a><em><strong> now</strong></em></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-X8p9LX"></div>                            </div>                            <script src="https://kwizly.com/embed/X8p9LX.js" async=""></script><h2 id="the-amateur-2025">‘The Amateur’ (2025)</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/DCWcK4c-F8Q" allowfullscreen=""></iframe></div></div><p>Based on the 1981 Robert Littell novel, “The Amateur” is a reasonably gripping thriller with some mighty fun setpieces. After Charlie Heller (Rami Malek) loses his wife to a terror attack in London, the nerdy CIA surveillance expert sets out on a revenge mission. Though his superiors are initially unwilling to help him, a quick bit of blackmail soon gets them onside. </p><p>Once Heller has been trained by Lawrence Fishburne’s extra cranky operative, this unlikely action hero is ready to take on his wife’s killers. Don’t expect roundhouse kicks or uzi-wielding shootouts, though. After all, this is a dude whose boss doesn’t think he “could beat a 90-year-old nun in an arm wrestling match.” Heller may not have the brawn, but he certainly has the brains — a rooftop swimming pool sequence shows off both his cunning and his cruelty. Stylishly shot and with a strong cast that includes John Bernthal, this is one thriller that’s ready to turn pro. </p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B0D4885S88" target="_blank" rel="nofollow"><em><strong>"The Amateur" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h3 class="article-body__section" id="section-prime-video-top-10-movies-right-now"><span>Prime Video top 10 movies right now</span></h3><ol start="1"><li>"Now You See Me: Now You Don't" (2025)</li><li>"The Love Hypothesis" (2026)</li><li>"Forget Me Never" (1999)</li><li>"First Winter" (1982)</li><li>"Dark Nature" (2023)</li><li>"John Wick: Chapter 4" (2023)</li><li>"The Secret of Moonacre" (2008)</li><li>"The Amateur" (2025)</li><li>"Jack Reacher: Never Go Back" (2016)</li><li>"Masters of the Universe" (2026)</li></ol><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="gdR2W4" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><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/entertainment/prime-video/new-on-prime-video-in-october-2026-top-new-movies-and-shows-to-stream-this-month">New on Prime Video in October 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/i-watched-prime-videos-new-romantic-comedy-movie-and-i-think-the-logic-mostly-checks-out">The Love Hypothesis review: the logic mostly checks out</a></li><li><a href="https://www.tomsguide.com/us/best-streaming-video-services,review-2625.html">The best streaming services in 2026</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/prime-video/prime-video-top-10-movies-heres-the-3-worth-watching-this-week-oct-12-18</link>
                                                                            <description>
                            <![CDATA[ The Prime Video top 10 most-watched list has been updated once again. I'm here to help you sift through the movies that are actually worth streaming. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">7tnBdbXGd25usj35nbMnXS</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/CzNUtUmp7P3FEQqLgbp8z4-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 12 Oct 2026 16:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Prime Video]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                    <category><![CDATA[Streaming]]></category>
                                                                                                <author><![CDATA[ dave.meikleham@futurenet.com (Dave Meikleham) ]]></author>                    <dc:creator><![CDATA[ Dave Meikleham ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Rda8e7jGfyTdZLWYJQQ8VY-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Dave is a computing editor at Tom’s Guide and covers everything from cutting-edge laptops, the latest GPU tech, to ultrawide monitors. When he’s not worrying about dead pixels, Dave enjoys regularly rebuilding his PC for absolutely no reason at all. He built his first rig over 20 years ago, and he’s gone through more motherboards than he’s had hot dinners. Probably. &lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;In a previous life, he worked as a video game journalist during a career spanning the best part of two decades. Over that time he worked across both online and print, with bylines for GamesRadar+, PC Gamer, TechRadar, Edge and the Official UK PlayStation Magazine. He’s almost amassed an immeasurable amount of bad puns.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;An avid PC and console gamer, Dave enjoys breaking out Fraps way too often as he obsesses over frame rates. Despite owning a graphics card that costs roughly the same as your average used car, he still enjoys gaming on the go and is regularly glued to his Switch. Away from tech, most of Dave’s time is taken up by walking his husky, obsessing about his various OLED displays and sweating over the fitness of half a dozen Arsenal players on any given week.&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/CzNUtUmp7P3FEQqLgbp8z4-1920-80.jpg">
                                                            <media:credit><![CDATA[Prime Video; Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Prime Video logo on a green background]]></media:description>                                                            <media:text><![CDATA[Prime Video logo on a green background]]></media:text>
                                <media:title type="plain"><![CDATA[Prime Video logo on a green background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/CzNUtUmp7P3FEQqLgbp8z4-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>It’s the start of a new week, which means it’s once again time to comb through the best of Prime Video's top 10 chart. There’s no need to endlessly scroll through the streaming platform’s ever-expanding library when I can quickly recommend a trio of winning flicks that are currently storming the service. </p><p>Prime Video’s top 10 isn’t always stuffed with instant classics, yet I found it pretty easy to pick out three choices this week. My picks include a breezy rom-com that’s generating a lot of buzz, the fourth entry in an action icon’s legendary franchise, and a thriller that packs in both set pieces and smarts. </p><p>The movies below are taken from <strong>Prime Video’s top 10 as of Monday, October 12, 2026</strong>. Though not every movie in this list is going to be up your alley, I’m confident you'll enjoy my picks. </p><h3 class="article-body__section" id="section-best-movies-in-the-prime-video-top-10"><span>Best movies in the Prime Video top 10</span></h3><h2 id="the-love-hypothesis-2026">‘The Love Hypothesis’ (2026)</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/xwdamnfS6IM" allowfullscreen=""></iframe></div></div><p>I’m normally allergic to rom-coms, but I had a surprising amount of fun with this one. A knowingly silly adaptation of Ali Hazelwood’s bestseller, “The Love Hypothesis" gets a decent amount of mileage out of its semi-ludicrous premise. Centering around the fake relationship between PhD candidate Olive Smith (Lili Reinhart) and the gruff, socially inept professor Adam Carlsen (Tom Bateman), this light-hearted romance reminded me of “How to Lose a Guy in 10 Days”.  </p><p>If you can get past the thoroughly stupid premise, there are laughs to be had in “The Love Hypothesis”. Once I accepted that two intellectuals would enter into a pretend relationship after an accidental kiss in a hallway, I let myself go along for the vaguely absurd ride. As the fake couple tries to convince Olive’s friends that she’s over her previous crush, the pair are repeatedly plunged into awkward social situations… mainly because the grumpy professor has problems acting like a human. Silly setup or not, Reinhart and Bateman’s chemistry sizzles.   </p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B0H4WZS7VX" target="_blank" rel="nofollow"><em><strong>"The Love Hypothesis" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="john-wick-chapter-4-39-2023">‘John Wick: Chapter 4' (2023)</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/qEVUtrk8_B4" allowfullscreen=""></iframe></div></div><p>Despite the fact I’m still very much not over what they did to his puppy in the first film, I can’t resist Keanu’s iconic hitman. Acting as the final chapter in the “gun fu” saga (for now at least), “John Wick: Chapter 4” is an energetic actioner that revels in high-octane fight sequences without ever taking itself too seriously. Though he was almost 60 when he filmed this, it’s a pleasure to see Reeves can still whoop <em>all</em> the butt. </p><p>After the High Table’s Marquis (Bill Skarsgård) destroys the New York Continental, Wick once again finds himself on the run. The setting this time out is downright epic, with John’s bullet-ridden adventure taking him to Morocco, Tokyo and Berlin, before culminating in a suitably cinematic duel in Paris. Donnie Yen is a particularly welcome new addition to the cast, once again going full “Rogue One” by playing a blind martial arts expert. I’m not sure where the next entry goes after this instalment’s fairly definitive conclusion, but I’m eager to find out. </p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B0B8TK1TTT" target="_blank" rel="nofollow"><em><strong>"John Wick: Chapter 4" on Prime Video</strong></em></a><em><strong> now</strong></em></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-X8p9LX"></div>                            </div>                            <script src="https://kwizly.com/embed/X8p9LX.js" async=""></script><h2 id="the-amateur-2025">‘The Amateur’ (2025)</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/DCWcK4c-F8Q" allowfullscreen=""></iframe></div></div><p>Based on the 1981 Robert Littell novel, “The Amateur” is a reasonably gripping thriller with some mighty fun setpieces. After Charlie Heller (Rami Malek) loses his wife to a terror attack in London, the nerdy CIA surveillance expert sets out on a revenge mission. Though his superiors are initially unwilling to help him, a quick bit of blackmail soon gets them onside. </p><p>Once Heller has been trained by Lawrence Fishburne’s extra cranky operative, this unlikely action hero is ready to take on his wife’s killers. Don’t expect roundhouse kicks or uzi-wielding shootouts, though. After all, this is a dude whose boss doesn’t think he “could beat a 90-year-old nun in an arm wrestling match.” Heller may not have the brawn, but he certainly has the brains — a rooftop swimming pool sequence shows off both his cunning and his cruelty. Stylishly shot and with a strong cast that includes John Bernthal, this is one thriller that’s ready to turn pro. </p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B0D4885S88" target="_blank" rel="nofollow"><em><strong>"The Amateur" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h3 class="article-body__section" id="section-prime-video-top-10-movies-right-now"><span>Prime Video top 10 movies right now</span></h3><ol start="1"><li>"Now You See Me: Now You Don't" (2025)</li><li>"The Love Hypothesis" (2026)</li><li>"Forget Me Never" (1999)</li><li>"First Winter" (1982)</li><li>"Dark Nature" (2023)</li><li>"John Wick: Chapter 4" (2023)</li><li>"The Secret of Moonacre" (2008)</li><li>"The Amateur" (2025)</li><li>"Jack Reacher: Never Go Back" (2016)</li><li>"Masters of the Universe" (2026)</li></ol><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="gdR2W4" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><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/entertainment/prime-video/new-on-prime-video-in-october-2026-top-new-movies-and-shows-to-stream-this-month">New on Prime Video in October 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/i-watched-prime-videos-new-romantic-comedy-movie-and-i-think-the-logic-mostly-checks-out">The Love Hypothesis review: the logic mostly checks out</a></li><li><a href="https://www.tomsguide.com/us/best-streaming-video-services,review-2625.html">The best streaming services in 2026</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 3 best new to Prime Video shows you should binge-watch this weekend —including an original based on a classic Stephen King book (Oct. 9-11) ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Halloween is barreling toward us, and <strong>Prime Video</strong> has stocked up with fresh titles perfect for a weekend on the couch lounging around and planning some potential costumes. From a scrappy zombie comedy to a prestige horror series, this week's new arrivals have a little something for every kind of fright fan.</p><p>First up is <strong>"I Would Rather Die,"</strong> a Mexican teen horror-comedy about a high-school outcast named Archie who gets bitten by a zombie and has to hold onto his humanity long enough to hunt down a cure and stop an apocalypse, all with his goth best friend and his crush in tow. </p><p>Want something with a little more fantasy? The anime <strong>"The 7 Knights of the Marronnier Kingdom"</strong> follows seven gifted brothers sent off as royal envoys across a medieval fantasy world, and it's full of comedy and romance. </p><p>Saving the scariest for last, there's <strong>"Carrie,"</strong> Mike Flanagan's eight-episode take on the Stephen King classic, with newcomer Summer H. Howell as a bullied teen whose telekinetic powers build toward one unforgettable prom night. </p><p>Wanna know more? Here are three top picks worth streaming on Prime Video this weekend. Grab the candy corn, y'all. Halloween is almost here.</p><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="gdR2W4" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><h2 id="39-prefiero-la-muerte-i-would-rather-die-39-2026">'Prefiero la Muerte (I Would Rather Die)' (2026)</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/ojteM2SYB88" allowfullscreen=""></iframe></div></div><p><strong>What it's about: </strong>This Mexican teen horror-comedy follows Archie (Diego Bernal), the self-described loser of his high school in the town of Mendoza, whose life takes a turn when he's bitten by a zombie at the local corner store. Instead of becoming a mindless monster, Archie manages to hang onto his mind just enough to go looking for a cure, teaming up with his goth best friend and his crush to get to the bottom of a plot that could plunge the whole town into a full-blown apocalypse.</p><p><strong>Why you should watch it:</strong> Created, written and directed by Sebastián Sariñana, "I Would Rather Die" uses its zombie premise as a metaphor for adolescence. It balances gross-out gags and scares with coming-of-age and heart, plus all eight episodes dropped at once, so it's built for a binge-watch whenever you're ready to jump in. </p><p><em><strong>Stream </strong></em><a href="https://www.amazon.com/gp/video/detail/B08R2L27SJ" target="_blank" rel="nofollow"><em><strong>"Prefiero la Muerte (I Would Rather Die)" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="39-the-7-knights-of-the-marronnier-kingdom-39-2026">'The 7 Knights of the Marronnier Kingdom' (2026)</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/1j4Qm9ga6nI" allowfullscreen=""></iframe></div></div><p><strong>What's it about?</strong> At the center of a continent made up of eight kingdoms is the Marronnier Kingdom, home to the general Baribara and her seven sons, each gifted in his own way and serving as a knight commander. United by one slightly ridiculous dream to rescue a princess, the seven brothers are sent as goodwill ambassadors to the seven neighboring kingdoms, where adventure, romance and plenty of trouble await. Meanwhile, Marronnier's own princess slips out of the palace in disguise to join one of them on his journey.</p><p><strong>Why you should watch it:</strong> Based on Nao Iwamoto's manga, this medieval fantasy anime mixes swashbuckling adventure with a healthy dose of comedy and romance. If you're after a charming fantasy to add to your fall anime rotation, the seven brothers make for easy, breezy company for fans of shows like "The Seven Deadly Sins." m</p><p><em><strong>Stream </strong></em><a href="https://www.amazon.com/gp/video/detail/B0HG6N5R36?ref_=atv_sr_fle_c_sra5ba81_pvsearchresults_1_1" target="_blank" rel="nofollow"><em><strong>"The 7 Knights of the Marronnier Kingdom" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="39-carrie-39-2026-2">'Carrie' (2026) </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/jkUw2nh6fT0" allowfullscreen=""></iframe></div></div><p><strong>What's it about?</strong> Mike Flanagan takes on one of Stephen King's most iconic stories here and turns "Carrie" into an eight-episode series. Newcomer Summer H. Howell stars as Carrie White, a sheltered high schooler raised by a fanatically religious mother (Samantha Sloyan), who slowly comes to realize she possesses terrifying telekinetic powers. As the bullying at school and cruelty at home get worse, the show inches toward the infamous, blood-drenched prom night that King fans know is coming.</p><p><strong>Why you should watch it:</strong> Flanagan, the creator of Netflix's "The Haunting of Hill House" and "Midnight Mass," is talented at blending scares with emotional depth, and early reviews suggest this is one of the strongest screen versions of "Carrie" yet, with a sterling 88% on <a href="https://www.rottentomatoes.com/tv/carrie/s01" target="_blank">Rotten Tomatoes</a>. It's essential viewing for the spookiest season of the year, and all episodes are available to stream now. </p><p><em><strong>Stream </strong></em><a href="https://www.amazon.com/gp/video/detail/B0H8R9DQHS?ref_=atv_sr_fle_c_src13fdd_pvsearchresults_1_1" target="_blank" rel="nofollow"><em><strong>"Carrie" on Prime Video</strong></em></a><em><strong> now</strong></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/entertainment/prime-video/5-new-to-prime-video-movies-in-october-2026-i-recommend-with-90-percent-or-higher-on-rotten-tomatoes">5 Prime Video movies with 90% or higher on Rotten Tomatoes</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/carrie-review-mike-flanagan-proves-theres-more-to-this-story-than-prom-night">Prime Video’s ‘Carrie’ is one of the best shows I’ve seen in 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/prime-video-just-added-136-new-movies-here-are-the-5-im-streaming-first">Prime Video just added 136 new movies — here are the 5 best</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/prime-video/3-best-new-to-prime-video-shows-you-should-binge-watch-this-weekend-including-an-original-based-on-a-classic-stephen-king-book-oct-9-11</link>
                                                                            <description>
                            <![CDATA[ Planning to binge-watch something new this weekend? Here's our weekly guide to the best new to Prime Video series you should be streaming right now. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">zrcgJahAUYdU8wB9ZNFZPG</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/QnWGM5CthNb8zgXsNbAcv-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 09 Oct 2026 17:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Prime Video]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                    <category><![CDATA[Streaming]]></category>
                                                                                                                    <dc:creator><![CDATA[ Brittany Vincent ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/JDgb6vqXHys3nrFJpkRCub-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/QnWGM5CthNb8zgXsNbAcv-1920-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Prime Video streaming logo purple]]></media:description>                                                            <media:text><![CDATA[Prime Video streaming logo purple]]></media:text>
                                <media:title type="plain"><![CDATA[Prime Video streaming logo purple]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/QnWGM5CthNb8zgXsNbAcv-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Halloween is barreling toward us, and <strong>Prime Video</strong> has stocked up with fresh titles perfect for a weekend on the couch lounging around and planning some potential costumes. From a scrappy zombie comedy to a prestige horror series, this week's new arrivals have a little something for every kind of fright fan.</p><p>First up is <strong>"I Would Rather Die,"</strong> a Mexican teen horror-comedy about a high-school outcast named Archie who gets bitten by a zombie and has to hold onto his humanity long enough to hunt down a cure and stop an apocalypse, all with his goth best friend and his crush in tow. </p><p>Want something with a little more fantasy? The anime <strong>"The 7 Knights of the Marronnier Kingdom"</strong> follows seven gifted brothers sent off as royal envoys across a medieval fantasy world, and it's full of comedy and romance. </p><p>Saving the scariest for last, there's <strong>"Carrie,"</strong> Mike Flanagan's eight-episode take on the Stephen King classic, with newcomer Summer H. Howell as a bullied teen whose telekinetic powers build toward one unforgettable prom night. </p><p>Wanna know more? Here are three top picks worth streaming on Prime Video this weekend. Grab the candy corn, y'all. Halloween is almost here.</p><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="gdR2W4" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><h2 id="39-prefiero-la-muerte-i-would-rather-die-39-2026">'Prefiero la Muerte (I Would Rather Die)' (2026)</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/ojteM2SYB88" allowfullscreen=""></iframe></div></div><p><strong>What it's about: </strong>This Mexican teen horror-comedy follows Archie (Diego Bernal), the self-described loser of his high school in the town of Mendoza, whose life takes a turn when he's bitten by a zombie at the local corner store. Instead of becoming a mindless monster, Archie manages to hang onto his mind just enough to go looking for a cure, teaming up with his goth best friend and his crush to get to the bottom of a plot that could plunge the whole town into a full-blown apocalypse.</p><p><strong>Why you should watch it:</strong> Created, written and directed by Sebastián Sariñana, "I Would Rather Die" uses its zombie premise as a metaphor for adolescence. It balances gross-out gags and scares with coming-of-age and heart, plus all eight episodes dropped at once, so it's built for a binge-watch whenever you're ready to jump in. </p><p><em><strong>Stream </strong></em><a href="https://www.amazon.com/gp/video/detail/B08R2L27SJ" target="_blank" rel="nofollow"><em><strong>"Prefiero la Muerte (I Would Rather Die)" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="39-the-7-knights-of-the-marronnier-kingdom-39-2026">'The 7 Knights of the Marronnier Kingdom' (2026)</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/1j4Qm9ga6nI" allowfullscreen=""></iframe></div></div><p><strong>What's it about?</strong> At the center of a continent made up of eight kingdoms is the Marronnier Kingdom, home to the general Baribara and her seven sons, each gifted in his own way and serving as a knight commander. United by one slightly ridiculous dream to rescue a princess, the seven brothers are sent as goodwill ambassadors to the seven neighboring kingdoms, where adventure, romance and plenty of trouble await. Meanwhile, Marronnier's own princess slips out of the palace in disguise to join one of them on his journey.</p><p><strong>Why you should watch it:</strong> Based on Nao Iwamoto's manga, this medieval fantasy anime mixes swashbuckling adventure with a healthy dose of comedy and romance. If you're after a charming fantasy to add to your fall anime rotation, the seven brothers make for easy, breezy company for fans of shows like "The Seven Deadly Sins." m</p><p><em><strong>Stream </strong></em><a href="https://www.amazon.com/gp/video/detail/B0HG6N5R36?ref_=atv_sr_fle_c_sra5ba81_pvsearchresults_1_1" target="_blank" rel="nofollow"><em><strong>"The 7 Knights of the Marronnier Kingdom" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="39-carrie-39-2026-2">'Carrie' (2026) </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/jkUw2nh6fT0" allowfullscreen=""></iframe></div></div><p><strong>What's it about?</strong> Mike Flanagan takes on one of Stephen King's most iconic stories here and turns "Carrie" into an eight-episode series. Newcomer Summer H. Howell stars as Carrie White, a sheltered high schooler raised by a fanatically religious mother (Samantha Sloyan), who slowly comes to realize she possesses terrifying telekinetic powers. As the bullying at school and cruelty at home get worse, the show inches toward the infamous, blood-drenched prom night that King fans know is coming.</p><p><strong>Why you should watch it:</strong> Flanagan, the creator of Netflix's "The Haunting of Hill House" and "Midnight Mass," is talented at blending scares with emotional depth, and early reviews suggest this is one of the strongest screen versions of "Carrie" yet, with a sterling 88% on <a href="https://www.rottentomatoes.com/tv/carrie/s01" target="_blank">Rotten Tomatoes</a>. It's essential viewing for the spookiest season of the year, and all episodes are available to stream now. </p><p><em><strong>Stream </strong></em><a href="https://www.amazon.com/gp/video/detail/B0H8R9DQHS?ref_=atv_sr_fle_c_src13fdd_pvsearchresults_1_1" target="_blank" rel="nofollow"><em><strong>"Carrie" on Prime Video</strong></em></a><em><strong> now</strong></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/entertainment/prime-video/5-new-to-prime-video-movies-in-october-2026-i-recommend-with-90-percent-or-higher-on-rotten-tomatoes">5 Prime Video movies with 90% or higher on Rotten Tomatoes</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/carrie-review-mike-flanagan-proves-theres-more-to-this-story-than-prom-night">Prime Video’s ‘Carrie’ is one of the best shows I’ve seen in 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/prime-video-just-added-136-new-movies-here-are-the-5-im-streaming-first">Prime Video just added 136 new movies — here are the 5 best</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Fire Tablets are dead — Amazon announces new Alexa tablet lineup running Android ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Just as its leaving Android on its Fire TV sticks, Amazon is adopting Google's operating system for its newest generation of tablets, dousing its Fire OS — and moniker — after more than a decade. </p><p>At the same time, Amazon's new tablets now prominently feature <a href="https://www.tomsguide.com/ai/ive-been-using-alexa-for-3-months-here-are-my-5-favorite-features-and-one-im-not-a-fan-of">Alexa+</a> as a persistent widget that lives in the lower righthand corner of the devices, to be summoned at a moment's notice. </p><p>In addition to receiving spoken or written queries, Alexa+ is also able to look at whatever is on the screen of the tablet, and act on your prompts. </p><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="mHcSch2shzBNChV3ACbNBf" name="Amazon tablet Alexa" alt="Alexa+ widget on Amazon Alexa tablet" src="https://cdn.mos.cms.futurecdn.net/mHcSch2shzBNChV3ACbNBf-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>For example, you might have a picture of a plant you've photographed on the screen; Alexa+ can look at the photo and tell you what it is.</p><p>The other really clever feature on the new Alexa tablets is a "Kindle Mode" — open the Kindle app, and the tablet will silence notifications and change the display to a more Kindle-like experience, muting the colors and making it seem closer to an actual e-reader. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:344px;"><p class="vanilla-image-block" style="padding-top:56.40%;"><img id="aeNBvxndSihz5NEK5Rk9A8" name="Amazon Alexa tablet" alt="Kindle mode on Amazon Alexa tablet" src="https://cdn.mos.cms.futurecdn.net/aeNBvxndSihz5NEK5Rk9A8-1920-80.gif" mos="" align="middle" fullscreen="" width="344" height="194" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Here's a rundown of the new tablets; there are five in all — three Amazon Alexa Tablets, and two Amazon Kids Tablets, aimed at younger audiences.</p><h3 class="article-body__section" id="section-amazon-alexa-tablets"><span> Amazon Alexa Tablets</span></h3><h2 id="amazon-alexa-tablet-12-pro">Amazon Alexa Tablet 12 Pro</h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/QoSMaSPrQFLYFsJUF24uJT-1920-80.jpg" alt="Amazon Alexa tablet 12 Pro with nanomatte display on left" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/BR8cXm7eRaxCjbrNijsxfE-1920-80.jpg" alt="Amazon Alexa tablet in portrait mode" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/s8VqCz7S4WxRRNRfo59JAK-1920-80.jpg" alt="Amazon Alexa tablet thickness" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/VMA3Zm8DUCXBjHnydq6SWN-1920-80.jpg" alt="Amazon Alexa tablet" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The headlining model is the Alexa Tablet 12 Pro and its optional nanomatte display. Amazon said it worked with Corning to create a photolithography process that helps preserve color and contrast while cutting down on glare.</p><p>Looking at the nanomatte and glossy displays side by side, the latter did exhibit deeper blacks, though the nanomatte display was pretty close — and as you can tell by the photo, dramatically reduces the glare. </p><p>When using both my finger and the optional stylus, the nanomatte display also felt very comfortable and smooth.</p><p>The Tablet 12 Pro, like the other modes, is made out of aluminum, and has a much more premium feel than older Fire tablets. It's 6.5mm at its thinnest, and has a 12-inch, 280 PPI display (2800x1840) with a 120Hz refresh rate and a rated brightness of 500 nits. It has a 3:2 aspect ratio, which Amazon says is better suited for productivity work. </p><p>Inside is a 4nm 8-core chip with up to 16GB of RAM, along with Dolby Atmos speakers,  and Wi-Fi 6E. Amazon says the Tablet 12 Pro will last up to 16 hours of video playback, which goes up to 20 hours when in Kindle mode. </p><p>One of the long edges of the tablet has a small indentation to magnetically attach  the Amazon Alexa Tablet Pro Pen ($89.99, sold separately); on the other edge is a pin connector for the Amazon Alexa Tablet Pro Keyboard ($149.99).</p><p>The Amazon Alexa Tablet 12 Pro will start at $499.99 with 8GB of RAM and 128GB of storage; the nanomatte model starts at $549.99.</p><h2 id="amazon-alexa-tablet-11">Amazon Alexa Tablet 11</h2><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="qGPJ8bAvR2XgRUebHnVfXd" name="Amazon Alexa tablet purple" alt="Amazon Alexa tablet purple" src="https://cdn.mos.cms.futurecdn.net/qGPJ8bAvR2XgRUebHnVfXd-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Geared more for entertainment, the Amazon Alexa Tablet 11 has a 2.5K display (276 ppi, 2560x1600, 90Hz refresh rate) in a 16:10 aspect ratio, which the company says will be better if you want to kick back and watch a movie. </p><p>Like the 12-inch model, it has an aluminum unibody, but has an 8-core processor with 8GB of RAM, dual Dolby Atmos speakers, and will last up to 15 hours playing video.  </p><p>Amazon Alexa Tablet 11 starts at $329.99 in Graphite, Amethyst, and Matcha, with 8GB RAM and 64GB storage; unlike the Tablet 12 Pro, there's no option for a nanomatte display.</p><h2 id="amazon-alexa-tablet-8">Amazon Alexa Tablet 8</h2><p>Last is the Amazon Alexa Tablet 8, which has an 8.7-inch 1340x800 display, and weighs 11.6 ounces. It has an 8-core processor, Wi-Fi 6 and will last up to 14 hours of video playback. It starts at $229.99 with 4GB RAM and 64GB storage, and comes in three colors: Graphite, Rosette, and Teal.</p><h3 class="article-body__section" id="section-amazon-kids-tablets"><span>Amazon Kids Tablets</span></h3><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/Dia22498riA4tx6tmqmrsn-1920-80.jpg" alt="Amazon Kids Tablets" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/8au4XaQ85pi9ZXX6ek9Fxn-1920-80.jpg" alt="Amazon Kids Tablets" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/fvnz6fV9qAmAH5y6moUfvn-1920-80.jpg" alt="Amazon Kids Tablets" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Amazon is also relaunching its Kids Tablets in two sizes: 8.7 inches and 11 inches. Like earlier models, these too will come with protective bumper cases, which will be offered with designs from popular franchises like Paw Patrol and Barbie. The 8-inch tablet will last up to 14 hours on a charge when playing video, and the 11-inch will last up to 15 hours.</p><p>Like previous kids' tablets, these models will have the usual array of parental controls, from content restrictions to time limits to whitelisted web pages. Like the grown-up tablets, there's an Alexa+ button in the corner, but it's a more siloed, kid-friendly version. </p><p>The Amazon Kids Tablet 8 starts at $229.99 and Amazon Kids Tablet 11 starts at $329.99.</p><h3 class="article-body__section" id="section-outlook"><span>Outlook</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="YB8kVJeRzYJ4GKBZeMjxJ7" name="Amazon Alexa tablets" alt="Amazon Alexa tablets" src="https://cdn.mos.cms.futurecdn.net/YB8kVJeRzYJ4GKBZeMjxJ7-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>All of the new Amazon tablets will be go on sale in the U.S., Mexico, and Canada on October 14, 2026, and will be available in the UK, Germany, France, Italy, and Spain on October 19. </p><p>Having held all of the new tablets, I can attest to their much-improved design, and the 12-inch model certainly felt responsive when I was swiping and using the stylus; we'll have to get one in our lab to see how it compares to the <a href="https://www.tomsguide.com/best-picks/best-android-tablets">best Android tablets</a>, but its matte display will surely be a differentiator.</p><p>Even though these tablets have Alexa+ as their go-to AI, because these are Android-based, you can also use Gemini as the default voice assistant, which makes for an interesting dichotomy.</p><p>These new tablets are also more expensive than previous versions; the Fire HD 8 tablet, for instance, only cost $129, while the kids' model was $179. This is partly a reflection on the current state of electronics as well as the fact that the new tablets use more durable materials, but the higher prices could give some parents pause.</p><p>Stay tuned for our full assessments of these devices; we hope to get them reviewed 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/computing/tablets/i-finally-found-a-tablet-with-a-paper-like-display-thats-perfect-for-productivity-without-the-distractions"><strong>I finally found a tablet with a paper-like display that’s perfect for productivity without the distractions</strong></a></li><li><a href="https://www.tomsguide.com/computing/android-tablets/i-thought-smaller-was-better-until-i-tried-a-massive-14-inch-tablet-that-feels-like-a-clipboard"><strong>I thought smaller was better until I tried a massive 14-inch tablet that feels like a clipboard</strong></a></li><li><a href="https://www.tomsguide.com/computing/tablets/lenovo-tab-plus-gen-2-review"><strong>I used this Android tablet for three weeks — and its giant speaker has spoiled me</strong></a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/android-tablets/fire-tablets-are-dead-amazon-announces-new-alexa-tablet-lineup-running-android</link>
                                                                            <description>
                            <![CDATA[ Amazon has redone its entire tablet lineup with a new design, switching to Android and integrating Alexa+. Here's our hands-on look at all of them, their price, and when you can order them. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">pKRoCuYj56BDxDyoLKM8ZA</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/2dEqozdDcqfPnm9LFhSL7S-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 08 Oct 2026 13:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Android Tablets]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Tablets]]></category>
                                                                                                <author><![CDATA[ mike.prospero@futurenet.com (Mike Prospero) ]]></author>                    <dc:creator><![CDATA[ Mike Prospero ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/xeJFBrJwXQzCqXLZXBFBKQ-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Michael A. Prospero is the U.S. Editor-in-Chief for Tom’s Guide.  In his spare time, he also tests out the latest drones, electric scooters, and smart home gadgets, such as video doorbells. Before his tenure at Tom&#039;s Guide, he was the Reviews Editor for Laptop Magazine, a reporter at Fast Company, the Times of Trenton, and, many eons back, an intern at George magazine. He received his undergraduate degree from Boston College, where he worked on the campus newspaper The Heights, and then attended the Columbia University school of Journalism. When he’s not testing out the latest running watch, electric scooter, or skiing or training for a marathon, he’s probably using the latest sous vide machine, smoker, or pizza oven, to the delight — or chagrin — of his family.&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/2dEqozdDcqfPnm9LFhSL7S-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Amazon Alexa Tablet Pro 12]]></media:description>                                                            <media:text><![CDATA[Amazon Alexa Tablet Pro 12]]></media:text>
                                <media:title type="plain"><![CDATA[Amazon Alexa Tablet Pro 12]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/2dEqozdDcqfPnm9LFhSL7S-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Just as its leaving Android on its Fire TV sticks, Amazon is adopting Google's operating system for its newest generation of tablets, dousing its Fire OS — and moniker — after more than a decade. </p><p>At the same time, Amazon's new tablets now prominently feature <a href="https://www.tomsguide.com/ai/ive-been-using-alexa-for-3-months-here-are-my-5-favorite-features-and-one-im-not-a-fan-of">Alexa+</a> as a persistent widget that lives in the lower righthand corner of the devices, to be summoned at a moment's notice. </p><p>In addition to receiving spoken or written queries, Alexa+ is also able to look at whatever is on the screen of the tablet, and act on your prompts. </p><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="mHcSch2shzBNChV3ACbNBf" name="Amazon tablet Alexa" alt="Alexa+ widget on Amazon Alexa tablet" src="https://cdn.mos.cms.futurecdn.net/mHcSch2shzBNChV3ACbNBf-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>For example, you might have a picture of a plant you've photographed on the screen; Alexa+ can look at the photo and tell you what it is.</p><p>The other really clever feature on the new Alexa tablets is a "Kindle Mode" — open the Kindle app, and the tablet will silence notifications and change the display to a more Kindle-like experience, muting the colors and making it seem closer to an actual e-reader. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:344px;"><p class="vanilla-image-block" style="padding-top:56.40%;"><img id="aeNBvxndSihz5NEK5Rk9A8" name="Amazon Alexa tablet" alt="Kindle mode on Amazon Alexa tablet" src="https://cdn.mos.cms.futurecdn.net/aeNBvxndSihz5NEK5Rk9A8-1920-80.gif" mos="" align="middle" fullscreen="" width="344" height="194" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Here's a rundown of the new tablets; there are five in all — three Amazon Alexa Tablets, and two Amazon Kids Tablets, aimed at younger audiences.</p><h3 class="article-body__section" id="section-amazon-alexa-tablets"><span> Amazon Alexa Tablets</span></h3><h2 id="amazon-alexa-tablet-12-pro">Amazon Alexa Tablet 12 Pro</h2><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/QoSMaSPrQFLYFsJUF24uJT-1920-80.jpg" alt="Amazon Alexa tablet 12 Pro with nanomatte display on left" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/BR8cXm7eRaxCjbrNijsxfE-1920-80.jpg" alt="Amazon Alexa tablet in portrait mode" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/s8VqCz7S4WxRRNRfo59JAK-1920-80.jpg" alt="Amazon Alexa tablet thickness" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/VMA3Zm8DUCXBjHnydq6SWN-1920-80.jpg" alt="Amazon Alexa tablet" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The headlining model is the Alexa Tablet 12 Pro and its optional nanomatte display. Amazon said it worked with Corning to create a photolithography process that helps preserve color and contrast while cutting down on glare.</p><p>Looking at the nanomatte and glossy displays side by side, the latter did exhibit deeper blacks, though the nanomatte display was pretty close — and as you can tell by the photo, dramatically reduces the glare. </p><p>When using both my finger and the optional stylus, the nanomatte display also felt very comfortable and smooth.</p><p>The Tablet 12 Pro, like the other modes, is made out of aluminum, and has a much more premium feel than older Fire tablets. It's 6.5mm at its thinnest, and has a 12-inch, 280 PPI display (2800x1840) with a 120Hz refresh rate and a rated brightness of 500 nits. It has a 3:2 aspect ratio, which Amazon says is better suited for productivity work. </p><p>Inside is a 4nm 8-core chip with up to 16GB of RAM, along with Dolby Atmos speakers,  and Wi-Fi 6E. Amazon says the Tablet 12 Pro will last up to 16 hours of video playback, which goes up to 20 hours when in Kindle mode. </p><p>One of the long edges of the tablet has a small indentation to magnetically attach  the Amazon Alexa Tablet Pro Pen ($89.99, sold separately); on the other edge is a pin connector for the Amazon Alexa Tablet Pro Keyboard ($149.99).</p><p>The Amazon Alexa Tablet 12 Pro will start at $499.99 with 8GB of RAM and 128GB of storage; the nanomatte model starts at $549.99.</p><h2 id="amazon-alexa-tablet-11">Amazon Alexa Tablet 11</h2><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="qGPJ8bAvR2XgRUebHnVfXd" name="Amazon Alexa tablet purple" alt="Amazon Alexa tablet purple" src="https://cdn.mos.cms.futurecdn.net/qGPJ8bAvR2XgRUebHnVfXd-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Geared more for entertainment, the Amazon Alexa Tablet 11 has a 2.5K display (276 ppi, 2560x1600, 90Hz refresh rate) in a 16:10 aspect ratio, which the company says will be better if you want to kick back and watch a movie. </p><p>Like the 12-inch model, it has an aluminum unibody, but has an 8-core processor with 8GB of RAM, dual Dolby Atmos speakers, and will last up to 15 hours playing video.  </p><p>Amazon Alexa Tablet 11 starts at $329.99 in Graphite, Amethyst, and Matcha, with 8GB RAM and 64GB storage; unlike the Tablet 12 Pro, there's no option for a nanomatte display.</p><h2 id="amazon-alexa-tablet-8">Amazon Alexa Tablet 8</h2><p>Last is the Amazon Alexa Tablet 8, which has an 8.7-inch 1340x800 display, and weighs 11.6 ounces. It has an 8-core processor, Wi-Fi 6 and will last up to 14 hours of video playback. It starts at $229.99 with 4GB RAM and 64GB storage, and comes in three colors: Graphite, Rosette, and Teal.</p><h3 class="article-body__section" id="section-amazon-kids-tablets"><span>Amazon Kids Tablets</span></h3><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/Dia22498riA4tx6tmqmrsn-1920-80.jpg" alt="Amazon Kids Tablets" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/8au4XaQ85pi9ZXX6ek9Fxn-1920-80.jpg" alt="Amazon Kids Tablets" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/fvnz6fV9qAmAH5y6moUfvn-1920-80.jpg" alt="Amazon Kids Tablets" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Amazon is also relaunching its Kids Tablets in two sizes: 8.7 inches and 11 inches. Like earlier models, these too will come with protective bumper cases, which will be offered with designs from popular franchises like Paw Patrol and Barbie. The 8-inch tablet will last up to 14 hours on a charge when playing video, and the 11-inch will last up to 15 hours.</p><p>Like previous kids' tablets, these models will have the usual array of parental controls, from content restrictions to time limits to whitelisted web pages. Like the grown-up tablets, there's an Alexa+ button in the corner, but it's a more siloed, kid-friendly version. </p><p>The Amazon Kids Tablet 8 starts at $229.99 and Amazon Kids Tablet 11 starts at $329.99.</p><h3 class="article-body__section" id="section-outlook"><span>Outlook</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="YB8kVJeRzYJ4GKBZeMjxJ7" name="Amazon Alexa tablets" alt="Amazon Alexa tablets" src="https://cdn.mos.cms.futurecdn.net/YB8kVJeRzYJ4GKBZeMjxJ7-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>All of the new Amazon tablets will be go on sale in the U.S., Mexico, and Canada on October 14, 2026, and will be available in the UK, Germany, France, Italy, and Spain on October 19. </p><p>Having held all of the new tablets, I can attest to their much-improved design, and the 12-inch model certainly felt responsive when I was swiping and using the stylus; we'll have to get one in our lab to see how it compares to the <a href="https://www.tomsguide.com/best-picks/best-android-tablets">best Android tablets</a>, but its matte display will surely be a differentiator.</p><p>Even though these tablets have Alexa+ as their go-to AI, because these are Android-based, you can also use Gemini as the default voice assistant, which makes for an interesting dichotomy.</p><p>These new tablets are also more expensive than previous versions; the Fire HD 8 tablet, for instance, only cost $129, while the kids' model was $179. This is partly a reflection on the current state of electronics as well as the fact that the new tablets use more durable materials, but the higher prices could give some parents pause.</p><p>Stay tuned for our full assessments of these devices; we hope to get them reviewed 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/computing/tablets/i-finally-found-a-tablet-with-a-paper-like-display-thats-perfect-for-productivity-without-the-distractions"><strong>I finally found a tablet with a paper-like display that’s perfect for productivity without the distractions</strong></a></li><li><a href="https://www.tomsguide.com/computing/android-tablets/i-thought-smaller-was-better-until-i-tried-a-massive-14-inch-tablet-that-feels-like-a-clipboard"><strong>I thought smaller was better until I tried a massive 14-inch tablet that feels like a clipboard</strong></a></li><li><a href="https://www.tomsguide.com/computing/tablets/lenovo-tab-plus-gen-2-review"><strong>I used this Android tablet for three weeks — and its giant speaker has spoiled me</strong></a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ This $27 Blink Mini 2K+ two-pack is the smartest Prime Day deal I've seen so far ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Prime Day is officially here, and while the homepage is flooded with discounts, the <a href="https://www.amazon.com/Blink-Mini-2KPlus-2cam-White/dp/B0F3BJJ9DJ/ref" target="_blank" rel="nofollow">Blink Mini 2K+ is on sale for $27, down from $69,</a> and it has caught my attention. Saving $42 (a massive 60% discount) on a brand-new two-pack means you are getting sharp, multi-room security for under $14 per camera. </p><p>In our testing, Blink’s compact plug-in line has consistently earned top marks for hitting the sweet spot between low cost and reliable performance, making this steep Prime Day price cut an absolute no-brainer if you want to cover your home without spending a fortune.</p><div class="product"><a data-dimension112="fc19babc-c172-11f1-a5d7-dff1a40cb155" data-action="Deal Block" data-label="Blink Mini 2K (2-Pack)" data-dimension48="Blink Mini 2K (2-Pack)" data-dimension25="$27" href="https://www.amazon.com/Blink-Mini-2KPlus-2cam-White/dp/B0F3BJJ9DJ/ref" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:390px;"><p class="vanilla-image-block" style="padding-top:128.21%;"><img id="gufkiyLmX7injxLWpfvWtk" name="blink-mini-2k--plugin-indooroutdoor-secu-132d7599-55fd-41c2-90dc-c62a030aae15.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/gufkiyLmX7injxLWpfvWtk-1920-80.jpg" mos="" align="middle" fullscreen="" width="390" height="500" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/Blink-Mini-2KPlus-2cam-White/dp/B0F3BJJ9DJ/ref" target="_blank" rel="nofollow" data-dimension112="fc19babc-c172-11f1-a5d7-dff1a40cb155" data-action="Deal Block" data-label="Blink Mini 2K (2-Pack)" data-dimension48="Blink Mini 2K (2-Pack)" data-dimension25="$27">Blink Mini 2K (2-Pack): was $69 now $27</a></strong><br />Amazon’s Blink Mini 2K+ drops to just $27 for a two-pack for Prime Day. It steps up performance with sharper 2K video resolution, 4x digital zoom, improved two-way talk with noise cancellation, person and vehicle detection, and optional outdoor placement.<a class="view-deal button" href="https://www.amazon.com/Blink-Mini-2KPlus-2cam-White/dp/B0F3BJJ9DJ/ref" target="_blank" rel="nofollow" data-dimension112="fc19babc-c172-11f1-a5d7-dff1a40cb155" data-action="Deal Block" data-label="Blink Mini 2K (2-Pack)" data-dimension48="Blink Mini 2K (2-Pack)" data-dimension25="$27">View Deal</a></p></div><div  class="fancy-box"><div class="fancy_box-title">Grab a 30-day free Amazon Prime trial to unlock this deal!</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="W6Q9vdrCjcZEHN4tiyrTxb" name="amazon-prime-day.png" caption="" alt="People holding Amazon Prime boxes in the air and blue background" src="https://cdn.mos.cms.futurecdn.net/W6Q9vdrCjcZEHN4tiyrTxb-1920-80.png" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude" /></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Amazon)</span></figcaption></figure><p class="fancy-box__body-text">Sign up for Amazon Prime to unlock member-only prices, fast and free shipping, unlimited photo storage, and endless streaming across Prime Video and Music. Best of all, you can cancel straight away and still keep your trial benefits for the full 30 days.</p><p class="fancy-box__body-text"><a data-analytics-id="inline-link" href="https://www.amazon.com/amazonprime" target="_blank" rel="nofollow"><strong>Sign up for Amazon Prime</strong></a></p></div></div><p>When evaluating budget home security, you might have to settle for blurry footage, tinny speakers, or clunky interfaces. What makes the new Blink Mini 2K+ worth talking about is how it tackles those exact pain points without bumping up the price tag.</p><p>The biggest upgrade is video clarity. Bumping the sensor up to 2K resolution gives you much cleaner detail and up to 4x digital zoom, making it far easier to read text on packages or identify faces across a room, even in tricky lighting. The Mini 2K+ also adds noise cancellation to two-way talk so conversations actually sound clear and natural.</p><p>On the software side, the upgraded internal chip processes computer vision directly on the device. That means you get accurate person and vehicle detection to filter out false motion triggers like passing cars or blowing curtains. It even integrates directly with Alexa displays and can double as a real-time chime if you own a Blink Video Doorbell.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="RGErFYvAfRpQ25TT55Rc9X" name="Blink Mini 2K+" alt="Blink Mini 2K+" src="https://cdn.mos.cms.futurecdn.net/RGErFYvAfRpQ25TT55Rc9X-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: Amazon)</span></figcaption></figure><p>It is also no longer strictly an indoor device. With an optional weather-resistant power adapter, you can mount these under an eave or on a patio to watch entryways. Setup takes roughly two minutes: simply plug it into a wall socket, scan the QR code in the app, and you are live.</p><p>Getting a single 2K camera for $27 would be a steal, but getting a <a href="https://www.amazon.com/Blink-Mini-2KPlus-2cam-White/dp/B0F3BJJ9DJ/ref" target="_blank" rel="nofollow">two-pack of the Blink Mini 2K works out to under $14 per unit</a>. If you want a low-cost way to keep an eye on multiple rooms or front doors, this is easily one of the smartest budget picks on sale right now.</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/blink-mini-2-review">Blink Mini 2 security camera review: Mini but mighty</a></li><li><a href="https://www.tomsguide.com/sales-events/my-favorite-streaming-stick-just-hit-usd15-plus-4-more-early-amazon-device-deals-worth-grabbing">My favorite streaming stick just hit $15 for Prime Day — plus 4 more Amazon device deals worth grabbing</a></li><li><a href="https://www.tomsguide.com/entertainment/streaming-devices/amazon-fire-tv-devices-explained-which-streaming-stick-or-cube-is-right-for-you">Amazon Fire TV devices explained: Which streaming stick (or Cube) is right for you?</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/home/home-security/this-usd27-blink-mini-2k-two-pack-is-the-smartest-prime-day-deal-ive-seen-so-far</link>
                                                                            <description>
                            <![CDATA[ Save over 60% on a 2-pack of Amazon’s compact Blink Mini 2 plug-in cameras with built-in spotlights and color night vision. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">AN4svSfdUjNCLz44vnaBsZ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/Mbm9Un6YiwQcDTWJwdNDGf-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 06 Oct 2026 11:21:42 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Home Security]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                <author><![CDATA[ kaycee.hill@futurenet.com (Kaycee Hill) ]]></author>                    <dc:creator><![CDATA[ Kaycee Hill ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/xHn6RmpEqg87cvtLwrBu9G-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/Mbm9Un6YiwQcDTWJwdNDGf-1920-80.jpg">
                                                            <media:credit><![CDATA[Amazon]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Blink Mini 2K+]]></media:description>                                                            <media:text><![CDATA[Blink Mini 2K+]]></media:text>
                                <media:title type="plain"><![CDATA[Blink Mini 2K+]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/Mbm9Un6YiwQcDTWJwdNDGf-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Prime Day is officially here, and while the homepage is flooded with discounts, the <a href="https://www.amazon.com/Blink-Mini-2KPlus-2cam-White/dp/B0F3BJJ9DJ/ref" target="_blank" rel="nofollow">Blink Mini 2K+ is on sale for $27, down from $69,</a> and it has caught my attention. Saving $42 (a massive 60% discount) on a brand-new two-pack means you are getting sharp, multi-room security for under $14 per camera. </p><p>In our testing, Blink’s compact plug-in line has consistently earned top marks for hitting the sweet spot between low cost and reliable performance, making this steep Prime Day price cut an absolute no-brainer if you want to cover your home without spending a fortune.</p><div class="product"><a data-dimension112="fc19babc-c172-11f1-a5d7-dff1a40cb155" data-action="Deal Block" data-label="Blink Mini 2K (2-Pack)" data-dimension48="Blink Mini 2K (2-Pack)" data-dimension25="$27" href="https://www.amazon.com/Blink-Mini-2KPlus-2cam-White/dp/B0F3BJJ9DJ/ref" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:390px;"><p class="vanilla-image-block" style="padding-top:128.21%;"><img id="gufkiyLmX7injxLWpfvWtk" name="blink-mini-2k--plugin-indooroutdoor-secu-132d7599-55fd-41c2-90dc-c62a030aae15.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/gufkiyLmX7injxLWpfvWtk-1920-80.jpg" mos="" align="middle" fullscreen="" width="390" height="500" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/Blink-Mini-2KPlus-2cam-White/dp/B0F3BJJ9DJ/ref" target="_blank" rel="nofollow" data-dimension112="fc19babc-c172-11f1-a5d7-dff1a40cb155" data-action="Deal Block" data-label="Blink Mini 2K (2-Pack)" data-dimension48="Blink Mini 2K (2-Pack)" data-dimension25="$27">Blink Mini 2K (2-Pack): was $69 now $27</a></strong><br />Amazon’s Blink Mini 2K+ drops to just $27 for a two-pack for Prime Day. It steps up performance with sharper 2K video resolution, 4x digital zoom, improved two-way talk with noise cancellation, person and vehicle detection, and optional outdoor placement.<a class="view-deal button" href="https://www.amazon.com/Blink-Mini-2KPlus-2cam-White/dp/B0F3BJJ9DJ/ref" target="_blank" rel="nofollow" data-dimension112="fc19babc-c172-11f1-a5d7-dff1a40cb155" data-action="Deal Block" data-label="Blink Mini 2K (2-Pack)" data-dimension48="Blink Mini 2K (2-Pack)" data-dimension25="$27">View Deal</a></p></div><div  class="fancy-box"><div class="fancy_box-title">Grab a 30-day free Amazon Prime trial to unlock this deal!</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="W6Q9vdrCjcZEHN4tiyrTxb" name="amazon-prime-day.png" caption="" alt="People holding Amazon Prime boxes in the air and blue background" src="https://cdn.mos.cms.futurecdn.net/W6Q9vdrCjcZEHN4tiyrTxb-1920-80.png" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude" /></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Amazon)</span></figcaption></figure><p class="fancy-box__body-text">Sign up for Amazon Prime to unlock member-only prices, fast and free shipping, unlimited photo storage, and endless streaming across Prime Video and Music. Best of all, you can cancel straight away and still keep your trial benefits for the full 30 days.</p><p class="fancy-box__body-text"><a data-analytics-id="inline-link" href="https://www.amazon.com/amazonprime" target="_blank" rel="nofollow"><strong>Sign up for Amazon Prime</strong></a></p></div></div><p>When evaluating budget home security, you might have to settle for blurry footage, tinny speakers, or clunky interfaces. What makes the new Blink Mini 2K+ worth talking about is how it tackles those exact pain points without bumping up the price tag.</p><p>The biggest upgrade is video clarity. Bumping the sensor up to 2K resolution gives you much cleaner detail and up to 4x digital zoom, making it far easier to read text on packages or identify faces across a room, even in tricky lighting. The Mini 2K+ also adds noise cancellation to two-way talk so conversations actually sound clear and natural.</p><p>On the software side, the upgraded internal chip processes computer vision directly on the device. That means you get accurate person and vehicle detection to filter out false motion triggers like passing cars or blowing curtains. It even integrates directly with Alexa displays and can double as a real-time chime if you own a Blink Video Doorbell.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="RGErFYvAfRpQ25TT55Rc9X" name="Blink Mini 2K+" alt="Blink Mini 2K+" src="https://cdn.mos.cms.futurecdn.net/RGErFYvAfRpQ25TT55Rc9X-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: Amazon)</span></figcaption></figure><p>It is also no longer strictly an indoor device. With an optional weather-resistant power adapter, you can mount these under an eave or on a patio to watch entryways. Setup takes roughly two minutes: simply plug it into a wall socket, scan the QR code in the app, and you are live.</p><p>Getting a single 2K camera for $27 would be a steal, but getting a <a href="https://www.amazon.com/Blink-Mini-2KPlus-2cam-White/dp/B0F3BJJ9DJ/ref" target="_blank" rel="nofollow">two-pack of the Blink Mini 2K works out to under $14 per unit</a>. If you want a low-cost way to keep an eye on multiple rooms or front doors, this is easily one of the smartest budget picks on sale right now.</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/blink-mini-2-review">Blink Mini 2 security camera review: Mini but mighty</a></li><li><a href="https://www.tomsguide.com/sales-events/my-favorite-streaming-stick-just-hit-usd15-plus-4-more-early-amazon-device-deals-worth-grabbing">My favorite streaming stick just hit $15 for Prime Day — plus 4 more Amazon device deals worth grabbing</a></li><li><a href="https://www.tomsguide.com/entertainment/streaming-devices/amazon-fire-tv-devices-explained-which-streaming-stick-or-cube-is-right-for-you">Amazon Fire TV devices explained: Which streaming stick (or Cube) is right for you?</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I’ve used AR glasses to survive economy flights for 5 years — these are the only Prime Day deals worth your money ]]></title>
                                                                                                <dc:content><![CDATA[ <div  class="fancy-box"><div class="fancy_box-title">Grab your 30-day free Amazon Prime trial</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="LundooMHiu8QxUedAsGeaL" name="Amazon delivery box.jpg" caption="" alt="Amazon box delivery" src="https://cdn.mos.cms.futurecdn.net/LundooMHiu8QxUedAsGeaL-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: Amazon)</span></figcaption></figure><p class="fancy-box__body-text">As well as access to these exclusive Prime Big Deal Days savings, you can get free Prime shipping, access to Prime Video streaming, Prime Music, Amazon Luna gaming, unlimited cloud photo storage and a whole lot more. Plus, <a data-analytics-id="inline-link" href="https://www.amazon.com/amazonprime?primeCampaignId=studentWlpPrimeRedir" target="_blank" rel="nofollow">college students get 6 months free</a> and 50% off membership.</p><p class="fancy-box__body-text"><a data-analytics-id="inline-link" href="https://www.amazon.com/amazonprime" target="_blank" rel="nofollow"><strong>Sign up for Amazon Prime</strong></a></p></div></div><p>For the last five years, I have logged thousands of miles on long-haul flights testing nearly every pair of the <a href="https://www.tomsguide.com/computing/vr-ar/best-smart-glasses">best AR glasses</a> on the market. No more staring down at a phone, Steam Deck or laptop on a tray table for eight hours — just a 150-inch OLED monitor at eye level that makes my economy seat feel more like business class.</p><p>And with <a href="https://www.tomsguide.com/live/news/october-prime-day-value-deals-best-picks-2026">Amazon’s Prime Big Deal Days </a>officially kicking off, the market is flooded with so-called “discounts” that are ultimately deceptive. I’ve cut through the noise, and here is the ultimate fluff-free guide to the only deals actually worth your money — on glasses I’ve tested (and love), whether you’re a curious beginner or a hardcore travelling gamer.</p><h2 class="article-body__section" id="section-prime-day-ar-glasses-deals-quick-links"><span>Prime Day AR glasses deals: Quick links</span></h2><ul><li><strong>RayNeo Air 4 Pro: </strong><a href="https://www.amazon.com/RayNeo-Air-Pro-AR-Glasses/dp/B0GW92RS96" target="_blank" rel="nofollow"><strong>was $299 now $239 @ Amazon</strong></a><strong></strong></li><li><strong>Xreal xbx a01+: </strong><a href="http://www.amazon.com/XREAL-Glasses-Big-Screen-Display-Movies/dp/B0H44Y6F33" target="_blank" rel="nofollow"><strong>was $299 now $254 @ Amazon</strong></a><strong></strong></li><li><strong>Viture Luma Pro: </strong><a href="https://www.amazon.com/VITURE-Luma-Pro-Glasses-Adjustments/dp/B0FD8NP2DC" target="_blank" rel="nofollow"><strong>was $499 now $359 @ Amazon</strong></a><strong></strong></li><li><strong>RayNeo GT Max: </strong><a href="https://www.amazon.com/RayNeo-Glasses-Native-3DoF-Audio/dp/B0H8725ZZR" target="_blank" rel="nofollow"><strong>was $429 now $364 @ Amazon</strong></a><strong></strong></li><li><strong>Viture Beast: </strong><a href="https://www.amazon.com/VITURE-Beast-XR-Glasses-Regular/dp/B0FG81WF3N" target="_blank" rel="nofollow"><strong>was $549 now $529 @ Amazon</strong></a><strong></strong></li><li><strong>Xreal One Pro: </strong><a href="https://www.amazon.com/XREAL-Pro-Glasses-X-Prism-Display/dp/B0FDPGHVCB" target="_blank" rel="nofollow"><strong>was $599 now $549 @ Amazon</strong></a><strong></strong></li></ul><div class="product"><a data-dimension112="2f3261bc-c16c-11f1-a852-bbd15aaaa722" data-action="Deal Block" data-label="Prime" data-dimension48="Prime" href="https://www.amazon.com/prime" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:256px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="ZYZed7Rbpgumh8BitCCVeX" name="amazon-prime-shipping" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/ZYZed7Rbpgumh8BitCCVeX-1920-80.png" mos="" align="middle" fullscreen="" width="256" height="256" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>30 day free trial! </strong>If you want to get a pair of AR glasses or any Prime Big Deals Day offer, you'll need Amazon Prime. You also get access to Prime Video, Prime Music and fast, free delivery too!<a class="view-deal button" href="https://www.amazon.com/prime" target="_blank" rel="nofollow" data-dimension112="2f3261bc-c16c-11f1-a852-bbd15aaaa722" data-action="Deal Block" data-label="Prime" data-dimension48="Prime" data-dimension25="">View Deal</a></p></div><h2 class="article-body__section" id="section-the-bs-detector-check-the-price-history"><span>The BS detector: check the price history</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="eyapn8FHy7DQTSjA9AFzyB" name="Viture Pro 2--1-LIST" alt="Viture Pro 2 AR glasses" src="https://cdn.mos.cms.futurecdn.net/eyapn8FHy7DQTSjA9AFzyB-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 before you click “add to cart,” the first thing you need to know is that not all Prime Day percentages are real — especially at the lower-end.</p><ul><li><strong>The genuine drop: </strong>The <a href="https://www.tomsguide.com/computing/smart-glasses/x-by-xreal-a01-plus-review">Xreal xbx a01+</a> has <a href="http://www.amazon.com/XREAL-Glasses-Big-Screen-Display-Movies/dp/B0H44Y6F33" target="_blank" rel="nofollow">dropped to $254 from its original $299 price</a>. This is a clean, event-specific historic low, and turns these glasses from a good buy to a great one.</li><li><strong>The imposter: </strong>You will see the <a href="https://www.tomsguide.com/computing/smart-glasses/viture-pro-2-xr-glasses-review">Viture Pro 2</a> heavily advertised at $299 with banners claiming a <a href="https://www.amazon.com/VITURE-Pro-Glasses-UltraClarity-Adjustment/dp/B0H824YXJH" target="_blank" rel="nofollow">21% saving off a $379 reference price</a>. But $299 has always been the standard everyday price — it is an incredible piece of hardware, but you are not getting a special October discount.</li></ul><p>To be clear, $299 is still a great price, but not every deal is <em>actually </em>a deal. Let's dig into it below.</p><h2 class="article-body__section" id="section-who-should-buy-what"><span>Who should buy what?</span></h2><p>So after clocking over 50,000 miles testing all the glasses on sale right now, which ones are best for you? Let me break it down for you.</p><div class="product"><a data-dimension112="c6e9da4a-c16b-11f1-b4a8-99417d9af644" data-action="Deal Block" data-label="Air 4 Pro" data-dimension48="Air 4 Pro" data-dimension25="$239" href="https://www.amazon.com/RayNeo-Air-Pro-AR-Glasses/dp/B0GW92RS96" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="UXJBwC5RxBayuG75d7DgZE" name="Prime Day AR Glasses deals" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/UXJBwC5RxBayuG75d7DgZE-1920-80.jpg" mos="" align="middle" fullscreen="" width="1000" height="1000" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/RayNeo-Air-Pro-AR-Glasses/dp/B0GW92RS96" target="_blank" rel="nofollow" data-dimension112="c6e9da4a-c16b-11f1-b4a8-99417d9af644" data-action="Deal Block" data-label="Air 4 Pro" data-dimension48="Air 4 Pro" data-dimension25="$239">Air 4 Pro: was $299 now $239</a></strong><br /><strong>Why it matters: </strong>If you just want a massive screen strapped to your face without breaking the bank, this is the cheapest entry point that doesn’t compromise on visual fidelity. You get AI SDR-to-HDR upscaling, 120Hz refresh rate, and crisp Bang &amp; Olufsen audio for under $250.</p><p><strong>Specs: </strong>HueView 2.0 1080p micro-OLED displays, up to 1200 nits of perceived brightness, 120Hz, 46-degree field of view, HDR10, 5.8 x 1.9 x 6.7 inches, 2.7 ounces<a class="view-deal button" href="https://www.amazon.com/RayNeo-Air-Pro-AR-Glasses/dp/B0GW92RS96" target="_blank" rel="nofollow" data-dimension112="c6e9da4a-c16b-11f1-b4a8-99417d9af644" data-action="Deal Block" data-label="Air 4 Pro" data-dimension48="Air 4 Pro" data-dimension25="$239">View Deal</a></p></div><div class="product"><a data-dimension112="c6e9dac2-c16b-11f1-8ff4-d57188605ae3" data-action="Deal Block" data-label="Luma Pro" data-dimension48="Luma Pro" data-dimension25="$359" href="https://www.amazon.com/VITURE-Luma-Pro-Glasses-Adjustments/dp/B0FD8NP2DC" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="tuET8k5Hp8oitTQeVk6bZE" name="Prime Day AR Glasses deals" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/tuET8k5Hp8oitTQeVk6bZE-1920-80.jpg" mos="" align="middle" fullscreen="" width="1000" height="1000" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/VITURE-Luma-Pro-Glasses-Adjustments/dp/B0FD8NP2DC" target="_blank" rel="nofollow" data-dimension112="c6e9dac2-c16b-11f1-8ff4-d57188605ae3" data-action="Deal Block" data-label="Luma Pro" data-dimension48="Luma Pro" data-dimension25="$359">Luma Pro: was $499 now $359</a></strong><br /><strong>Why it matters: </strong>Viture has the best color science in the category, making AAA games and movies pop brilliantly. But its killer feature is the built-in Myopia dials to adjust focus and the deepest electrochromic dimming I’ve seen — allowing you to electronically black out the lenses and block out the glare from an open airplane window next to you.</p><p><strong>Specs: </strong>Sony 1200p micro-OLED displays, up to 1,000 nits, 120Hz refresh rate, 52-degree field of view, built-in Myopia dials, 3DoF head tracking, 5.8 x 1.8 x 6.8 inches, 2.8 ounces<a class="view-deal button" href="https://www.amazon.com/VITURE-Luma-Pro-Glasses-Adjustments/dp/B0FD8NP2DC" target="_blank" rel="nofollow" data-dimension112="c6e9dac2-c16b-11f1-8ff4-d57188605ae3" data-action="Deal Block" data-label="Luma Pro" data-dimension48="Luma Pro" data-dimension25="$359">View Deal</a></p></div><div class="product"><a data-dimension112="c6e9db3a-c16b-11f1-a4a7-6525e7d434f9" data-action="Deal Block" data-label="One Pro" data-dimension48="One Pro" data-dimension25="$549" href="https://www.amazon.com/XREAL-Pro-Glasses-X-Prism-Display/dp/B0FDPGHVCB" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="otsDUFiXV4TMViAF64gtYE" name="Prime Day AR Glasses deals" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/otsDUFiXV4TMViAF64gtYE-1920-80.jpg" mos="" align="middle" fullscreen="" width="1000" height="1000" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/XREAL-Pro-Glasses-X-Prism-Display/dp/B0FDPGHVCB" target="_blank" rel="nofollow" data-dimension112="c6e9db3a-c16b-11f1-a4a7-6525e7d434f9" data-action="Deal Block" data-label="One Pro" data-dimension48="One Pro" data-dimension25="$549">One Pro: was $599 now $549</a></strong><br /><strong>Why it matters: </strong>This is the heavy hitter. That X1 chip unlocks all the advanced spatial features on-device, 3DoF, alongside a massive 57-degree field of view for that full premium home theater on your face. On top of that, the chip gives you 2D-to-3D local conversion of content that works really rather well!</p><p><strong>Specs: </strong>Sony 1080p micro-OLED displays, up to 700 nits, 120Hz refresh rate, 57-degree field of view, X1 spatial chip built-in, 3DoF head tracking, 5.9 x 2.0 x 6.8 inches, 3.1 ounces<a class="view-deal button" href="https://www.amazon.com/XREAL-Pro-Glasses-X-Prism-Display/dp/B0FDPGHVCB" target="_blank" rel="nofollow" data-dimension112="c6e9db3a-c16b-11f1-a4a7-6525e7d434f9" data-action="Deal Block" data-label="One Pro" data-dimension48="One Pro" data-dimension25="$549">View Deal</a></p></div><div class="product"><a data-dimension112="c6e9dba8-c16b-11f1-9690-9383005fd2aa" data-action="Deal Block" data-label="Beast" data-dimension48="Beast" data-dimension25="$529" href="https://www.amazon.com/VITURE-Beast-XR-Glasses-Regular/dp/B0FG81WF3N" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="ENJyTENgv2KYcDjR24Tt3E" name="Prime Day AR Glasses deals" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/ENJyTENgv2KYcDjR24Tt3E-1920-80.jpg" mos="" align="middle" fullscreen="" width="1000" height="1000" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Why it matters: </strong>The gaming final boss of AR glasses — the Viture Beast raised the bar for premium immersion with a massive 58-degree field of view and ultra-bright 1,250-nit micro-OLEDs running at 1200p/120Hz. Throw in 9-level electrochromic lens dimming and native 3DoF anchoring, and you’ve got an ultra-wide, stable display that pulls you into your games wherever you are.</p><p><strong>Specs: </strong>Sony 1200p micro-OLED displays, up to 1,250 nits, 120Hz refresh rate, 58-degree field of view, 3DoF head tracking, 5.8 x 1.8 x 6.8 inches, 3 ounces.<a class="view-deal button" href="https://www.amazon.com/VITURE-Beast-XR-Glasses-Regular/dp/B0FG81WF3N" target="_blank" rel="nofollow" data-dimension112="c6e9dba8-c16b-11f1-9690-9383005fd2aa" data-action="Deal Block" data-label="Beast" data-dimension48="Beast" data-dimension25="$529">View Deal</a></p></div><h2 class="article-body__section" id="section-the-smart-glasses-you-actually-want"><span>The smart glasses you *actually* want</span></h2><p>It’s easy to get lost in the marketing weeds of “spatial computing” and “mixed reality.” But at their core, <a href="https://www.tomsguide.com/computing/vr-ar/best-smart-glasses">AR glasses are the ultimate life hack</a> for the modern commuter — lightweight, completely private monitors that fit in a sunglasses case.</p><p>And the beauty of the versatility of options is that you don’t need to care about picture tracking. The option is there, and that’s great, but if you’re brand new to this category, it’s not important. You just need to care about never having to crane your neck over a cramped 13-inch laptop screen on a cross-country flight ever again.</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/ipads/october-prime-day-2026-ipad-deals">I use my iPad every day — here are 7 October Prime Day deals I recommend</a></li><li><a href="https://www.tomsguide.com/computing/watch-out-prime-day-hp-just-slashed-usd2-200-off-this-rtx-5080-gaming-pc">Watch out, Prime Day! HP just slashed $2,200 off this RTX 5080 gaming PC</a></li><li><a href="https://www.tomsguide.com/computing/mini-pcs/i-reviewed-the-new-mac-mini-m6-and-its-a-tiny-powerhouse-add-one-to-your-desk-for-usd120-off-right-now">I reviewed the new Mac mini M6 and it’s a tiny powerhouse — add one to your desk for $120 off right now</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/smart-glasses/prime-day-ar-glasses-deals-xreal-viture-rayneo-october-2026</link>
                                                                            <description>
                            <![CDATA[ I've tested every single pair of AR glasses that are in the October Prime Day sales. Here are my personal recommendations! ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">ausXnyGpGnhDLAsLteAk8B</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/9xTQ55JvNVfST9MdarczvE-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 06 Oct 2026 11:10:57 +0000</pubDate>                                                                                                                                <updated>Tue, 06 Oct 2026 11:21:55 +0000</updated>
                                                                                                                                            <category><![CDATA[Smart Glasses]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[VR & AR]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jason England ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/v4fSq5U4uZUEtGY2BwNuJ6-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jason brings a decade of tech and gaming journalism experience to his role as a Managing Editor of Computing at Tom&#039;s Guide. He has previously written for Laptop Mag, Tom&#039;s Hardware, Kotaku, Stuff and BBC Science Focus. In his spare time, you&#039;ll find Jason looking for good dogs to pet or thinking about eating pizza if he isn&#039;t already.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/9xTQ55JvNVfST9MdarczvE-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Prime Day AR Glasses deals]]></media:description>                                                            <media:text><![CDATA[Prime Day AR Glasses deals]]></media:text>
                                <media:title type="plain"><![CDATA[Prime Day AR Glasses deals]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/9xTQ55JvNVfST9MdarczvE-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div  class="fancy-box"><div class="fancy_box-title">Grab your 30-day free Amazon Prime trial</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="LundooMHiu8QxUedAsGeaL" name="Amazon delivery box.jpg" caption="" alt="Amazon box delivery" src="https://cdn.mos.cms.futurecdn.net/LundooMHiu8QxUedAsGeaL-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: Amazon)</span></figcaption></figure><p class="fancy-box__body-text">As well as access to these exclusive Prime Big Deal Days savings, you can get free Prime shipping, access to Prime Video streaming, Prime Music, Amazon Luna gaming, unlimited cloud photo storage and a whole lot more. Plus, <a data-analytics-id="inline-link" href="https://www.amazon.com/amazonprime?primeCampaignId=studentWlpPrimeRedir" target="_blank" rel="nofollow">college students get 6 months free</a> and 50% off membership.</p><p class="fancy-box__body-text"><a data-analytics-id="inline-link" href="https://www.amazon.com/amazonprime" target="_blank" rel="nofollow"><strong>Sign up for Amazon Prime</strong></a></p></div></div><p>For the last five years, I have logged thousands of miles on long-haul flights testing nearly every pair of the <a href="https://www.tomsguide.com/computing/vr-ar/best-smart-glasses">best AR glasses</a> on the market. No more staring down at a phone, Steam Deck or laptop on a tray table for eight hours — just a 150-inch OLED monitor at eye level that makes my economy seat feel more like business class.</p><p>And with <a href="https://www.tomsguide.com/live/news/october-prime-day-value-deals-best-picks-2026">Amazon’s Prime Big Deal Days </a>officially kicking off, the market is flooded with so-called “discounts” that are ultimately deceptive. I’ve cut through the noise, and here is the ultimate fluff-free guide to the only deals actually worth your money — on glasses I’ve tested (and love), whether you’re a curious beginner or a hardcore travelling gamer.</p><h2 class="article-body__section" id="section-prime-day-ar-glasses-deals-quick-links"><span>Prime Day AR glasses deals: Quick links</span></h2><ul><li><strong>RayNeo Air 4 Pro: </strong><a href="https://www.amazon.com/RayNeo-Air-Pro-AR-Glasses/dp/B0GW92RS96" target="_blank" rel="nofollow"><strong>was $299 now $239 @ Amazon</strong></a><strong></strong></li><li><strong>Xreal xbx a01+: </strong><a href="http://www.amazon.com/XREAL-Glasses-Big-Screen-Display-Movies/dp/B0H44Y6F33" target="_blank" rel="nofollow"><strong>was $299 now $254 @ Amazon</strong></a><strong></strong></li><li><strong>Viture Luma Pro: </strong><a href="https://www.amazon.com/VITURE-Luma-Pro-Glasses-Adjustments/dp/B0FD8NP2DC" target="_blank" rel="nofollow"><strong>was $499 now $359 @ Amazon</strong></a><strong></strong></li><li><strong>RayNeo GT Max: </strong><a href="https://www.amazon.com/RayNeo-Glasses-Native-3DoF-Audio/dp/B0H8725ZZR" target="_blank" rel="nofollow"><strong>was $429 now $364 @ Amazon</strong></a><strong></strong></li><li><strong>Viture Beast: </strong><a href="https://www.amazon.com/VITURE-Beast-XR-Glasses-Regular/dp/B0FG81WF3N" target="_blank" rel="nofollow"><strong>was $549 now $529 @ Amazon</strong></a><strong></strong></li><li><strong>Xreal One Pro: </strong><a href="https://www.amazon.com/XREAL-Pro-Glasses-X-Prism-Display/dp/B0FDPGHVCB" target="_blank" rel="nofollow"><strong>was $599 now $549 @ Amazon</strong></a><strong></strong></li></ul><div class="product"><a data-dimension112="2f3261bc-c16c-11f1-a852-bbd15aaaa722" data-action="Deal Block" data-label="Prime" data-dimension48="Prime" href="https://www.amazon.com/prime" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:256px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="ZYZed7Rbpgumh8BitCCVeX" name="amazon-prime-shipping" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/ZYZed7Rbpgumh8BitCCVeX-1920-80.png" mos="" align="middle" fullscreen="" width="256" height="256" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>30 day free trial! </strong>If you want to get a pair of AR glasses or any Prime Big Deals Day offer, you'll need Amazon Prime. You also get access to Prime Video, Prime Music and fast, free delivery too!<a class="view-deal button" href="https://www.amazon.com/prime" target="_blank" rel="nofollow" data-dimension112="2f3261bc-c16c-11f1-a852-bbd15aaaa722" data-action="Deal Block" data-label="Prime" data-dimension48="Prime" data-dimension25="">View Deal</a></p></div><h2 class="article-body__section" id="section-the-bs-detector-check-the-price-history"><span>The BS detector: check the price history</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="eyapn8FHy7DQTSjA9AFzyB" name="Viture Pro 2--1-LIST" alt="Viture Pro 2 AR glasses" src="https://cdn.mos.cms.futurecdn.net/eyapn8FHy7DQTSjA9AFzyB-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 before you click “add to cart,” the first thing you need to know is that not all Prime Day percentages are real — especially at the lower-end.</p><ul><li><strong>The genuine drop: </strong>The <a href="https://www.tomsguide.com/computing/smart-glasses/x-by-xreal-a01-plus-review">Xreal xbx a01+</a> has <a href="http://www.amazon.com/XREAL-Glasses-Big-Screen-Display-Movies/dp/B0H44Y6F33" target="_blank" rel="nofollow">dropped to $254 from its original $299 price</a>. This is a clean, event-specific historic low, and turns these glasses from a good buy to a great one.</li><li><strong>The imposter: </strong>You will see the <a href="https://www.tomsguide.com/computing/smart-glasses/viture-pro-2-xr-glasses-review">Viture Pro 2</a> heavily advertised at $299 with banners claiming a <a href="https://www.amazon.com/VITURE-Pro-Glasses-UltraClarity-Adjustment/dp/B0H824YXJH" target="_blank" rel="nofollow">21% saving off a $379 reference price</a>. But $299 has always been the standard everyday price — it is an incredible piece of hardware, but you are not getting a special October discount.</li></ul><p>To be clear, $299 is still a great price, but not every deal is <em>actually </em>a deal. Let's dig into it below.</p><h2 class="article-body__section" id="section-who-should-buy-what"><span>Who should buy what?</span></h2><p>So after clocking over 50,000 miles testing all the glasses on sale right now, which ones are best for you? Let me break it down for you.</p><div class="product"><a data-dimension112="c6e9da4a-c16b-11f1-b4a8-99417d9af644" data-action="Deal Block" data-label="Air 4 Pro" data-dimension48="Air 4 Pro" data-dimension25="$239" href="https://www.amazon.com/RayNeo-Air-Pro-AR-Glasses/dp/B0GW92RS96" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="UXJBwC5RxBayuG75d7DgZE" name="Prime Day AR Glasses deals" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/UXJBwC5RxBayuG75d7DgZE-1920-80.jpg" mos="" align="middle" fullscreen="" width="1000" height="1000" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/RayNeo-Air-Pro-AR-Glasses/dp/B0GW92RS96" target="_blank" rel="nofollow" data-dimension112="c6e9da4a-c16b-11f1-b4a8-99417d9af644" data-action="Deal Block" data-label="Air 4 Pro" data-dimension48="Air 4 Pro" data-dimension25="$239">Air 4 Pro: was $299 now $239</a></strong><br /><strong>Why it matters: </strong>If you just want a massive screen strapped to your face without breaking the bank, this is the cheapest entry point that doesn’t compromise on visual fidelity. You get AI SDR-to-HDR upscaling, 120Hz refresh rate, and crisp Bang &amp; Olufsen audio for under $250.</p><p><strong>Specs: </strong>HueView 2.0 1080p micro-OLED displays, up to 1200 nits of perceived brightness, 120Hz, 46-degree field of view, HDR10, 5.8 x 1.9 x 6.7 inches, 2.7 ounces<a class="view-deal button" href="https://www.amazon.com/RayNeo-Air-Pro-AR-Glasses/dp/B0GW92RS96" target="_blank" rel="nofollow" data-dimension112="c6e9da4a-c16b-11f1-b4a8-99417d9af644" data-action="Deal Block" data-label="Air 4 Pro" data-dimension48="Air 4 Pro" data-dimension25="$239">View Deal</a></p></div><div class="product"><a data-dimension112="c6e9dac2-c16b-11f1-8ff4-d57188605ae3" data-action="Deal Block" data-label="Luma Pro" data-dimension48="Luma Pro" data-dimension25="$359" href="https://www.amazon.com/VITURE-Luma-Pro-Glasses-Adjustments/dp/B0FD8NP2DC" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="tuET8k5Hp8oitTQeVk6bZE" name="Prime Day AR Glasses deals" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/tuET8k5Hp8oitTQeVk6bZE-1920-80.jpg" mos="" align="middle" fullscreen="" width="1000" height="1000" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/VITURE-Luma-Pro-Glasses-Adjustments/dp/B0FD8NP2DC" target="_blank" rel="nofollow" data-dimension112="c6e9dac2-c16b-11f1-8ff4-d57188605ae3" data-action="Deal Block" data-label="Luma Pro" data-dimension48="Luma Pro" data-dimension25="$359">Luma Pro: was $499 now $359</a></strong><br /><strong>Why it matters: </strong>Viture has the best color science in the category, making AAA games and movies pop brilliantly. But its killer feature is the built-in Myopia dials to adjust focus and the deepest electrochromic dimming I’ve seen — allowing you to electronically black out the lenses and block out the glare from an open airplane window next to you.</p><p><strong>Specs: </strong>Sony 1200p micro-OLED displays, up to 1,000 nits, 120Hz refresh rate, 52-degree field of view, built-in Myopia dials, 3DoF head tracking, 5.8 x 1.8 x 6.8 inches, 2.8 ounces<a class="view-deal button" href="https://www.amazon.com/VITURE-Luma-Pro-Glasses-Adjustments/dp/B0FD8NP2DC" target="_blank" rel="nofollow" data-dimension112="c6e9dac2-c16b-11f1-8ff4-d57188605ae3" data-action="Deal Block" data-label="Luma Pro" data-dimension48="Luma Pro" data-dimension25="$359">View Deal</a></p></div><div class="product"><a data-dimension112="c6e9db3a-c16b-11f1-a4a7-6525e7d434f9" data-action="Deal Block" data-label="One Pro" data-dimension48="One Pro" data-dimension25="$549" href="https://www.amazon.com/XREAL-Pro-Glasses-X-Prism-Display/dp/B0FDPGHVCB" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="otsDUFiXV4TMViAF64gtYE" name="Prime Day AR Glasses deals" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/otsDUFiXV4TMViAF64gtYE-1920-80.jpg" mos="" align="middle" fullscreen="" width="1000" height="1000" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/XREAL-Pro-Glasses-X-Prism-Display/dp/B0FDPGHVCB" target="_blank" rel="nofollow" data-dimension112="c6e9db3a-c16b-11f1-a4a7-6525e7d434f9" data-action="Deal Block" data-label="One Pro" data-dimension48="One Pro" data-dimension25="$549">One Pro: was $599 now $549</a></strong><br /><strong>Why it matters: </strong>This is the heavy hitter. That X1 chip unlocks all the advanced spatial features on-device, 3DoF, alongside a massive 57-degree field of view for that full premium home theater on your face. On top of that, the chip gives you 2D-to-3D local conversion of content that works really rather well!</p><p><strong>Specs: </strong>Sony 1080p micro-OLED displays, up to 700 nits, 120Hz refresh rate, 57-degree field of view, X1 spatial chip built-in, 3DoF head tracking, 5.9 x 2.0 x 6.8 inches, 3.1 ounces<a class="view-deal button" href="https://www.amazon.com/XREAL-Pro-Glasses-X-Prism-Display/dp/B0FDPGHVCB" target="_blank" rel="nofollow" data-dimension112="c6e9db3a-c16b-11f1-a4a7-6525e7d434f9" data-action="Deal Block" data-label="One Pro" data-dimension48="One Pro" data-dimension25="$549">View Deal</a></p></div><div class="product"><a data-dimension112="c6e9dba8-c16b-11f1-9690-9383005fd2aa" data-action="Deal Block" data-label="Beast" data-dimension48="Beast" data-dimension25="$529" href="https://www.amazon.com/VITURE-Beast-XR-Glasses-Regular/dp/B0FG81WF3N" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="ENJyTENgv2KYcDjR24Tt3E" name="Prime Day AR Glasses deals" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/ENJyTENgv2KYcDjR24Tt3E-1920-80.jpg" mos="" align="middle" fullscreen="" width="1000" height="1000" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Why it matters: </strong>The gaming final boss of AR glasses — the Viture Beast raised the bar for premium immersion with a massive 58-degree field of view and ultra-bright 1,250-nit micro-OLEDs running at 1200p/120Hz. Throw in 9-level electrochromic lens dimming and native 3DoF anchoring, and you’ve got an ultra-wide, stable display that pulls you into your games wherever you are.</p><p><strong>Specs: </strong>Sony 1200p micro-OLED displays, up to 1,250 nits, 120Hz refresh rate, 58-degree field of view, 3DoF head tracking, 5.8 x 1.8 x 6.8 inches, 3 ounces.<a class="view-deal button" href="https://www.amazon.com/VITURE-Beast-XR-Glasses-Regular/dp/B0FG81WF3N" target="_blank" rel="nofollow" data-dimension112="c6e9dba8-c16b-11f1-9690-9383005fd2aa" data-action="Deal Block" data-label="Beast" data-dimension48="Beast" data-dimension25="$529">View Deal</a></p></div><h2 class="article-body__section" id="section-the-smart-glasses-you-actually-want"><span>The smart glasses you *actually* want</span></h2><p>It’s easy to get lost in the marketing weeds of “spatial computing” and “mixed reality.” But at their core, <a href="https://www.tomsguide.com/computing/vr-ar/best-smart-glasses">AR glasses are the ultimate life hack</a> for the modern commuter — lightweight, completely private monitors that fit in a sunglasses case.</p><p>And the beauty of the versatility of options is that you don’t need to care about picture tracking. The option is there, and that’s great, but if you’re brand new to this category, it’s not important. You just need to care about never having to crane your neck over a cramped 13-inch laptop screen on a cross-country flight ever again.</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/ipads/october-prime-day-2026-ipad-deals">I use my iPad every day — here are 7 October Prime Day deals I recommend</a></li><li><a href="https://www.tomsguide.com/computing/watch-out-prime-day-hp-just-slashed-usd2-200-off-this-rtx-5080-gaming-pc">Watch out, Prime Day! HP just slashed $2,200 off this RTX 5080 gaming PC</a></li><li><a href="https://www.tomsguide.com/computing/mini-pcs/i-reviewed-the-new-mac-mini-m6-and-its-a-tiny-powerhouse-add-one-to-your-desk-for-usd120-off-right-now">I reviewed the new Mac mini M6 and it’s a tiny powerhouse — add one to your desk for $120 off right now</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I reviewed the new Mac mini M6 and it’s a tiny powerhouse — add one to your desk for $120 off right now ]]></title>
                                                                                                <dc:content><![CDATA[ <div  class="fancy-box"><div class="fancy_box-title">Grab your 30-day free Amazon Prime trial to buy this deal!</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="5kW5FPjJh56uhEpdPfwfeF" name="Amazon End of Summer Sale Pool.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/5kW5FPjJh56uhEpdPfwfeF-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: Amazon)</span></figcaption></figure><p class="fancy-box__body-text">As well as access to these exclusive Prime Big Deal Days savings, you can get free Prime shipping, access to Prime Video streaming, Prime Music, Amazon Luna gaming, unlimited cloud photo storage and a whole lot more.</p><p class="fancy-box__body-text"><a data-analytics-id="inline-link" href="https://www.amazon.com/amazonprime" target="_blank" rel="nofollow"><strong>Sign up for Amazon Prime</strong></a></p></div></div><p>Whether you’re tired of Windows and are thinking about switching to Mac or you just want to upgrade your older Mac mini, the Mac mini M6 is a great option. And right now you can get it for a great price with this October Prime Day deal.</p><p>I recently <a href="https://www.tomsguide.com/computing/apple-desktops/mac-mini-m6-review">reviewed the new Mac mini M6</a> and gave the latest version of Apple’s smallest Mac yet 4.5 stars and an editor’s choice award, and rightfully so. While it features the same redesigned case first introduced with the <a href="https://www.tomsguide.com/computing/desktop-computers/mac-mini-m4-review">Mac mini M4</a>, there are enough meaningful updates under the hood — like its more powerful M6 chip and custom N1 networking chip — that easily make it one of the <a href="https://www.tomsguide.com/us/best-mini-pc.html">best mini PCs</a>.</p><p>While Apple did raise the starting price of its latest Mac mini from $599 to $899, thanks to this excellent <a href="https://www.tomsguide.com/live/news/october-prime-day-value-deals-best-picks-2026">October Prime Day</a> discount, you can pick up the <a href="https://www.amazon.com/dp/B0HGGJZ92H?th=1" target="_blank" rel="nofollow">Mac mini M6 for $779 at Amazon</a>, or $120 off its normal price right now.</p><div class="product"><a data-dimension112="0e64b652-c0f3-11f1-8d4c-cb88d65ded01" data-action="Deal Block" data-label="Mac mini M6" data-dimension48="Mac mini M6" data-dimension25="$779" href="https://www.amazon.com/dp/B0HGGJZ92H?th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:990px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="JTeh5dZUAWCmJHNFpFpmZZ" name="Mac mini M6" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/JTeh5dZUAWCmJHNFpFpmZZ-1920-80.jpg" mos="" align="middle" fullscreen="" width="990" height="990" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p>The Mac mini M6 keeps the ultra-compact 5x5-inch design introduced with the prior generation, but packs major performance upgrades under the hood. You get the raw speed of Apple's M6 chip, upgraded graphics with hardware-accelerated ray tracing for better 1080p gaming, 16GB of unified memory, and improved connectivity thanks to Apple's custom N1 chip, which adds Wi-Fi 7, Bluetooth 6.0, and Thread support. <a class="view-deal button" href="https://www.amazon.com/dp/B0HGGJZ92H?th=1" target="_blank" rel="nofollow" data-dimension112="0e64b652-c0f3-11f1-8d4c-cb88d65ded01" data-action="Deal Block" data-label="Mac mini M6" data-dimension48="Mac mini M6" data-dimension25="$779">View Deal</a></p></div><p>Given just how popular the Mac mini M4 became for running local AI workloads, I wouldn’t wait on this deal if you’ve been thinking about upgrading. In fact, it’s still cheaper than if you bought one directly from Apple using an education discount at $799. Here’s why the new Mac mini M6 is so easy to recommend, especially at this discounted price.</p><h2 id="same-small-footprint-but-now-even-faster">Same small footprint but now even faster</h2><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="gDh5QNbqeRPQw87ku3BXpC" name="Mac Mini M6--9" alt="A person playing the game Control on the Mac Mini with M6" src="https://cdn.mos.cms.futurecdn.net/gDh5QNbqeRPQw87ku3BXpC-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>At 5 x 5 x 2 inches, the Mac mini M6 takes up the exact same footprint on your desk as its predecessor. Not only does this mean that you can use all of the existing <a href="https://www.tomsguide.com/computing/peripherals/i-added-satechis-new-usb-c-hub-and-stand-to-my-mac-mini-m4-and-its-the-perfect-upgrade">third-party accessories for the M4 model</a> with it but no matter how small your workspace is, you won’t have any trouble finding a spot for the new Mac mini.</p><p>While its overall design may be the same, Apple has made some big changes under the hood. For starters, the new <a href="https://www.tomsguide.com/computing/cpus/i-analyzed-apples-new-2nm-m6-chip-here-is-why-m1-holdouts-finally-need-to-upgrade">M6 chip</a> powering it is both faster and more efficient due to the fact that it’s built using a cutting-edge 2nm manufacturing process. In our benchmark tests, the Mac mini M6 showed results that were even faster than those from Apple’s M4 Pro model.</p><p>One thing that really impressed me personally was how much better the Mac mini M6 is at gaming over its predecessor. Although it isn’t one of the <a href="https://www.tomsguide.com/us/best-gaming-pc,review-2219.html">best gaming PCs</a>, we were still able to play Cyberpunk 2077 at nearly 60 fps at 1080p using the game’s dedicated “For this Mac” preset. </p><p>During my testing, I booted up Control and after lowering the resolution down to 1440p on Apple’s <a href="https://www.tomsguide.com/computing/monitors/apple-studio-display-xdr-review">Studio Display XDR</a>, the game played great and looked fantastic despite the fact that it was running on a premium monitor better suited for the new <a href="https://www.tomsguide.com/computing/apple-desktops/apple-mac-studio-m5-ultra-review">Mac Studio</a>.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="47uSy7XoyKoGkc5JEPfyjk" name="Mac Mini M6--5" alt="The rear ports of the Mac Mini with M6" src="https://cdn.mos.cms.futurecdn.net/47uSy7XoyKoGkc5JEPfyjk-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>When it comes to connectivity, you still get two USB-C ports and a headphone jack around front as well as three Thunderbolt 4 ports, HDMI, Ethernet and a power port on the back. However, Apple gave the Ethernet port a quiet but impressive upgrade, going from gigabit Ethernet on the Mac mini M4 to 2.5 Gigabit Ethernet on the new Mac mini M6. </p><p>If you’re downloading or uploading big files, this upgraded wired port will definitely make a massive difference. For everyday use though, you’re still getting a major connectivity upgrade, thanks to the inclusion of Apple’s custom <a href="https://www.tomsguide.com/phones/iphones/apples-n1-chip-offers-faster-speeds-while-using-weaker-wi-fi-according-to-the-experts-at-ookla">N1 chip</a> that adds <a href="https://www.tomsguide.com/reference/wi-fi-7-explained">Wi-Fi 7</a>, Bluetooth 6 and even Thread smart home support to the Mac mini M6. From faster downloads to lower-latency wireless audio to the fact that you can now use your Mac mini as a smart home hub, this new networking chip makes a big difference in how you’ll use Apple’s new Mac mini.</p><p>Whether you’re looking to upgrade from an older MacBook, want to downsize from a big, bulky tower PC or you’re fed up with Windows and want to switch to Mac, the Mac mini M6 is easily one of the best Macs you can buy right now and this October Prime Day discount sweetens the deal by putting over $100 back in your pocket.</p><h3 class="article-body__section" id="section-shop-more-deals"><span>Shop more deals</span></h3><ul><li><strong></strong><a href="https://www.amazon.com/primebigdealdays?" target="_blank" rel="nofollow"><strong>See all deals in the Prime Day sale</strong></a><strong></strong></li><li><a href="https://www.amazon.com/headphones-sale/s?k=headphones+on+sale" target="_blank" rel="nofollow"><strong>All headphones on sale at Amazon</strong></a></li></ul><div class="vizualizer-embed"><div class="tg-df-widget-host" data-widget-config="?search=tablets&amp;brands=Apple&amp;min_discount_ratio=0.95&amp;retailer=Amazon&amp;widget_title=Top+Deals+Handpicked+by+Our+Editors&amp;widget_subtitle=Discover+the+best+discounts+currently+available%2C+curated+daily+by+the+Tom%27s+Guide+Savings+Squad.&amp;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="8">8 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 finalHref = cardLink.href || cardLink.getAttribute('href') || '';                let actualRevenueId = cardLink.getAttribute('data-revenue-id');                const revMatch = finalHref.match(/(?:subId1|xcust|clickref|ascsubtag)=[^&]*?(\d{18,20})(?:&|$)/i);                if (revMatch && revMatch[1]) {                  actualRevenueId = revMatch[1];                }                const rewrittenLink = finalHref;                const revenueId = actualRevenueId;                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.getFilteredDeals().slice(0, this.displayLimit), 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.getFilteredDeals().slice(0, this.displayLimit), 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.getFilteredDeals().slice(0, this.displayLimit), 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: this.decodeHTML(item.name || item.title || item.model_name || item.product_name || 'Unknown Product'),            brand: this.decodeHTML(item.brand || ''),            productName: this.decodeHTML(item.model_name || item.product_name || item.name || ''),            merchant: this.decodeHTML(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 finalHref = btn.href || btn.getAttribute('href') || '';                let actualRevenueId = btn.getAttribute('data-revenue-id');                const revMatch = finalHref.match(/(?:subId1|xcust|clickref|ascsubtag)=[^&]*?(\d{18,20})(?:&|$)/i);                if (revMatch && revMatch[1]) {                  actualRevenueId = revMatch[1];                }                const rewrittenLink = finalHref;                const revenueId = actualRevenueId;                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)}" ${dataAttr} 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/mini-pcs/i-reviewed-the-new-mac-mini-m6-and-its-a-tiny-powerhouse-add-one-to-your-desk-for-usd120-off-right-now</link>
                                                                            <description>
                            <![CDATA[ Apple’s Mac mini M6 is a surprisingly capable mini PC thanks to its new M6 chip but you also get faster Wi-Fi in the same sleek and compact design. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">DSTtUoT2GnC5E884yF77a4</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/eTnNwe2Ybcb2vNBzyY43gh-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 05 Oct 2026 19:46:21 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Mini PCs]]></category>
                                                    <category><![CDATA[Apple Desktops]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Desktop Computers]]></category>
                                                                                                <author><![CDATA[ anthony.spadafora@futurenet.com (Anthony Spadafora) ]]></author>                    <dc:creator><![CDATA[ Anthony Spadafora ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/z73LEoj7FkUjNG85GcWHtH-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Anthony Spadafora is the managing editor for security and home office furniture at Tom’s Guide where he covers everything from data breaches and malware to password managers and the best way to cover your whole home or business with a strong Wi-Fi signal.&lt;/p&gt;&lt;p&gt;Before joining the team, he spent three years covering cybersecurity and B2B tech for ITProPortal while living in South Korea. After moving back to the US. Anthony joined the TechRadar Pro team where he covered these topics along with VPNs, web hosting, online collaboration software and video conferencing for four years. Anthony also has his ears to the ground and is on the lookout for the next major cyberattack or data breach.&lt;/p&gt;&lt;p&gt;Based in Houston, Texas, Anthony also handles VPN testing for both Tom’s Guide and TechRadar. As someone who has worked from home exclusively since 2018, he has reviewed dozens of standing desks as well as office chairs and has taken a closer look at other essential remote working accessories. As part of these reviews, Anthony frequently builds intricate desk setups which is why he’s such a big advocate for cable management and keeping things organized. When he’s not writing, he can be found tinkering with PCs and game consoles, managing cables and making upgrades to his smart home.&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/eTnNwe2Ybcb2vNBzyY43gh-1920-80.jpg">
                                                            <media:credit><![CDATA[Tom&amp;#39;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[An Apple Mac mini M6 in hand with a Tom&#039;s Guide Prime Day deals badge]]></media:description>                                                            <media:text><![CDATA[An Apple Mac mini M6 in hand with a Tom&#039;s Guide Prime Day deals badge]]></media:text>
                                <media:title type="plain"><![CDATA[An Apple Mac mini M6 in hand with a Tom&#039;s Guide Prime Day deals badge]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/eTnNwe2Ybcb2vNBzyY43gh-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div  class="fancy-box"><div class="fancy_box-title">Grab your 30-day free Amazon Prime trial to buy this deal!</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="5kW5FPjJh56uhEpdPfwfeF" name="Amazon End of Summer Sale Pool.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/5kW5FPjJh56uhEpdPfwfeF-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: Amazon)</span></figcaption></figure><p class="fancy-box__body-text">As well as access to these exclusive Prime Big Deal Days savings, you can get free Prime shipping, access to Prime Video streaming, Prime Music, Amazon Luna gaming, unlimited cloud photo storage and a whole lot more.</p><p class="fancy-box__body-text"><a data-analytics-id="inline-link" href="https://www.amazon.com/amazonprime" target="_blank" rel="nofollow"><strong>Sign up for Amazon Prime</strong></a></p></div></div><p>Whether you’re tired of Windows and are thinking about switching to Mac or you just want to upgrade your older Mac mini, the Mac mini M6 is a great option. And right now you can get it for a great price with this October Prime Day deal.</p><p>I recently <a href="https://www.tomsguide.com/computing/apple-desktops/mac-mini-m6-review">reviewed the new Mac mini M6</a> and gave the latest version of Apple’s smallest Mac yet 4.5 stars and an editor’s choice award, and rightfully so. While it features the same redesigned case first introduced with the <a href="https://www.tomsguide.com/computing/desktop-computers/mac-mini-m4-review">Mac mini M4</a>, there are enough meaningful updates under the hood — like its more powerful M6 chip and custom N1 networking chip — that easily make it one of the <a href="https://www.tomsguide.com/us/best-mini-pc.html">best mini PCs</a>.</p><p>While Apple did raise the starting price of its latest Mac mini from $599 to $899, thanks to this excellent <a href="https://www.tomsguide.com/live/news/october-prime-day-value-deals-best-picks-2026">October Prime Day</a> discount, you can pick up the <a href="https://www.amazon.com/dp/B0HGGJZ92H?th=1" target="_blank" rel="nofollow">Mac mini M6 for $779 at Amazon</a>, or $120 off its normal price right now.</p><div class="product"><a data-dimension112="0e64b652-c0f3-11f1-8d4c-cb88d65ded01" data-action="Deal Block" data-label="Mac mini M6" data-dimension48="Mac mini M6" data-dimension25="$779" href="https://www.amazon.com/dp/B0HGGJZ92H?th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:990px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="JTeh5dZUAWCmJHNFpFpmZZ" name="Mac mini M6" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/JTeh5dZUAWCmJHNFpFpmZZ-1920-80.jpg" mos="" align="middle" fullscreen="" width="990" height="990" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p>The Mac mini M6 keeps the ultra-compact 5x5-inch design introduced with the prior generation, but packs major performance upgrades under the hood. You get the raw speed of Apple's M6 chip, upgraded graphics with hardware-accelerated ray tracing for better 1080p gaming, 16GB of unified memory, and improved connectivity thanks to Apple's custom N1 chip, which adds Wi-Fi 7, Bluetooth 6.0, and Thread support. <a class="view-deal button" href="https://www.amazon.com/dp/B0HGGJZ92H?th=1" target="_blank" rel="nofollow" data-dimension112="0e64b652-c0f3-11f1-8d4c-cb88d65ded01" data-action="Deal Block" data-label="Mac mini M6" data-dimension48="Mac mini M6" data-dimension25="$779">View Deal</a></p></div><p>Given just how popular the Mac mini M4 became for running local AI workloads, I wouldn’t wait on this deal if you’ve been thinking about upgrading. In fact, it’s still cheaper than if you bought one directly from Apple using an education discount at $799. Here’s why the new Mac mini M6 is so easy to recommend, especially at this discounted price.</p><h2 id="same-small-footprint-but-now-even-faster">Same small footprint but now even faster</h2><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="gDh5QNbqeRPQw87ku3BXpC" name="Mac Mini M6--9" alt="A person playing the game Control on the Mac Mini with M6" src="https://cdn.mos.cms.futurecdn.net/gDh5QNbqeRPQw87ku3BXpC-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>At 5 x 5 x 2 inches, the Mac mini M6 takes up the exact same footprint on your desk as its predecessor. Not only does this mean that you can use all of the existing <a href="https://www.tomsguide.com/computing/peripherals/i-added-satechis-new-usb-c-hub-and-stand-to-my-mac-mini-m4-and-its-the-perfect-upgrade">third-party accessories for the M4 model</a> with it but no matter how small your workspace is, you won’t have any trouble finding a spot for the new Mac mini.</p><p>While its overall design may be the same, Apple has made some big changes under the hood. For starters, the new <a href="https://www.tomsguide.com/computing/cpus/i-analyzed-apples-new-2nm-m6-chip-here-is-why-m1-holdouts-finally-need-to-upgrade">M6 chip</a> powering it is both faster and more efficient due to the fact that it’s built using a cutting-edge 2nm manufacturing process. In our benchmark tests, the Mac mini M6 showed results that were even faster than those from Apple’s M4 Pro model.</p><p>One thing that really impressed me personally was how much better the Mac mini M6 is at gaming over its predecessor. Although it isn’t one of the <a href="https://www.tomsguide.com/us/best-gaming-pc,review-2219.html">best gaming PCs</a>, we were still able to play Cyberpunk 2077 at nearly 60 fps at 1080p using the game’s dedicated “For this Mac” preset. </p><p>During my testing, I booted up Control and after lowering the resolution down to 1440p on Apple’s <a href="https://www.tomsguide.com/computing/monitors/apple-studio-display-xdr-review">Studio Display XDR</a>, the game played great and looked fantastic despite the fact that it was running on a premium monitor better suited for the new <a href="https://www.tomsguide.com/computing/apple-desktops/apple-mac-studio-m5-ultra-review">Mac Studio</a>.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="47uSy7XoyKoGkc5JEPfyjk" name="Mac Mini M6--5" alt="The rear ports of the Mac Mini with M6" src="https://cdn.mos.cms.futurecdn.net/47uSy7XoyKoGkc5JEPfyjk-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>When it comes to connectivity, you still get two USB-C ports and a headphone jack around front as well as three Thunderbolt 4 ports, HDMI, Ethernet and a power port on the back. However, Apple gave the Ethernet port a quiet but impressive upgrade, going from gigabit Ethernet on the Mac mini M4 to 2.5 Gigabit Ethernet on the new Mac mini M6. </p><p>If you’re downloading or uploading big files, this upgraded wired port will definitely make a massive difference. For everyday use though, you’re still getting a major connectivity upgrade, thanks to the inclusion of Apple’s custom <a href="https://www.tomsguide.com/phones/iphones/apples-n1-chip-offers-faster-speeds-while-using-weaker-wi-fi-according-to-the-experts-at-ookla">N1 chip</a> that adds <a href="https://www.tomsguide.com/reference/wi-fi-7-explained">Wi-Fi 7</a>, Bluetooth 6 and even Thread smart home support to the Mac mini M6. From faster downloads to lower-latency wireless audio to the fact that you can now use your Mac mini as a smart home hub, this new networking chip makes a big difference in how you’ll use Apple’s new Mac mini.</p><p>Whether you’re looking to upgrade from an older MacBook, want to downsize from a big, bulky tower PC or you’re fed up with Windows and want to switch to Mac, the Mac mini M6 is easily one of the best Macs you can buy right now and this October Prime Day discount sweetens the deal by putting over $100 back in your pocket.</p><h3 class="article-body__section" id="section-shop-more-deals"><span>Shop more deals</span></h3><ul><li><strong></strong><a href="https://www.amazon.com/primebigdealdays?" target="_blank" rel="nofollow"><strong>See all deals in the Prime Day sale</strong></a><strong></strong></li><li><a href="https://www.amazon.com/headphones-sale/s?k=headphones+on+sale" target="_blank" rel="nofollow"><strong>All headphones on sale at Amazon</strong></a></li></ul><div class="vizualizer-embed"><div class="tg-df-widget-host" data-widget-config="?search=tablets&amp;brands=Apple&amp;min_discount_ratio=0.95&amp;retailer=Amazon&amp;widget_title=Top+Deals+Handpicked+by+Our+Editors&amp;widget_subtitle=Discover+the+best+discounts+currently+available%2C+curated+daily+by+the+Tom%27s+Guide+Savings+Squad.&amp;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="8">8 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 finalHref = cardLink.href || cardLink.getAttribute('href') || '';                let actualRevenueId = cardLink.getAttribute('data-revenue-id');                const revMatch = finalHref.match(/(?:subId1|xcust|clickref|ascsubtag)=[^&]*?(\d{18,20})(?:&|$)/i);                if (revMatch && revMatch[1]) {                  actualRevenueId = revMatch[1];                }                const rewrittenLink = finalHref;                const revenueId = actualRevenueId;                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.getFilteredDeals().slice(0, this.displayLimit), 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.getFilteredDeals().slice(0, this.displayLimit), 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.getFilteredDeals().slice(0, this.displayLimit), 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: this.decodeHTML(item.name || item.title || item.model_name || item.product_name || 'Unknown Product'),            brand: this.decodeHTML(item.brand || ''),            productName: this.decodeHTML(item.model_name || item.product_name || item.name || ''),            merchant: this.decodeHTML(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 finalHref = btn.href || btn.getAttribute('href') || '';                let actualRevenueId = btn.getAttribute('data-revenue-id');                const revMatch = finalHref.match(/(?:subId1|xcust|clickref|ascsubtag)=[^&]*?(\d{18,20})(?:&|$)/i);                if (revMatch && revMatch[1]) {                  actualRevenueId = revMatch[1];                }                const rewrittenLink = finalHref;                const revenueId = actualRevenueId;                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)}" ${dataAttr} 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[ Prime Video top 10 movies — here’s the 3 worth watching this week (Oct. 5-11) ]]></title>
                                                                                                <dc:content><![CDATA[ <p>It’s that time of week when we help you figure out what flicks are worth watching on Amazon’s streaming platform. As someone guilty of endless, non-committal scrolling, I certainly appreciate <a href="https://www.tomsguide.com/uk/entertainment/streaming/prime-video">Prime Video</a>’s top 10 chart guiding me towards the movies a whole lot of viewers are being drawn to over any given week. </p><p>However, Prime Video’s top 10 can be pretty hit-or-miss, and just because a film has skyrocketed to the top of the charts doesn’t necessarily mean it’s worth checking out. To save you some time, I’ve sifted through this week’s most popular movies on Prime to find the ones that are actually worth your precious time. That includes a big-budget heist film, a Tom Cruise thriller people don’t talk about enough, and one of my favorite ever Tarantino movies. </p><p>The movies below are taken from Prime Video’s top 10 as of Monday, October 5, 2026. As not all the movies on there are all that great, I’ve picked out three choices I’m confident you won’t regret watching. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XYkQYW"></div>                            </div>                            <script src="https://kwizly.com/embed/XYkQYW.js" async=""></script><h3 class="article-body__section" id="section-best-movies-in-the-prime-video-top-10"><span>Best movies in the Prime Video top 10</span></h3><h2 id="now-you-see-me-now-you-don-39-t-2025">‘Now You See Me: Now You Don't’ (2025)</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/-E3lMRx7HRQ" allowfullscreen=""></iframe></div></div><p>If you can get past the needless own goal the third entry in this magic-filled heist franchise commits, there’s quite a lot to enjoy about this breezy caper. Seriously though, how is this not called “Now You Three Me”?! Getting past that naming faux pas, this threequel picks up 10 years after the events of the last entry. </p><p>Jesse Eisenberg, Woody Harrelson, Dave Franco and Isla Fisher reprise their roles as thieving illusionists, with their latest globe-hopping adventure touching upon the issue of deepfakes across some elaborate setpieces. It’s obviously all thoroughly silly stuff, but the core cast remain charming, and the film rattles along at pace over a lean 112 minute runtime. Rosamund Pike admittedly isn’t given much to sink her teeth into as the villainous Verokinka Vanderberg but the film’s action is directed with real flair by Ruben Fleischer. Turn off your brain and just enjoy the not quite magical, but fun enough ride. </p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/NOW-YOU-SEE-ME-DON%60T/dp/B0FZLWXF1H" target="_blank" rel="nofollow"><em><strong>"Now You See Me: Now You Don't" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="once-upon-a-time-in-hollywood-39-2019">‘Once Upon a Time… in Hollywood' (2019)</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/ELeMaP8EPAA" allowfullscreen=""></iframe></div></div><p>Forget his Oscar-winning turn in “The Revenant”: <em>this</em> is arguably the greatest performance of Leonardo DiCaprio’s legendary career. Playing over the hill Western star Rick Dalton during the dying days of Hollywood's Golden Era, he gets through his whiskey-soaked days mainly thanks to Brad Pitt’s carbonite cool stunt man. It’s no wonder Pitt is reprising the titular role next month in spin-off “The Further Mis-Adventures of Cliff Booth”. </p><p>Quentin Tarantino's ninth movie sports all his usual hallmarks. Banger after banger! A rapier-sharp script! Copious flamethrower violence! Much like “Inglorious Basterds”, “Once Upon a Time… in Hollywood” rewrites history in an absurdly gory, but ultra satisfying finale that sees Rick and Cliff unwittingly prevent a tragedy in large parts thanks to Booth’s awesome dog. Bruce Lee fans probably appreciate a certain fight scene, and Margot Robbie is underutilised, but this is a heartfelt love letter to Hollywood’s last real romantic age. </p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/Once-Upon-Hollywood-Leonardo-DiCaprio/dp/B07VF3XQCW" target="_blank" rel="nofollow"><em><strong>"Once Upon a Time in Hollywood" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="jack-reacher-2012">‘Jack Reacher’ (2012)</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/A7FiWkyevqY" allowfullscreen=""></iframe></div></div><p>Long before Alan Ritchson ate <em>all</em> the protein to play Lee Child’s badass drifter in the hit Prime Video show, Tom Cruise made the role his own in this overly slept-on thriller. With Ritchson’s fourth series now available to stream in its entirety, it’s little wonder folks are hunting down Cruise’s portrayal of the former U.S. Army investigator. “Jack Reacher” is a clever and lean actioner that’s slickly directed by longtime Cruise collaborator Christoper McQuarrie. </p><p>Though the “Digger” star’s version may be a whole lot shorter than the book incarnation, the iconic star turns in an intensely focused performance. Any worries about his height are quickly forgotten thanks to the film’s superb fight choreography. After a startling opening sniper spree which sees five seemingly random people murdered in downtown Pittsburgh, Reacher sets out to find the truth about the assassinations. Cue epic car chases, several plot twists and a brilliant supporting turn from the late, great Robert Duvall. </p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B0HHXZP4NG" target="_blank" rel="nofollow"><em><strong>"Jack Reacher" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h3 class="article-body__section" id="section-prime-video-top-10-movies-right-now"><span>Prime Video top 10 movies right now</span></h3><ol start="1"><li>"Now You See Me: Now You Don't" (2025)</li><li>"The Love Hypothesis" (2026)</li><li>"Jack Reacher: Never Go Back" (2016)</li><li>"Once Upon a Time... in Hollywood" (2019)</li><li>"Jack Reacher" (2012)</li><li>"The Amateur" (2025)</li><li>"Livestream from Hell" (2026)</li><li>"Good Fortune" (2025)</li><li>"Masters of the Universe" (2026)</li><li>"Looking Through Water" (2025)</li></ol><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="gdR2W4" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><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/entertainment/prime-video/new-on-prime-video-in-october-2026-top-new-movies-and-shows-to-stream-this-month">New on Prime Video in October 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/i-watched-prime-videos-new-romantic-comedy-movie-and-i-think-the-logic-mostly-checks-out">The Love Hypothesis review: the logic mostly checks out</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/3-feel-good-movies-on-prime-video-to-chase-away-the-sunday-scaries">3 feel-good movies on Prime Video</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/prime-video/prime-video-top-10-movies-heres-the-3-worth-watching-this-week-oct-5-11</link>
                                                                            <description>
                            <![CDATA[ The Prime Video top 10 most-watched list has been updated once again. I'm here to help you comb through the flicks that are actually worth streaming. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">i5NwE2SuiRrGk7NVKudwJN</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/CzNUtUmp7P3FEQqLgbp8z4-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 05 Oct 2026 16:36:01 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Prime Video]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                    <category><![CDATA[Streaming]]></category>
                                                                                                <author><![CDATA[ dave.meikleham@futurenet.com (Dave Meikleham) ]]></author>                    <dc:creator><![CDATA[ Dave Meikleham ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/Rda8e7jGfyTdZLWYJQQ8VY-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Dave is a computing editor at Tom’s Guide and covers everything from cutting-edge laptops, the latest GPU tech, to ultrawide monitors. When he’s not worrying about dead pixels, Dave enjoys regularly rebuilding his PC for absolutely no reason at all. He built his first rig over 20 years ago, and he’s gone through more motherboards than he’s had hot dinners. Probably. &lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;In a previous life, he worked as a video game journalist during a career spanning the best part of two decades. Over that time he worked across both online and print, with bylines for GamesRadar+, PC Gamer, TechRadar, Edge and the Official UK PlayStation Magazine. He’s almost amassed an immeasurable amount of bad puns.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;An avid PC and console gamer, Dave enjoys breaking out Fraps way too often as he obsesses over frame rates. Despite owning a graphics card that costs roughly the same as your average used car, he still enjoys gaming on the go and is regularly glued to his Switch. Away from tech, most of Dave’s time is taken up by walking his husky, obsessing about his various OLED displays and sweating over the fitness of half a dozen Arsenal players on any given week.&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/CzNUtUmp7P3FEQqLgbp8z4-1920-80.jpg">
                                                            <media:credit><![CDATA[Prime Video; Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Prime Video logo on a green background]]></media:description>                                                            <media:text><![CDATA[Prime Video logo on a green background]]></media:text>
                                <media:title type="plain"><![CDATA[Prime Video logo on a green background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/CzNUtUmp7P3FEQqLgbp8z4-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>It’s that time of week when we help you figure out what flicks are worth watching on Amazon’s streaming platform. As someone guilty of endless, non-committal scrolling, I certainly appreciate <a href="https://www.tomsguide.com/uk/entertainment/streaming/prime-video">Prime Video</a>’s top 10 chart guiding me towards the movies a whole lot of viewers are being drawn to over any given week. </p><p>However, Prime Video’s top 10 can be pretty hit-or-miss, and just because a film has skyrocketed to the top of the charts doesn’t necessarily mean it’s worth checking out. To save you some time, I’ve sifted through this week’s most popular movies on Prime to find the ones that are actually worth your precious time. That includes a big-budget heist film, a Tom Cruise thriller people don’t talk about enough, and one of my favorite ever Tarantino movies. </p><p>The movies below are taken from Prime Video’s top 10 as of Monday, October 5, 2026. As not all the movies on there are all that great, I’ve picked out three choices I’m confident you won’t regret watching. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XYkQYW"></div>                            </div>                            <script src="https://kwizly.com/embed/XYkQYW.js" async=""></script><h3 class="article-body__section" id="section-best-movies-in-the-prime-video-top-10"><span>Best movies in the Prime Video top 10</span></h3><h2 id="now-you-see-me-now-you-don-39-t-2025">‘Now You See Me: Now You Don't’ (2025)</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/-E3lMRx7HRQ" allowfullscreen=""></iframe></div></div><p>If you can get past the needless own goal the third entry in this magic-filled heist franchise commits, there’s quite a lot to enjoy about this breezy caper. Seriously though, how is this not called “Now You Three Me”?! Getting past that naming faux pas, this threequel picks up 10 years after the events of the last entry. </p><p>Jesse Eisenberg, Woody Harrelson, Dave Franco and Isla Fisher reprise their roles as thieving illusionists, with their latest globe-hopping adventure touching upon the issue of deepfakes across some elaborate setpieces. It’s obviously all thoroughly silly stuff, but the core cast remain charming, and the film rattles along at pace over a lean 112 minute runtime. Rosamund Pike admittedly isn’t given much to sink her teeth into as the villainous Verokinka Vanderberg but the film’s action is directed with real flair by Ruben Fleischer. Turn off your brain and just enjoy the not quite magical, but fun enough ride. </p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/NOW-YOU-SEE-ME-DON%60T/dp/B0FZLWXF1H" target="_blank" rel="nofollow"><em><strong>"Now You See Me: Now You Don't" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="once-upon-a-time-in-hollywood-39-2019">‘Once Upon a Time… in Hollywood' (2019)</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/ELeMaP8EPAA" allowfullscreen=""></iframe></div></div><p>Forget his Oscar-winning turn in “The Revenant”: <em>this</em> is arguably the greatest performance of Leonardo DiCaprio’s legendary career. Playing over the hill Western star Rick Dalton during the dying days of Hollywood's Golden Era, he gets through his whiskey-soaked days mainly thanks to Brad Pitt’s carbonite cool stunt man. It’s no wonder Pitt is reprising the titular role next month in spin-off “The Further Mis-Adventures of Cliff Booth”. </p><p>Quentin Tarantino's ninth movie sports all his usual hallmarks. Banger after banger! A rapier-sharp script! Copious flamethrower violence! Much like “Inglorious Basterds”, “Once Upon a Time… in Hollywood” rewrites history in an absurdly gory, but ultra satisfying finale that sees Rick and Cliff unwittingly prevent a tragedy in large parts thanks to Booth’s awesome dog. Bruce Lee fans probably appreciate a certain fight scene, and Margot Robbie is underutilised, but this is a heartfelt love letter to Hollywood’s last real romantic age. </p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/Once-Upon-Hollywood-Leonardo-DiCaprio/dp/B07VF3XQCW" target="_blank" rel="nofollow"><em><strong>"Once Upon a Time in Hollywood" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="jack-reacher-2012">‘Jack Reacher’ (2012)</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/A7FiWkyevqY" allowfullscreen=""></iframe></div></div><p>Long before Alan Ritchson ate <em>all</em> the protein to play Lee Child’s badass drifter in the hit Prime Video show, Tom Cruise made the role his own in this overly slept-on thriller. With Ritchson’s fourth series now available to stream in its entirety, it’s little wonder folks are hunting down Cruise’s portrayal of the former U.S. Army investigator. “Jack Reacher” is a clever and lean actioner that’s slickly directed by longtime Cruise collaborator Christoper McQuarrie. </p><p>Though the “Digger” star’s version may be a whole lot shorter than the book incarnation, the iconic star turns in an intensely focused performance. Any worries about his height are quickly forgotten thanks to the film’s superb fight choreography. After a startling opening sniper spree which sees five seemingly random people murdered in downtown Pittsburgh, Reacher sets out to find the truth about the assassinations. Cue epic car chases, several plot twists and a brilliant supporting turn from the late, great Robert Duvall. </p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B0HHXZP4NG" target="_blank" rel="nofollow"><em><strong>"Jack Reacher" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h3 class="article-body__section" id="section-prime-video-top-10-movies-right-now"><span>Prime Video top 10 movies right now</span></h3><ol start="1"><li>"Now You See Me: Now You Don't" (2025)</li><li>"The Love Hypothesis" (2026)</li><li>"Jack Reacher: Never Go Back" (2016)</li><li>"Once Upon a Time... in Hollywood" (2019)</li><li>"Jack Reacher" (2012)</li><li>"The Amateur" (2025)</li><li>"Livestream from Hell" (2026)</li><li>"Good Fortune" (2025)</li><li>"Masters of the Universe" (2026)</li><li>"Looking Through Water" (2025)</li></ol><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="gdR2W4" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><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/entertainment/prime-video/new-on-prime-video-in-october-2026-top-new-movies-and-shows-to-stream-this-month">New on Prime Video in October 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/i-watched-prime-videos-new-romantic-comedy-movie-and-i-think-the-logic-mostly-checks-out">The Love Hypothesis review: the logic mostly checks out</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/3-feel-good-movies-on-prime-video-to-chase-away-the-sunday-scaries">3 feel-good movies on Prime Video</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Amazon drivers are getting AI smart glasses — but my warehouse tour reveals their 1-million strong automated robot workforce is the real story ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Amazon plans to have <a href="https://press.aboutamazon.com/2026/9/amazon-invests-another-1-9-billion-in-the-delivery-service-partner-program-with-new-safety-initiatives-and-ai-powered-technology" target="_blank">more than 20,000 pairs of smart glasses</a> on its delivery drivers by the end of 2027, following a pilot in which more than 500 drivers wore them for 18 months and completed more than 275,000 deliveries.</p><p>According to the company, once a driver parks, the glasses switch on and use computer vision to put navigation, package details and hazard alerts directly in the driver's line of sight, so the driver no longer has to keep glancing down at a phone. Amazon says wearing them is voluntary and that the <a href="https://www.aboutamazon.com/news/transportation/smart-glasses-amazon-delivery-drivers" target="_blank">design was shaped by feedback from the drivers who tested it</a>.</p><p>The public already seems to have real concerns with <a href="https://www.tomsguide.com/ai/toms-guide-awards-2026">AI glasses</a>, like <a href="https://www.tomsguide.com/ai/less-pervert-y-meta-ai-glasses-will-now-stop-recording-if-you-cover-the-warning-light">Ray Ban Meta glasses</a>, and Amazon's decision raises one of the biggest problems yet, <a href="https://thenextweb.com/news/amazon-smart-glasses-delivery-drivers-photos-no-opt-out" target="_blank">the glasses take still images at frequent intervals</a> while drivers are on foot.  And yet, Amazon says they haven't considered an opt-out for the customers whose homes end up in those pictures. </p><p>But the more time I spent looking at Amazon's delivery operation of using <a href="https://www.youtube.com/watch?v=XXVhNlNKxQA" target="_blank">1 million robots to process 600,000 orders and hour</a>, and even scheduling <a href="https://www.aboutamazon.com/amazon-hq-tours" target="_blank">a tour of the Amazon Warehouse</a>, the less the glasses looked like the most important part of the story, because they are simply the part of the system we, the public, can see.</p><h2 id="ai-is-involved-before-you-even-place-the-order">AI is involved before you even place the order</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/XXVhNlNKxQA" allowfullscreen=""></iframe></div></div><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-X85DNe"></div>                            </div>                            <script src="https://kwizly.com/embed/X85DNe.js" async=""></script><p>By the time a driver puts them on, AI may already have influenced where a product was stored, how it moved through a fulfillment center, which robots handled it and which route carried it to your house. <a href="https://www.aboutamazon.com/news/operations/amazon-ai-innovations-delivery-forecasting-robotics" target="_blank">Amazon uses AI-powered demand forecasting</a> to decide where inventory should sit, robotics and computer vision systems inside fulfillment centers, DeepFleet to coordinate robot movement and AI-powered mapping and routing on the delivery side, making the glasses the newest interface between workers and a much larger system already operating around them. </p><p>Amazon's AI starts working long before somebody pulls a box off a warehouse shelf. The company uses a foundation model to forecast demand and decide where inventory should sit, and Amazon says the model has <a href="https://www.supplychaindive.com/news/amazon-ai-supply-chain-usage-upgrades/750713/" target="_blank">improved its regional forecasts for millions of popular items by 20%</a>, which lets it stock those products closer to the customers most likely to order them.</p><p>Once an item reaches a fulfillment center, it enters an environment where people, robots, computer vision and machine-learning systems operate as a single network. Amazon <a href="https://www.aboutamazon.com/news/operations/amazon-million-robots-ai-foundation-model" target="_blank">deployed its millionth robot in 2025</a>, part of a fleet spread across more than 300 facilities worldwide.</p><p>Some of those robots move entire shelves, and the <a href="https://chainstoreage.com/amazons-new-warehouse-robots-include-human-digit" target="_blank">Hercules model can lift up to 1,250 pounds</a> of inventory. Sparrow works at a finer scale, using computer vision and AI to recognize and pick up individual items of different shapes and sizes, while Proteus moves carts autonomously around the employees who share the warehouse floor with it.</p><p>Sequoia combines mobile robots, computer vision and AI to organize inventory and deliver it to workers, and Amazon says the system can <a href="https://www.aboutamazon.com/news/operations/amazon-introduces-new-robotics-solutions" target="_blank">identify and store incoming inventory up to 75% faster</a> than its previous methods. </p><h2 id="the-robots-now-have-their-own-ai-traffic-controller">The robots now have their own AI traffic controller</h2><p>Amazon isn't only adding more robots but also using AI to coordinate them. Its <a href="https://www.nvidia.com/en-us/case-studies/agility-robotics-digit-humanoid-robot">DeepFleet foundation model,</a> which the company compares to an intelligent traffic system for a congested city, plans more efficient paths for the fleet and reduces congestion between robots, and Amazon <a href="https://www.aboutamazon.com/news/operations/amazon-million-robots-ai-foundation-model" target="_blank">projects that it will cut the fleet's travel time by about 10%</a>.</p><p>Ten percent sounds modest until you apply it to more than a million robots moving inventory across hundreds of buildings, where small savings on each trip add up to a faster operation overall. </p><p>Amazon is also bringing agentic AI into the management of its fulfillment centers. Project Eluna, first piloted at a fulfillment center in Tennessee, analyzes real-time and historical operational data so managers can spot bottlenecks without working through dozens of dashboards. Amazon describes it as a system <a href="https://www.aboutamazon.com/news/operations/new-robots-amazon-fulfillment-agentic-ai">designed to act with a degree of autonomy</a>, reasoning through operational problems and recommending actions to operators, who can ask it questions in plain language, including <a href="https://siliconangle.com/2025/10/22/amazon-melds-ai-robotics-smart-glasses-streamline-deliveries/">where to shift people to avoid a bottleneck</a>.</p><p>A person still makes the final call, and Eluna recommends rather than commands. But a system that can detect a problem, analyze the data around it and suggest where staff should go next is already shaping decisions that used to rest more heavily on human judgment, including decisions about the workers themselves.</p><p>Amazon is working on the relationship from the other direction, too. A next-generation version of Proteus accepts plain-language instructions from employees, so a worker can say what needs to be moved and let the robot work out the priority, route and timing on its own. The new Proteus is <a href="https://www.techtimes.com/articles/318088/20260609/amazon-unveils-conversational-proteus-warehouse-robot-10b-europe-push.htm" target="_blank">being piloted in Amazon's research labs</a>, and the company plans to deploy it in Europe in the first half of 2027.</p><h2 id="amazon-keeps-automating-human-work">Amazon keeps automating human work</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/8-ESlUGAwGU" allowfullscreen=""></iframe></div></div><p>Vulcan, Amazon's first robot with a sense of touch, makes that progression especially clear. Earlier warehouse robots relied on cameras and suction, and densely packed storage bins stayed difficult for them because they couldn't feel what they were pressing against in a crowded space. </p><p>Vulcan uses force sensors to detect when it has made contact with an object and how much pressure it is applying, which lets it pick and stow items in tightly packed compartments, and Amazon says it can handle <a href="https://chainstoreage.com/amazon-debuts-its-first-ever-warehouse-robot-vulcan-sense-touch" target="_blank">roughly 75% of the types of items stored in its fulfillment centers</a> at speeds comparable to human workers.</p><p>It is easy to read that as one more task taken from people, but it's part of a larger pattern. Amazon's robots started by moving shelves, then learned to move packages and recognize individual objects, and now one of them can feel what it touches, while AI learns to coordinate those machines and analyze the buildings they work in. </p><h2 id="then-the-package-leaves-the-warehouse">Then the package leaves the warehouse</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1672px;"><p class="vanilla-image-block" style="padding-top:56.22%;"><img id="SUE8NSjyGMXMPDdUV4WvET" name="Amazon" alt="Amazon Warehouse" src="https://cdn.mos.cms.futurecdn.net/SUE8NSjyGMXMPDdUV4WvET-1920-80.png" mos="" align="middle" fullscreen="" width="1672" height="940" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Getty Images/Daniel Holland)</span></figcaption></figure><p>The AI stays with the package after it leaves on a delivery van. Amazon's Wellspring mapping technology learns from every trip to a location and builds a detailed model of the physical world, and Amazon says that since 2024 it has <a href="https://press.aboutamazon.com/2026/9/amazon-invests-another-1-9-billion-in-the-delivery-service-partner-program-with-new-safety-initiatives-and-ai-powered-technology" target="_blank">identified 202 million parking locations, mapped 2.8 million building entrances and cataloged 85,000 mailrooms and lockers</a>. </p><p>Its AI routing also <a href="https://www.freightwaves.com/news/amazon-rolls-out-safety-tech-pay-bump-for-delivery-providers" target="_blank">adjusts for conditions like reduced visibility after sunset</a> or the extra time a downtown stop needs to find parking during the lunch rush. </p><p>The glasses plug directly into that system. They put Wellspring's guidance in front of the driver's eyes, and according to reporting on the rollout from <a href="https://www.techrepublic.com/article/news-amazon-smart-delivery-glasses-2027/" target="_blank">TechRepublic</a>, the images they capture along the way can also feed back into Wellspring, which means the driver wearing them is both following the system's instructions and helping train it.</p><p>That is why the glasses no longer seem especially shocking to me. They make visible something that has been happening across the rest of Amazon's operation for years.</p><h2 id="the-questions-we-should-be-asking">The questions we should be asking</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1672px;"><p class="vanilla-image-block" style="padding-top:56.28%;"><img id="7zK95mvYCpSD5gLL6sf3fj" name="Amazon packages" alt="Amazon packages outside a front door" src="https://cdn.mos.cms.futurecdn.net/7zK95mvYCpSD5gLL6sf3fj-1920-80.png" mos="" align="middle" fullscreen="" width="1672" height="941" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future/Gemini)</span></figcaption></figure><p>The Amazon fulfillment center near me is just one of the places where the public can watch this system at work. You'll see more robots than you've ever seen in one place and the fact that they are literally carrying entire towers of inventory and conveyor systems linking every corner of the building to real-time data coordinating the operation is mind blowing.  <br /><br />And yet, I know that what visitors see is the visible half of the system. The robots, conveyors and workers moving in sync are all on display in a harmonious system. The harder issue is who benefits when the system makes a worker faster. </p><p>Saving a driver 20 seconds at each stop could make for an easier shift, or it could simply show the system that another stop fits into the day. Amazon has <a href="https://insideretail.us/inside-amazons-plan-to-hand-its-drivers-smart-glasses/" target="_blank">estimated that the glasses could save drivers up to 30 minutes per shift</a>, but it <a href="https://www.consumeraffairs.com/news/amazons-new-smart-glasses-could-change-how-your-packages-get-delivered-092126.html" target="_blank">hasn't published data</a> showing whether they reduce mistakes or speed up deliveries, and it hasn't said who gets those 30 minutes back. </p><h2 id="final-thoughts">Final thoughts </h2><p>Which brings us back to the glasses. They are the only piece of Amazon's AI system that a customer is ever likely to see (besides the tour), so it makes sense that they are drawing the most scrutiny at the moment. </p><p>But they sit at the very top of a much larger structure, resting on forecasting models that decide where products live, robots and fleet software that decide how they move, an agentic system that suggests where workers should go, and a mapping platform that tells drivers where to park and which door to use. </p><p>The glasses are just the tip of Amazon's AI, and if the conversation stops at the camera on a driver's face, it will miss nearly everything underneath that is actually deciding how the work gets done.</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-checked-how-long-doordash-and-amazon-keep-photos-of-my-front-door-its-worse-than-i-thought"><strong>Amazon and DoorDash take photos of your front door — but good luck finding out when they’re deleted</strong></a></li><li><a href="https://www.tomsguide.com/ai/meta-muse-can-keep-files-on-people-who-have-never-used-it-heres-what-i-found"><strong>Meta Muse can keep files on people who have never used it — here's what I found</strong></a></li><li><a href="https://www.tomsguide.com/ai/google-gemini/i-made-7-gemini-skills-to-handle-my-most-repetitive-prompts-youll-want-to-steal-4"><strong>I made 7 Gemini Skills to handle my most repetitive prompts — #4 is my personal favorite</strong></a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/ai/amazons-delivery-drivers-are-getting-ai-glasses-and-thats-the-least-unsettling-ai-in-the-job</link>
                                                                            <description>
                            <![CDATA[ Amazon’s AI glasses may look futuristic, but they’re only one piece of a system already reshaping how warehouse workers and delivery drivers operate. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">o32VCYKicRaGXZPVnvnhVN</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/wWnsMAN2otL4aWGx4NxeQa-1920-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Sun, 04 Oct 2026 06:45:00 +0000</pubDate>                                                                                                                                <updated>Wed, 07 Oct 2026 10:44:08 +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/png" url="https://cdn.mos.cms.futurecdn.net/wWnsMAN2otL4aWGx4NxeQa-1920-80.png">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Amazon driver]]></media:description>                                                            <media:text><![CDATA[Amazon driver]]></media:text>
                                <media:title type="plain"><![CDATA[Amazon driver]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/wWnsMAN2otL4aWGx4NxeQa-1920-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Amazon plans to have <a href="https://press.aboutamazon.com/2026/9/amazon-invests-another-1-9-billion-in-the-delivery-service-partner-program-with-new-safety-initiatives-and-ai-powered-technology" target="_blank">more than 20,000 pairs of smart glasses</a> on its delivery drivers by the end of 2027, following a pilot in which more than 500 drivers wore them for 18 months and completed more than 275,000 deliveries.</p><p>According to the company, once a driver parks, the glasses switch on and use computer vision to put navigation, package details and hazard alerts directly in the driver's line of sight, so the driver no longer has to keep glancing down at a phone. Amazon says wearing them is voluntary and that the <a href="https://www.aboutamazon.com/news/transportation/smart-glasses-amazon-delivery-drivers" target="_blank">design was shaped by feedback from the drivers who tested it</a>.</p><p>The public already seems to have real concerns with <a href="https://www.tomsguide.com/ai/toms-guide-awards-2026">AI glasses</a>, like <a href="https://www.tomsguide.com/ai/less-pervert-y-meta-ai-glasses-will-now-stop-recording-if-you-cover-the-warning-light">Ray Ban Meta glasses</a>, and Amazon's decision raises one of the biggest problems yet, <a href="https://thenextweb.com/news/amazon-smart-glasses-delivery-drivers-photos-no-opt-out" target="_blank">the glasses take still images at frequent intervals</a> while drivers are on foot.  And yet, Amazon says they haven't considered an opt-out for the customers whose homes end up in those pictures. </p><p>But the more time I spent looking at Amazon's delivery operation of using <a href="https://www.youtube.com/watch?v=XXVhNlNKxQA" target="_blank">1 million robots to process 600,000 orders and hour</a>, and even scheduling <a href="https://www.aboutamazon.com/amazon-hq-tours" target="_blank">a tour of the Amazon Warehouse</a>, the less the glasses looked like the most important part of the story, because they are simply the part of the system we, the public, can see.</p><h2 id="ai-is-involved-before-you-even-place-the-order">AI is involved before you even place the order</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/XXVhNlNKxQA" allowfullscreen=""></iframe></div></div><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-X85DNe"></div>                            </div>                            <script src="https://kwizly.com/embed/X85DNe.js" async=""></script><p>By the time a driver puts them on, AI may already have influenced where a product was stored, how it moved through a fulfillment center, which robots handled it and which route carried it to your house. <a href="https://www.aboutamazon.com/news/operations/amazon-ai-innovations-delivery-forecasting-robotics" target="_blank">Amazon uses AI-powered demand forecasting</a> to decide where inventory should sit, robotics and computer vision systems inside fulfillment centers, DeepFleet to coordinate robot movement and AI-powered mapping and routing on the delivery side, making the glasses the newest interface between workers and a much larger system already operating around them. </p><p>Amazon's AI starts working long before somebody pulls a box off a warehouse shelf. The company uses a foundation model to forecast demand and decide where inventory should sit, and Amazon says the model has <a href="https://www.supplychaindive.com/news/amazon-ai-supply-chain-usage-upgrades/750713/" target="_blank">improved its regional forecasts for millions of popular items by 20%</a>, which lets it stock those products closer to the customers most likely to order them.</p><p>Once an item reaches a fulfillment center, it enters an environment where people, robots, computer vision and machine-learning systems operate as a single network. Amazon <a href="https://www.aboutamazon.com/news/operations/amazon-million-robots-ai-foundation-model" target="_blank">deployed its millionth robot in 2025</a>, part of a fleet spread across more than 300 facilities worldwide.</p><p>Some of those robots move entire shelves, and the <a href="https://chainstoreage.com/amazons-new-warehouse-robots-include-human-digit" target="_blank">Hercules model can lift up to 1,250 pounds</a> of inventory. Sparrow works at a finer scale, using computer vision and AI to recognize and pick up individual items of different shapes and sizes, while Proteus moves carts autonomously around the employees who share the warehouse floor with it.</p><p>Sequoia combines mobile robots, computer vision and AI to organize inventory and deliver it to workers, and Amazon says the system can <a href="https://www.aboutamazon.com/news/operations/amazon-introduces-new-robotics-solutions" target="_blank">identify and store incoming inventory up to 75% faster</a> than its previous methods. </p><h2 id="the-robots-now-have-their-own-ai-traffic-controller">The robots now have their own AI traffic controller</h2><p>Amazon isn't only adding more robots but also using AI to coordinate them. Its <a href="https://www.nvidia.com/en-us/case-studies/agility-robotics-digit-humanoid-robot">DeepFleet foundation model,</a> which the company compares to an intelligent traffic system for a congested city, plans more efficient paths for the fleet and reduces congestion between robots, and Amazon <a href="https://www.aboutamazon.com/news/operations/amazon-million-robots-ai-foundation-model" target="_blank">projects that it will cut the fleet's travel time by about 10%</a>.</p><p>Ten percent sounds modest until you apply it to more than a million robots moving inventory across hundreds of buildings, where small savings on each trip add up to a faster operation overall. </p><p>Amazon is also bringing agentic AI into the management of its fulfillment centers. Project Eluna, first piloted at a fulfillment center in Tennessee, analyzes real-time and historical operational data so managers can spot bottlenecks without working through dozens of dashboards. Amazon describes it as a system <a href="https://www.aboutamazon.com/news/operations/new-robots-amazon-fulfillment-agentic-ai">designed to act with a degree of autonomy</a>, reasoning through operational problems and recommending actions to operators, who can ask it questions in plain language, including <a href="https://siliconangle.com/2025/10/22/amazon-melds-ai-robotics-smart-glasses-streamline-deliveries/">where to shift people to avoid a bottleneck</a>.</p><p>A person still makes the final call, and Eluna recommends rather than commands. But a system that can detect a problem, analyze the data around it and suggest where staff should go next is already shaping decisions that used to rest more heavily on human judgment, including decisions about the workers themselves.</p><p>Amazon is working on the relationship from the other direction, too. A next-generation version of Proteus accepts plain-language instructions from employees, so a worker can say what needs to be moved and let the robot work out the priority, route and timing on its own. The new Proteus is <a href="https://www.techtimes.com/articles/318088/20260609/amazon-unveils-conversational-proteus-warehouse-robot-10b-europe-push.htm" target="_blank">being piloted in Amazon's research labs</a>, and the company plans to deploy it in Europe in the first half of 2027.</p><h2 id="amazon-keeps-automating-human-work">Amazon keeps automating human work</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/8-ESlUGAwGU" allowfullscreen=""></iframe></div></div><p>Vulcan, Amazon's first robot with a sense of touch, makes that progression especially clear. Earlier warehouse robots relied on cameras and suction, and densely packed storage bins stayed difficult for them because they couldn't feel what they were pressing against in a crowded space. </p><p>Vulcan uses force sensors to detect when it has made contact with an object and how much pressure it is applying, which lets it pick and stow items in tightly packed compartments, and Amazon says it can handle <a href="https://chainstoreage.com/amazon-debuts-its-first-ever-warehouse-robot-vulcan-sense-touch" target="_blank">roughly 75% of the types of items stored in its fulfillment centers</a> at speeds comparable to human workers.</p><p>It is easy to read that as one more task taken from people, but it's part of a larger pattern. Amazon's robots started by moving shelves, then learned to move packages and recognize individual objects, and now one of them can feel what it touches, while AI learns to coordinate those machines and analyze the buildings they work in. </p><h2 id="then-the-package-leaves-the-warehouse">Then the package leaves the warehouse</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1672px;"><p class="vanilla-image-block" style="padding-top:56.22%;"><img id="SUE8NSjyGMXMPDdUV4WvET" name="Amazon" alt="Amazon Warehouse" src="https://cdn.mos.cms.futurecdn.net/SUE8NSjyGMXMPDdUV4WvET-1920-80.png" mos="" align="middle" fullscreen="" width="1672" height="940" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Getty Images/Daniel Holland)</span></figcaption></figure><p>The AI stays with the package after it leaves on a delivery van. Amazon's Wellspring mapping technology learns from every trip to a location and builds a detailed model of the physical world, and Amazon says that since 2024 it has <a href="https://press.aboutamazon.com/2026/9/amazon-invests-another-1-9-billion-in-the-delivery-service-partner-program-with-new-safety-initiatives-and-ai-powered-technology" target="_blank">identified 202 million parking locations, mapped 2.8 million building entrances and cataloged 85,000 mailrooms and lockers</a>. </p><p>Its AI routing also <a href="https://www.freightwaves.com/news/amazon-rolls-out-safety-tech-pay-bump-for-delivery-providers" target="_blank">adjusts for conditions like reduced visibility after sunset</a> or the extra time a downtown stop needs to find parking during the lunch rush. </p><p>The glasses plug directly into that system. They put Wellspring's guidance in front of the driver's eyes, and according to reporting on the rollout from <a href="https://www.techrepublic.com/article/news-amazon-smart-delivery-glasses-2027/" target="_blank">TechRepublic</a>, the images they capture along the way can also feed back into Wellspring, which means the driver wearing them is both following the system's instructions and helping train it.</p><p>That is why the glasses no longer seem especially shocking to me. They make visible something that has been happening across the rest of Amazon's operation for years.</p><h2 id="the-questions-we-should-be-asking">The questions we should be asking</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1672px;"><p class="vanilla-image-block" style="padding-top:56.28%;"><img id="7zK95mvYCpSD5gLL6sf3fj" name="Amazon packages" alt="Amazon packages outside a front door" src="https://cdn.mos.cms.futurecdn.net/7zK95mvYCpSD5gLL6sf3fj-1920-80.png" mos="" align="middle" fullscreen="" width="1672" height="941" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future/Gemini)</span></figcaption></figure><p>The Amazon fulfillment center near me is just one of the places where the public can watch this system at work. You'll see more robots than you've ever seen in one place and the fact that they are literally carrying entire towers of inventory and conveyor systems linking every corner of the building to real-time data coordinating the operation is mind blowing.  <br /><br />And yet, I know that what visitors see is the visible half of the system. The robots, conveyors and workers moving in sync are all on display in a harmonious system. The harder issue is who benefits when the system makes a worker faster. </p><p>Saving a driver 20 seconds at each stop could make for an easier shift, or it could simply show the system that another stop fits into the day. Amazon has <a href="https://insideretail.us/inside-amazons-plan-to-hand-its-drivers-smart-glasses/" target="_blank">estimated that the glasses could save drivers up to 30 minutes per shift</a>, but it <a href="https://www.consumeraffairs.com/news/amazons-new-smart-glasses-could-change-how-your-packages-get-delivered-092126.html" target="_blank">hasn't published data</a> showing whether they reduce mistakes or speed up deliveries, and it hasn't said who gets those 30 minutes back. </p><h2 id="final-thoughts">Final thoughts </h2><p>Which brings us back to the glasses. They are the only piece of Amazon's AI system that a customer is ever likely to see (besides the tour), so it makes sense that they are drawing the most scrutiny at the moment. </p><p>But they sit at the very top of a much larger structure, resting on forecasting models that decide where products live, robots and fleet software that decide how they move, an agentic system that suggests where workers should go, and a mapping platform that tells drivers where to park and which door to use. </p><p>The glasses are just the tip of Amazon's AI, and if the conversation stops at the camera on a driver's face, it will miss nearly everything underneath that is actually deciding how the work gets done.</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-checked-how-long-doordash-and-amazon-keep-photos-of-my-front-door-its-worse-than-i-thought"><strong>Amazon and DoorDash take photos of your front door — but good luck finding out when they’re deleted</strong></a></li><li><a href="https://www.tomsguide.com/ai/meta-muse-can-keep-files-on-people-who-have-never-used-it-heres-what-i-found"><strong>Meta Muse can keep files on people who have never used it — here's what I found</strong></a></li><li><a href="https://www.tomsguide.com/ai/google-gemini/i-made-7-gemini-skills-to-handle-my-most-repetitive-prompts-youll-want-to-steal-4"><strong>I made 7 Gemini Skills to handle my most repetitive prompts — #4 is my personal favorite</strong></a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Amazon Fire TV devices explained: Which streaming stick (or Cube) is right for you? ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Amazon’s Fire TV lineup can be confusing to navigate. With multiple streaming sticks hiding behind your TV screen, plus a standalone flagship box, telling the models apart isn't always easy.</p><p>Whether you need a quick fix for a guest bedroom or a high-performance streaming hub for a 4K home theater setup, here is a complete breakdown of every Amazon Fire TV device: what it is, what it does and who it's built for.</p><h2 id="1-amazon-fire-tv-stick-hd">1. Amazon Fire TV Stick HD</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1510px;"><p class="vanilla-image-block" style="padding-top:59.60%;"><img id="KGXkstixTPbXp4FrRjXmXD" name="Amazon Fire TV Stick HD" alt="Amazon Fire TV Stick HD" src="https://cdn.mos.cms.futurecdn.net/KGXkstixTPbXp4FrRjXmXD-1920-80.jpg" mos="" align="middle" fullscreen="" width="1510" height="900" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Amazon )</span></figcaption></figure><p><strong>What is it?</strong> <a href="https://www.tomsguide.com/tvs/amazon-fire-tv-stick-hd-review">Amazon’s most affordable plug-in streaming stick</a>, built for non-4K displays.</p><p><strong>What it does: </strong>The Fire TV Stick HD plugs directly into an HDMI port on your television and streams content in standard 1080p Full HD. It gives you instant access to major streaming apps, including Prime Video, Netflix, and Disney+, along with cloud gaming via Amazon Luna and Xbox Game Pass. </p><p>It ships with a basic Alexa Voice Remote that lets you control your TV volume and search for shows by holding down the microphone button.</p><p><strong>Best for: </strong>Small bedrooms, kitchens, guest rooms, or replacing outdated app interfaces on older 1080p HDTVs on a tight budget.</p><div class="product"><a data-dimension112="5d52026a-bd9c-11f1-b6ec-d3580bd6a1b6" data-action="Deal Block" data-label="Fire TV Stick HD" data-dimension48="Fire TV Stick HD" data-dimension25="$39" href="https://www.amazon.com/Amazon-Fire-TV-Stick-HD-Thin-and-Portable/dp/B0DJGDC3BD/ref" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1108px;"><p class="vanilla-image-block" style="padding-top:93.23%;"><img id="KuGTVfs9qg2Ak2hUofVVAQ" name="Fire TV Stick HD" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/KuGTVfs9qg2Ak2hUofVVAQ-1920-80.jpg" mos="" align="middle" fullscreen="" width="1108" height="1033" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/Amazon-Fire-TV-Stick-HD-Thin-and-Portable/dp/B0DJGDC3BD/ref" target="_blank" rel="nofollow" data-dimension112="5d52026a-bd9c-11f1-b6ec-d3580bd6a1b6" data-action="Deal Block" data-label="Fire TV Stick HD" data-dimension48="Fire TV Stick HD" data-dimension25="$39">Fire TV Stick HD: $39</a></strong><br />The ultimate budget fix for spare screens and older HDTVs. It plugs straight into your TV for crisp 1080p streaming, full Alexa voice control, and instant access to every major app. <a class="view-deal button" href="https://www.amazon.com/Amazon-Fire-TV-Stick-HD-Thin-and-Portable/dp/B0DJGDC3BD/ref" target="_blank" rel="nofollow" data-dimension112="5d52026a-bd9c-11f1-b6ec-d3580bd6a1b6" data-action="Deal Block" data-label="Fire TV Stick HD" data-dimension48="Fire TV Stick HD" data-dimension25="$39">View Deal</a></p></div><h2 id="2-amazon-fire-tv-stick-4k-2026">2. Amazon Fire TV Stick 4K (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:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="sZFK3NAQvo4Cgn4fcgAu7P" name="fire-tv-stick-4k_ftv-remote_hero_2000x1125" alt="Amazon Fire TV Stick 4K" src="https://cdn.mos.cms.futurecdn.net/sZFK3NAQvo4Cgn4fcgAu7P-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: Amazon)</span></figcaption></figure><p><strong>What is it?</strong> <a href="https://www.tomsguide.com/entertainment/streaming-devices/amazon-announces-a-new-usd59-fire-tv-stick-and-finally-a-remote-you-can-find-with-alexa">The updated mid-range streamer</a> featuring Amazon’s new Vega OS and a redesigned tactile remote.</p><p><strong>What it does: </strong>This new 4K stick delivers crisp 2160p Ultra HD streaming and introduces Amazon’s light, fast Vega OS interface (replacing the older Android-based software). Powered by a faster quad-core processor, it runs 20% to 40% speedier than previous budget streamers and can even draw power directly from your TV’s USB port.</p><p>Crucially, this model ships with Amazon’s redesigned Fire TV Remote. The new remote features an asymmetrical shape, indented buttons so you can navigate by feel in the dark, a metal Home key, and a customizable Star button that launches your favorite app or setting instantly.</p><p><strong>Best for: </strong>Everyday 4K TV owners who want snappy performance, Amazon's best new ergonomic remote, and direct USB power capability for clean, wall-mounted setups.</p><div class="product"><a data-dimension112="5d520314-bd9c-11f1-82a1-4550a5ae0885" data-action="Deal Block" data-label="Fire TV Stick 4K" data-dimension48="Fire TV Stick 4K" data-dimension25="$59" href="https://www.amazon.com/All-New-Fire-TV-Stick-4K/dp/B0G4XRP464/ref" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2086px;"><p class="vanilla-image-block" style="padding-top:66.35%;"><img id="EuQwKyBBuSQpU5QJmz5pXg" name="Amazon Fire TV Stick 4K deal" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/EuQwKyBBuSQpU5QJmz5pXg-1920-80.png" mos="" align="middle" fullscreen="" width="2086" height="1384" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/All-New-Fire-TV-Stick-4K/dp/B0G4XRP464/ref" target="_blank" rel="nofollow" data-dimension112="5d520314-bd9c-11f1-82a1-4550a5ae0885" data-action="Deal Block" data-label="Fire TV Stick 4K" data-dimension48="Fire TV Stick 4K" data-dimension25="$59">Fire TV Stick 4K: $59</a></strong><br />Amazon’s new 4K entry pairs ultra-Vega OS software with direct TV USB power and a redesigned tactile remote you can actually navigate in the dark. <a class="view-deal button" href="https://www.amazon.com/All-New-Fire-TV-Stick-4K/dp/B0G4XRP464/ref" target="_blank" rel="nofollow" data-dimension112="5d520314-bd9c-11f1-82a1-4550a5ae0885" data-action="Deal Block" data-label="Fire TV Stick 4K" data-dimension48="Fire TV Stick 4K" data-dimension25="$59">View Deal</a></p></div><h2 id="3-amazon-fire-tv-stick-4k-plus">3. Amazon Fire TV Stick 4K Plus</h2><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="o9DSGaFxmaiwSk8PEBbCLc" name="fire-TV-remote.jpg" alt="Fire TV Cube" src="https://cdn.mos.cms.futurecdn.net/o9DSGaFxmaiwSk8PEBbCLc-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><strong>What is it?</strong> The mid-tier streaming stick equipped for cinematic picture and spatial audio, though your window to buy one is closing fast.</p><p><strong>What it does: </strong>The 4K Plus takes standard 4K streaming a step further by unlocking premium audio-visual formats. Alongside standard 4K HDR10, it adds support for Dolby Vision, which automatically optimizes brightness and color scene-by-scene, and native Dolby Atmos spatial audio.</p><p>Amazon is officially phasing out the 4K Plus (and <a href="https://www.tomsguide.com/tvs/amazon-fire-tv-stick-4k-select-streaming-stick-review">4K Select</a>) to simplify its lineup down to a single core 4K Stick, the 4K Max, and the Cube. You can still purchase the 4K Plus right now while existing stock lasts. and Amazon has confirmed it will receive software updates through 2030. </p><p><strong>Best for: </strong>Viewers with a modern 4K TV and Dolby Atmos sound setup who want to snag a feature-packed mid-tier stick before remaining stock officially runs out.</p><div class="product"><a data-dimension112="5d5203aa-bd9c-11f1-95f9-3172ffca746c" data-action="Deal Block" data-label="Fire TV Stick 4K Plus" data-dimension48="Fire TV Stick 4K Plus" data-dimension25="$69" href="https://www.amazon.com/Amazon-newest-AI-powered-Search-million/dp/B0F7Z4QZTT/ref" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:896px;"><p class="vanilla-image-block" style="padding-top:133.93%;"><img id="pJG8WoLYWeaKmX2cXeUEbU" name="Amazon Fire TV Stick 4k Plus" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/pJG8WoLYWeaKmX2cXeUEbU-1920-80.jpg" mos="" align="middle" fullscreen="" width="896" height="1200" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/Amazon-newest-AI-powered-Search-million/dp/B0F7Z4QZTT/ref" target="_blank" rel="nofollow" data-dimension112="5d5203aa-bd9c-11f1-95f9-3172ffca746c" data-action="Deal Block" data-label="Fire TV Stick 4K Plus" data-dimension48="Fire TV Stick 4K Plus" data-dimension25="$69">Fire TV Stick 4K Plus: $69</a></strong><br />Cinematic 4K picture and Dolby Atmos spatial audio on a budget, but your window is closing fast. <a class="view-deal button" href="https://www.amazon.com/Amazon-newest-AI-powered-Search-million/dp/B0F7Z4QZTT/ref" target="_blank" rel="nofollow" data-dimension112="5d5203aa-bd9c-11f1-95f9-3172ffca746c" data-action="Deal Block" data-label="Fire TV Stick 4K Plus" data-dimension48="Fire TV Stick 4K Plus" data-dimension25="$69">View Deal</a></p></div><h2 id="amazon-fire-tv-stick-4k-max">Amazon Fire TV Stick 4K Max</h2><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="Bqve9zMXpkbhMu5Ex5nCpb" name="Amazon Fire TV stick 4K max" alt="Amazon Fire TV stick 4K max" src="https://cdn.mos.cms.futurecdn.net/Bqve9zMXpkbhMu5Ex5nCpb-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><strong>What is it?</strong> <a href="https://www.tomsguide.com/reviews/amazon-fire-tv-stick-4k-max-2nd-gen">The top-spec streaming stick</a> built for heavy app users, cloud gamers, and smart homes.</p><p><strong>What it does:</strong> As the most powerful stick in the lineup, the 4K Max doubles internal storage to 16GB (leaving around 11GB of usable space for your apps and games after system files). </p><p>It features Wi-Fi 6E support to reduce buffer times on crowded home networks, supports Xbox Game Pass cloud gaming natively, and includes the Fire TV Ambient Experience — which transforms your idle TV screen into a smart display with curated art and widgets.</p><p><strong>Best for: </strong>Power users who constantly run out of app storage, cloud gamers, and busy households where multiple devices compete for Wi-Fi bandwidth simultaneously.</p><div class="product"><a data-dimension112="5d52044a-bd9c-11f1-94ff-a3385277805c" data-action="Deal Block" data-label="Fire TV Stick 4K Max" data-dimension48="Fire TV Stick 4K Max" data-dimension25="$89" href="https://www.amazon.com/all-new-amazon-fire-tv-stick-4k-max/dp/B0BP9SNVH9/ref" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:679px;"><p class="vanilla-image-block" style="padding-top:80.27%;"><img id="6hNpFHy4WGTcVoHtXFtF5k" name="Amazon Fire TV Stick 4K Max" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6hNpFHy4WGTcVoHtXFtF5k-1920-80.jpg" mos="" align="middle" fullscreen="" width="679" height="545" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/all-new-amazon-fire-tv-stick-4k-max/dp/B0BP9SNVH9/ref" target="_blank" rel="nofollow" data-dimension112="5d52044a-bd9c-11f1-94ff-a3385277805c" data-action="Deal Block" data-label="Fire TV Stick 4K Max" data-dimension48="Fire TV Stick 4K Max" data-dimension25="$89">Fire TV Stick 4K Max: $89</a></strong><br />No more buffering wheels or full-storage warnings. Packed with double the internal space for apps, ultra-fast Wi-Fi 6E, and cloud gaming support, this high-spec stick is built to handle heavy use on crowded home networks.<a class="view-deal button" href="https://www.amazon.com/all-new-amazon-fire-tv-stick-4k-max/dp/B0BP9SNVH9/ref" target="_blank" rel="nofollow" data-dimension112="5d52044a-bd9c-11f1-94ff-a3385277805c" data-action="Deal Block" data-label="Fire TV Stick 4K Max" data-dimension48="Fire TV Stick 4K Max" data-dimension25="$89">View Deal</a></p></div><h2 id="5-amazon-fire-tv-cube">5. Amazon Fire TV Cube </h2><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="shxNt7SKGjJVkh6oeUjnUC" name="TG_Fire-TV-Cube-2022_7.jpg" alt="A close-up of the Fire TV Cube (2022) with its blue Alexa bar glowing" src="https://cdn.mos.cms.futurecdn.net/shxNt7SKGjJVkh6oeUjnUC-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: Henry T. Casey / Tom's Guide)</span></figcaption></figure><p><strong>What is it?</strong> <a href="https://www.tomsguide.com/reviews/amazon-fire-tv-cube-2022">Amazon’s flagship hybrid device</a> — combining a top-spec 4K streaming box with a hands-free smart speaker.</p><p><strong>What it does: </strong>Unlike the sticks, the Fire TV Cube sits on your media console. It matches the top specs of the 4K Max (4K, Dolby Vision, Atmos, 16GB storage, and Wi-Fi 6E) but adds a built-in speaker and far-field microphones. </p><p>This enables<strong> </strong>hands-free Alexa voice control, meaning you can switch inputs, play movies, or adjust smart lights across the room without ever touching a remote. It also features an HDMI pass-through port to route cable boxes or consoles through the Fire TV interface, plus a dedicated Ethernet port for wired internet connections.</p><p><strong>Best for: </strong>Home theater enthusiasts wanting maximum processing power, rock-solid physical Ethernet stability, cable box integration, and complete hands-free voice control.</p><div class="product"><a data-dimension112="5d5204e0-bd9c-11f1-96e7-43f7752a3161" data-action="Deal Block" data-label="Fire TV Cube" data-dimension48="Fire TV Cube" data-dimension25="$199" href="https://www.amazon.com/All-new-fire-tv-cube-4k-streaming-device/dp/B09BZZ3MM7/ref" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:679px;"><p class="vanilla-image-block" style="padding-top:67.16%;"><img id="45KgzvVuGn5x3nMLgHFj7V" name="Amazon Fire TV Cube" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/45KgzvVuGn5x3nMLgHFj7V-1920-80.jpg" mos="" align="middle" fullscreen="" width="679" height="456" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/All-new-fire-tv-cube-4k-streaming-device/dp/B09BZZ3MM7/ref" target="_blank" rel="nofollow" data-dimension112="5d5204e0-bd9c-11f1-96e7-43f7752a3161" data-action="Deal Block" data-label="Fire TV Cube" data-dimension48="Fire TV Cube" data-dimension25="$199">Fire TV Cube: $199</a></strong><br />Combining Amazon’s fastest 4K streamer with a hands-free smart speaker, it lets you switch inputs, adjust volume across the room without a remote, and plug directly into Ethernet.<a class="view-deal button" href="https://www.amazon.com/All-new-fire-tv-cube-4k-streaming-device/dp/B09BZZ3MM7/ref" target="_blank" rel="nofollow" data-dimension112="5d5204e0-bd9c-11f1-96e7-43f7752a3161" data-action="Deal Block" data-label="Fire TV Cube" data-dimension48="Fire TV Cube" data-dimension25="$199">View Deal</a></p></div><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide </span></h3><ul><li><a href="http://tomsguide.com/entertainment/streaming-devices/how-to-set-up-and-use-your-amazon-fire-tv-stick">How to set up and use your Amazon Fire TV stick</a></li><li><a href="https://www.tomsguide.com/entertainment/streaming-devices/the-one-fire-tv-setting-you-need-to-change-right-now-to-instantly-boost-performance">The one Fire TV setting you need to change right now to instantly boost performance</a></li><li><a href="https://www.tomsguide.com/entertainment/streaming-devices/your-fire-tv-stick-has-an-expiration-date-heres-when-support-ends">Your Fire TV Stick has an expiration date — here's when support ends</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/streaming-devices/amazon-fire-tv-devices-explained-which-streaming-stick-or-cube-is-right-for-you</link>
                                                                            <description>
                            <![CDATA[ Not all 4K Fire TV devices are created equal. Before you add one to your cart, discover how Amazon’s streaming sticks and flagship Cube actually compare. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">4F7MgjeQXLVEbZEL8Ha6MP</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/tfeZVnzwxaZJwz8YAEvZD9-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 03 Oct 2026 12:00:00 +0000</pubDate>                                                                                                                                <updated>Wed, 11 Nov 2026 16:14:01 +0000</updated>
                                                                                                                                            <category><![CDATA[Streaming Devices]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                    <category><![CDATA[Streaming]]></category>
                                                                                                <author><![CDATA[ kaycee.hill@futurenet.com (Kaycee Hill) ]]></author>                    <dc:creator><![CDATA[ Kaycee Hill ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/xHn6RmpEqg87cvtLwrBu9G-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/tfeZVnzwxaZJwz8YAEvZD9-1920-80.jpg">
                                                            <media:credit><![CDATA[Tom&amp;#39;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Overview of Amazon&#039;s Fire TV device lineup showing streaming sticks, remotes, and boxes next to their retail packaging]]></media:description>                                                            <media:text><![CDATA[Overview of Amazon&#039;s Fire TV device lineup showing streaming sticks, remotes, and boxes next to their retail packaging]]></media:text>
                                <media:title type="plain"><![CDATA[Overview of Amazon&#039;s Fire TV device lineup showing streaming sticks, remotes, and boxes next to their retail packaging]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/tfeZVnzwxaZJwz8YAEvZD9-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Amazon’s Fire TV lineup can be confusing to navigate. With multiple streaming sticks hiding behind your TV screen, plus a standalone flagship box, telling the models apart isn't always easy.</p><p>Whether you need a quick fix for a guest bedroom or a high-performance streaming hub for a 4K home theater setup, here is a complete breakdown of every Amazon Fire TV device: what it is, what it does and who it's built for.</p><h2 id="1-amazon-fire-tv-stick-hd">1. Amazon Fire TV Stick HD</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1510px;"><p class="vanilla-image-block" style="padding-top:59.60%;"><img id="KGXkstixTPbXp4FrRjXmXD" name="Amazon Fire TV Stick HD" alt="Amazon Fire TV Stick HD" src="https://cdn.mos.cms.futurecdn.net/KGXkstixTPbXp4FrRjXmXD-1920-80.jpg" mos="" align="middle" fullscreen="" width="1510" height="900" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Amazon )</span></figcaption></figure><p><strong>What is it?</strong> <a href="https://www.tomsguide.com/tvs/amazon-fire-tv-stick-hd-review">Amazon’s most affordable plug-in streaming stick</a>, built for non-4K displays.</p><p><strong>What it does: </strong>The Fire TV Stick HD plugs directly into an HDMI port on your television and streams content in standard 1080p Full HD. It gives you instant access to major streaming apps, including Prime Video, Netflix, and Disney+, along with cloud gaming via Amazon Luna and Xbox Game Pass. </p><p>It ships with a basic Alexa Voice Remote that lets you control your TV volume and search for shows by holding down the microphone button.</p><p><strong>Best for: </strong>Small bedrooms, kitchens, guest rooms, or replacing outdated app interfaces on older 1080p HDTVs on a tight budget.</p><div class="product"><a data-dimension112="5d52026a-bd9c-11f1-b6ec-d3580bd6a1b6" data-action="Deal Block" data-label="Fire TV Stick HD" data-dimension48="Fire TV Stick HD" data-dimension25="$39" href="https://www.amazon.com/Amazon-Fire-TV-Stick-HD-Thin-and-Portable/dp/B0DJGDC3BD/ref" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1108px;"><p class="vanilla-image-block" style="padding-top:93.23%;"><img id="KuGTVfs9qg2Ak2hUofVVAQ" name="Fire TV Stick HD" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/KuGTVfs9qg2Ak2hUofVVAQ-1920-80.jpg" mos="" align="middle" fullscreen="" width="1108" height="1033" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/Amazon-Fire-TV-Stick-HD-Thin-and-Portable/dp/B0DJGDC3BD/ref" target="_blank" rel="nofollow" data-dimension112="5d52026a-bd9c-11f1-b6ec-d3580bd6a1b6" data-action="Deal Block" data-label="Fire TV Stick HD" data-dimension48="Fire TV Stick HD" data-dimension25="$39">Fire TV Stick HD: $39</a></strong><br />The ultimate budget fix for spare screens and older HDTVs. It plugs straight into your TV for crisp 1080p streaming, full Alexa voice control, and instant access to every major app. <a class="view-deal button" href="https://www.amazon.com/Amazon-Fire-TV-Stick-HD-Thin-and-Portable/dp/B0DJGDC3BD/ref" target="_blank" rel="nofollow" data-dimension112="5d52026a-bd9c-11f1-b6ec-d3580bd6a1b6" data-action="Deal Block" data-label="Fire TV Stick HD" data-dimension48="Fire TV Stick HD" data-dimension25="$39">View Deal</a></p></div><h2 id="2-amazon-fire-tv-stick-4k-2026">2. Amazon Fire TV Stick 4K (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:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="sZFK3NAQvo4Cgn4fcgAu7P" name="fire-tv-stick-4k_ftv-remote_hero_2000x1125" alt="Amazon Fire TV Stick 4K" src="https://cdn.mos.cms.futurecdn.net/sZFK3NAQvo4Cgn4fcgAu7P-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: Amazon)</span></figcaption></figure><p><strong>What is it?</strong> <a href="https://www.tomsguide.com/entertainment/streaming-devices/amazon-announces-a-new-usd59-fire-tv-stick-and-finally-a-remote-you-can-find-with-alexa">The updated mid-range streamer</a> featuring Amazon’s new Vega OS and a redesigned tactile remote.</p><p><strong>What it does: </strong>This new 4K stick delivers crisp 2160p Ultra HD streaming and introduces Amazon’s light, fast Vega OS interface (replacing the older Android-based software). Powered by a faster quad-core processor, it runs 20% to 40% speedier than previous budget streamers and can even draw power directly from your TV’s USB port.</p><p>Crucially, this model ships with Amazon’s redesigned Fire TV Remote. The new remote features an asymmetrical shape, indented buttons so you can navigate by feel in the dark, a metal Home key, and a customizable Star button that launches your favorite app or setting instantly.</p><p><strong>Best for: </strong>Everyday 4K TV owners who want snappy performance, Amazon's best new ergonomic remote, and direct USB power capability for clean, wall-mounted setups.</p><div class="product"><a data-dimension112="5d520314-bd9c-11f1-82a1-4550a5ae0885" data-action="Deal Block" data-label="Fire TV Stick 4K" data-dimension48="Fire TV Stick 4K" data-dimension25="$59" href="https://www.amazon.com/All-New-Fire-TV-Stick-4K/dp/B0G4XRP464/ref" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2086px;"><p class="vanilla-image-block" style="padding-top:66.35%;"><img id="EuQwKyBBuSQpU5QJmz5pXg" name="Amazon Fire TV Stick 4K deal" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/EuQwKyBBuSQpU5QJmz5pXg-1920-80.png" mos="" align="middle" fullscreen="" width="2086" height="1384" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/All-New-Fire-TV-Stick-4K/dp/B0G4XRP464/ref" target="_blank" rel="nofollow" data-dimension112="5d520314-bd9c-11f1-82a1-4550a5ae0885" data-action="Deal Block" data-label="Fire TV Stick 4K" data-dimension48="Fire TV Stick 4K" data-dimension25="$59">Fire TV Stick 4K: $59</a></strong><br />Amazon’s new 4K entry pairs ultra-Vega OS software with direct TV USB power and a redesigned tactile remote you can actually navigate in the dark. <a class="view-deal button" href="https://www.amazon.com/All-New-Fire-TV-Stick-4K/dp/B0G4XRP464/ref" target="_blank" rel="nofollow" data-dimension112="5d520314-bd9c-11f1-82a1-4550a5ae0885" data-action="Deal Block" data-label="Fire TV Stick 4K" data-dimension48="Fire TV Stick 4K" data-dimension25="$59">View Deal</a></p></div><h2 id="3-amazon-fire-tv-stick-4k-plus">3. Amazon Fire TV Stick 4K Plus</h2><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="o9DSGaFxmaiwSk8PEBbCLc" name="fire-TV-remote.jpg" alt="Fire TV Cube" src="https://cdn.mos.cms.futurecdn.net/o9DSGaFxmaiwSk8PEBbCLc-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><strong>What is it?</strong> The mid-tier streaming stick equipped for cinematic picture and spatial audio, though your window to buy one is closing fast.</p><p><strong>What it does: </strong>The 4K Plus takes standard 4K streaming a step further by unlocking premium audio-visual formats. Alongside standard 4K HDR10, it adds support for Dolby Vision, which automatically optimizes brightness and color scene-by-scene, and native Dolby Atmos spatial audio.</p><p>Amazon is officially phasing out the 4K Plus (and <a href="https://www.tomsguide.com/tvs/amazon-fire-tv-stick-4k-select-streaming-stick-review">4K Select</a>) to simplify its lineup down to a single core 4K Stick, the 4K Max, and the Cube. You can still purchase the 4K Plus right now while existing stock lasts. and Amazon has confirmed it will receive software updates through 2030. </p><p><strong>Best for: </strong>Viewers with a modern 4K TV and Dolby Atmos sound setup who want to snag a feature-packed mid-tier stick before remaining stock officially runs out.</p><div class="product"><a data-dimension112="5d5203aa-bd9c-11f1-95f9-3172ffca746c" data-action="Deal Block" data-label="Fire TV Stick 4K Plus" data-dimension48="Fire TV Stick 4K Plus" data-dimension25="$69" href="https://www.amazon.com/Amazon-newest-AI-powered-Search-million/dp/B0F7Z4QZTT/ref" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:896px;"><p class="vanilla-image-block" style="padding-top:133.93%;"><img id="pJG8WoLYWeaKmX2cXeUEbU" name="Amazon Fire TV Stick 4k Plus" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/pJG8WoLYWeaKmX2cXeUEbU-1920-80.jpg" mos="" align="middle" fullscreen="" width="896" height="1200" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/Amazon-newest-AI-powered-Search-million/dp/B0F7Z4QZTT/ref" target="_blank" rel="nofollow" data-dimension112="5d5203aa-bd9c-11f1-95f9-3172ffca746c" data-action="Deal Block" data-label="Fire TV Stick 4K Plus" data-dimension48="Fire TV Stick 4K Plus" data-dimension25="$69">Fire TV Stick 4K Plus: $69</a></strong><br />Cinematic 4K picture and Dolby Atmos spatial audio on a budget, but your window is closing fast. <a class="view-deal button" href="https://www.amazon.com/Amazon-newest-AI-powered-Search-million/dp/B0F7Z4QZTT/ref" target="_blank" rel="nofollow" data-dimension112="5d5203aa-bd9c-11f1-95f9-3172ffca746c" data-action="Deal Block" data-label="Fire TV Stick 4K Plus" data-dimension48="Fire TV Stick 4K Plus" data-dimension25="$69">View Deal</a></p></div><h2 id="amazon-fire-tv-stick-4k-max">Amazon Fire TV Stick 4K Max</h2><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="Bqve9zMXpkbhMu5Ex5nCpb" name="Amazon Fire TV stick 4K max" alt="Amazon Fire TV stick 4K max" src="https://cdn.mos.cms.futurecdn.net/Bqve9zMXpkbhMu5Ex5nCpb-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><strong>What is it?</strong> <a href="https://www.tomsguide.com/reviews/amazon-fire-tv-stick-4k-max-2nd-gen">The top-spec streaming stick</a> built for heavy app users, cloud gamers, and smart homes.</p><p><strong>What it does:</strong> As the most powerful stick in the lineup, the 4K Max doubles internal storage to 16GB (leaving around 11GB of usable space for your apps and games after system files). </p><p>It features Wi-Fi 6E support to reduce buffer times on crowded home networks, supports Xbox Game Pass cloud gaming natively, and includes the Fire TV Ambient Experience — which transforms your idle TV screen into a smart display with curated art and widgets.</p><p><strong>Best for: </strong>Power users who constantly run out of app storage, cloud gamers, and busy households where multiple devices compete for Wi-Fi bandwidth simultaneously.</p><div class="product"><a data-dimension112="5d52044a-bd9c-11f1-94ff-a3385277805c" data-action="Deal Block" data-label="Fire TV Stick 4K Max" data-dimension48="Fire TV Stick 4K Max" data-dimension25="$89" href="https://www.amazon.com/all-new-amazon-fire-tv-stick-4k-max/dp/B0BP9SNVH9/ref" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:679px;"><p class="vanilla-image-block" style="padding-top:80.27%;"><img id="6hNpFHy4WGTcVoHtXFtF5k" name="Amazon Fire TV Stick 4K Max" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6hNpFHy4WGTcVoHtXFtF5k-1920-80.jpg" mos="" align="middle" fullscreen="" width="679" height="545" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/all-new-amazon-fire-tv-stick-4k-max/dp/B0BP9SNVH9/ref" target="_blank" rel="nofollow" data-dimension112="5d52044a-bd9c-11f1-94ff-a3385277805c" data-action="Deal Block" data-label="Fire TV Stick 4K Max" data-dimension48="Fire TV Stick 4K Max" data-dimension25="$89">Fire TV Stick 4K Max: $89</a></strong><br />No more buffering wheels or full-storage warnings. Packed with double the internal space for apps, ultra-fast Wi-Fi 6E, and cloud gaming support, this high-spec stick is built to handle heavy use on crowded home networks.<a class="view-deal button" href="https://www.amazon.com/all-new-amazon-fire-tv-stick-4k-max/dp/B0BP9SNVH9/ref" target="_blank" rel="nofollow" data-dimension112="5d52044a-bd9c-11f1-94ff-a3385277805c" data-action="Deal Block" data-label="Fire TV Stick 4K Max" data-dimension48="Fire TV Stick 4K Max" data-dimension25="$89">View Deal</a></p></div><h2 id="5-amazon-fire-tv-cube">5. Amazon Fire TV Cube </h2><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="shxNt7SKGjJVkh6oeUjnUC" name="TG_Fire-TV-Cube-2022_7.jpg" alt="A close-up of the Fire TV Cube (2022) with its blue Alexa bar glowing" src="https://cdn.mos.cms.futurecdn.net/shxNt7SKGjJVkh6oeUjnUC-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: Henry T. Casey / Tom's Guide)</span></figcaption></figure><p><strong>What is it?</strong> <a href="https://www.tomsguide.com/reviews/amazon-fire-tv-cube-2022">Amazon’s flagship hybrid device</a> — combining a top-spec 4K streaming box with a hands-free smart speaker.</p><p><strong>What it does: </strong>Unlike the sticks, the Fire TV Cube sits on your media console. It matches the top specs of the 4K Max (4K, Dolby Vision, Atmos, 16GB storage, and Wi-Fi 6E) but adds a built-in speaker and far-field microphones. </p><p>This enables<strong> </strong>hands-free Alexa voice control, meaning you can switch inputs, play movies, or adjust smart lights across the room without ever touching a remote. It also features an HDMI pass-through port to route cable boxes or consoles through the Fire TV interface, plus a dedicated Ethernet port for wired internet connections.</p><p><strong>Best for: </strong>Home theater enthusiasts wanting maximum processing power, rock-solid physical Ethernet stability, cable box integration, and complete hands-free voice control.</p><div class="product"><a data-dimension112="5d5204e0-bd9c-11f1-96e7-43f7752a3161" data-action="Deal Block" data-label="Fire TV Cube" data-dimension48="Fire TV Cube" data-dimension25="$199" href="https://www.amazon.com/All-new-fire-tv-cube-4k-streaming-device/dp/B09BZZ3MM7/ref" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:679px;"><p class="vanilla-image-block" style="padding-top:67.16%;"><img id="45KgzvVuGn5x3nMLgHFj7V" name="Amazon Fire TV Cube" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/45KgzvVuGn5x3nMLgHFj7V-1920-80.jpg" mos="" align="middle" fullscreen="" width="679" height="456" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/All-new-fire-tv-cube-4k-streaming-device/dp/B09BZZ3MM7/ref" target="_blank" rel="nofollow" data-dimension112="5d5204e0-bd9c-11f1-96e7-43f7752a3161" data-action="Deal Block" data-label="Fire TV Cube" data-dimension48="Fire TV Cube" data-dimension25="$199">Fire TV Cube: $199</a></strong><br />Combining Amazon’s fastest 4K streamer with a hands-free smart speaker, it lets you switch inputs, adjust volume across the room without a remote, and plug directly into Ethernet.<a class="view-deal button" href="https://www.amazon.com/All-new-fire-tv-cube-4k-streaming-device/dp/B09BZZ3MM7/ref" target="_blank" rel="nofollow" data-dimension112="5d5204e0-bd9c-11f1-96e7-43f7752a3161" data-action="Deal Block" data-label="Fire TV Cube" data-dimension48="Fire TV Cube" data-dimension25="$199">View Deal</a></p></div><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide </span></h3><ul><li><a href="http://tomsguide.com/entertainment/streaming-devices/how-to-set-up-and-use-your-amazon-fire-tv-stick">How to set up and use your Amazon Fire TV stick</a></li><li><a href="https://www.tomsguide.com/entertainment/streaming-devices/the-one-fire-tv-setting-you-need-to-change-right-now-to-instantly-boost-performance">The one Fire TV setting you need to change right now to instantly boost performance</a></li><li><a href="https://www.tomsguide.com/entertainment/streaming-devices/your-fire-tv-stick-has-an-expiration-date-heres-when-support-ends">Your Fire TV Stick has an expiration date — here's when support ends</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 3 best new to Prime Video shows you should binge-watch this weekend —including a murderous Ryan Murphy mystery (Oct. 2-4) ]]></title>
                                                                                                <dc:content><![CDATA[ <p>It's finally October, which means it's totally acceptable for your viewing habits to go full spooky season. Whether you're craving a genuinely creepy watch or a campy scare with a side of laughs, there are some <strong>new to Prime Video shows</strong> to binge this weekend.</p><p>Leading the charge is "Chucky," with three seasons on Prime Video boasting a near-perfect 95% on Rotten Tomatoes. Don Mancini's continuation of the <strong>"Child's Play"</strong> saga turns the iconic killer doll loose on a small New Jersey town—and it's every bit as gory, funny, and sharp as the movies that spawned it. For more over-the-top thrills, try <strong>"Scream Queens,"</strong> the deliriously campy horror-comedy setting a serial killer in a Red Devil costume loose on a college sorority packed with famous faces.</p><p>If you'd rather step away from the bloodshed, the Victorian mystery <strong>"Miss Scarlet"</strong> makes the perfect alternative, starring Kate Phillips as a sharp, stubborn detective taking on 1880s London. Without further ado, here are three top picks worth streaming on Prime Video. Get your pumpkins ready, y'all — the countdown to Halloween has officially begun.</p><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="gdR2W4" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><h2 id="39-miss-scarlet-39-season-1-2021">'Miss Scarlet' Season 1 (2021)</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/n_-55vkr1Y8" allowfullscreen=""></iframe></div></div><p><strong>What it's about: </strong>If you need a break from all the Halloween bloodshed, this Victorian mystery is the perfect antidote. Originally titled "Miss Scarlet and the Duke," this PBS Masterpiece series follows Eliza Scarlet (Kate Phillips), who, after her father's death leaves her broke and unmarried in 1880s London, takes over his struggling detective agency. To keep it running, she partners with her late father's friend, Scotland Yard's Detective Inspector William "The Duke" Wellington (Stuart Martin), and the two tackle crimes together.</p><p><strong>Why you should watch it:</strong> Created by Rachael New, "Miss Scarlet" holds a strong 88% on Rotten Tomatoes for its first season and has built a devoted following for good reason. Kate Phillips ("Peaky Blinders") is a very likable lead, and the will-they-won't-they chemistry between her and Stuart Martin gives the mysteries a little something extra. If you love Victorian-era shenanigans, you'll love this. </p><p><em><strong>Stream </strong></em><a href="https://www.amazon.com/gp/video/detail/B08R2L27SJ" target="_blank" rel="nofollow"><em><strong>"Miss Scarlet" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="39-scream-queens-39-seasons-1-and-2-2015">'Scream Queens' seasons 1 and 2 (2015)</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/i6_LwI-hUms" allowfullscreen=""></iframe></div></div><p><strong>What it's about:</strong> This two-season horror-comedy anthology drops you first into the Kappa Kappa Tau sorority at Wallace University, where a serial killer in a Red Devil costume starts picking off students. Vicious queen bee Chanel Oberlin (Emma Roberts) and no-nonsense Dean Munsch (Jamie Lee Curtis) at the center of the chaos, flanked by "the Chanels," Oberlin's dim-witted lackeys, and her man of the hour. Season 2 moves the mayhem to a hospital stalked by a new killer, starring John Stamos and Taylor Lautner for some zany and irreverent fun perfect for Halloween. </p><p><strong>Why you should watch it: </strong>From "American Horror Story" creators Ryan Murphy, Brad Falchuk and Ian Brennan, "Scream Queens" divided critics, with its first season sitting at 68% on Rotten Tomatoes, but it won a cult following, with a warmer 79% audience score. Its gleefully campy, bitchy sense of humor makes it perfect spooky-season junk food, and it's in dire need of another season. </p><p><em><strong>Stream </strong></em><a href="https://www.primevideo.com/detail/0OWK01PGY2XGCC2SWYABNOXXSF" target="_blank" rel="nofollow"><em><strong>"Scream Queens" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="39-chucky-39-seasons-1-3-2021">'Chucky' seasons 1-3 (2021)</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/BDSa0JhIUMI" allowfullscreen=""></iframe></div></div><p><strong>What it's about:</strong> Plenty of horror icons have made the jump from film to television, but few have done it as successfully as this one. The three-season series picks up the "Child's Play" saga when a vintage Good Guy doll is sold at a New Jersey yard sale and ends up in the hands of 14-year-old outcast Jake Wheeler. Before long, gruesome murders start tearing open the secrets and hypocrisies of his sleepy hometown, as Chucky sets his sights on Jake and his friends.</p><p><strong>Why you should watch it: </strong>Created by franchise mastermind Don Mancini, "Chucky" is proof the killer doll works just as well on the small screen. Brad Dourif returns to voice the foul-mouthed Chucky, with Jennifer Tilly doing a fantastic job in her role as his partner-in-crime Tiffany. It's bloody, funny and surprisingly heartfelt, which feels a little confusing, but hey, sure!</p><p><em><strong>Stream </strong></em><a href="https://www.amazon.com/gp/video/detail/B0CGW8Y1KP" target="_blank" rel="nofollow"><em><strong>"Chucky" on Prime Video</strong></em></a><em><strong> on October 4</strong></em></p><div data-model-name="Amazon Prime Video,Hulu,Netflix,Paramount Plus,Peacock TV,Disney+,Apple TV" data-widget-type="multimodelreview" data-widget-title="Today's best streaming service deals"></div> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/prime-video/3-best-new-to-prime-video-shows-you-should-binge-watch-this-weekend-including-a-murderous-ryan-murphy-mystery-oct-2-4</link>
                                                                            <description>
                            <![CDATA[ Planning to binge-watch something new this weekend? Here's our weekly guide to the best new to Prime Video series you should be streaming right now. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">XSRiEFQBrZUYmBpcxuD59c</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/QnWGM5CthNb8zgXsNbAcv-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 02 Oct 2026 15:15:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Prime Video]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                    <category><![CDATA[Streaming]]></category>
                                                                                                                    <dc:creator><![CDATA[ Brittany Vincent ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/JDgb6vqXHys3nrFJpkRCub-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/QnWGM5CthNb8zgXsNbAcv-1920-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Prime Video streaming logo purple]]></media:description>                                                            <media:text><![CDATA[Prime Video streaming logo purple]]></media:text>
                                <media:title type="plain"><![CDATA[Prime Video streaming logo purple]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/QnWGM5CthNb8zgXsNbAcv-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>It's finally October, which means it's totally acceptable for your viewing habits to go full spooky season. Whether you're craving a genuinely creepy watch or a campy scare with a side of laughs, there are some <strong>new to Prime Video shows</strong> to binge this weekend.</p><p>Leading the charge is "Chucky," with three seasons on Prime Video boasting a near-perfect 95% on Rotten Tomatoes. Don Mancini's continuation of the <strong>"Child's Play"</strong> saga turns the iconic killer doll loose on a small New Jersey town—and it's every bit as gory, funny, and sharp as the movies that spawned it. For more over-the-top thrills, try <strong>"Scream Queens,"</strong> the deliriously campy horror-comedy setting a serial killer in a Red Devil costume loose on a college sorority packed with famous faces.</p><p>If you'd rather step away from the bloodshed, the Victorian mystery <strong>"Miss Scarlet"</strong> makes the perfect alternative, starring Kate Phillips as a sharp, stubborn detective taking on 1880s London. Without further ado, here are three top picks worth streaming on Prime Video. Get your pumpkins ready, y'all — the countdown to Halloween has officially begun.</p><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="gdR2W4" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><h2 id="39-miss-scarlet-39-season-1-2021">'Miss Scarlet' Season 1 (2021)</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/n_-55vkr1Y8" allowfullscreen=""></iframe></div></div><p><strong>What it's about: </strong>If you need a break from all the Halloween bloodshed, this Victorian mystery is the perfect antidote. Originally titled "Miss Scarlet and the Duke," this PBS Masterpiece series follows Eliza Scarlet (Kate Phillips), who, after her father's death leaves her broke and unmarried in 1880s London, takes over his struggling detective agency. To keep it running, she partners with her late father's friend, Scotland Yard's Detective Inspector William "The Duke" Wellington (Stuart Martin), and the two tackle crimes together.</p><p><strong>Why you should watch it:</strong> Created by Rachael New, "Miss Scarlet" holds a strong 88% on Rotten Tomatoes for its first season and has built a devoted following for good reason. Kate Phillips ("Peaky Blinders") is a very likable lead, and the will-they-won't-they chemistry between her and Stuart Martin gives the mysteries a little something extra. If you love Victorian-era shenanigans, you'll love this. </p><p><em><strong>Stream </strong></em><a href="https://www.amazon.com/gp/video/detail/B08R2L27SJ" target="_blank" rel="nofollow"><em><strong>"Miss Scarlet" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="39-scream-queens-39-seasons-1-and-2-2015">'Scream Queens' seasons 1 and 2 (2015)</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/i6_LwI-hUms" allowfullscreen=""></iframe></div></div><p><strong>What it's about:</strong> This two-season horror-comedy anthology drops you first into the Kappa Kappa Tau sorority at Wallace University, where a serial killer in a Red Devil costume starts picking off students. Vicious queen bee Chanel Oberlin (Emma Roberts) and no-nonsense Dean Munsch (Jamie Lee Curtis) at the center of the chaos, flanked by "the Chanels," Oberlin's dim-witted lackeys, and her man of the hour. Season 2 moves the mayhem to a hospital stalked by a new killer, starring John Stamos and Taylor Lautner for some zany and irreverent fun perfect for Halloween. </p><p><strong>Why you should watch it: </strong>From "American Horror Story" creators Ryan Murphy, Brad Falchuk and Ian Brennan, "Scream Queens" divided critics, with its first season sitting at 68% on Rotten Tomatoes, but it won a cult following, with a warmer 79% audience score. Its gleefully campy, bitchy sense of humor makes it perfect spooky-season junk food, and it's in dire need of another season. </p><p><em><strong>Stream </strong></em><a href="https://www.primevideo.com/detail/0OWK01PGY2XGCC2SWYABNOXXSF" target="_blank" rel="nofollow"><em><strong>"Scream Queens" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="39-chucky-39-seasons-1-3-2021">'Chucky' seasons 1-3 (2021)</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/BDSa0JhIUMI" allowfullscreen=""></iframe></div></div><p><strong>What it's about:</strong> Plenty of horror icons have made the jump from film to television, but few have done it as successfully as this one. The three-season series picks up the "Child's Play" saga when a vintage Good Guy doll is sold at a New Jersey yard sale and ends up in the hands of 14-year-old outcast Jake Wheeler. Before long, gruesome murders start tearing open the secrets and hypocrisies of his sleepy hometown, as Chucky sets his sights on Jake and his friends.</p><p><strong>Why you should watch it: </strong>Created by franchise mastermind Don Mancini, "Chucky" is proof the killer doll works just as well on the small screen. Brad Dourif returns to voice the foul-mouthed Chucky, with Jennifer Tilly doing a fantastic job in her role as his partner-in-crime Tiffany. It's bloody, funny and surprisingly heartfelt, which feels a little confusing, but hey, sure!</p><p><em><strong>Stream </strong></em><a href="https://www.amazon.com/gp/video/detail/B0CGW8Y1KP" target="_blank" rel="nofollow"><em><strong>"Chucky" on Prime Video</strong></em></a><em><strong> on October 4</strong></em></p><div data-model-name="Amazon Prime Video,Hulu,Netflix,Paramount Plus,Peacock TV,Disney+,Apple TV" data-widget-type="multimodelreview" data-widget-title="Today's best streaming service deals"></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ A new Kindle is here, but I found this previous-gen Kindle bundle that’s a lot cheaper ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Amazon just launched <a href="https://www.amazon.com/dp/B0FXJ8VZ39" target="_blank" rel="nofollow">a new basic Kindle for $149</a>. Thinner and lighter, this model features a new edge-to-edge color chassis and a more flush 6-inch display. Amazon also says it opens books 30% faster than the previous Kindle. Like I said when <a href="https://www.tomsguide.com/computing/e-readers/i-went-hands-on-with-amazons-new-kindles-and-this-one-feature-has-me-excited">I went hands-on with Amazon’s new Kindles</a>, it’s not just a simple refresh.</p><p>The new basic Kindle has a lot going for it, but you're arguably getting a better value with a bundle for the 2024 model. While the new Kindle costs $149 for the device alone, <a href="https://www.amazon.com/Kindle-Essentials-Bundle-including-release/dp/B0FH7L516X" target="_blank" rel="nofollow">Amazon is currently selling a Kindle Essentials Bundle that includes a fabric cover and the e-reader for $125</a> — a savings of 38%.</p><p>Again, the new Kindle seems like an excellent upgrade, but you might not need it. Here’s why.</p><ul><li><strong></strong><a href="https://www.amazon.com/deals" target="_blank" rel="nofollow"><strong>shop all early October Prime Day deals</strong></a><strong></strong></li></ul><div class="product"><a data-dimension112="1fbb88b6-bdc1-11f1-bae2-db7ab154272b" data-action="Deal Block" data-label="Kindle Essentials Bundle" data-dimension48="Kindle Essentials Bundle" data-dimension25="$125" href="https://www.amazon.com/Kindle-Essentials-Bundle-including-release/dp/B0FH7L516X" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:679px;"><p class="vanilla-image-block" style="padding-top:100.88%;"><img id="2CGppALUB8Av7nZAebmMbB" name="81g4GIqXoVL._AC_SX679_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/2CGppALUB8Av7nZAebmMbB-1920-80.jpg" mos="" align="middle" fullscreen="" width="679" height="685" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p>This deal slashes 38% off the Kindle Essentials Bundle featuring the 2024 basic Kindle and a protective case, either in Matcha Green or Black. While this is now a last-gen device, it's still a fantastic e-reader thanks to its 6-inch glare-free display and lightweight design. This is an excellent deal you don't want to miss!<a class="view-deal button" href="https://www.amazon.com/Kindle-Essentials-Bundle-including-release/dp/B0FH7L516X" target="_blank" rel="nofollow" data-dimension112="1fbb88b6-bdc1-11f1-bae2-db7ab154272b" data-action="Deal Block" data-label="Kindle Essentials Bundle" data-dimension48="Kindle Essentials Bundle" data-dimension25="$125">View Deal</a></p></div><h2 id="why-the-older-kindle-is-still-worthwhile">Why the older Kindle is still worthwhile</h2><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="dct72NfYcAxdaYb74cfXjC" name="Kindle 2024.jpg" alt="Kindle (2024)" src="https://cdn.mos.cms.futurecdn.net/dct72NfYcAxdaYb74cfXjC-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 <a href="https://www.tomsguide.com/tablets/e-readers/kindle-2024-review">2024 Kindle</a> is largely a refresh of the 2022 model, with the same design and core features. This 6-inch e-reader features a 25% brighter front light, sharper contrast, and a matcha green color.</p><p>This 6-inch e-reader is an ideal companion for leaving the house or going on a trip because it’s small enough to fit comfortably in most pockets. Its compact, lightweight design also makes it easy to hold for longer periods, even compared to its cousins, the 7-inch Kindle Paperwhite and Kindle Colorsoft.</p><p>The display is another highlight. Though it lacks color temperature adjustment, it’s just as sharp and clear as the display on the more expensive Kindle models. Beyond novels, it’s also great for reading manga or black-and-white comic books, as the drawings look crisp on the 300ppi display.</p><p>You also get long-lasting battery life. Amazon claims the Kindle can last up to 6 weeks, but that’s only if you keep the backlight level low, turn off wireless, and only read for 30 minutes a day. In my experience, with the backlight off, wireless on, and about an hour of reading a day, the Kindle’s battery dropped to around 70% in two weeks. Needless to say, this Kindle has strong endurance and won’t suddenly run out of battery.</p><h2 id="the-new-kindle-is-a-nice-upgrade">The new Kindle is a nice upgrade</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="B5FgfifLftnYqyTsSqFV9f" name="2026 Amazon Kindle lineup-7" alt="Amazon Kindle 2026" src="https://cdn.mos.cms.futurecdn.net/B5FgfifLftnYqyTsSqFV9f-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 new Kindle isn’t revolutionary, but it has meaningful upgrades meant to deliver a better overall reading experience. If you’re brand-new to the <a href="https://www.tomsguide.com/us/best-e-readers,review-2766.html">best Kindles</a>, this is arguably the device to start with. (Check out our 2026 <a href="https://www.tomsguide.com/computing/e-readers/amazon-just-launched-new-kindles-how-to-save-usd68-on-your-preorder">Kindles preorders</a> page for a rundown of all the new models). </p><p>This base model starts with 16GB of storage and includes lock screen ads. It comes in two colors: Ube and Graphite. Beyond new colors, the chassis has been redesigned with a more flush display, giving the e-reader a more uniform look. This also makes this Kindle appear closer to the Paperwhite and Colorsoft, both of which have flush displays.</p><p>Performance-wise, Amazon says the new Kindle is 30% faster than before. During my hands-on time with the device, I certainly felt a difference when I scrolled through the pages of a digital novel. The days of the basic Kindle feeling extremely sluggish are officially over.</p><p>The 6-inch display is largely the same as before, but because it’s now more flush, text appears clearer and sharper. The 300ppi display ensures that everything, even black-and-white images, looks crisp and clear.</p><p>If you want to upgrade to premium, <a href="https://www.amazon.com/dp/B0FZDCHT4J?th=1" target="_blank" rel="nofollow">there’s a $189 aluminum model with 32GB of storage and no ads</a>. This e-reader supports magnetic accessories, such as covers, and comes in Alpine Sky and Seaglass Green. Thanks to its aluminum build, holding this Kindle feels similar to holding a smartphone. Yes, it's pricey, but it’s pretty great.</p><div class="product"><a data-dimension112="1fbb8a00-bdc1-11f1-a780-bf59549018bd" data-action="Deal Block" data-label="Kindle (2026)" data-dimension48="Kindle (2026)" data-dimension25="$149" href="https://www.amazon.com/dp/B0FXJ8VZ39" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:894px;"><p class="vanilla-image-block" style="padding-top:119.13%;"><img id="w6Y7uth4YAkauXsFGzdurW" name="Kindle 2026 deal block" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/w6Y7uth4YAkauXsFGzdurW-1920-80.jpg" mos="" align="middle" fullscreen="" width="894" height="1065" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/dp/B0FXJ8VZ39" target="_blank" rel="nofollow" data-dimension112="1fbb8a00-bdc1-11f1-a780-bf59549018bd" data-action="Deal Block" data-label="Kindle (2026)" data-dimension48="Kindle (2026)" data-dimension25="$149">Kindle (2026): $149</a></strong><br />Amazon just launched the new basic Kindle, featuring a more portable design and faster page turns. The standard version is $149 and includes ads, but you can remove them by paying $20 more. This base model comes in two colors: Ube and Graphite.<a class="view-deal button" href="https://www.amazon.com/dp/B0FXJ8VZ39" target="_blank" rel="nofollow" data-dimension112="1fbb8a00-bdc1-11f1-a780-bf59549018bd" data-action="Deal Block" data-label="Kindle (2026)" data-dimension48="Kindle (2026)" data-dimension25="$149">View Deal</a></p></div><h2 id="bottom-line-4">Bottom line</h2><p>Based on what I’ve seen, the new Kindle seems like a worthwhile upgrade. However, if you want your cash to go a bit further for a device that still delivers the same excellent Kindle experience, the Kindle Essentials Bundle for $125 is hard to top!</p><p>Given how the October Prime Day event starts next week and runs from October 6 through October 7, it’s possible we’ll see even deeper discounts. But if you don’t want to wait, I say take advantage of this Kindle bundle deal now.</p><div class="vizualizer-embed"><div class="tg-df-widget-host" data-widget-config="?search=tablets&amp;brands=Amazon&amp;min_discount_ratio=0.95&amp;widget_title=Top+Deals+Handpicked+by+Our+Editors&amp;widget_subtitle=Discover+the+best+discounts+currently+available%2C+curated+daily+by+the+Tom%27s+Guide+Savings+Squad.&amp;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="8">8 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 finalHref = cardLink.href || cardLink.getAttribute('href') || '';                let actualRevenueId = cardLink.getAttribute('data-revenue-id');                const revMatch = finalHref.match(/(?:subId1|xcust|clickref|ascsubtag)=[^&]*?(\d{18,20})(?:&|$)/i);                if (revMatch && revMatch[1]) {                  actualRevenueId = revMatch[1];                }                const rewrittenLink = finalHref;                const revenueId = actualRevenueId;                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.getFilteredDeals().slice(0, this.displayLimit), 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.getFilteredDeals().slice(0, this.displayLimit), 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.getFilteredDeals().slice(0, this.displayLimit), 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: this.decodeHTML(item.name || item.title || item.model_name || item.product_name || 'Unknown Product'),            brand: this.decodeHTML(item.brand || ''),            productName: this.decodeHTML(item.model_name || item.product_name || item.name || ''),            merchant: this.decodeHTML(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 finalHref = btn.href || btn.getAttribute('href') || '';                let actualRevenueId = btn.getAttribute('data-revenue-id');                const revMatch = finalHref.match(/(?:subId1|xcust|clickref|ascsubtag)=[^&]*?(\d{18,20})(?:&|$)/i);                if (revMatch && revMatch[1]) {                  actualRevenueId = revMatch[1];                }                const rewrittenLink = finalHref;                const revenueId = actualRevenueId;                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)}" ${dataAttr} 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/e-readers/a-new-kindle-is-here-but-i-found-this-previous-gen-kindle-bundle-thats-a-lot-cheaper</link>
                                                                            <description>
                            <![CDATA[ Amazon just launched a new basic Kindle—but the bundle deal on the last model is cheaper and still a great device. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">tGHU96dxZNzJRkLURiwWK4</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/EpVGn3LeUHRW2b875FT8TC-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 02 Oct 2026 09:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[E-Readers]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Tablets]]></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/EpVGn3LeUHRW2b875FT8TC-1920-80.jpg">
                                                            <media:credit><![CDATA[Tom&amp;#39;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Kindle 2024 shown in hand]]></media:description>                                                            <media:text><![CDATA[Kindle 2024 shown in hand]]></media:text>
                                <media:title type="plain"><![CDATA[Kindle 2024 shown in hand]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/EpVGn3LeUHRW2b875FT8TC-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Amazon just launched <a href="https://www.amazon.com/dp/B0FXJ8VZ39" target="_blank" rel="nofollow">a new basic Kindle for $149</a>. Thinner and lighter, this model features a new edge-to-edge color chassis and a more flush 6-inch display. Amazon also says it opens books 30% faster than the previous Kindle. Like I said when <a href="https://www.tomsguide.com/computing/e-readers/i-went-hands-on-with-amazons-new-kindles-and-this-one-feature-has-me-excited">I went hands-on with Amazon’s new Kindles</a>, it’s not just a simple refresh.</p><p>The new basic Kindle has a lot going for it, but you're arguably getting a better value with a bundle for the 2024 model. While the new Kindle costs $149 for the device alone, <a href="https://www.amazon.com/Kindle-Essentials-Bundle-including-release/dp/B0FH7L516X" target="_blank" rel="nofollow">Amazon is currently selling a Kindle Essentials Bundle that includes a fabric cover and the e-reader for $125</a> — a savings of 38%.</p><p>Again, the new Kindle seems like an excellent upgrade, but you might not need it. Here’s why.</p><ul><li><strong></strong><a href="https://www.amazon.com/deals" target="_blank" rel="nofollow"><strong>shop all early October Prime Day deals</strong></a><strong></strong></li></ul><div class="product"><a data-dimension112="1fbb88b6-bdc1-11f1-bae2-db7ab154272b" data-action="Deal Block" data-label="Kindle Essentials Bundle" data-dimension48="Kindle Essentials Bundle" data-dimension25="$125" href="https://www.amazon.com/Kindle-Essentials-Bundle-including-release/dp/B0FH7L516X" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:679px;"><p class="vanilla-image-block" style="padding-top:100.88%;"><img id="2CGppALUB8Av7nZAebmMbB" name="81g4GIqXoVL._AC_SX679_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/2CGppALUB8Av7nZAebmMbB-1920-80.jpg" mos="" align="middle" fullscreen="" width="679" height="685" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p>This deal slashes 38% off the Kindle Essentials Bundle featuring the 2024 basic Kindle and a protective case, either in Matcha Green or Black. While this is now a last-gen device, it's still a fantastic e-reader thanks to its 6-inch glare-free display and lightweight design. This is an excellent deal you don't want to miss!<a class="view-deal button" href="https://www.amazon.com/Kindle-Essentials-Bundle-including-release/dp/B0FH7L516X" target="_blank" rel="nofollow" data-dimension112="1fbb88b6-bdc1-11f1-bae2-db7ab154272b" data-action="Deal Block" data-label="Kindle Essentials Bundle" data-dimension48="Kindle Essentials Bundle" data-dimension25="$125">View Deal</a></p></div><h2 id="why-the-older-kindle-is-still-worthwhile">Why the older Kindle is still worthwhile</h2><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="dct72NfYcAxdaYb74cfXjC" name="Kindle 2024.jpg" alt="Kindle (2024)" src="https://cdn.mos.cms.futurecdn.net/dct72NfYcAxdaYb74cfXjC-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 <a href="https://www.tomsguide.com/tablets/e-readers/kindle-2024-review">2024 Kindle</a> is largely a refresh of the 2022 model, with the same design and core features. This 6-inch e-reader features a 25% brighter front light, sharper contrast, and a matcha green color.</p><p>This 6-inch e-reader is an ideal companion for leaving the house or going on a trip because it’s small enough to fit comfortably in most pockets. Its compact, lightweight design also makes it easy to hold for longer periods, even compared to its cousins, the 7-inch Kindle Paperwhite and Kindle Colorsoft.</p><p>The display is another highlight. Though it lacks color temperature adjustment, it’s just as sharp and clear as the display on the more expensive Kindle models. Beyond novels, it’s also great for reading manga or black-and-white comic books, as the drawings look crisp on the 300ppi display.</p><p>You also get long-lasting battery life. Amazon claims the Kindle can last up to 6 weeks, but that’s only if you keep the backlight level low, turn off wireless, and only read for 30 minutes a day. In my experience, with the backlight off, wireless on, and about an hour of reading a day, the Kindle’s battery dropped to around 70% in two weeks. Needless to say, this Kindle has strong endurance and won’t suddenly run out of battery.</p><h2 id="the-new-kindle-is-a-nice-upgrade">The new Kindle is a nice upgrade</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="B5FgfifLftnYqyTsSqFV9f" name="2026 Amazon Kindle lineup-7" alt="Amazon Kindle 2026" src="https://cdn.mos.cms.futurecdn.net/B5FgfifLftnYqyTsSqFV9f-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 new Kindle isn’t revolutionary, but it has meaningful upgrades meant to deliver a better overall reading experience. If you’re brand-new to the <a href="https://www.tomsguide.com/us/best-e-readers,review-2766.html">best Kindles</a>, this is arguably the device to start with. (Check out our 2026 <a href="https://www.tomsguide.com/computing/e-readers/amazon-just-launched-new-kindles-how-to-save-usd68-on-your-preorder">Kindles preorders</a> page for a rundown of all the new models). </p><p>This base model starts with 16GB of storage and includes lock screen ads. It comes in two colors: Ube and Graphite. Beyond new colors, the chassis has been redesigned with a more flush display, giving the e-reader a more uniform look. This also makes this Kindle appear closer to the Paperwhite and Colorsoft, both of which have flush displays.</p><p>Performance-wise, Amazon says the new Kindle is 30% faster than before. During my hands-on time with the device, I certainly felt a difference when I scrolled through the pages of a digital novel. The days of the basic Kindle feeling extremely sluggish are officially over.</p><p>The 6-inch display is largely the same as before, but because it’s now more flush, text appears clearer and sharper. The 300ppi display ensures that everything, even black-and-white images, looks crisp and clear.</p><p>If you want to upgrade to premium, <a href="https://www.amazon.com/dp/B0FZDCHT4J?th=1" target="_blank" rel="nofollow">there’s a $189 aluminum model with 32GB of storage and no ads</a>. This e-reader supports magnetic accessories, such as covers, and comes in Alpine Sky and Seaglass Green. Thanks to its aluminum build, holding this Kindle feels similar to holding a smartphone. Yes, it's pricey, but it’s pretty great.</p><div class="product"><a data-dimension112="1fbb8a00-bdc1-11f1-a780-bf59549018bd" data-action="Deal Block" data-label="Kindle (2026)" data-dimension48="Kindle (2026)" data-dimension25="$149" href="https://www.amazon.com/dp/B0FXJ8VZ39" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:894px;"><p class="vanilla-image-block" style="padding-top:119.13%;"><img id="w6Y7uth4YAkauXsFGzdurW" name="Kindle 2026 deal block" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/w6Y7uth4YAkauXsFGzdurW-1920-80.jpg" mos="" align="middle" fullscreen="" width="894" height="1065" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/dp/B0FXJ8VZ39" target="_blank" rel="nofollow" data-dimension112="1fbb8a00-bdc1-11f1-a780-bf59549018bd" data-action="Deal Block" data-label="Kindle (2026)" data-dimension48="Kindle (2026)" data-dimension25="$149">Kindle (2026): $149</a></strong><br />Amazon just launched the new basic Kindle, featuring a more portable design and faster page turns. The standard version is $149 and includes ads, but you can remove them by paying $20 more. This base model comes in two colors: Ube and Graphite.<a class="view-deal button" href="https://www.amazon.com/dp/B0FXJ8VZ39" target="_blank" rel="nofollow" data-dimension112="1fbb8a00-bdc1-11f1-a780-bf59549018bd" data-action="Deal Block" data-label="Kindle (2026)" data-dimension48="Kindle (2026)" data-dimension25="$149">View Deal</a></p></div><h2 id="bottom-line-4">Bottom line</h2><p>Based on what I’ve seen, the new Kindle seems like a worthwhile upgrade. However, if you want your cash to go a bit further for a device that still delivers the same excellent Kindle experience, the Kindle Essentials Bundle for $125 is hard to top!</p><p>Given how the October Prime Day event starts next week and runs from October 6 through October 7, it’s possible we’ll see even deeper discounts. But if you don’t want to wait, I say take advantage of this Kindle bundle deal now.</p><div class="vizualizer-embed"><div class="tg-df-widget-host" data-widget-config="?search=tablets&amp;brands=Amazon&amp;min_discount_ratio=0.95&amp;widget_title=Top+Deals+Handpicked+by+Our+Editors&amp;widget_subtitle=Discover+the+best+discounts+currently+available%2C+curated+daily+by+the+Tom%27s+Guide+Savings+Squad.&amp;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="8">8 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 finalHref = cardLink.href || cardLink.getAttribute('href') || '';                let actualRevenueId = cardLink.getAttribute('data-revenue-id');                const revMatch = finalHref.match(/(?:subId1|xcust|clickref|ascsubtag)=[^&]*?(\d{18,20})(?:&|$)/i);                if (revMatch && revMatch[1]) {                  actualRevenueId = revMatch[1];                }                const rewrittenLink = finalHref;                const revenueId = actualRevenueId;                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.getFilteredDeals().slice(0, this.displayLimit), 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.getFilteredDeals().slice(0, this.displayLimit), 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.getFilteredDeals().slice(0, this.displayLimit), 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: this.decodeHTML(item.name || item.title || item.model_name || item.product_name || 'Unknown Product'),            brand: this.decodeHTML(item.brand || ''),            productName: this.decodeHTML(item.model_name || item.product_name || item.name || ''),            merchant: this.decodeHTML(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 finalHref = btn.href || btn.getAttribute('href') || '';                let actualRevenueId = btn.getAttribute('data-revenue-id');                const revMatch = finalHref.match(/(?:subId1|xcust|clickref|ascsubtag)=[^&]*?(\d{18,20})(?:&|$)/i);                if (revMatch && revMatch[1]) {                  actualRevenueId = revMatch[1];                }                const rewrittenLink = finalHref;                const revenueId = actualRevenueId;                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)}" ${dataAttr} 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[ Amazon's slashed prices on tons of Bluetooth speakers, but these best-sellers are the ones actually worth buying ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Bluetooth speakers are some of the most popular tech products on Amazon Australia, and <a href="https://www.tomsguide.com/live/news/prime-big-deal-days-2026-au-1" target="_blank">Prime Big Deal Days</a> has brought sizeable discounts to several of the online retail giant's best-selling models. Whether you're after a rugged speaker for outdoor adventures or something compact for everyday listening, now's a great time to buy.</p><p>While there are stacks of Bluetooth speakers on sale right now, the standout deals for me are the JBL Flip 6 and Bose SoundLink Flex (2nd Gen). The former received <a href="https://www.tomsguide.com/reviews/jbl-flip-6">4.5 stars in our review</a>, while the latter earned a respectable <a href="https://www.tomsguide.com/audio/bose-soundlink-flex-2-review">4-star rating</a>.</p><p>Right now, you can snag the excellent JBL Flip 6 for just <del>AU$169.95</del> <a href="https://www.amazon.com.au/JBL-Portable-Waterproof-Speaker-Black/dp/B09V7WS4PP?th=1" target="_blank">AU$99.95</a>, saving you a cool AU$70 on the RRP, while the Bose SoundLink Flex (2nd Gen) is down to <del>AU$249.95</del> <a href="https://www.amazon.com.au/Bose-SoundLink-Bluetooth-Waterproof-Dustproof/dp/B0D6WD2QSQ/?th=1" target="_blank">AU$147.25</a> for Prime members — that's a hefty AU$102.70 discount.</p><p>Both speakers combine strong sound quality with rugged waterproof designs, making them easy recommendations for anyone looking for a portable audio upgrade. They're far from the only deals worth considering, though, with Amazon's best-seller rankings also featuring popular options from Soundcore, Harman Kardon and Ultimate Ears across a range of budgets.</p><p>That's what makes this year's Prime Big Deal Days speaker deals worth a closer look. I've rounded up the best offers below, but you can also browse <a href="https://www.amazon.com.au/gp/bestsellers/electronics/4885118051/ref=zg_bs_nav_electronics_2_4885078051" target="_blank">Amazon AU's current best-selling speakers</a> to see what's proving most popular with shoppers right now.</p><div class="product"><a data-dimension112="802a561c-be2c-11f1-af8a-ed4edf89ac8a" data-action="Deal Block" data-label="Flip 6" data-dimension48="Flip 6" data-dimension25="$99.95" href="https://www.amazon.com.au/JBL-Portable-Waterproof-Speaker-Black/dp/B09V7WS4PP" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="tw9JZZx44voai723Lvd9AS" name="JBL-Flip-6.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/tw9JZZx44voai723Lvd9AS-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="2000" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p>The JBL Flip 6 remains one of the most popular portable Bluetooth speakers around, combining punchy sound with a rugged IP67 waterproof and dustproof design that's built for outdoor use. You also get up to 12 hours of playtime on a single charge, plus PartyBoost support for linking compatible JBL speakers together when you want bigger sound. It's a great pick for beach trips, backyard barbecues or everyday listening.<a class="view-deal button" href="https://www.amazon.com.au/JBL-Portable-Waterproof-Speaker-Black/dp/B09V7WS4PP" target="_blank" rel="nofollow" data-dimension112="802a561c-be2c-11f1-af8a-ed4edf89ac8a" data-action="Deal Block" data-label="Flip 6" data-dimension48="Flip 6" data-dimension25="$99.95">View Deal</a></p></div><div class="product"><a data-dimension112="802a5694-be2c-11f1-820b-cd3fc4ff45b2" data-action="Deal Block" data-label="Charge 5" data-dimension48="Charge 5" data-dimension25="$99.95" href="https://www.amazon.com.au/JBL-Charge-Bluetooth-Waterproof-Built/dp/B08VD857CR" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="TsKnqMhpk4KJYBmxpUzvyg" name="JBL Charge 5.jpeg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/TsKnqMhpk4KJYBmxpUzvyg-1920-80.jpeg" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p>If you want something bigger and longer-lasting than the Flip series, the JBL Charge 5 is a standout portable speaker. It offers up to 20 hours of playtime, an IP67 waterproof and dustproof rating for outdoor use, and a built-in power bank that lets you top up your phone while you're on the go. You also get PartyBoost support for pairing compatible JBL speakers together, making it a great option for any kind of gathering.<a class="view-deal button" href="https://www.amazon.com.au/JBL-Charge-Bluetooth-Waterproof-Built/dp/B08VD857CR" target="_blank" rel="nofollow" data-dimension112="802a5694-be2c-11f1-820b-cd3fc4ff45b2" data-action="Deal Block" data-label="Charge 5" data-dimension48="Charge 5" data-dimension25="$99.95">View Deal</a></p></div><div class="product"><a data-dimension112="802a56f8-be2c-11f1-9ebc-61960846bc7d" data-action="Deal Block" data-label="SoundLink Flex (2nd Gen)" data-dimension48="SoundLink Flex (2nd Gen)" data-dimension25="$147.25" href="https://www.amazon.com.au/Bose-SoundLink-Bluetooth-Waterproof-Dustproof/dp/B0D6WD2QSQ/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="fYpH2mqPsunM6VAZD2PFxb" name="bose-soundlink-black.png" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/fYpH2mqPsunM6VAZD2PFxb-1920-80.png" mos="" align="middle" fullscreen="" width="1000" height="1000" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p>The Bose SoundLink Flex (2nd Gen) proves you don't need a huge speaker to get great sound. This compact Bluetooth speaker delivers high-fidelity audio with surprisingly deep bass, while its IP67 waterproof and dustproof rating means it's built for everything from pool days to camping trips. With up to 12 hours of battery life and the ability to pair with other compatible Bose speakers for bigger sound, it's a premium portable option that's easy to take just about anywhere.<a class="view-deal button" href="https://www.amazon.com.au/Bose-SoundLink-Bluetooth-Waterproof-Dustproof/dp/B0D6WD2QSQ/" target="_blank" rel="nofollow" data-dimension112="802a56f8-be2c-11f1-9ebc-61960846bc7d" data-action="Deal Block" data-label="SoundLink Flex (2nd Gen)" data-dimension48="SoundLink Flex (2nd Gen)" data-dimension25="$147.25">View Deal</a></p></div><div class="product"><a data-dimension112="f876bf72-be2f-11f1-9ed9-a9f2181d7fcc" data-action="Deal Block" data-label="Wonderboom 4" data-dimension48="Wonderboom 4" data-dimension25="$105" href="https://www.amazon.com.au/Ultimate-Ears-WONDERBOOM-Waterproof-360-Degree/dp/B0DYNV6Y12/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1425px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="D7QYGUpe98kCsZkVddg4oV" name="Ultimate Ears Wonderboom 4.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/D7QYGUpe98kCsZkVddg4oV-1920-80.jpg" mos="" align="middle" fullscreen="" width="1425" height="1425" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p>An excellent option for pool parties, Ultimate Ears Wonderboom 4 offers IP67 protection against dust and water, and will even float if it gets knocked into said pool. Along with its big bass, the Wonderboom 4 also boasts 360-degree audio, meaning everyone at your party will get an earful no matter where they stand.<a class="view-deal button" href="https://www.amazon.com.au/Ultimate-Ears-WONDERBOOM-Waterproof-360-Degree/dp/B0DYNV6Y12/" target="_blank" rel="nofollow" data-dimension112="f876bf72-be2f-11f1-9ed9-a9f2181d7fcc" data-action="Deal Block" data-label="Wonderboom 4" data-dimension48="Wonderboom 4" data-dimension25="$105">View Deal</a></p></div><div class="product"><a data-dimension112="802a5766-be2c-11f1-9465-8bc02e9e4b46" data-action="Deal Block" data-label="Grip" data-dimension48="Grip" data-dimension25="$69.95" href="https://www.amazon.com.au/JBL-Waterproof-dustproof-Drop-Proof-Certified/dp/B0FS6L4959" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="pkPmh8odsA6Y8GUQN2BtmE" name="jbl-grip" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/pkPmh8odsA6Y8GUQN2BtmE-1920-80.jpg" mos="" align="middle" fullscreen="" width="1000" height="1000" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p>If you need a speaker that can handle a bit of rough treatment, the JBL Grip is built with outdoor adventures in mind. It combines up to 14 hours of battery life with a waterproof, dustproof and drop-proof design, making it an easy companion for camping trips, beach days or backyard get-togethers. There's also Auracast multi-speaker support for connecting compatible speakers, while the built-in ambient lighting adds a little extra atmosphere when the sun goes down.<a class="view-deal button" href="https://www.amazon.com.au/JBL-Waterproof-dustproof-Drop-Proof-Certified/dp/B0FS6L4959" target="_blank" rel="nofollow" data-dimension112="802a5766-be2c-11f1-9465-8bc02e9e4b46" data-action="Deal Block" data-label="Grip" data-dimension48="Grip" data-dimension25="$69.95">View Deal</a></p></div><div class="product"><a data-dimension112="802a57ca-be2c-11f1-84b3-9598cd9fa057" data-action="Deal Block" data-label="Stormbox Micro 3" data-dimension48="Stormbox Micro 3" data-dimension25="$94.99" href="https://www.amazon.com.au/Tribit-StormBox-Portable-Bluetooth-Playtime/dp/B0GF6PPS4S" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="Z5ayM334PBzg3BApBKymBj" name="tribit-stormbox-micro-3-portable-wireles-cf7c2ac3-18ab-4d60-a4e7-fe2301c09f67.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/Z5ayM334PBzg3BApBKymBj-1920-80.jpg" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/Tribit-StormBox-Portable-Bluetooth-Playtime/dp/B0GF6PPS4S" target="_blank" rel="nofollow" data-dimension112="802a57ca-be2c-11f1-84b3-9598cd9fa057" data-action="Deal Block" data-label="Stormbox Micro 3" data-dimension48="Stormbox Micro 3" data-dimension25="$94.99">Stormbox Micro 3: was $129.99 now $94.99</a></strong><br />Another outdoor favourite, this compact Bluetooth speaker delivers up to 24 hours of playtime, an IP68-rated waterproof design, and a rugged build that's tested to withstand drops. It also features a handy magnetic mount and strap system for attaching it to bikes, backpacks or camping gear, making it a great pick for adventures where portability matters just as much as sound quality.<a class="view-deal button" href="https://www.amazon.com.au/Tribit-StormBox-Portable-Bluetooth-Playtime/dp/B0GF6PPS4S" target="_blank" rel="nofollow" data-dimension112="802a57ca-be2c-11f1-84b3-9598cd9fa057" data-action="Deal Block" data-label="Stormbox Micro 3" data-dimension48="Stormbox Micro 3" data-dimension25="$94.99">View Deal</a></p></div><div class="product"><a data-dimension112="802a5824-be2c-11f1-9fec-41127d675949" data-action="Deal Block" data-label="Luna 2" data-dimension48="Luna 2" data-dimension25="$99.95" href="https://www.amazon.com.au/Harman-Kardon-Superior-Performance-Playtime/dp/B0GNLYJKSM" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1375px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="NS7P4exTAQmDStbcCUu3if" name="Luna 2" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/NS7P4exTAQmDStbcCUu3if-1920-80.jpg" mos="" align="middle" fullscreen="" width="1375" height="1375" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p>If you're after a minimalist Bluetooth speaker with a design that doesn't call too much attention to itself, Harman Kardon's Luna 2 is a good option. It's compact and refined, with a touch of ambient lighting for a hint of atmosphere. It also sounds great, with our sister site, <a href="https://www.whathifi.com/speakers/wireless-speakers/harman-kardon-luna-2" target="_blank" data-dimension112="802a5824-be2c-11f1-9fec-41127d675949" data-action="Deal Block" data-label="Luna 2" data-dimension48="Luna 2" data-dimension25="$99.95">What Hi-Fi?</a> awarding it 4 stars in its review.<a class="view-deal button" href="https://www.amazon.com.au/Harman-Kardon-Superior-Performance-Playtime/dp/B0GNLYJKSM" target="_blank" rel="nofollow" data-dimension112="802a5824-be2c-11f1-9fec-41127d675949" data-action="Deal Block" data-label="Luna 2" data-dimension48="Luna 2" data-dimension25="$99.95">View Deal</a></p></div><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/home/home-appliances/amazon-aus-october-prime-sale-is-bringing-the-heat-with-some-smokin-air-fryer-discounts-save-up-to-66-percent-off-the-rrp">Amazon AU's October Prime sale is bringing the heat with some smokin' air fryer discounts — save up to 66% off the RRP</a></li><li><a href="https://www.tomsguide.com/home/home-security/blink-and-youll-miss-it-this-70-percent-off-4-pack-camera-deal-will-have-your-indoor-and-outdoor-home-security-sorted-in-this-early-prime-big-deal-days-bargain">Blink and you'll miss it: this 70% off 4-pack camera deal will have your indoor and outdoor home security sorted</a></li><li><a href="https://www.tomsguide.com/wellness/early-amazon-prime-day-skechers-deals-shop-up-to-56-percent-off-mens-and-womens-sneakers-sandals-and-slides">Early Amazon Prime Day Skechers deals — shop up to 56% off men's and women's sneakers, sandals and slides</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/audio/bluetooth-speakers/amazons-slashed-prices-on-tons-of-bluetooth-speakers-but-these-best-sellers-are-the-ones-actually-worth-buying</link>
                                                                            <description>
                            <![CDATA[ We've rounded up the best Bluetooth speakers that are currently discounted from Amazon's best sellers list — here's what we recommend. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">sqFJoHs7stEFaQqtKKdsoQ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/vDaeXDLug37WtNqRvaC2K3-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 02 Oct 2026 07:22:01 +0000</pubDate>                                                                                                                                <updated>Fri, 02 Oct 2026 23:21:08 +0000</updated>
                                                                                                                                            <category><![CDATA[Bluetooth Speakers]]></category>
                                                    <category><![CDATA[Audio]]></category>
                                                    <category><![CDATA[Speakers]]></category>
                                                                                                                    <dc:creator><![CDATA[ Stephen Lambrechts ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/JN3jEQpqyyt32as8AJJqXe-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Stephen Lambrechts is the Managing Editor of Tom&#039;s Guide AU and has written professionally across the categories of tech, film, television and gaming for the last 15 years. Before Tom&#039;s Guide, he spent several years as a Senior Journalist at TechRadar, had a brief stint as Editor in Chief at Official Xbox Magazine Australia, and worked at IGN. He&#039;s also written for such mags and sites as APC, TechLife Australia, T3, FilmInk, Daily Telegraph and AskMen. Additionally, he&#039;s a Tomatometer-approved critic on Rotten Tomatoes, and has offered his tech advice on radio and television.&lt;/p&gt;&lt;p&gt;He&#039;s an expert when it comes to smartphones, TVs, gaming and streaming, having contributed many reviews in each of those categories over the years. Despite his many articles on streaming, he&#039;s a passionate collector of physical media who enjoys listening to vinyl records and acquiring obscure horror movies from the &#039;60s, &#039;70s and 80s. He can usually be seen rocking the latest retro sneaker releases, particularly Air Jordans and Reebok Pumps. Occasionally, he also indulges in other non-hipster stuff, like hiking.&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/vDaeXDLug37WtNqRvaC2K3-1920-80.jpg">
                                                            <media:credit><![CDATA[Tom&amp;#39;s Guide / Edited with Gemini]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Various Bluetooth speakers arranged around a pool area]]></media:description>                                                            <media:text><![CDATA[Various Bluetooth speakers arranged around a pool area]]></media:text>
                                <media:title type="plain"><![CDATA[Various Bluetooth speakers arranged around a pool area]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/vDaeXDLug37WtNqRvaC2K3-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Bluetooth speakers are some of the most popular tech products on Amazon Australia, and <a href="https://www.tomsguide.com/live/news/prime-big-deal-days-2026-au-1" target="_blank">Prime Big Deal Days</a> has brought sizeable discounts to several of the online retail giant's best-selling models. Whether you're after a rugged speaker for outdoor adventures or something compact for everyday listening, now's a great time to buy.</p><p>While there are stacks of Bluetooth speakers on sale right now, the standout deals for me are the JBL Flip 6 and Bose SoundLink Flex (2nd Gen). The former received <a href="https://www.tomsguide.com/reviews/jbl-flip-6">4.5 stars in our review</a>, while the latter earned a respectable <a href="https://www.tomsguide.com/audio/bose-soundlink-flex-2-review">4-star rating</a>.</p><p>Right now, you can snag the excellent JBL Flip 6 for just <del>AU$169.95</del> <a href="https://www.amazon.com.au/JBL-Portable-Waterproof-Speaker-Black/dp/B09V7WS4PP?th=1" target="_blank">AU$99.95</a>, saving you a cool AU$70 on the RRP, while the Bose SoundLink Flex (2nd Gen) is down to <del>AU$249.95</del> <a href="https://www.amazon.com.au/Bose-SoundLink-Bluetooth-Waterproof-Dustproof/dp/B0D6WD2QSQ/?th=1" target="_blank">AU$147.25</a> for Prime members — that's a hefty AU$102.70 discount.</p><p>Both speakers combine strong sound quality with rugged waterproof designs, making them easy recommendations for anyone looking for a portable audio upgrade. They're far from the only deals worth considering, though, with Amazon's best-seller rankings also featuring popular options from Soundcore, Harman Kardon and Ultimate Ears across a range of budgets.</p><p>That's what makes this year's Prime Big Deal Days speaker deals worth a closer look. I've rounded up the best offers below, but you can also browse <a href="https://www.amazon.com.au/gp/bestsellers/electronics/4885118051/ref=zg_bs_nav_electronics_2_4885078051" target="_blank">Amazon AU's current best-selling speakers</a> to see what's proving most popular with shoppers right now.</p><div class="product"><a data-dimension112="802a561c-be2c-11f1-af8a-ed4edf89ac8a" data-action="Deal Block" data-label="Flip 6" data-dimension48="Flip 6" data-dimension25="$99.95" href="https://www.amazon.com.au/JBL-Portable-Waterproof-Speaker-Black/dp/B09V7WS4PP" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="tw9JZZx44voai723Lvd9AS" name="JBL-Flip-6.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/tw9JZZx44voai723Lvd9AS-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="2000" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p>The JBL Flip 6 remains one of the most popular portable Bluetooth speakers around, combining punchy sound with a rugged IP67 waterproof and dustproof design that's built for outdoor use. You also get up to 12 hours of playtime on a single charge, plus PartyBoost support for linking compatible JBL speakers together when you want bigger sound. It's a great pick for beach trips, backyard barbecues or everyday listening.<a class="view-deal button" href="https://www.amazon.com.au/JBL-Portable-Waterproof-Speaker-Black/dp/B09V7WS4PP" target="_blank" rel="nofollow" data-dimension112="802a561c-be2c-11f1-af8a-ed4edf89ac8a" data-action="Deal Block" data-label="Flip 6" data-dimension48="Flip 6" data-dimension25="$99.95">View Deal</a></p></div><div class="product"><a data-dimension112="802a5694-be2c-11f1-820b-cd3fc4ff45b2" data-action="Deal Block" data-label="Charge 5" data-dimension48="Charge 5" data-dimension25="$99.95" href="https://www.amazon.com.au/JBL-Charge-Bluetooth-Waterproof-Built/dp/B08VD857CR" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="TsKnqMhpk4KJYBmxpUzvyg" name="JBL Charge 5.jpeg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/TsKnqMhpk4KJYBmxpUzvyg-1920-80.jpeg" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p>If you want something bigger and longer-lasting than the Flip series, the JBL Charge 5 is a standout portable speaker. It offers up to 20 hours of playtime, an IP67 waterproof and dustproof rating for outdoor use, and a built-in power bank that lets you top up your phone while you're on the go. You also get PartyBoost support for pairing compatible JBL speakers together, making it a great option for any kind of gathering.<a class="view-deal button" href="https://www.amazon.com.au/JBL-Charge-Bluetooth-Waterproof-Built/dp/B08VD857CR" target="_blank" rel="nofollow" data-dimension112="802a5694-be2c-11f1-820b-cd3fc4ff45b2" data-action="Deal Block" data-label="Charge 5" data-dimension48="Charge 5" data-dimension25="$99.95">View Deal</a></p></div><div class="product"><a data-dimension112="802a56f8-be2c-11f1-9ebc-61960846bc7d" data-action="Deal Block" data-label="SoundLink Flex (2nd Gen)" data-dimension48="SoundLink Flex (2nd Gen)" data-dimension25="$147.25" href="https://www.amazon.com.au/Bose-SoundLink-Bluetooth-Waterproof-Dustproof/dp/B0D6WD2QSQ/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="fYpH2mqPsunM6VAZD2PFxb" name="bose-soundlink-black.png" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/fYpH2mqPsunM6VAZD2PFxb-1920-80.png" mos="" align="middle" fullscreen="" width="1000" height="1000" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p>The Bose SoundLink Flex (2nd Gen) proves you don't need a huge speaker to get great sound. This compact Bluetooth speaker delivers high-fidelity audio with surprisingly deep bass, while its IP67 waterproof and dustproof rating means it's built for everything from pool days to camping trips. With up to 12 hours of battery life and the ability to pair with other compatible Bose speakers for bigger sound, it's a premium portable option that's easy to take just about anywhere.<a class="view-deal button" href="https://www.amazon.com.au/Bose-SoundLink-Bluetooth-Waterproof-Dustproof/dp/B0D6WD2QSQ/" target="_blank" rel="nofollow" data-dimension112="802a56f8-be2c-11f1-9ebc-61960846bc7d" data-action="Deal Block" data-label="SoundLink Flex (2nd Gen)" data-dimension48="SoundLink Flex (2nd Gen)" data-dimension25="$147.25">View Deal</a></p></div><div class="product"><a data-dimension112="f876bf72-be2f-11f1-9ed9-a9f2181d7fcc" data-action="Deal Block" data-label="Wonderboom 4" data-dimension48="Wonderboom 4" data-dimension25="$105" href="https://www.amazon.com.au/Ultimate-Ears-WONDERBOOM-Waterproof-360-Degree/dp/B0DYNV6Y12/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1425px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="D7QYGUpe98kCsZkVddg4oV" name="Ultimate Ears Wonderboom 4.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/D7QYGUpe98kCsZkVddg4oV-1920-80.jpg" mos="" align="middle" fullscreen="" width="1425" height="1425" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p>An excellent option for pool parties, Ultimate Ears Wonderboom 4 offers IP67 protection against dust and water, and will even float if it gets knocked into said pool. Along with its big bass, the Wonderboom 4 also boasts 360-degree audio, meaning everyone at your party will get an earful no matter where they stand.<a class="view-deal button" href="https://www.amazon.com.au/Ultimate-Ears-WONDERBOOM-Waterproof-360-Degree/dp/B0DYNV6Y12/" target="_blank" rel="nofollow" data-dimension112="f876bf72-be2f-11f1-9ed9-a9f2181d7fcc" data-action="Deal Block" data-label="Wonderboom 4" data-dimension48="Wonderboom 4" data-dimension25="$105">View Deal</a></p></div><div class="product"><a data-dimension112="802a5766-be2c-11f1-9465-8bc02e9e4b46" data-action="Deal Block" data-label="Grip" data-dimension48="Grip" data-dimension25="$69.95" href="https://www.amazon.com.au/JBL-Waterproof-dustproof-Drop-Proof-Certified/dp/B0FS6L4959" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="pkPmh8odsA6Y8GUQN2BtmE" name="jbl-grip" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/pkPmh8odsA6Y8GUQN2BtmE-1920-80.jpg" mos="" align="middle" fullscreen="" width="1000" height="1000" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p>If you need a speaker that can handle a bit of rough treatment, the JBL Grip is built with outdoor adventures in mind. It combines up to 14 hours of battery life with a waterproof, dustproof and drop-proof design, making it an easy companion for camping trips, beach days or backyard get-togethers. There's also Auracast multi-speaker support for connecting compatible speakers, while the built-in ambient lighting adds a little extra atmosphere when the sun goes down.<a class="view-deal button" href="https://www.amazon.com.au/JBL-Waterproof-dustproof-Drop-Proof-Certified/dp/B0FS6L4959" target="_blank" rel="nofollow" data-dimension112="802a5766-be2c-11f1-9465-8bc02e9e4b46" data-action="Deal Block" data-label="Grip" data-dimension48="Grip" data-dimension25="$69.95">View Deal</a></p></div><div class="product"><a data-dimension112="802a57ca-be2c-11f1-84b3-9598cd9fa057" data-action="Deal Block" data-label="Stormbox Micro 3" data-dimension48="Stormbox Micro 3" data-dimension25="$94.99" href="https://www.amazon.com.au/Tribit-StormBox-Portable-Bluetooth-Playtime/dp/B0GF6PPS4S" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="Z5ayM334PBzg3BApBKymBj" name="tribit-stormbox-micro-3-portable-wireles-cf7c2ac3-18ab-4d60-a4e7-fe2301c09f67.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/Z5ayM334PBzg3BApBKymBj-1920-80.jpg" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/Tribit-StormBox-Portable-Bluetooth-Playtime/dp/B0GF6PPS4S" target="_blank" rel="nofollow" data-dimension112="802a57ca-be2c-11f1-84b3-9598cd9fa057" data-action="Deal Block" data-label="Stormbox Micro 3" data-dimension48="Stormbox Micro 3" data-dimension25="$94.99">Stormbox Micro 3: was $129.99 now $94.99</a></strong><br />Another outdoor favourite, this compact Bluetooth speaker delivers up to 24 hours of playtime, an IP68-rated waterproof design, and a rugged build that's tested to withstand drops. It also features a handy magnetic mount and strap system for attaching it to bikes, backpacks or camping gear, making it a great pick for adventures where portability matters just as much as sound quality.<a class="view-deal button" href="https://www.amazon.com.au/Tribit-StormBox-Portable-Bluetooth-Playtime/dp/B0GF6PPS4S" target="_blank" rel="nofollow" data-dimension112="802a57ca-be2c-11f1-84b3-9598cd9fa057" data-action="Deal Block" data-label="Stormbox Micro 3" data-dimension48="Stormbox Micro 3" data-dimension25="$94.99">View Deal</a></p></div><div class="product"><a data-dimension112="802a5824-be2c-11f1-9fec-41127d675949" data-action="Deal Block" data-label="Luna 2" data-dimension48="Luna 2" data-dimension25="$99.95" href="https://www.amazon.com.au/Harman-Kardon-Superior-Performance-Playtime/dp/B0GNLYJKSM" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1375px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="NS7P4exTAQmDStbcCUu3if" name="Luna 2" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/NS7P4exTAQmDStbcCUu3if-1920-80.jpg" mos="" align="middle" fullscreen="" width="1375" height="1375" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p>If you're after a minimalist Bluetooth speaker with a design that doesn't call too much attention to itself, Harman Kardon's Luna 2 is a good option. It's compact and refined, with a touch of ambient lighting for a hint of atmosphere. It also sounds great, with our sister site, <a href="https://www.whathifi.com/speakers/wireless-speakers/harman-kardon-luna-2" target="_blank" data-dimension112="802a5824-be2c-11f1-9fec-41127d675949" data-action="Deal Block" data-label="Luna 2" data-dimension48="Luna 2" data-dimension25="$99.95">What Hi-Fi?</a> awarding it 4 stars in its review.<a class="view-deal button" href="https://www.amazon.com.au/Harman-Kardon-Superior-Performance-Playtime/dp/B0GNLYJKSM" target="_blank" rel="nofollow" data-dimension112="802a5824-be2c-11f1-9fec-41127d675949" data-action="Deal Block" data-label="Luna 2" data-dimension48="Luna 2" data-dimension25="$99.95">View Deal</a></p></div><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/home/home-appliances/amazon-aus-october-prime-sale-is-bringing-the-heat-with-some-smokin-air-fryer-discounts-save-up-to-66-percent-off-the-rrp">Amazon AU's October Prime sale is bringing the heat with some smokin' air fryer discounts — save up to 66% off the RRP</a></li><li><a href="https://www.tomsguide.com/home/home-security/blink-and-youll-miss-it-this-70-percent-off-4-pack-camera-deal-will-have-your-indoor-and-outdoor-home-security-sorted-in-this-early-prime-big-deal-days-bargain">Blink and you'll miss it: this 70% off 4-pack camera deal will have your indoor and outdoor home security sorted</a></li><li><a href="https://www.tomsguide.com/wellness/early-amazon-prime-day-skechers-deals-shop-up-to-56-percent-off-mens-and-womens-sneakers-sandals-and-slides">Early Amazon Prime Day Skechers deals — shop up to 56% off men's and women's sneakers, sandals and slides</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Stop scrolling — here are 18 Prime Day Hair and Beauty deals that you don't wanna miss ]]></title>
                                                                                                <dc:content><![CDATA[ <p><a href="https://www.tomsguide.com/live/news/prime-big-deal-days-2026-au-1" target="_blank">Prime Big Deal Days</a> is in full swing, which means there's no better time than right now to shop all things beauty and haircare at Amazon. </p><p>I review hair tools for a living, and even I’m flabbergasted by how good this week’s deals are. There are discounts on quite literally everything, from <a href="https://www.amazon.com.au/primebigdealdays?ref_=nav_cs_td_peas_dt_cr&amp;bubble-id=deals-collection-beauty&amp;promotionsSearchLastSeenAsin=B07764XQXD&amp;promotionsSearchStartIndex=90&amp;promotionsSearchPageSize=60" target="_blank">K-Beauty and skincare tools to haircare and stylers</a>; your options are truly endless! </p><p>There are even savings to be found on recently released hair tools, including <a href="https://www.amazon.com.au/ghd-Straightener-Transform-Lengths-Textures/dp/B0BZHZ2Y6L/" target="_blank">ghd's new Duet airstylers</a>, <a href="https://www.amazon.com.au/Straight-Straightener-High-Speed-Straightening-Technology/dp/B0GYRCKVD8" target="_blank">Dreame's AI-powered Aero Straight Pro</a> and <a href="https://www.amazon.com.au/Shark-Glossi-Tool-Glosser-Peony/dp/B0GXKZ7CMG" target="_blank">Shark's Glossi hot air brush</a>. And if you've been considering stepping into the world of LED skincare tech, some tidy savings are going on <a href="https://www.amazon.com.au/Shark-CryoGlow-Anti-Wrinkle-Anti-Acne-FW312ANZ/dp/B0GF7MCPN2" target="_blank">Shark's CryoGlow mask</a> and <a href="https://www.amazon.com.au/Dreame-Chrona-Photon-Anti-Aging-Skincare/dp/B0GYRGJ4G6/" target="_blank">Dreame's Chroma Photon mask</a>.  </p><p><strong>• </strong><a href="https://www.amazon.com.au/primebigdealdays" target="_blank"><strong>Shop Amazon's full Prime Day sale</strong></a></p><p>I've spotted 18 of the best hair tool and skincare deals and popped them for your perusal below. It's worth noting, though, that these discounts won't last long, as they're set to expire on <strong>Monday, October 5.</strong></p><h3 class="article-body__section" id="section-best-prime-day-hairtool-deals"><span>Best Prime Day Hairtool deals</span></h3>        <div class="featured_product_block featured_block_hero" data-id="12c96f70-be01-11f1-8678-afdeb895f2d3">            <a href="https://www.amazon.com.au/ghd-Straightener-Transform-Lengths-Textures/dp/B0BZHZ2Y6L/" data-model-name="Duet Style 2-In-1 Hair Dryer and Hair Straightener" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/hR9fRYa3gDrt59Axfo9WT5.jpg" alt="Ghd Duet Style, 2-In-1 Hair Dryer and Hair Straightener, Transform Hair From Wet to Dry in One Tool, on All Hair Types, Lengths and Textures, White (au Plug)" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Ghd</div>                                        <div class="featured__title">Duet Style 2-In-1 Hair Dryer and Hair Straightener</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="12c97024-be01-11f1-9a92-51fe8dec0fb3">            <a href="https://www.amazon.com.au/Shark-Glossi-Tool-Glosser-Peony/dp/B0GXKZ7CMG" data-model-name="Glossi 2-In-1 Hot Tool &amp; Air Glosser" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/vSGDTL3iC5mePKBuX3WGD6.jpg" alt="Shark Glossi 2-In-1 Hot Tool &amp; Air Glosser, Peony Pink" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Shark</div>                                        <div class="featured__title">Glossi 2-In-1 Hot Tool &amp; Air Glosser</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="12c970c4-be01-11f1-961a-6b9bce458336">            <a href="https://www.amazon.com.au/TYMO-Automatic-Rotating-Anti-Scald-Tangle-Free/dp/B0DPZLWX8J" data-model-name="Curlpro Plus Curling Iron" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/BFAjJtWLbKdpCHDkYPReZ5.jpg" alt="Tymo Curlpro Plus Curling Iron Curling Tong Hair Curler, Automatic Rotating, Long Barrel, Ceramic, 600m Ionic, Dual Voltage, for Long Hair, Anti-Scald, Tangle-Free, Upgraded, for Women, Gold, 25mm" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>TYMO</div>                                        <div class="featured__title">Curlpro Plus Curling Iron</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="12c971a0-be01-11f1-a04d-f94b46378339">            <a href="https://www.amazon.com.au/High-Speed-Negative-Ion-Professional-Temperature-Lightweight/dp/B0CNRZ56ZR" data-model-name="Gleam Hair Dryer" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/2zwtqQpEeYmfEBU6DcKpi5.jpg" alt="Dreame Hair Gleam Hair Dryer, 110000 Rpm High-Speed Brushless Motor Au Version, 200 Million Negative-Ion Hair Dryer With Magnetic Nozzle, Professional Blow Dryer With Constant Temperature Control" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Dreame</div>                                        <div class="featured__title">Gleam Hair Dryer</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="12c97236-be01-11f1-aeff-07cc1726f785">            <a href="https://www.amazon.com.au/Revlon-One-Step-Volumiser-Original-Blowout/dp/B0C6FK8644" data-model-name="One-Step Volumiser Original 1.0 Blowout Brush" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/6X3cbRHoXcJetGHY7dYBNj.jpg" alt="Revlon One-Step Volumiser Original 1.0 Blowout Brush, Pink" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Revlon</div>                                        <div class="featured__title">One-Step Volumiser Original 1.0 Blowout Brush</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="12c972d6-be01-11f1-ba3f-a74d59a53f26">            <a href="https://www.amazon.com.au/ghd-Original-Hair-Straightener-Black/dp/B09ZT8GJDZ" data-model-name="Original Hair Straightener" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:53.80%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/2n4ci8BPPEyQ8AwHFWosm5.jpg" alt="Ghd Original Hair Straightener- Professional Hair Straightening Iron and Styling Tool for All Hair Types and Lengths, Black, Universal Voltage, (au Plug)" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>ghd</div>                                        <div class="featured__title">Original Hair Straightener</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="12c97362-be01-11f1-9adb-f557217f4bbf">            <a href="https://www.amazon.com.au/Multi-Styler-High-Speed-Protection-Technology-AMF18A/dp/B0H38SFJDX" data-model-name="Airstyle Pro Multi-Styler Hair Tool" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/uar5Lr86V3Bj38HSGqMUc5.jpg" alt="Dreame Airstyle Pro Multi-Styler Hair Tool, 7-In-1 Hair Dryer &amp; Styling System, High-Speed Airflow Motor, Heat Damage Protection, Fast Drying Technology, Auto-Wrap Curling, Smoothing &amp; Volumising Brushes (purple)- Amf18a" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Dreame</div>                                        <div class="featured__title">Airstyle Pro Multi-Styler Hair Tool</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="12c9740c-be01-11f1-9b63-5910d335cfff">            <a href="https://www.amazon.com.au/ghd-Platinum-Styler-Professional-Straightener/dp/B07GGFXKJ2" data-model-name="Platinum+ Hair Straightener" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:59.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/RqFKJ8BnR2Hu5WRkiXwGQ5.jpg" alt="Ghd Platinum+ Hair Straightener, a Smarter Straightening and Curling Tool for Stronger Strands and Colour Protection, on All Hair Types, Lengths and Textures, Universal Voltage, Au Plug - Black" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>ghd</div>                                        <div class="featured__title">Platinum+ Hair Straightener</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="12c974b6-be01-11f1-88b4-a101dd6aa78b">            <a href="https://www.amazon.com.au/Straight-Straightener-High-Speed-Straightening-Technology/dp/B0GYRCKVD8" data-model-name="Aero Straight Pro Hair Straightener" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/uVu3ToALy9T3LUoC7Vw576.jpg" alt="Dreame Aero Straight Pro Hair Straightener, 120,000rpm High-Speed Air Motor, Dual Airflow Straightening System, Ai Smart Heat Control, Moisture Sensor Technology, Reduced Heat Exposure Styling (pink)" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Dreame</div>                                        <div class="featured__title">Aero Straight Pro Hair Straightener</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="12c97560-be01-11f1-8e34-b3687cb75a3d">            <a href="https://www.amazon.com.au/Remington-Pro-Air-Technology-Professional-Diffuser/dp/B079MQDD3K" data-model-name="Pro-Air Turbo Hair Dryer" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:97.60%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/jHNC4BLNykQqwF9am5gvW5.jpg" alt="Remington Pro-Air Turbo Hair Dryer, D5220au, 2400w (au Plug), Ceramic &amp; Ionic Technology, Salon Professional Results With Less Frizz, Includes Diffuser &amp; Round Brush, Black &amp; Rose Gold" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Remington</div>                                        <div class="featured__title">Pro-Air Turbo Hair Dryer</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="12c975ec-be01-11f1-a706-ff25141d5a74">            <a href="https://www.amazon.com.au/Wavytalk-Thermal-Smoother-Temperature-Settings/dp/B0FHWD6WTG" data-model-name="Thermal Brush" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/NCQbU6oJ7pGGPYTkrVMz96.jpg" alt="Wavytalk Thermal Brush, Blowout Boost Ionic Round Heated Hot Brush, to Make Hair Smoother &amp; Shinier, Easy to Use, Not for Blow Drying, 38mm Barrel, 5 Temperature Settings, Dual Voltage, Pink" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Wavytalk </div>                                        <div class="featured__title">Thermal Brush</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="12c97650-be01-11f1-b568-057a99229aac">            <a href="https://www.amazon.com.au/Dyson-AirwrapTM-Origin-multi-styler-Nickel/dp/B0FHTFM1JG/" data-model-name="Airwrap Origin Multi-Styler and Dryer (nickel/copper)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/pDoumrcLRXhzTb4m3R9op5.jpg" alt="Dyson Airwrap™ Origin Multi-Styler and Dryer (nickel/copper)" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Dyson</div>                                        <div class="featured__title">Airwrap Origin Multi-Styler and Dryer (nickel/copper)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div><h3 class="article-body__section" id="section-best-prime-day-skincare-deals"><span>Best Prime Day Skincare deals</span></h3>        <div class="featured_product_block featured_block_hero" data-id="12c9770e-be01-11f1-bdd4-99201a6a8446">            <a href="https://www.amazon.com.au/Shark-CryoGlow-Anti-Wrinkle-Anti-Acne-FW312ANZ/dp/B0GF7MCPN2" data-model-name="CryoGlow Face Mask " data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:133.33%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/ZVwLKrzAKYi6t4aLhqjTf5.jpg" alt="Shark Cryoglow Face Mask With Undereye Cooling, Blue &amp; Red Light, Infrared Light Therapy, Anti-Wrinkle, Anti-Acne, Fw312anz, Blue Frost" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Shark</div>                                        <div class="featured__title">CryoGlow Face Mask </div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="12c97768-be01-11f1-935d-0392f96629dc">            <a href="https://www.amazon.com.au/Dreame-Chrona-Photon-Anti-Aging-Skincare/dp/B0GYRGJ4G6/" data-model-name="Chrona Photon Anti-Aging Skincare Mask" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/Wte2BJk7RkGFogWYXYmM46.jpg" alt="Dreame Chrona Photon Anti-Aging Skincare Mask" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>dreame</div>                                        <div class="featured__title">Chrona Photon Anti-Aging Skincare Mask</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="12c977cc-be01-11f1-962e-f58e3e4206f1">            <a href="https://www.amazon.com.au/Kitsch-Roller-Stainless-Facial-Cooling/dp/B07VHCNHF6/" data-model-name="Ice Roller for Face " data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/EHGcNEgsZH2RUNaFeXyqv5.jpg" alt="Kitsch Ice Roller for Face – Cooling Face Rollers for Women &amp; Men - Pink" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Kitsch</div>                                        <div class="featured__title">Ice Roller for Face </div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="12c97826-be01-11f1-a314-d94ec7001ce7">            <a href="https://www.amazon.com.au/VRAIKO-Sculpting-Rejuvenation-Anti-Aging-Tightening/dp/B0CM6HWQBH/" data-model-name="Lily Neck Face Massager" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/BL7ee65SMNoSZx8huxZzy5.jpg" alt="Vraiko Lily Neck Face Massager, Face Sculpting Tool, Skin Rejuvenation Device With Thermal, Triple Action Led and Vibration, for Anti-Aging, Lifting and Tightening Sagging Skin (rose Gold)" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>VRAIKO</div>                                        <div class="featured__title">Lily Neck Face Massager</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="12c9788a-be01-11f1-9873-21290b47a894">            <a href="https://www.amazon.com.au/medicube-Silicone-Cleansing-Application-Skincare/dp/B0FFF3757L/" data-model-name="4-In-1 Silicone Jelly Brush for Deep Pore Cleansing" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/NqFBZjLSWFyTBwNBE24PL5.jpg" alt="Medicube 4-In-1 Silicone Jelly Brush for Deep Pore Cleansing, Face Mask Application &amp; Gentle Face Massage | Kbeauty Skincare Tool | Blue, Silicone, 1 Piece" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>medicube</div>                                        <div class="featured__title">4-In-1 Silicone Jelly Brush for Deep Pore Cleansing</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="12c9792a-be01-11f1-97b6-5b01194de982">            <a href="https://www.amazon.com.au/Braun-Silk-Expert-Permanent-Reduction-Attachment/dp/B0H3ZJ3LXB" data-model-name="IPL Silk-Expert Pro 5 Laser Hair Removal" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/HtbSHawahHBC7cpwBZ9os5.jpg" alt="Braun Ipl Silk-Expert Pro 5 Laser Hair Removal at Home, Permanent Hair Reduction for Women and Men, With Premium Pouch, Venus Razor, 3 Attachment Heads, Pl5311 1 Pack" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Braun</div>                                        <div class="featured__title">IPL Silk-Expert Pro 5 Laser Hair Removal</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/wellness/stop-scrolling-here-are-18-prime-day-hair-and-beauty-deals-that-you-dont-wanna-miss</link>
                                                                            <description>
                            <![CDATA[ Looking for some new hair tools or skincare tech this Prime Day? Shop these 18 handpicked deals. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">DDATqskoeAvB4T6GXqnrM5</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/JgyN5D59jE9kME6etkTLeh-1920-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Fri, 02 Oct 2026 02:48:01 +0000</pubDate>                                                                                                                                <updated>Sat, 03 Oct 2026 23:35:30 +0000</updated>
                                                                                                                                            <category><![CDATA[Wellness]]></category>
                                                                                                <author><![CDATA[ lucy.scotting@futurenet.com (Lucy Scotting) ]]></author>                    <dc:creator><![CDATA[ Lucy Scotting ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PQTnAGVHEDNmwJEbWkaqHV-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Lucy Scotting is a staff writer for Tom’s Guide Australia, primarily covering lifestyle, streaming and internet-related news. Lucy started her career writing for HR and staffing industry publications, covering emerging tech, business and finance.&lt;/p&gt;&lt;p&gt;In her spare time, Lucy can be found watching sci-fi movies, working on her dystopian fiction novel (in progress since 2017) or hanging out with her dog, Fletcher. If she’s not found doing any of the above, she’s likely on her next adventure to a new city, country, or continent. &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/JgyN5D59jE9kME6etkTLeh-1920-80.png">
                                                            <media:credit><![CDATA[Future / GHD]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[ghd duet styler]]></media:description>                                                            <media:text><![CDATA[ghd duet styler]]></media:text>
                                <media:title type="plain"><![CDATA[ghd duet styler]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/JgyN5D59jE9kME6etkTLeh-1920-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p><a href="https://www.tomsguide.com/live/news/prime-big-deal-days-2026-au-1" target="_blank">Prime Big Deal Days</a> is in full swing, which means there's no better time than right now to shop all things beauty and haircare at Amazon. </p><p>I review hair tools for a living, and even I’m flabbergasted by how good this week’s deals are. There are discounts on quite literally everything, from <a href="https://www.amazon.com.au/primebigdealdays?ref_=nav_cs_td_peas_dt_cr&amp;bubble-id=deals-collection-beauty&amp;promotionsSearchLastSeenAsin=B07764XQXD&amp;promotionsSearchStartIndex=90&amp;promotionsSearchPageSize=60" target="_blank">K-Beauty and skincare tools to haircare and stylers</a>; your options are truly endless! </p><p>There are even savings to be found on recently released hair tools, including <a href="https://www.amazon.com.au/ghd-Straightener-Transform-Lengths-Textures/dp/B0BZHZ2Y6L/" target="_blank">ghd's new Duet airstylers</a>, <a href="https://www.amazon.com.au/Straight-Straightener-High-Speed-Straightening-Technology/dp/B0GYRCKVD8" target="_blank">Dreame's AI-powered Aero Straight Pro</a> and <a href="https://www.amazon.com.au/Shark-Glossi-Tool-Glosser-Peony/dp/B0GXKZ7CMG" target="_blank">Shark's Glossi hot air brush</a>. And if you've been considering stepping into the world of LED skincare tech, some tidy savings are going on <a href="https://www.amazon.com.au/Shark-CryoGlow-Anti-Wrinkle-Anti-Acne-FW312ANZ/dp/B0GF7MCPN2" target="_blank">Shark's CryoGlow mask</a> and <a href="https://www.amazon.com.au/Dreame-Chrona-Photon-Anti-Aging-Skincare/dp/B0GYRGJ4G6/" target="_blank">Dreame's Chroma Photon mask</a>.  </p><p><strong>• </strong><a href="https://www.amazon.com.au/primebigdealdays" target="_blank"><strong>Shop Amazon's full Prime Day sale</strong></a></p><p>I've spotted 18 of the best hair tool and skincare deals and popped them for your perusal below. It's worth noting, though, that these discounts won't last long, as they're set to expire on <strong>Monday, October 5.</strong></p><h3 class="article-body__section" id="section-best-prime-day-hairtool-deals"><span>Best Prime Day Hairtool deals</span></h3>        <div class="featured_product_block featured_block_hero" data-id="12c96f70-be01-11f1-8678-afdeb895f2d3">            <a href="https://www.amazon.com.au/ghd-Straightener-Transform-Lengths-Textures/dp/B0BZHZ2Y6L/" data-model-name="Duet Style 2-In-1 Hair Dryer and Hair Straightener" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/hR9fRYa3gDrt59Axfo9WT5.jpg" alt="Ghd Duet Style, 2-In-1 Hair Dryer and Hair Straightener, Transform Hair From Wet to Dry in One Tool, on All Hair Types, Lengths and Textures, White (au Plug)" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Ghd</div>                                        <div class="featured__title">Duet Style 2-In-1 Hair Dryer and Hair Straightener</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="12c97024-be01-11f1-9a92-51fe8dec0fb3">            <a href="https://www.amazon.com.au/Shark-Glossi-Tool-Glosser-Peony/dp/B0GXKZ7CMG" data-model-name="Glossi 2-In-1 Hot Tool &amp; Air Glosser" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/vSGDTL3iC5mePKBuX3WGD6.jpg" alt="Shark Glossi 2-In-1 Hot Tool &amp; Air Glosser, Peony Pink" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Shark</div>                                        <div class="featured__title">Glossi 2-In-1 Hot Tool &amp; Air Glosser</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="12c970c4-be01-11f1-961a-6b9bce458336">            <a href="https://www.amazon.com.au/TYMO-Automatic-Rotating-Anti-Scald-Tangle-Free/dp/B0DPZLWX8J" data-model-name="Curlpro Plus Curling Iron" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/BFAjJtWLbKdpCHDkYPReZ5.jpg" alt="Tymo Curlpro Plus Curling Iron Curling Tong Hair Curler, Automatic Rotating, Long Barrel, Ceramic, 600m Ionic, Dual Voltage, for Long Hair, Anti-Scald, Tangle-Free, Upgraded, for Women, Gold, 25mm" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>TYMO</div>                                        <div class="featured__title">Curlpro Plus Curling Iron</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="12c971a0-be01-11f1-a04d-f94b46378339">            <a href="https://www.amazon.com.au/High-Speed-Negative-Ion-Professional-Temperature-Lightweight/dp/B0CNRZ56ZR" data-model-name="Gleam Hair Dryer" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/2zwtqQpEeYmfEBU6DcKpi5.jpg" alt="Dreame Hair Gleam Hair Dryer, 110000 Rpm High-Speed Brushless Motor Au Version, 200 Million Negative-Ion Hair Dryer With Magnetic Nozzle, Professional Blow Dryer With Constant Temperature Control" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Dreame</div>                                        <div class="featured__title">Gleam Hair Dryer</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="12c97236-be01-11f1-aeff-07cc1726f785">            <a href="https://www.amazon.com.au/Revlon-One-Step-Volumiser-Original-Blowout/dp/B0C6FK8644" data-model-name="One-Step Volumiser Original 1.0 Blowout Brush" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/6X3cbRHoXcJetGHY7dYBNj.jpg" alt="Revlon One-Step Volumiser Original 1.0 Blowout Brush, Pink" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Revlon</div>                                        <div class="featured__title">One-Step Volumiser Original 1.0 Blowout Brush</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="12c972d6-be01-11f1-ba3f-a74d59a53f26">            <a href="https://www.amazon.com.au/ghd-Original-Hair-Straightener-Black/dp/B09ZT8GJDZ" data-model-name="Original Hair Straightener" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:53.80%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/2n4ci8BPPEyQ8AwHFWosm5.jpg" alt="Ghd Original Hair Straightener- Professional Hair Straightening Iron and Styling Tool for All Hair Types and Lengths, Black, Universal Voltage, (au Plug)" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>ghd</div>                                        <div class="featured__title">Original Hair Straightener</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="12c97362-be01-11f1-9adb-f557217f4bbf">            <a href="https://www.amazon.com.au/Multi-Styler-High-Speed-Protection-Technology-AMF18A/dp/B0H38SFJDX" data-model-name="Airstyle Pro Multi-Styler Hair Tool" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/uar5Lr86V3Bj38HSGqMUc5.jpg" alt="Dreame Airstyle Pro Multi-Styler Hair Tool, 7-In-1 Hair Dryer &amp; Styling System, High-Speed Airflow Motor, Heat Damage Protection, Fast Drying Technology, Auto-Wrap Curling, Smoothing &amp; Volumising Brushes (purple)- Amf18a" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Dreame</div>                                        <div class="featured__title">Airstyle Pro Multi-Styler Hair Tool</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="12c9740c-be01-11f1-9b63-5910d335cfff">            <a href="https://www.amazon.com.au/ghd-Platinum-Styler-Professional-Straightener/dp/B07GGFXKJ2" data-model-name="Platinum+ Hair Straightener" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:59.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/RqFKJ8BnR2Hu5WRkiXwGQ5.jpg" alt="Ghd Platinum+ Hair Straightener, a Smarter Straightening and Curling Tool for Stronger Strands and Colour Protection, on All Hair Types, Lengths and Textures, Universal Voltage, Au Plug - Black" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>ghd</div>                                        <div class="featured__title">Platinum+ Hair Straightener</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="12c974b6-be01-11f1-88b4-a101dd6aa78b">            <a href="https://www.amazon.com.au/Straight-Straightener-High-Speed-Straightening-Technology/dp/B0GYRCKVD8" data-model-name="Aero Straight Pro Hair Straightener" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/uVu3ToALy9T3LUoC7Vw576.jpg" alt="Dreame Aero Straight Pro Hair Straightener, 120,000rpm High-Speed Air Motor, Dual Airflow Straightening System, Ai Smart Heat Control, Moisture Sensor Technology, Reduced Heat Exposure Styling (pink)" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Dreame</div>                                        <div class="featured__title">Aero Straight Pro Hair Straightener</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="12c97560-be01-11f1-8e34-b3687cb75a3d">            <a href="https://www.amazon.com.au/Remington-Pro-Air-Technology-Professional-Diffuser/dp/B079MQDD3K" data-model-name="Pro-Air Turbo Hair Dryer" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:97.60%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/jHNC4BLNykQqwF9am5gvW5.jpg" alt="Remington Pro-Air Turbo Hair Dryer, D5220au, 2400w (au Plug), Ceramic &amp; Ionic Technology, Salon Professional Results With Less Frizz, Includes Diffuser &amp; Round Brush, Black &amp; Rose Gold" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Remington</div>                                        <div class="featured__title">Pro-Air Turbo Hair Dryer</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="12c975ec-be01-11f1-a706-ff25141d5a74">            <a href="https://www.amazon.com.au/Wavytalk-Thermal-Smoother-Temperature-Settings/dp/B0FHWD6WTG" data-model-name="Thermal Brush" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/NCQbU6oJ7pGGPYTkrVMz96.jpg" alt="Wavytalk Thermal Brush, Blowout Boost Ionic Round Heated Hot Brush, to Make Hair Smoother &amp; Shinier, Easy to Use, Not for Blow Drying, 38mm Barrel, 5 Temperature Settings, Dual Voltage, Pink" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Wavytalk </div>                                        <div class="featured__title">Thermal Brush</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="12c97650-be01-11f1-b568-057a99229aac">            <a href="https://www.amazon.com.au/Dyson-AirwrapTM-Origin-multi-styler-Nickel/dp/B0FHTFM1JG/" data-model-name="Airwrap Origin Multi-Styler and Dryer (nickel/copper)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/pDoumrcLRXhzTb4m3R9op5.jpg" alt="Dyson Airwrap™ Origin Multi-Styler and Dryer (nickel/copper)" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Dyson</div>                                        <div class="featured__title">Airwrap Origin Multi-Styler and Dryer (nickel/copper)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div><h3 class="article-body__section" id="section-best-prime-day-skincare-deals"><span>Best Prime Day Skincare deals</span></h3>        <div class="featured_product_block featured_block_hero" data-id="12c9770e-be01-11f1-bdd4-99201a6a8446">            <a href="https://www.amazon.com.au/Shark-CryoGlow-Anti-Wrinkle-Anti-Acne-FW312ANZ/dp/B0GF7MCPN2" data-model-name="CryoGlow Face Mask " data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:133.33%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/ZVwLKrzAKYi6t4aLhqjTf5.jpg" alt="Shark Cryoglow Face Mask With Undereye Cooling, Blue &amp; Red Light, Infrared Light Therapy, Anti-Wrinkle, Anti-Acne, Fw312anz, Blue Frost" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Shark</div>                                        <div class="featured__title">CryoGlow Face Mask </div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="12c97768-be01-11f1-935d-0392f96629dc">            <a href="https://www.amazon.com.au/Dreame-Chrona-Photon-Anti-Aging-Skincare/dp/B0GYRGJ4G6/" data-model-name="Chrona Photon Anti-Aging Skincare Mask" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/Wte2BJk7RkGFogWYXYmM46.jpg" alt="Dreame Chrona Photon Anti-Aging Skincare Mask" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>dreame</div>                                        <div class="featured__title">Chrona Photon Anti-Aging Skincare Mask</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="12c977cc-be01-11f1-962e-f58e3e4206f1">            <a href="https://www.amazon.com.au/Kitsch-Roller-Stainless-Facial-Cooling/dp/B07VHCNHF6/" data-model-name="Ice Roller for Face " data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/EHGcNEgsZH2RUNaFeXyqv5.jpg" alt="Kitsch Ice Roller for Face – Cooling Face Rollers for Women &amp; Men - Pink" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Kitsch</div>                                        <div class="featured__title">Ice Roller for Face </div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="12c97826-be01-11f1-a314-d94ec7001ce7">            <a href="https://www.amazon.com.au/VRAIKO-Sculpting-Rejuvenation-Anti-Aging-Tightening/dp/B0CM6HWQBH/" data-model-name="Lily Neck Face Massager" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/BL7ee65SMNoSZx8huxZzy5.jpg" alt="Vraiko Lily Neck Face Massager, Face Sculpting Tool, Skin Rejuvenation Device With Thermal, Triple Action Led and Vibration, for Anti-Aging, Lifting and Tightening Sagging Skin (rose Gold)" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>VRAIKO</div>                                        <div class="featured__title">Lily Neck Face Massager</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="12c9788a-be01-11f1-9873-21290b47a894">            <a href="https://www.amazon.com.au/medicube-Silicone-Cleansing-Application-Skincare/dp/B0FFF3757L/" data-model-name="4-In-1 Silicone Jelly Brush for Deep Pore Cleansing" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/NqFBZjLSWFyTBwNBE24PL5.jpg" alt="Medicube 4-In-1 Silicone Jelly Brush for Deep Pore Cleansing, Face Mask Application &amp; Gentle Face Massage | Kbeauty Skincare Tool | Blue, Silicone, 1 Piece" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>medicube</div>                                        <div class="featured__title">4-In-1 Silicone Jelly Brush for Deep Pore Cleansing</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="12c9792a-be01-11f1-97b6-5b01194de982">            <a href="https://www.amazon.com.au/Braun-Silk-Expert-Permanent-Reduction-Attachment/dp/B0H3ZJ3LXB" data-model-name="IPL Silk-Expert Pro 5 Laser Hair Removal" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/HtbSHawahHBC7cpwBZ9os5.jpg" alt="Braun Ipl Silk-Expert Pro 5 Laser Hair Removal at Home, Permanent Hair Reduction for Women and Men, With Premium Pouch, Venus Razor, 3 Attachment Heads, Pl5311 1 Pack" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Braun</div>                                        <div class="featured__title">IPL Silk-Expert Pro 5 Laser Hair Removal</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I went hands-on with Amazon’s new Kindles — and this one feature has me excited ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Amazon’s new Kindle lineup isn’t just a simple refresh; the company’s famous e-readers pack a slew of new, long-awaited updates. These include thinner and lighter builds, aluminum chassis variants, and a repositioned power button. While the new Kindle, Kindle Paperwhite, and Kindle Colorsoft are now pricier, the upgrades are meaningful.</p><p>I got to check out the new Kindles firsthand during a recent event and was impressed by what I saw. Updating Kindles can be tricky as the devices are darn near perfect e-readers already, but some of the additions do make for a more pleasing reading experience. I’ve been an avid Kindle user for the better part of a decade, so the upgrades are certainly worth getting excited about.</p><p>Here’s everything you need to know about the new Kindles.</p>                    <div class= "tiktok-wrapper" style="min-height: 750px;"><blockquote class="tiktok-embed" cite="https://www.tiktok.com/@tomsguide/video/7691686775978249485" data-video-id="7691686775978249485" 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="♬ Coffee &amp; Vinyl - Emi Izumi" href="https://www.tiktok.com/music/Coffee-Vinyl-7629028310059599882">♬ Coffee &amp; Vinyl - Emi Izumi</a></section>                    </blockquote></div>                <h2 id="price-and-availability-2">Price and availability</h2><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="pphbKgeWvDmaVKFzDLrpcN" name="2026 Amazon Kindle lineup-14" alt="Amazon Kindle 2026" src="https://cdn.mos.cms.futurecdn.net/pphbKgeWvDmaVKFzDLrpcN-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>Amazon is releasing three new Kindles, with the basic Kindle available right now, and the Paperwhite and Colorsoft arriving on October 28 — right in time for the busy holiday season.</p><p>The entry-level 6-inch Kindle starts at $149, comes with 16GB of storage, and includes lock screen ads. The aluminum model starts at $189, packs 32GB of storage, and is ad-free. It also supports magnetic accessories, such as covers. The entry-level model comes in Ube and Graphite colors, while the aluminum version comes in Alpine Sky Aluminum and Seaglass Green.</p><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="B5FgfifLftnYqyTsSqFV9f" name="2026 Amazon Kindle lineup-7" alt="Amazon Kindle 2026" src="https://cdn.mos.cms.futurecdn.net/B5FgfifLftnYqyTsSqFV9f-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>Next up is the 7-inch Kindle Paperwhite, which now starts at $199 with 16GB of storage and ads. The $249 Signature Edition features an aluminum chassis, 32GB of storage, an auto-adjusting light sensor, and a built-in accelerometer. It replaces standard Qi wireless charging with a pogo pin dock system, but you can also charge it via the USB-C port. The starting color is Graphite, and the aluminum colors are Graphite and Seaglass Green.</p><p>Last but not least is the 7-inch Kindle Colorsoft, which starts at $289 with 16GB of RAM. Like the other models, there will also be an aluminum model, which will cost $319 and pack 32GB of storage. Colors are the same as the Paperwhite, though the aluminum also comes in Fig instead of Seaglass Green.</p><p>Expect new accessories as well. This includes the $34 Kindle Click, which works with all the new models and current-generation Kindles. It has assignable page forward/backward buttons and a dedicated volume-style wheel for brightness controls. And for Kindle Oasis fans, the $79 Page-Turn Button Case (exclusive to Signature Series devices) features physical, tactile page-turn buttons directly on the case bezel.</p><h2 id="hands-on-with-the-new-kindles">Hands-on with the new Kindles</h2><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="rB3GAhXt6M5moit9mHm7ZT" name="2026 Amazon Kindle lineup-13" alt="Amazon Kindle 2026" src="https://cdn.mos.cms.futurecdn.net/rB3GAhXt6M5moit9mHm7ZT-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>All of the new Kindles are now thinner and lighter than their respective predecessors. You won’t notice that at a glance, but when I held the new basic Kindle against the previous model, the difference wasn’t stark but certainly noticeable. The aluminum versions are naturally heavier, but not by much. Thanks to the new design, you should be able to read more comfortably for longer.</p><p>Each model comes with an assortment of new colors, engineered so the device’s color doesn’t bleed onto the display. That’s why prior Kindles had black bezels that absorb light. Books now open about 30% faster on the base Kindle, and I noticed the difference right away since I use Kindles so much. Your smartphone still refreshes faster, but I appreciate the speedier page turns.</p><p>Except for the basic Kindle, the Paperwhite and Colorsoft are both fully waterproof (IPX8). So if you want to read in the bath, you can do so without worrying about the Kindle falling into the water.</p><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="9QHxAFws65zbtBin2FxCxk" name="2026 Amazon Kindle lineup-5" alt="Amazon Kindle 2026" src="https://cdn.mos.cms.futurecdn.net/9QHxAFws65zbtBin2FxCxk-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 aluminum models are my favorites since they feel like holding a smartphone (which Amazon deliberately wanted). Even the basic Kindle feels more premium thanks to its smooth, sturdy aluminum chassis. That’s not to say the non-aluminum models feel bad to hold, but the aluminum Kindles just step things up. I typically keep Kindles in cases, but I might not with the aluminum models.</p><p>Speaking of cases, there are the standard Kindle cases that the e-reader slots into. They’re also color-coded to the Kindle’s specific color, which is a nice touch. The ones I liked most were the new magnetic cases for the aluminum models, since they magnetically snap into place.</p><p>The biggest game-changer for me is the power button, which, like with the Kindle Scribe, is now located on the right-hand side instead of at the bottom. Many users like me have long asked for this, since accidentally turning the Kindle off has always been frustrating. You might not think this is a big deal, but trust me, it absolutely is.</p><h2 id="outlook-2">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:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="vD8rXXFTUQNGECaJr9cQWY" name="2026 Amazon Kindle lineup-11" alt="Amazon Kindle 2026" src="https://cdn.mos.cms.futurecdn.net/vD8rXXFTUQNGECaJr9cQWY-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>Kindles are my favorite way to read novels, so I’m glad Amazon keeps improving a device that is already excellent at what it does. The aluminum models look and feel great, and I love the repositioned power button. Again, I’m not enamored with the higher prices, but it’s hard to complain much thanks to these upgrades.</p><p>We’ll have full reviews of the new Kindles for you soon, 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/computing/e-readers/i-just-tested-the-kindle-scribe-and-it-will-be-hard-going-back-to-the-paperwhite">I just tested the Kindle Scribe — and it will be hard going back to the Paperwhite</a></li><li><a href="https://www.tomsguide.com/us/best-e-readers,review-2766.html">Find the best Kindle for you with our quick quiz</a></li><li><a href="https://www.tomsguide.com/computing/e-readers/how-to-read-library-books-for-free-on-your-kindle-or-other-e-reader">How to read library books for free on your Kindle or other e-reader</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/e-readers/i-went-hands-on-with-amazons-new-kindles-and-this-one-feature-has-me-excited</link>
                                                                            <description>
                            <![CDATA[ Amazon has unveiled its latest Kindles, featuring a thinner, lighter design, sharper displays, faster page turns, and a repositioned power button. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">B6epp964YnmERAUpFbtDvm</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/HcJsTxRU3rgkDWWmDc4qtE-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 01 Oct 2026 13:00:00 +0000</pubDate>                                                                                                                                <updated>Thu, 01 Oct 2026 19:21:22 +0000</updated>
                                                                                                                                            <category><![CDATA[E-Readers]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Tablets]]></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/HcJsTxRU3rgkDWWmDc4qtE-1920-80.jpg">
                                                            <media:credit><![CDATA[Tom&amp;#39;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Amazon Kindle 2026]]></media:description>                                                            <media:text><![CDATA[Amazon Kindle 2026]]></media:text>
                                <media:title type="plain"><![CDATA[Amazon Kindle 2026]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/HcJsTxRU3rgkDWWmDc4qtE-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Amazon’s new Kindle lineup isn’t just a simple refresh; the company’s famous e-readers pack a slew of new, long-awaited updates. These include thinner and lighter builds, aluminum chassis variants, and a repositioned power button. While the new Kindle, Kindle Paperwhite, and Kindle Colorsoft are now pricier, the upgrades are meaningful.</p><p>I got to check out the new Kindles firsthand during a recent event and was impressed by what I saw. Updating Kindles can be tricky as the devices are darn near perfect e-readers already, but some of the additions do make for a more pleasing reading experience. I’ve been an avid Kindle user for the better part of a decade, so the upgrades are certainly worth getting excited about.</p><p>Here’s everything you need to know about the new Kindles.</p>                    <div class= "tiktok-wrapper" style="min-height: 750px;"><blockquote class="tiktok-embed" cite="https://www.tiktok.com/@tomsguide/video/7691686775978249485" data-video-id="7691686775978249485" 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="♬ Coffee &amp; Vinyl - Emi Izumi" href="https://www.tiktok.com/music/Coffee-Vinyl-7629028310059599882">♬ Coffee &amp; Vinyl - Emi Izumi</a></section>                    </blockquote></div>                <h2 id="price-and-availability-2">Price and availability</h2><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="pphbKgeWvDmaVKFzDLrpcN" name="2026 Amazon Kindle lineup-14" alt="Amazon Kindle 2026" src="https://cdn.mos.cms.futurecdn.net/pphbKgeWvDmaVKFzDLrpcN-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>Amazon is releasing three new Kindles, with the basic Kindle available right now, and the Paperwhite and Colorsoft arriving on October 28 — right in time for the busy holiday season.</p><p>The entry-level 6-inch Kindle starts at $149, comes with 16GB of storage, and includes lock screen ads. The aluminum model starts at $189, packs 32GB of storage, and is ad-free. It also supports magnetic accessories, such as covers. The entry-level model comes in Ube and Graphite colors, while the aluminum version comes in Alpine Sky Aluminum and Seaglass Green.</p><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="B5FgfifLftnYqyTsSqFV9f" name="2026 Amazon Kindle lineup-7" alt="Amazon Kindle 2026" src="https://cdn.mos.cms.futurecdn.net/B5FgfifLftnYqyTsSqFV9f-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>Next up is the 7-inch Kindle Paperwhite, which now starts at $199 with 16GB of storage and ads. The $249 Signature Edition features an aluminum chassis, 32GB of storage, an auto-adjusting light sensor, and a built-in accelerometer. It replaces standard Qi wireless charging with a pogo pin dock system, but you can also charge it via the USB-C port. The starting color is Graphite, and the aluminum colors are Graphite and Seaglass Green.</p><p>Last but not least is the 7-inch Kindle Colorsoft, which starts at $289 with 16GB of RAM. Like the other models, there will also be an aluminum model, which will cost $319 and pack 32GB of storage. Colors are the same as the Paperwhite, though the aluminum also comes in Fig instead of Seaglass Green.</p><p>Expect new accessories as well. This includes the $34 Kindle Click, which works with all the new models and current-generation Kindles. It has assignable page forward/backward buttons and a dedicated volume-style wheel for brightness controls. And for Kindle Oasis fans, the $79 Page-Turn Button Case (exclusive to Signature Series devices) features physical, tactile page-turn buttons directly on the case bezel.</p><h2 id="hands-on-with-the-new-kindles">Hands-on with the new Kindles</h2><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="rB3GAhXt6M5moit9mHm7ZT" name="2026 Amazon Kindle lineup-13" alt="Amazon Kindle 2026" src="https://cdn.mos.cms.futurecdn.net/rB3GAhXt6M5moit9mHm7ZT-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>All of the new Kindles are now thinner and lighter than their respective predecessors. You won’t notice that at a glance, but when I held the new basic Kindle against the previous model, the difference wasn’t stark but certainly noticeable. The aluminum versions are naturally heavier, but not by much. Thanks to the new design, you should be able to read more comfortably for longer.</p><p>Each model comes with an assortment of new colors, engineered so the device’s color doesn’t bleed onto the display. That’s why prior Kindles had black bezels that absorb light. Books now open about 30% faster on the base Kindle, and I noticed the difference right away since I use Kindles so much. Your smartphone still refreshes faster, but I appreciate the speedier page turns.</p><p>Except for the basic Kindle, the Paperwhite and Colorsoft are both fully waterproof (IPX8). So if you want to read in the bath, you can do so without worrying about the Kindle falling into the water.</p><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="9QHxAFws65zbtBin2FxCxk" name="2026 Amazon Kindle lineup-5" alt="Amazon Kindle 2026" src="https://cdn.mos.cms.futurecdn.net/9QHxAFws65zbtBin2FxCxk-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 aluminum models are my favorites since they feel like holding a smartphone (which Amazon deliberately wanted). Even the basic Kindle feels more premium thanks to its smooth, sturdy aluminum chassis. That’s not to say the non-aluminum models feel bad to hold, but the aluminum Kindles just step things up. I typically keep Kindles in cases, but I might not with the aluminum models.</p><p>Speaking of cases, there are the standard Kindle cases that the e-reader slots into. They’re also color-coded to the Kindle’s specific color, which is a nice touch. The ones I liked most were the new magnetic cases for the aluminum models, since they magnetically snap into place.</p><p>The biggest game-changer for me is the power button, which, like with the Kindle Scribe, is now located on the right-hand side instead of at the bottom. Many users like me have long asked for this, since accidentally turning the Kindle off has always been frustrating. You might not think this is a big deal, but trust me, it absolutely is.</p><h2 id="outlook-2">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:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="vD8rXXFTUQNGECaJr9cQWY" name="2026 Amazon Kindle lineup-11" alt="Amazon Kindle 2026" src="https://cdn.mos.cms.futurecdn.net/vD8rXXFTUQNGECaJr9cQWY-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>Kindles are my favorite way to read novels, so I’m glad Amazon keeps improving a device that is already excellent at what it does. The aluminum models look and feel great, and I love the repositioned power button. Again, I’m not enamored with the higher prices, but it’s hard to complain much thanks to these upgrades.</p><p>We’ll have full reviews of the new Kindles for you soon, 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/computing/e-readers/i-just-tested-the-kindle-scribe-and-it-will-be-hard-going-back-to-the-paperwhite">I just tested the Kindle Scribe — and it will be hard going back to the Paperwhite</a></li><li><a href="https://www.tomsguide.com/us/best-e-readers,review-2766.html">Find the best Kindle for you with our quick quiz</a></li><li><a href="https://www.tomsguide.com/computing/e-readers/how-to-read-library-books-for-free-on-your-kindle-or-other-e-reader">How to read library books for free on your Kindle or other e-reader</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Amazon AU's October Prime sale is bringing the heat with some smokin' air fryer discounts — save up to 66% off the RRP ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Cooking has never been quicker, and if you're anything like me, an air fryer has probably become one of the hardest-working appliances in your kitchen. Thanks to Amazon Australia's <a href="https://www.tomsguide.com/live/news/prime-big-deal-days-2026-au-1" target="_blank">Prime Big Deal Days</a> sale, now's a great time to upgrade your current model or finally see what all the fuss is about.</p><p>I've tested my fair share of kitchen gadgets over the years, and few have made a bigger impact on weeknight cooking than a good air fryer. They heat up faster than a conventional oven, use less energy and make everything from chips to chicken wings far less hassle to prepare.</p><p>The category has come a long way, too. Today's best air fryers offer larger capacities, smarter cooking modes and dual-basket designs that let you cook different foods at different temperatures simultaneously. That's a game-changer when you're trying to get dinner on the table without juggling multiple appliances.</p><p>That's what makes this year's Prime Big Deal Days air fryer deals worth a look. Amazon AU has discounted models from some of the biggest names in the category, including Ninja and Philips, with standout offers seeing the <a href="https://www.amazon.com.au/dp/B0DM5LBBVW/?th=1" target="_blank">Ninja DoubleStack XXXL 9.5L Air Fryer</a> reduced to <a href="https://www.amazon.com.au/dp/B0DM5LBBVW/?th=1" target="_blank">AU$170.05</a> from its AU$499.99 RRP — an all-time Amazon low. Meanwhile, the <a href="https://www.amazon.com.au/Philips-Technology-Versatile-NA352-00/dp/B0D2XXZJKD?th=1" target="_blank">Philips 3000 Series Dual Basket Air Fryer</a> has is down 57% to <a href="https://www.amazon.com.au/Philips-Technology-Versatile-NA352-00/dp/B0D2XXZJKD?th=1" target="_blank">AU$170.05</a> versus its AU$399 RRP — just a tenner shy of its lowest-ever Amazon price back in July. </p><p>Those savings are calculated against each model's full recommended retail price, and while it's fair to say that most air fryers rarely sell at full ticket price these days, these Amazon sale discounts are still among the most competitive prices I've seen on highly rated models from trusted brands.</p><p>Of course, those are just some of the top air fryer deals I've spotted during Amazon's sale — you may find other options which are better suited to your needs below, or alternatively <a href="https://www.amazon.com.au/gp/bestsellers/home/10351598051/ref=zg_bs_nav_home_4_5016761051">check out the current best-selling air fryers at Amazon</a> to see what everyone else is buying.</p><div class="product"><a data-dimension112="1be7dcea-bd57-11f1-9363-116282c54f95" data-action="Deal Block" data-label="Air Fryer Pro XL (6.2L)" data-dimension48="Air Fryer Pro XL (6.2L)" data-dimension25="$117.80" href="https://www.amazon.com.au/Ninja-Pro-XL-Air-Fryer/dp/B0DM5JLTCT" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1509px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="V3oaNnwjTRyXY9XxwR5u56" name="1719847932.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/V3oaNnwjTRyXY9XxwR5u56-1920-80.jpg" mos="" align="middle" fullscreen="" width="1509" height="1509" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/Ninja-Pro-XL-Air-Fryer/dp/B0DM5JLTCT" target="_blank" rel="nofollow" data-dimension112="1be7dcea-bd57-11f1-9363-116282c54f95" data-action="Deal Block" data-label="Air Fryer Pro XL (6.2L)" data-dimension48="Air Fryer Pro XL (6.2L)" data-dimension25="$117.80">Air Fryer Pro XL (6.2L): was $199.99 now $117.80</a></strong><br />We think the regular-sized Ninja AF Pro is <a href="https://www.tomsguide.com/home/home-appliances/which-ninja-air-fryer-should-you-buy#section-best-ninja-air-fryer-for-most-people">Ninja's best air fryer</a> thanks to its quiet cooking, its small size and easy controls. But, while you'll have to deal with a slightly bigger frame, we think this huge saving on the Pro's larger 6.2L XL sibling makes it the air fryer to have. It offers all the same positives we enjoyed about the base model, with the ability to cook for one or two more people. <a class="view-deal button" href="https://www.amazon.com.au/Ninja-Pro-XL-Air-Fryer/dp/B0DM5JLTCT" target="_blank" rel="nofollow" data-dimension112="1be7dcea-bd57-11f1-9363-116282c54f95" data-action="Deal Block" data-label="Air Fryer Pro XL (6.2L)" data-dimension48="Air Fryer Pro XL (6.2L)" data-dimension25="$117.80">View Deal</a></p></div><div class="product"><a data-dimension112="1be7dd6c-bd57-11f1-978f-c91eeb291d0d" data-action="Deal Block" data-label="DoubleStack Air Fryer XXXL (9.5L)" data-dimension48="DoubleStack Air Fryer XXXL (9.5L)" data-dimension25="$170.05" href="https://www.amazon.com.au/dp/B0DM5LBBVW/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="H7TVEoDX26dUtCAnyg62Hn" name="ninja-doublestack-air-fryer" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/H7TVEoDX26dUtCAnyg62Hn-1920-80.png" mos="" align="middle" fullscreen="" width="1000" height="1000" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/dp/B0DM5LBBVW/" target="_blank" rel="nofollow" data-dimension112="1be7dd6c-bd57-11f1-978f-c91eeb291d0d" data-action="Deal Block" data-label="DoubleStack Air Fryer XXXL (9.5L)" data-dimension48="DoubleStack Air Fryer XXXL (9.5L)" data-dimension25="$170.05">DoubleStack Air Fryer XXXL (9.5L): was $499.99 now $170.05</a></strong><br />Roast, bake, or crisp twice as many dishes with Ninja's DoubleStack air fryer tower. This model houses two independently controlled drawers that can cook up to four different foods at once, all while taking up less counter space than a typical extra-large air fryer. With a massive 9.5L capacity, you can even control the timings so that your meal is done at the exact same time. Although the price of this model has fluctuated often throughout the year, this is the lowest price it's ever been on Amazon.<a class="view-deal button" href="https://www.amazon.com.au/dp/B0DM5LBBVW/" target="_blank" rel="nofollow" data-dimension112="1be7dd6c-bd57-11f1-978f-c91eeb291d0d" data-action="Deal Block" data-label="DoubleStack Air Fryer XXXL (9.5L)" data-dimension48="DoubleStack Air Fryer XXXL (9.5L)" data-dimension25="$170.05">View Deal</a></p></div><div class="product"><a data-dimension112="1be7dde4-bd57-11f1-a047-b55f4a73e091" data-action="Deal Block" data-label="3000 Series dual basket air fryer (9L)" data-dimension48="3000 Series dual basket air fryer (9L)" data-dimension25="$170.05" href="https://www.amazon.com.au/Philips-Technology-Versatile-NA352-00/dp/B0D2XXZJKD" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2048px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="TUDuUF3dcqpmVa8E28rf5J" name="Philips 3000 Series dual basket air fryer.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/TUDuUF3dcqpmVa8E28rf5J-1920-80.jpg" mos="" align="middle" fullscreen="" width="2048" height="2048" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/Philips-Technology-Versatile-NA352-00/dp/B0D2XXZJKD" target="_blank" rel="nofollow" data-dimension112="1be7dde4-bd57-11f1-a047-b55f4a73e091" data-action="Deal Block" data-label="3000 Series dual basket air fryer (9L)" data-dimension48="3000 Series dual basket air fryer (9L)" data-dimension25="$170.05">3000 Series dual basket air fryer (9L): was $399 now $170.05</a></strong><br />Score a great deal on this dual drawer air fryer from Philips. Available in both charcoal grey/copper and <a href="https://www.amazon.com.au/Philips-Technology-Versatile-NA352-00/dp/B0DK74HSQC" target="_blank">white/champagne</a> colourways (the latter is slightly more expensive), this compact oven can fry, bake, and grill 9L of food at the same time. It's worth noting that one drawer is smaller than the other, making it best suited to side dishes like hot chips or veggies. While it was slightly cheaper for Prime Day, this is still a great price, even if it's rarely listed at full RRP.<a class="view-deal button" href="https://www.amazon.com.au/Philips-Technology-Versatile-NA352-00/dp/B0D2XXZJKD" target="_blank" rel="nofollow" data-dimension112="1be7dde4-bd57-11f1-a047-b55f4a73e091" data-action="Deal Block" data-label="3000 Series dual basket air fryer (9L)" data-dimension48="3000 Series dual basket air fryer (9L)" data-dimension25="$170.05">View Deal</a></p></div><div class="product"><a data-dimension112="1be7de5c-bd57-11f1-9b2a-e945ba175e94" data-action="Deal Block" data-label="Crispi 4-in-1 Air Fryer (10.4L)" data-dimension48="Crispi 4-in-1 Air Fryer (10.4L)" data-dimension25="$178" href="https://www.amazon.com.au/Ninja-CleanCrispTM-Functionality-Leak-Proof-FN101SGANZ/dp/B0FLDTL1TC" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1509px;"><p class="vanilla-image-block" style="padding-top:99.34%;"><img id="eEfVJnAAG2Hmtvf8eUP5dk" name="Ninja Crispi.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/eEfVJnAAG2Hmtvf8eUP5dk-1920-80.jpg" mos="" align="middle" fullscreen="" width="1509" height="1499" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/Ninja-CleanCrispTM-Functionality-Leak-Proof-FN101SGANZ/dp/B0FLDTL1TC" target="_blank" rel="nofollow" data-dimension112="1be7de5c-bd57-11f1-9b2a-e945ba175e94" data-action="Deal Block" data-label="Crispi 4-in-1 Air Fryer (10.4L)" data-dimension48="Crispi 4-in-1 Air Fryer (10.4L)" data-dimension25="$178">Crispi 4-in-1 Air Fryer (10.4L): was $299.99 now $178</a></strong><br />Ninja's original glass air fryer packs 1,700W of power into a portable design, with two borosilicate glass containers that serve as both frying baskets and serving dishes. The borosilicate means they can withstand extreme temperatures, making it easy to take your favourite foods from frozen to crispy. The Crispi also comes with two removable crisping grates and two snap-on container lids for easy food storage post-feast. While this model hasn't been listed at its full RRP since March, it's still great to see it back at its all-time low price from this past July.<a class="view-deal button" href="https://www.amazon.com.au/Ninja-CleanCrispTM-Functionality-Leak-Proof-FN101SGANZ/dp/B0FLDTL1TC" target="_blank" rel="nofollow" data-dimension112="1be7de5c-bd57-11f1-9b2a-e945ba175e94" data-action="Deal Block" data-label="Crispi 4-in-1 Air Fryer (10.4L)" data-dimension48="Crispi 4-in-1 Air Fryer (10.4L)" data-dimension25="$178">View Deal</a></p></div><div class="product"><a data-dimension112="1be7ded4-bd57-11f1-ac52-5930a759ecda" data-action="Deal Block" data-label="Crispi Pro 6-In-1 Air Fryer (5.7L)" data-dimension48="Crispi Pro 6-In-1 Air Fryer (5.7L)" data-dimension25="$290.70" href="https://www.amazon.com.au/dp/B0GXL6CK8Q" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1568px;"><p class="vanilla-image-block" style="padding-top:85.71%;"><img id="U4mjc4RCUonPSMrRaifFPW" name="Ninja Crispi Pro 6-in-1" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/U4mjc4RCUonPSMrRaifFPW-1920-80.png" mos="" align="middle" fullscreen="" width="1568" height="1344" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/dp/B0GXL6CK8Q" target="_blank" rel="nofollow" data-dimension112="1be7ded4-bd57-11f1-ac52-5930a759ecda" data-action="Deal Block" data-label="Crispi Pro 6-In-1 Air Fryer (5.7L)" data-dimension48="Crispi Pro 6-In-1 Air Fryer (5.7L)" data-dimension25="$290.70">Crispi Pro 6-In-1 Air Fryer (5.7L): was $499.99 now $290.70</a></strong><br />Meet the Ninja Crispi's newest sibling. With six modes, three different-sized borosilicate glassware "baskets" with container lids, and a larger, benchtop-permanent stand, this Pro takes the Crispi to the max. This model typically hovers between AU$370 and AU$333 throughout the year on Amazon, making this all-time low price an excellent deal.<a class="view-deal button" href="https://www.amazon.com.au/dp/B0GXL6CK8Q" target="_blank" rel="nofollow" data-dimension112="1be7ded4-bd57-11f1-ac52-5930a759ecda" data-action="Deal Block" data-label="Crispi Pro 6-In-1 Air Fryer (5.7L)" data-dimension48="Crispi Pro 6-In-1 Air Fryer (5.7L)" data-dimension25="$290.70">View Deal</a></p></div><div class="product"><a data-dimension112="1be7df4c-bd57-11f1-8994-7712ed582037" data-action="Deal Block" data-label="Foodi Smart XL Grill and Air Fryer (5.7L)" data-dimension48="Foodi Smart XL Grill and Air Fryer (5.7L)" data-dimension25="$188" href="https://www.amazon.com.au/Ninja-Foodi-Smart-Stainless-AG551/dp/B0B4HCWQ59" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="e2o9idN3DapEBTR28kx6iP" name="ninja-xl-grill" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/e2o9idN3DapEBTR28kx6iP-1920-80.jpg" mos="" align="middle" fullscreen="" width="1000" height="1000" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/Ninja-Foodi-Smart-Stainless-AG551/dp/B0B4HCWQ59" target="_blank" rel="nofollow" data-dimension112="1be7df4c-bd57-11f1-8994-7712ed582037" data-action="Deal Block" data-label="Foodi Smart XL Grill and Air Fryer (5.7L)" data-dimension48="Foodi Smart XL Grill and Air Fryer (5.7L)" data-dimension25="$188">Foodi Smart XL Grill and Air Fryer (5.7L): was $499 now $188</a></strong><br />While we haven't tried this grill out yet, our friends at TechRadar gave its predecessor a massive <a href="https://www.techradar.com/reviews/ninja-foodi-smart-xl-6-in-1-indoor-grill-and-air-fryer-with-built-in-thermometer-2nd-generation-dg551-review" target="_blank">4.5 stars in their review</a>. The latest model comes with the same presets as the DG551, but boasts a sleeker, more slimline design. Customer reviews on the listing praise its impressive features, meat-turning reminders and that it's easy to clean. It's worth noting that while this model is almost never listed anywhere near its full RRP, this offer is still AU$9 cheaper than its previous lowest price on Amazon.<a class="view-deal button" href="https://www.amazon.com.au/Ninja-Foodi-Smart-Stainless-AG551/dp/B0B4HCWQ59" target="_blank" rel="nofollow" data-dimension112="1be7df4c-bd57-11f1-8994-7712ed582037" data-action="Deal Block" data-label="Foodi Smart XL Grill and Air Fryer (5.7L)" data-dimension48="Foodi Smart XL Grill and Air Fryer (5.7L)" data-dimension25="$188">View Deal</a></p></div><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/home/home-security/blink-and-youll-miss-it-this-70-percent-off-4-pack-camera-deal-will-have-your-indoor-and-outdoor-home-security-sorted-in-this-early-prime-big-deal-days-bargain">Blink and you'll miss it: this 70% off 4-pack camera deal will have your indoor and outdoor home security sorted</a></li><li><a href="https://www.tomsguide.com/wellness/early-amazon-prime-day-skechers-deals-shop-up-to-56-percent-off-mens-and-womens-sneakers-sandals-and-slides">Early Amazon Prime Day Skechers deals — shop up to 56% off men's and women's sneakers, sandals and slides</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/home/home-appliances/amazon-aus-october-prime-sale-is-bringing-the-heat-with-some-smokin-air-fryer-discounts-save-up-to-66-percent-off-the-rrp</link>
                                                                            <description>
                            <![CDATA[ Time for an air fryer upgrade? I've rounded up the best offers from Amazon's Prime Big Deal Sale, with huge savings on brands like Ninja and Philips. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">7pePy37moJmTuvfANbG6y6</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/dsQfy4evBqpcdgFtDfAyNZ-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 01 Oct 2026 06:16:59 +0000</pubDate>                                                                                                                                <updated>Fri, 02 Oct 2026 08:55:55 +0000</updated>
                                                                                                                                            <category><![CDATA[Home Appliances]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                                    <dc:creator><![CDATA[ Stephen Lambrechts ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/JN3jEQpqyyt32as8AJJqXe-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Stephen Lambrechts is the Managing Editor of Tom&#039;s Guide AU and has written professionally across the categories of tech, film, television and gaming for the last 15 years. Before Tom&#039;s Guide, he spent several years as a Senior Journalist at TechRadar, had a brief stint as Editor in Chief at Official Xbox Magazine Australia, and worked at IGN. He&#039;s also written for such mags and sites as APC, TechLife Australia, T3, FilmInk, Daily Telegraph and AskMen. Additionally, he&#039;s a Tomatometer-approved critic on Rotten Tomatoes, and has offered his tech advice on radio and television.&lt;/p&gt;&lt;p&gt;He&#039;s an expert when it comes to smartphones, TVs, gaming and streaming, having contributed many reviews in each of those categories over the years. Despite his many articles on streaming, he&#039;s a passionate collector of physical media who enjoys listening to vinyl records and acquiring obscure horror movies from the &#039;60s, &#039;70s and 80s. He can usually be seen rocking the latest retro sneaker releases, particularly Air Jordans and Reebok Pumps. Occasionally, he also indulges in other non-hipster stuff, like hiking.&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/dsQfy4evBqpcdgFtDfAyNZ-1920-80.jpg">
                                                            <media:credit><![CDATA[Ninja]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Ninja Double Stack XXL Air Fryer lifestyle image with woman serving multiple plates of food]]></media:description>                                                            <media:text><![CDATA[Ninja Double Stack XXL Air Fryer lifestyle image with woman serving multiple plates of food]]></media:text>
                                <media:title type="plain"><![CDATA[Ninja Double Stack XXL Air Fryer lifestyle image with woman serving multiple plates of food]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/dsQfy4evBqpcdgFtDfAyNZ-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Cooking has never been quicker, and if you're anything like me, an air fryer has probably become one of the hardest-working appliances in your kitchen. Thanks to Amazon Australia's <a href="https://www.tomsguide.com/live/news/prime-big-deal-days-2026-au-1" target="_blank">Prime Big Deal Days</a> sale, now's a great time to upgrade your current model or finally see what all the fuss is about.</p><p>I've tested my fair share of kitchen gadgets over the years, and few have made a bigger impact on weeknight cooking than a good air fryer. They heat up faster than a conventional oven, use less energy and make everything from chips to chicken wings far less hassle to prepare.</p><p>The category has come a long way, too. Today's best air fryers offer larger capacities, smarter cooking modes and dual-basket designs that let you cook different foods at different temperatures simultaneously. That's a game-changer when you're trying to get dinner on the table without juggling multiple appliances.</p><p>That's what makes this year's Prime Big Deal Days air fryer deals worth a look. Amazon AU has discounted models from some of the biggest names in the category, including Ninja and Philips, with standout offers seeing the <a href="https://www.amazon.com.au/dp/B0DM5LBBVW/?th=1" target="_blank">Ninja DoubleStack XXXL 9.5L Air Fryer</a> reduced to <a href="https://www.amazon.com.au/dp/B0DM5LBBVW/?th=1" target="_blank">AU$170.05</a> from its AU$499.99 RRP — an all-time Amazon low. Meanwhile, the <a href="https://www.amazon.com.au/Philips-Technology-Versatile-NA352-00/dp/B0D2XXZJKD?th=1" target="_blank">Philips 3000 Series Dual Basket Air Fryer</a> has is down 57% to <a href="https://www.amazon.com.au/Philips-Technology-Versatile-NA352-00/dp/B0D2XXZJKD?th=1" target="_blank">AU$170.05</a> versus its AU$399 RRP — just a tenner shy of its lowest-ever Amazon price back in July. </p><p>Those savings are calculated against each model's full recommended retail price, and while it's fair to say that most air fryers rarely sell at full ticket price these days, these Amazon sale discounts are still among the most competitive prices I've seen on highly rated models from trusted brands.</p><p>Of course, those are just some of the top air fryer deals I've spotted during Amazon's sale — you may find other options which are better suited to your needs below, or alternatively <a href="https://www.amazon.com.au/gp/bestsellers/home/10351598051/ref=zg_bs_nav_home_4_5016761051">check out the current best-selling air fryers at Amazon</a> to see what everyone else is buying.</p><div class="product"><a data-dimension112="1be7dcea-bd57-11f1-9363-116282c54f95" data-action="Deal Block" data-label="Air Fryer Pro XL (6.2L)" data-dimension48="Air Fryer Pro XL (6.2L)" data-dimension25="$117.80" href="https://www.amazon.com.au/Ninja-Pro-XL-Air-Fryer/dp/B0DM5JLTCT" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1509px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="V3oaNnwjTRyXY9XxwR5u56" name="1719847932.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/V3oaNnwjTRyXY9XxwR5u56-1920-80.jpg" mos="" align="middle" fullscreen="" width="1509" height="1509" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/Ninja-Pro-XL-Air-Fryer/dp/B0DM5JLTCT" target="_blank" rel="nofollow" data-dimension112="1be7dcea-bd57-11f1-9363-116282c54f95" data-action="Deal Block" data-label="Air Fryer Pro XL (6.2L)" data-dimension48="Air Fryer Pro XL (6.2L)" data-dimension25="$117.80">Air Fryer Pro XL (6.2L): was $199.99 now $117.80</a></strong><br />We think the regular-sized Ninja AF Pro is <a href="https://www.tomsguide.com/home/home-appliances/which-ninja-air-fryer-should-you-buy#section-best-ninja-air-fryer-for-most-people">Ninja's best air fryer</a> thanks to its quiet cooking, its small size and easy controls. But, while you'll have to deal with a slightly bigger frame, we think this huge saving on the Pro's larger 6.2L XL sibling makes it the air fryer to have. It offers all the same positives we enjoyed about the base model, with the ability to cook for one or two more people. <a class="view-deal button" href="https://www.amazon.com.au/Ninja-Pro-XL-Air-Fryer/dp/B0DM5JLTCT" target="_blank" rel="nofollow" data-dimension112="1be7dcea-bd57-11f1-9363-116282c54f95" data-action="Deal Block" data-label="Air Fryer Pro XL (6.2L)" data-dimension48="Air Fryer Pro XL (6.2L)" data-dimension25="$117.80">View Deal</a></p></div><div class="product"><a data-dimension112="1be7dd6c-bd57-11f1-978f-c91eeb291d0d" data-action="Deal Block" data-label="DoubleStack Air Fryer XXXL (9.5L)" data-dimension48="DoubleStack Air Fryer XXXL (9.5L)" data-dimension25="$170.05" href="https://www.amazon.com.au/dp/B0DM5LBBVW/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="H7TVEoDX26dUtCAnyg62Hn" name="ninja-doublestack-air-fryer" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/H7TVEoDX26dUtCAnyg62Hn-1920-80.png" mos="" align="middle" fullscreen="" width="1000" height="1000" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/dp/B0DM5LBBVW/" target="_blank" rel="nofollow" data-dimension112="1be7dd6c-bd57-11f1-978f-c91eeb291d0d" data-action="Deal Block" data-label="DoubleStack Air Fryer XXXL (9.5L)" data-dimension48="DoubleStack Air Fryer XXXL (9.5L)" data-dimension25="$170.05">DoubleStack Air Fryer XXXL (9.5L): was $499.99 now $170.05</a></strong><br />Roast, bake, or crisp twice as many dishes with Ninja's DoubleStack air fryer tower. This model houses two independently controlled drawers that can cook up to four different foods at once, all while taking up less counter space than a typical extra-large air fryer. With a massive 9.5L capacity, you can even control the timings so that your meal is done at the exact same time. Although the price of this model has fluctuated often throughout the year, this is the lowest price it's ever been on Amazon.<a class="view-deal button" href="https://www.amazon.com.au/dp/B0DM5LBBVW/" target="_blank" rel="nofollow" data-dimension112="1be7dd6c-bd57-11f1-978f-c91eeb291d0d" data-action="Deal Block" data-label="DoubleStack Air Fryer XXXL (9.5L)" data-dimension48="DoubleStack Air Fryer XXXL (9.5L)" data-dimension25="$170.05">View Deal</a></p></div><div class="product"><a data-dimension112="1be7dde4-bd57-11f1-a047-b55f4a73e091" data-action="Deal Block" data-label="3000 Series dual basket air fryer (9L)" data-dimension48="3000 Series dual basket air fryer (9L)" data-dimension25="$170.05" href="https://www.amazon.com.au/Philips-Technology-Versatile-NA352-00/dp/B0D2XXZJKD" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2048px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="TUDuUF3dcqpmVa8E28rf5J" name="Philips 3000 Series dual basket air fryer.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/TUDuUF3dcqpmVa8E28rf5J-1920-80.jpg" mos="" align="middle" fullscreen="" width="2048" height="2048" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/Philips-Technology-Versatile-NA352-00/dp/B0D2XXZJKD" target="_blank" rel="nofollow" data-dimension112="1be7dde4-bd57-11f1-a047-b55f4a73e091" data-action="Deal Block" data-label="3000 Series dual basket air fryer (9L)" data-dimension48="3000 Series dual basket air fryer (9L)" data-dimension25="$170.05">3000 Series dual basket air fryer (9L): was $399 now $170.05</a></strong><br />Score a great deal on this dual drawer air fryer from Philips. Available in both charcoal grey/copper and <a href="https://www.amazon.com.au/Philips-Technology-Versatile-NA352-00/dp/B0DK74HSQC" target="_blank">white/champagne</a> colourways (the latter is slightly more expensive), this compact oven can fry, bake, and grill 9L of food at the same time. It's worth noting that one drawer is smaller than the other, making it best suited to side dishes like hot chips or veggies. While it was slightly cheaper for Prime Day, this is still a great price, even if it's rarely listed at full RRP.<a class="view-deal button" href="https://www.amazon.com.au/Philips-Technology-Versatile-NA352-00/dp/B0D2XXZJKD" target="_blank" rel="nofollow" data-dimension112="1be7dde4-bd57-11f1-a047-b55f4a73e091" data-action="Deal Block" data-label="3000 Series dual basket air fryer (9L)" data-dimension48="3000 Series dual basket air fryer (9L)" data-dimension25="$170.05">View Deal</a></p></div><div class="product"><a data-dimension112="1be7de5c-bd57-11f1-9b2a-e945ba175e94" data-action="Deal Block" data-label="Crispi 4-in-1 Air Fryer (10.4L)" data-dimension48="Crispi 4-in-1 Air Fryer (10.4L)" data-dimension25="$178" href="https://www.amazon.com.au/Ninja-CleanCrispTM-Functionality-Leak-Proof-FN101SGANZ/dp/B0FLDTL1TC" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1509px;"><p class="vanilla-image-block" style="padding-top:99.34%;"><img id="eEfVJnAAG2Hmtvf8eUP5dk" name="Ninja Crispi.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/eEfVJnAAG2Hmtvf8eUP5dk-1920-80.jpg" mos="" align="middle" fullscreen="" width="1509" height="1499" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/Ninja-CleanCrispTM-Functionality-Leak-Proof-FN101SGANZ/dp/B0FLDTL1TC" target="_blank" rel="nofollow" data-dimension112="1be7de5c-bd57-11f1-9b2a-e945ba175e94" data-action="Deal Block" data-label="Crispi 4-in-1 Air Fryer (10.4L)" data-dimension48="Crispi 4-in-1 Air Fryer (10.4L)" data-dimension25="$178">Crispi 4-in-1 Air Fryer (10.4L): was $299.99 now $178</a></strong><br />Ninja's original glass air fryer packs 1,700W of power into a portable design, with two borosilicate glass containers that serve as both frying baskets and serving dishes. The borosilicate means they can withstand extreme temperatures, making it easy to take your favourite foods from frozen to crispy. The Crispi also comes with two removable crisping grates and two snap-on container lids for easy food storage post-feast. While this model hasn't been listed at its full RRP since March, it's still great to see it back at its all-time low price from this past July.<a class="view-deal button" href="https://www.amazon.com.au/Ninja-CleanCrispTM-Functionality-Leak-Proof-FN101SGANZ/dp/B0FLDTL1TC" target="_blank" rel="nofollow" data-dimension112="1be7de5c-bd57-11f1-9b2a-e945ba175e94" data-action="Deal Block" data-label="Crispi 4-in-1 Air Fryer (10.4L)" data-dimension48="Crispi 4-in-1 Air Fryer (10.4L)" data-dimension25="$178">View Deal</a></p></div><div class="product"><a data-dimension112="1be7ded4-bd57-11f1-ac52-5930a759ecda" data-action="Deal Block" data-label="Crispi Pro 6-In-1 Air Fryer (5.7L)" data-dimension48="Crispi Pro 6-In-1 Air Fryer (5.7L)" data-dimension25="$290.70" href="https://www.amazon.com.au/dp/B0GXL6CK8Q" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1568px;"><p class="vanilla-image-block" style="padding-top:85.71%;"><img id="U4mjc4RCUonPSMrRaifFPW" name="Ninja Crispi Pro 6-in-1" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/U4mjc4RCUonPSMrRaifFPW-1920-80.png" mos="" align="middle" fullscreen="" width="1568" height="1344" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/dp/B0GXL6CK8Q" target="_blank" rel="nofollow" data-dimension112="1be7ded4-bd57-11f1-ac52-5930a759ecda" data-action="Deal Block" data-label="Crispi Pro 6-In-1 Air Fryer (5.7L)" data-dimension48="Crispi Pro 6-In-1 Air Fryer (5.7L)" data-dimension25="$290.70">Crispi Pro 6-In-1 Air Fryer (5.7L): was $499.99 now $290.70</a></strong><br />Meet the Ninja Crispi's newest sibling. With six modes, three different-sized borosilicate glassware "baskets" with container lids, and a larger, benchtop-permanent stand, this Pro takes the Crispi to the max. This model typically hovers between AU$370 and AU$333 throughout the year on Amazon, making this all-time low price an excellent deal.<a class="view-deal button" href="https://www.amazon.com.au/dp/B0GXL6CK8Q" target="_blank" rel="nofollow" data-dimension112="1be7ded4-bd57-11f1-ac52-5930a759ecda" data-action="Deal Block" data-label="Crispi Pro 6-In-1 Air Fryer (5.7L)" data-dimension48="Crispi Pro 6-In-1 Air Fryer (5.7L)" data-dimension25="$290.70">View Deal</a></p></div><div class="product"><a data-dimension112="1be7df4c-bd57-11f1-8994-7712ed582037" data-action="Deal Block" data-label="Foodi Smart XL Grill and Air Fryer (5.7L)" data-dimension48="Foodi Smart XL Grill and Air Fryer (5.7L)" data-dimension25="$188" href="https://www.amazon.com.au/Ninja-Foodi-Smart-Stainless-AG551/dp/B0B4HCWQ59" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="e2o9idN3DapEBTR28kx6iP" name="ninja-xl-grill" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/e2o9idN3DapEBTR28kx6iP-1920-80.jpg" mos="" align="middle" fullscreen="" width="1000" height="1000" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/Ninja-Foodi-Smart-Stainless-AG551/dp/B0B4HCWQ59" target="_blank" rel="nofollow" data-dimension112="1be7df4c-bd57-11f1-8994-7712ed582037" data-action="Deal Block" data-label="Foodi Smart XL Grill and Air Fryer (5.7L)" data-dimension48="Foodi Smart XL Grill and Air Fryer (5.7L)" data-dimension25="$188">Foodi Smart XL Grill and Air Fryer (5.7L): was $499 now $188</a></strong><br />While we haven't tried this grill out yet, our friends at TechRadar gave its predecessor a massive <a href="https://www.techradar.com/reviews/ninja-foodi-smart-xl-6-in-1-indoor-grill-and-air-fryer-with-built-in-thermometer-2nd-generation-dg551-review" target="_blank">4.5 stars in their review</a>. The latest model comes with the same presets as the DG551, but boasts a sleeker, more slimline design. Customer reviews on the listing praise its impressive features, meat-turning reminders and that it's easy to clean. It's worth noting that while this model is almost never listed anywhere near its full RRP, this offer is still AU$9 cheaper than its previous lowest price on Amazon.<a class="view-deal button" href="https://www.amazon.com.au/Ninja-Foodi-Smart-Stainless-AG551/dp/B0B4HCWQ59" target="_blank" rel="nofollow" data-dimension112="1be7df4c-bd57-11f1-8994-7712ed582037" data-action="Deal Block" data-label="Foodi Smart XL Grill and Air Fryer (5.7L)" data-dimension48="Foodi Smart XL Grill and Air Fryer (5.7L)" data-dimension25="$188">View Deal</a></p></div><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/home/home-security/blink-and-youll-miss-it-this-70-percent-off-4-pack-camera-deal-will-have-your-indoor-and-outdoor-home-security-sorted-in-this-early-prime-big-deal-days-bargain">Blink and you'll miss it: this 70% off 4-pack camera deal will have your indoor and outdoor home security sorted</a></li><li><a href="https://www.tomsguide.com/wellness/early-amazon-prime-day-skechers-deals-shop-up-to-56-percent-off-mens-and-womens-sneakers-sandals-and-slides">Early Amazon Prime Day Skechers deals — shop up to 56% off men's and women's sneakers, sandals and slides</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Amazon announces a new $59 Fire TV Stick and — finally — a remote you can find with Alexa ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Just in time for its <a href="https://www.tomsguide.com/sales-events/61-early-prime-day-deals-best-sales-id-buy-now-on-tvs-kindle-ps5-and-more">October Prime Day</a> event, Amazon is announcing a new Fire TV Stick 4K with a redesigned remote, as well as a <em>second,</em> fancier remote that you can find with Alexa, and some new Alexa+ features built into the Fire TV interface, which should help make it easier for you to find the best streaming shows and movies.</p><p>However, only one of these is available starting today; for the other two, you'll have to wait a little longer.</p><h2 id="fire-tv-stick-4k">Fire TV Stick 4K</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:57.27%;"><img id="x4izxJKsWKs5qSuBjBypSa" name="fire-tv-stick-4k_hero" alt="Amazon Fire TV Stick 4K" src="https://cdn.mos.cms.futurecdn.net/x4izxJKsWKs5qSuBjBypSa-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1466" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Amazon)</span></figcaption></figure><p>Like the <a href="https://www.tomsguide.com/entertainment/streaming-devices/amazon-launches-updated-fire-tv-stick-hd-thats-slimmer-and-doesnt-require-a-wall-adapter">Fire TV Stick HD</a>, released earlier this year, the Fire TV Stick 4K is Amazon's third device to use its new Vega OS, rather than the Android kernel on previous sticks.</p><p>Amazon says that the Fire TV Stick 4K is 20 to 40% faster than "another leading brand" — we'll leave it up to you to figure out who that is — and has a quad-core 1.7 GHz processor, 8GB of storage, and supports  Wi-Fi 6, Bluetooth 5.3, and Bluetooth Low Energy. It can also run off the USB port on your TV, which is a nice feature.</p><p>The Fire TV Stick 4K supports HDR10, HDR10+, HLG, H.265, H.264, VP9, and AV1 video formats and outputs 2160p, 1080p, and 720p resolutions at up to 60 fps.</p><p>While the regular price of the Fire TV Stick 4K is $59.99, Amazon is offering it for $29.99 during October Prime Day. The Fire TV Stick HD is already discounted by <a href="https://www.amazon.com/dp/B0DJGDC3BD">60%, to $15.99</a>.</p><p>With the release of the Fire TV Stick 4K, Amazon will officially have three sticks in its rotation (the Fire TV Stick HD, the Fire TV Stick 4K, and the $84 <a href="https://www.tomsguide.com/reviews/amazon-fire-tv-stick-4k-max-2nd-gen">Fire TV Stick 4K Max</a>) along with the $199 <a href="https://www.tomsguide.com/reviews/fire-tv-cube">Fire TV Cube (2nd gen)</a>. Amazon will continue to sell the Fire TV Stick Select and Fire TV Stick Plus until supplies run out.</p><h2 id="fire-tv-remote-plus">Fire TV Remote Plus</h2><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="9GHQeTyQsxShGPC3yzraLf" name="fire-tv-remote_fire-tv-remote-plus_1920x1080" alt="Amazon Fire TV Remote Plus" src="https://cdn.mos.cms.futurecdn.net/9GHQeTyQsxShGPC3yzraLf-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: Amazon)</span></figcaption></figure><p>The Fire TV Stick 4K ships with a redesigned remote that has an asymmetrical shape—it's thinner at the top, with a squared-off front edge and a rounded rear. </p><p>In addition, the Home button is now metal, and other buttons have indentations, making them easier to locate by feel without looking down at the remote. The new remote also has a customizable Star button that can launch your favorite app or setting. </p><p>The Fire TV Remote will ship with the new streaming stick, but if you want to upgrade your current remote, you can buy it in October for $14.99.</p><p><strong>Fire TV Remote Plus</strong></p><p>The redesigned remote will also get a glow-up with the Fire TV Remote Plus, which will have an aluminum housing and backlit buttons. Even better for those with deep couch cushions or young children, the Remote Plus has a Find My feature: If you say "Alexa, find my remote," it will play a sound so you can find it more easily. </p><p>It's a feature that's been present on the Google TV Streamer and Apple TV 4K's remotes, so it's nice to see Amazon playing catch-up.</p><p>However, the Fire TV Remote Plus won't launch until January 2027, and Amazon hasn't announced pricing.</p><h2 id="alexa-improvements">Alexa+ improvements</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1658px;"><p class="vanilla-image-block" style="padding-top:54.70%;"><img id="46ve4bcVDMWHYftC4ireXo" name="Fire TV Alexa+ Response - 2000x1125" alt="Fire TV Alexa+ new feature" src="https://cdn.mos.cms.futurecdn.net/46ve4bcVDMWHYftC4ireXo-1920-80.jpg" mos="" align="middle" fullscreen="" width="1658" height="907" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Amazon)</span></figcaption></figure><p>Amazon's streaming sticks are also getting a bit of an Alexa+ upgrade, too. The AI assistant will be able to handle more complex queries when you ask for show recommendations, and it can also take into account "awards, events, cultural references, alongside a customer's subscriptions and watch history" to provide more informed responses.</p><p>Some of the examples that Amazon cites are:</p><p>"Alexa, I’m diving into the Marvel universe. Show me the movies in the universe timeline order”</p><p>"Alexa, find shows that were nominated for the recent Emmys but got snubbed”</p><p>“Alexa, show me the highest-rated book-to-screen movie adaptations"</p><p>"Alexa, show me the games I should watch this weekend”</p><p>To get Fire TV users to engage more with its AI, Amazon is also adding an Alexa+ hub into the on-screen interface, which will show you all your recent prompts and conversations, regardless of the Amazon device you were using. You'll be able to continue any of those prompts on your Fire TV device. </p><p>Interestingly, the new Alexa+ experience will come to older Fire TV devices first. Starting in the U.S. in November, the Fire TV Stick 4K Max (2<sup>nd</sup> Gen), Fire TV Cube, Amazon Ember TVs, and partner TVs with Fire TV built-in, such as those from Hisense and TCL, will receive the update. The new Fire TV Stick 4K and other countries will not get these features until early next year.</p><h2 id="analysis">Analysis</h2><p>The two things I'm most interested in checking out will be the new Alexa+ features and the new Fire TV Remote Plus. There are so many choices when it comes to what to watch that our excellent streaming team keeps working overtime to find the best shows and movies to check out. I'm curious to see how well Alexa+ performs at delivering a curated list based on my preferences.</p><p>At the same time, having a way to find a lost remote seems like something that should have been added a long time ago. This is also the first major redesign of the Fire TV remote, so I'm equally interested in seeing how comfortable it is to hold as I scroll through everything to watch.</p><p>As for the new stick, Fire TV devices have done well but have struggled to crack our list of the best streaming devices, mainly because of their cluttered interface compared to rivals. However, Amazon has updated its look this past year, so we'll have to re-evaluate things when we get a chance to check out its newest device.</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/entertainment/streaming-devices/youre-wasting-your-fire-tv-sticks-potential-7-features-to-enable-right-now">You're wasting your Fire TV's potential — 7 features to enable</a></li><li><a href="https://www.tomsguide.com/entertainment/streaming-devices/the-one-fire-tv-setting-you-need-to-change-right-now-to-instantly-boost-performance">The one Fire TV setting you need to change right now to instantly boost performance</a></li><li><a href="https://www.tomsguide.com/entertainment/streaming-devices/your-fire-tv-stick-has-an-expiration-date-heres-when-support-ends">Your Fire TV Stick has an expiration date — here's when support ends</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/streaming-devices/amazon-announces-a-new-usd59-fire-tv-stick-and-finally-a-remote-you-can-find-with-alexa</link>
                                                                            <description>
                            <![CDATA[ Amazon is releasing a new Fire TV streaming stick, a remote with tracking, and Alexa+ improvements to help you find shows more easily. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">kPJiX3hiTN7Ei3Dw8ArCnf</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/sZFK3NAQvo4Cgn4fcgAu7P-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 30 Sep 2026 13:00:00 +0000</pubDate>                                                                                                                                <updated>Wed, 30 Sep 2026 15:59:16 +0000</updated>
                                                                                                                                            <category><![CDATA[Streaming Devices]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                    <category><![CDATA[Streaming]]></category>
                                                                                                <author><![CDATA[ mike.prospero@futurenet.com (Mike Prospero) ]]></author>                    <dc:creator><![CDATA[ Mike Prospero ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/xeJFBrJwXQzCqXLZXBFBKQ-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Michael A. Prospero is the U.S. Editor-in-Chief for Tom’s Guide.  In his spare time, he also tests out the latest drones, electric scooters, and smart home gadgets, such as video doorbells. Before his tenure at Tom&#039;s Guide, he was the Reviews Editor for Laptop Magazine, a reporter at Fast Company, the Times of Trenton, and, many eons back, an intern at George magazine. He received his undergraduate degree from Boston College, where he worked on the campus newspaper The Heights, and then attended the Columbia University school of Journalism. When he’s not testing out the latest running watch, electric scooter, or skiing or training for a marathon, he’s probably using the latest sous vide machine, smoker, or pizza oven, to the delight — or chagrin — of his family.&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/sZFK3NAQvo4Cgn4fcgAu7P-1920-80.jpg">
                                                            <media:credit><![CDATA[Amazon]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Amazon Fire TV Stick 4K]]></media:description>                                                            <media:text><![CDATA[Amazon Fire TV Stick 4K]]></media:text>
                                <media:title type="plain"><![CDATA[Amazon Fire TV Stick 4K]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/sZFK3NAQvo4Cgn4fcgAu7P-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Just in time for its <a href="https://www.tomsguide.com/sales-events/61-early-prime-day-deals-best-sales-id-buy-now-on-tvs-kindle-ps5-and-more">October Prime Day</a> event, Amazon is announcing a new Fire TV Stick 4K with a redesigned remote, as well as a <em>second,</em> fancier remote that you can find with Alexa, and some new Alexa+ features built into the Fire TV interface, which should help make it easier for you to find the best streaming shows and movies.</p><p>However, only one of these is available starting today; for the other two, you'll have to wait a little longer.</p><h2 id="fire-tv-stick-4k">Fire TV Stick 4K</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:57.27%;"><img id="x4izxJKsWKs5qSuBjBypSa" name="fire-tv-stick-4k_hero" alt="Amazon Fire TV Stick 4K" src="https://cdn.mos.cms.futurecdn.net/x4izxJKsWKs5qSuBjBypSa-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1466" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Amazon)</span></figcaption></figure><p>Like the <a href="https://www.tomsguide.com/entertainment/streaming-devices/amazon-launches-updated-fire-tv-stick-hd-thats-slimmer-and-doesnt-require-a-wall-adapter">Fire TV Stick HD</a>, released earlier this year, the Fire TV Stick 4K is Amazon's third device to use its new Vega OS, rather than the Android kernel on previous sticks.</p><p>Amazon says that the Fire TV Stick 4K is 20 to 40% faster than "another leading brand" — we'll leave it up to you to figure out who that is — and has a quad-core 1.7 GHz processor, 8GB of storage, and supports  Wi-Fi 6, Bluetooth 5.3, and Bluetooth Low Energy. It can also run off the USB port on your TV, which is a nice feature.</p><p>The Fire TV Stick 4K supports HDR10, HDR10+, HLG, H.265, H.264, VP9, and AV1 video formats and outputs 2160p, 1080p, and 720p resolutions at up to 60 fps.</p><p>While the regular price of the Fire TV Stick 4K is $59.99, Amazon is offering it for $29.99 during October Prime Day. The Fire TV Stick HD is already discounted by <a href="https://www.amazon.com/dp/B0DJGDC3BD">60%, to $15.99</a>.</p><p>With the release of the Fire TV Stick 4K, Amazon will officially have three sticks in its rotation (the Fire TV Stick HD, the Fire TV Stick 4K, and the $84 <a href="https://www.tomsguide.com/reviews/amazon-fire-tv-stick-4k-max-2nd-gen">Fire TV Stick 4K Max</a>) along with the $199 <a href="https://www.tomsguide.com/reviews/fire-tv-cube">Fire TV Cube (2nd gen)</a>. Amazon will continue to sell the Fire TV Stick Select and Fire TV Stick Plus until supplies run out.</p><h2 id="fire-tv-remote-plus">Fire TV Remote Plus</h2><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="9GHQeTyQsxShGPC3yzraLf" name="fire-tv-remote_fire-tv-remote-plus_1920x1080" alt="Amazon Fire TV Remote Plus" src="https://cdn.mos.cms.futurecdn.net/9GHQeTyQsxShGPC3yzraLf-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: Amazon)</span></figcaption></figure><p>The Fire TV Stick 4K ships with a redesigned remote that has an asymmetrical shape—it's thinner at the top, with a squared-off front edge and a rounded rear. </p><p>In addition, the Home button is now metal, and other buttons have indentations, making them easier to locate by feel without looking down at the remote. The new remote also has a customizable Star button that can launch your favorite app or setting. </p><p>The Fire TV Remote will ship with the new streaming stick, but if you want to upgrade your current remote, you can buy it in October for $14.99.</p><p><strong>Fire TV Remote Plus</strong></p><p>The redesigned remote will also get a glow-up with the Fire TV Remote Plus, which will have an aluminum housing and backlit buttons. Even better for those with deep couch cushions or young children, the Remote Plus has a Find My feature: If you say "Alexa, find my remote," it will play a sound so you can find it more easily. </p><p>It's a feature that's been present on the Google TV Streamer and Apple TV 4K's remotes, so it's nice to see Amazon playing catch-up.</p><p>However, the Fire TV Remote Plus won't launch until January 2027, and Amazon hasn't announced pricing.</p><h2 id="alexa-improvements">Alexa+ improvements</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1658px;"><p class="vanilla-image-block" style="padding-top:54.70%;"><img id="46ve4bcVDMWHYftC4ireXo" name="Fire TV Alexa+ Response - 2000x1125" alt="Fire TV Alexa+ new feature" src="https://cdn.mos.cms.futurecdn.net/46ve4bcVDMWHYftC4ireXo-1920-80.jpg" mos="" align="middle" fullscreen="" width="1658" height="907" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Amazon)</span></figcaption></figure><p>Amazon's streaming sticks are also getting a bit of an Alexa+ upgrade, too. The AI assistant will be able to handle more complex queries when you ask for show recommendations, and it can also take into account "awards, events, cultural references, alongside a customer's subscriptions and watch history" to provide more informed responses.</p><p>Some of the examples that Amazon cites are:</p><p>"Alexa, I’m diving into the Marvel universe. Show me the movies in the universe timeline order”</p><p>"Alexa, find shows that were nominated for the recent Emmys but got snubbed”</p><p>“Alexa, show me the highest-rated book-to-screen movie adaptations"</p><p>"Alexa, show me the games I should watch this weekend”</p><p>To get Fire TV users to engage more with its AI, Amazon is also adding an Alexa+ hub into the on-screen interface, which will show you all your recent prompts and conversations, regardless of the Amazon device you were using. You'll be able to continue any of those prompts on your Fire TV device. </p><p>Interestingly, the new Alexa+ experience will come to older Fire TV devices first. Starting in the U.S. in November, the Fire TV Stick 4K Max (2<sup>nd</sup> Gen), Fire TV Cube, Amazon Ember TVs, and partner TVs with Fire TV built-in, such as those from Hisense and TCL, will receive the update. The new Fire TV Stick 4K and other countries will not get these features until early next year.</p><h2 id="analysis">Analysis</h2><p>The two things I'm most interested in checking out will be the new Alexa+ features and the new Fire TV Remote Plus. There are so many choices when it comes to what to watch that our excellent streaming team keeps working overtime to find the best shows and movies to check out. I'm curious to see how well Alexa+ performs at delivering a curated list based on my preferences.</p><p>At the same time, having a way to find a lost remote seems like something that should have been added a long time ago. This is also the first major redesign of the Fire TV remote, so I'm equally interested in seeing how comfortable it is to hold as I scroll through everything to watch.</p><p>As for the new stick, Fire TV devices have done well but have struggled to crack our list of the best streaming devices, mainly because of their cluttered interface compared to rivals. However, Amazon has updated its look this past year, so we'll have to re-evaluate things when we get a chance to check out its newest device.</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/entertainment/streaming-devices/youre-wasting-your-fire-tv-sticks-potential-7-features-to-enable-right-now">You're wasting your Fire TV's potential — 7 features to enable</a></li><li><a href="https://www.tomsguide.com/entertainment/streaming-devices/the-one-fire-tv-setting-you-need-to-change-right-now-to-instantly-boost-performance">The one Fire TV setting you need to change right now to instantly boost performance</a></li><li><a href="https://www.tomsguide.com/entertainment/streaming-devices/your-fire-tv-stick-has-an-expiration-date-heres-when-support-ends">Your Fire TV Stick has an expiration date — here's when support ends</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Prime Big Deal Days are the best time to shop Ninja's impressive kitchen appliance range — save up to AU$363 on ice cream makers, slushy machines and blenders ]]></title>
                                                                                                <dc:content><![CDATA[ <p>As a home appliance reviewer, there's one brand I tend to recommend to my friends and family for great-value, long-lasting kitchen devices — and that's Ninja. </p><p>I know I'm not the only Ninja fan out there — we've reviewed plenty of its great appliances here at Tom's Guide — but sometimes, seeing the brand's price tags makes me want to close my eyes. Because I know deep down that no matter the cost, I'm probably going to love my next Ninja appliance, despite my wallet's protests. </p><p><strong>• </strong><a href="https://www.amazon.com.au/primebigdealdays" target="_blank"><strong>Shop Amazon's full Prime Day sale</strong></a></p><p>Thankfully for my credit card, Ninja's great kitchen appliances have gotten their prices slashed at Amazon during the retailer's massive <a href="https://www.tomsguide.com/live/news/prime-big-deal-days-2026-au" target="_blank">Prime Big Deal Day sale</a>. From now until <strong>Monday, October 5, </strong>there are plenty of discounts on Ninja's <a href="https://www.amazon.com.au/stores/page/E542A989-11B7-43A8-9B77-843A3B8908FD?ingress=2&amp;lp_context_asin=B0FLDVKMH2&amp;lp_context_query=ninja&amp;visitId=4baba633-f02f-4324-a896-060e065e571f&amp;ref_=ast_bln" target="_blank">Amazon storefront</a>. </p><p>From summer essentials like the <a href="https://www.amazon.com.au/Ninja-Slushi-Professional-Frozen-Drink/dp/B0DM5J3QXK/" target="_blank">Slushi</a>, <a href="https://www.amazon.com.au/Ninja-Mix-ins-Milkshakes-Smoothie-NC300/dp/B0B4HDQQJG/" target="_blank">Creami</a> and <a href="https://www.amazon.com.au/Ninja-DB351BL3-Tumbler-Blender-Raspberry/dp/B0GF6V6KK1/ref=ast_sto_dp_puis" target="_blank">BlendBoss</a> tumbler to kitchen staples like the <a href="https://www.amazon.com.au/Ninja-CleanCrispTM-Functionality-Leak-Proof-FN101GYANZ/dp/B0FLDV535Q/ref=ast_sto_dp_puis" target="_blank">Crispi air fryer</a> and the <a href="https://www.amazon.com.au/dp/B0FLDT92Q6/ref=sspa_dk_detail_1" target="_blank">Ninja Luxe Cafe coffee machine</a>, there's up to 66% off. </p><p>I've gathered my top-recommended deals from Ninja for your perusal below. You'll need to act fast to nab these deals, though, as they will finish up on <strong>Monday, October 5. </strong></p><h3 class="article-body__section" id="section-best-ninja-prime-day-deals"><span>Best Ninja Prime Day deals</span></h3><div class="product"><a data-dimension112="5277ac94-bc6d-11f1-9f9f-ed099f9a480e" data-action="Deal Block" data-label="Creami ice cream maker (Cloud Silver)" data-dimension48="Creami ice cream maker (Cloud Silver)" data-dimension25="$208.05" href="https://www.amazon.com.au/Ninja-Mix-ins-Milkshakes-Smoothie-NC300/dp/B0B4HDQQJG/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="f8gg4pJdMpcdzpxoqpLPeX" name="ninja-creami-ice-cream-maker-automatic-d-518eb370-8311-4a1f-8d1b-49837be1c62f.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/f8gg4pJdMpcdzpxoqpLPeX-1920-80.jpg" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/Ninja-Mix-ins-Milkshakes-Smoothie-NC300/dp/B0B4HDQQJG/" target="_blank" rel="nofollow" data-dimension112="5277ac94-bc6d-11f1-9f9f-ed099f9a480e" data-action="Deal Block" data-label="Creami ice cream maker (Cloud Silver)" data-dimension48="Creami ice cream maker (Cloud Silver)" data-dimension25="$208.05">Creami ice cream maker (Cloud Silver): was $349.99 now $208.05</a></strong><br />Ninja's classic ice cream maker, the Creami, is now discounted to a new low price for Prime Big Deal Days. Sure, it's not the AU$188 outlay we saw in December 2024 for Boxing Day, but the discount is so close you can almost taste it. With five ice cream presets, you'll be whipping up a sundae storm all summer long. <a class="view-deal button" href="https://www.amazon.com.au/Ninja-Mix-ins-Milkshakes-Smoothie-NC300/dp/B0B4HDQQJG/" target="_blank" rel="nofollow" data-dimension112="5277ac94-bc6d-11f1-9f9f-ed099f9a480e" data-action="Deal Block" data-label="Creami ice cream maker (Cloud Silver)" data-dimension48="Creami ice cream maker (Cloud Silver)" data-dimension25="$208.05">View Deal</a></p></div><div class="product"><a data-dimension112="5277ad0c-bc6d-11f1-8151-43af8cf0f012" data-action="Deal Block" data-label="Creami ice cream maker (Coffee Cream)" data-dimension48="Creami ice cream maker (Coffee Cream)" data-dimension25="$214" href="https://www.amazon.com.au/Ninja-CREAMi-Frozen-Dessert-Coffee/dp/B0GX9SGRXC/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:363px;"><p class="vanilla-image-block" style="padding-top:137.74%;"><img id="3fehNmj4sbY9NcFEFWfRUX" name="ninja-creami-ice-cream-maker-7in1-frozen-ab6f8823-8f03-4492-9aea-d7c41f66eca2.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/3fehNmj4sbY9NcFEFWfRUX-1920-80.jpg" mos="" align="middle" fullscreen="" width="363" height="500" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/Ninja-CREAMi-Frozen-Dessert-Coffee/dp/B0GX9SGRXC/" target="_blank" rel="nofollow" data-dimension112="5277ad0c-bc6d-11f1-8151-43af8cf0f012" data-action="Deal Block" data-label="Creami ice cream maker (Coffee Cream)" data-dimension48="Creami ice cream maker (Coffee Cream)" data-dimension25="$214">Creami ice cream maker (Coffee Cream): was $299.99 now $214</a></strong><br />Don't love the idea of adding another grey or black appliance to your cupboard? Me too! That's why this Coffee Cream colourway deserves its own attention, as something a little different and perhaps more aesthetic than the traditional Creami above. With the same great presets, you'll be crafting your favourite pints in no time. <a class="view-deal button" href="https://www.amazon.com.au/Ninja-CREAMi-Frozen-Dessert-Coffee/dp/B0GX9SGRXC/" target="_blank" rel="nofollow" data-dimension112="5277ad0c-bc6d-11f1-8151-43af8cf0f012" data-action="Deal Block" data-label="Creami ice cream maker (Coffee Cream)" data-dimension48="Creami ice cream maker (Coffee Cream)" data-dimension25="$214">View Deal</a></p></div><div class="product"><a data-dimension112="5277ad7a-bc6d-11f1-887e-9962fdf780ff" data-action="Deal Block" data-label="Swirl by Creami" data-dimension48="Swirl by Creami" data-dimension25="$265.05" href="https://www.amazon.com.au/dp/B0FLDVKMH2/ref=sspa_dk_detail_1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="xRQCwBjCoTkFWE9GHprYN4" name="ninja-swirl" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/xRQCwBjCoTkFWE9GHprYN4-1920-80.png" mos="" align="middle" fullscreen="" width="1000" height="1000" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/dp/B0FLDVKMH2/ref=sspa_dk_detail_1" target="_blank" rel="nofollow" data-dimension112="5277ad7a-bc6d-11f1-887e-9962fdf780ff" data-action="Deal Block" data-label="Swirl by Creami" data-dimension48="Swirl by Creami" data-dimension25="$265.05">Swirl by Creami: was $549 now $265.05</a></strong><br />During Prime Day, the Ninja Creami Swirl has received a nice 52% discount on Amazon. Featuring 13 one-touch presets and a soft-serve handle, the new take on the Creami can dispense up to 4 small cones from one container using the soft-serve side, or can whip up your preferred pint on the Creami side. <a class="view-deal button" href="https://www.amazon.com.au/dp/B0FLDVKMH2/ref=sspa_dk_detail_1" target="_blank" rel="nofollow" data-dimension112="5277ad7a-bc6d-11f1-887e-9962fdf780ff" data-action="Deal Block" data-label="Swirl by Creami" data-dimension48="Swirl by Creami" data-dimension25="$265.05">View Deal</a></p></div><div class="product"><a data-dimension112="5277adf2-bc6d-11f1-85c5-372afffdc2f3" data-action="Deal Block" data-label="Slushi" data-dimension48="Slushi" data-dimension25="$236.55" href="https://www.amazon.com.au/Ninja-Slushi-Professional-Frozen-Drink/dp/B0DM5J3QXK/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="aosw5KqH89a9NCzPFbQ2yA" name="Ninja Slushi (1).jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/aosw5KqH89a9NCzPFbQ2yA-1920-80.jpg" mos="" align="middle" fullscreen="" width="1500" height="1500" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p>The <a href="https://www.tomsguide.com/home/kitchen-dining/ive-been-crafting-drinks-in-the-ninja-slushi-for-a-month-here-are-my-hot-tips-for-the-ultimate-frozen-drink" data-dimension112="5277adf2-bc6d-11f1-85c5-372afffdc2f3" data-action="Deal Block" data-label="Slushi" data-dimension48="Slushi" data-dimension25="$236.55">Ninja Slushi</a> is awesome for everything from frappes to smoothies, and even a boozy slushie if that's your vibe, thanks to its super handy drink modes. While Ninja's RRP isn't anything special, the Amazon price is truly special, at just AU$236.55 during the Prime Day sale. <a class="view-deal button" href="https://www.amazon.com.au/Ninja-Slushi-Professional-Frozen-Drink/dp/B0DM5J3QXK/" target="_blank" rel="nofollow" data-dimension112="5277adf2-bc6d-11f1-85c5-372afffdc2f3" data-action="Deal Block" data-label="Slushi" data-dimension48="Slushi" data-dimension25="$236.55">View Deal</a></p></div><div class="product"><a data-dimension112="5277ae60-bc6d-11f1-9073-ebbdc93459cd" data-action="Deal Block" data-label="Slushi Limited Edition - Frosé" data-dimension48="Slushi Limited Edition - Frosé" data-dimension25="$229" href="https://www.amazon.com.au/Ninja-Slushi-Professional-Frozen-Drink/dp/B0GX9WG98D" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="rfivt6BxbZEjPpZhySX3nE" name="ninja-slushi-professional-frozen-drink-m-5f720f3a-c40e-4643-8eb3-f25aa4470d50.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/rfivt6BxbZEjPpZhySX3nE-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="2000" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/Ninja-Slushi-Professional-Frozen-Drink/dp/B0GX9WG98D" target="_blank" rel="nofollow" data-dimension112="5277ae60-bc6d-11f1-9073-ebbdc93459cd" data-action="Deal Block" data-label="Slushi Limited Edition - Frosé" data-dimension48="Slushi Limited Edition - Frosé" data-dimension25="$229">Slushi Limited Edition - Frosé: was $399.99 now $229</a></strong><br />Look, this discount isn't as much as the standard colour above, but it's worth considering if you're after the limited edition Slushi in the fun Frosé or <a href="https://www.amazon.com.au/Ninja-Slushi-Professional-Frozen-Drink/dp/B0GX9XN6WN?ref_=ast_sto_dp&amp;th=1" target="_blank">Margarita</a> colourway. Packing the same great features as the original, who needs a dull grey appliance when you can have a pink one? <a class="view-deal button" href="https://www.amazon.com.au/Ninja-Slushi-Professional-Frozen-Drink/dp/B0GX9WG98D" target="_blank" rel="nofollow" data-dimension112="5277ae60-bc6d-11f1-9073-ebbdc93459cd" data-action="Deal Block" data-label="Slushi Limited Edition - Frosé" data-dimension48="Slushi Limited Edition - Frosé" data-dimension25="$229">View Deal</a></p></div><div class="product"><a data-dimension112="5277aed8-bc6d-11f1-849f-57c2fcdef228" data-action="Deal Block" data-label="Slushi Max (Cyberspace)" data-dimension48="Slushi Max (Cyberspace)" data-dimension25="$374.99" href="https://www.amazon.com.au/Ninja-SLUSHi-Frozen-Presets-Cyberspace/dp/B0GX9R48L8/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="Hryi2xfq37LDesqv4PJtSX" name="ninja-slushi-max-frozen-drink-maker-44l--f54a2c3a-056e-49e5-9106-3c2737ab617b.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/Hryi2xfq37LDesqv4PJtSX-1920-80.jpg" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/Ninja-SLUSHi-Frozen-Presets-Cyberspace/dp/B0GX9R48L8/" target="_blank" rel="nofollow" data-dimension112="5277aed8-bc6d-11f1-849f-57c2fcdef228" data-action="Deal Block" data-label="Slushi Max (Cyberspace)" data-dimension48="Slushi Max (Cyberspace)" data-dimension25="$374.99">Slushi Max (Cyberspace): was $599.99 now $374.99</a></strong><br />If the Slushi above isn't enough to fulfil your frozen beverage dreams, then you may want to consider its larger sibling. The Slushi Max can easily make up to 12 servings per batch, has six drink presets and can whip up your iced drink of choice within 15 minutes. Now discounted by 38%, this is the perfect poolside appliance for summer. <a class="view-deal button" href="https://www.amazon.com.au/Ninja-SLUSHi-Frozen-Presets-Cyberspace/dp/B0GX9R48L8/" target="_blank" rel="nofollow" data-dimension112="5277aed8-bc6d-11f1-849f-57c2fcdef228" data-action="Deal Block" data-label="Slushi Max (Cyberspace)" data-dimension48="Slushi Max (Cyberspace)" data-dimension25="$374.99">View Deal</a></p></div><div class="product"><a data-dimension112="5277af50-bc6d-11f1-9236-395438631048" data-action="Deal Block" data-label="BlendBoss blender (Blue Raspberry)" data-dimension48="BlendBoss blender (Blue Raspberry)" data-dimension25="$141.55" href="https://www.amazon.com.au/Ninja-DB351BL3-Tumbler-Blender-Raspberry/dp/B0GF6V6KK1/ref=ast_sto_dp_puis" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="KHiTYxeHgbwDSDMuzUUzAn" name="ninja-blendboss--personal-blender-for-sm-d51ca1a8-b418-40de-b1de-df2679e80cf0.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/KHiTYxeHgbwDSDMuzUUzAn-1920-80.jpg" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/Ninja-DB351BL3-Tumbler-Blender-Raspberry/dp/B0GF6V6KK1/ref=ast_sto_dp_puis" target="_blank" rel="nofollow" data-dimension112="5277af50-bc6d-11f1-9236-395438631048" data-action="Deal Block" data-label="BlendBoss blender (Blue Raspberry)" data-dimension48="BlendBoss blender (Blue Raspberry)" data-dimension25="$141.55">BlendBoss blender (Blue Raspberry): was $299.99 now $141.55</a></strong><br />The Ninja BlendBoss is a sleek, smart, and powerful appliance for enjoying blended drinks on the go. Simply pop in your ingredients to blend, then detach the tumbler from its base to carry it around. With a 1,100W motor, it's more than capable of crushing your favourite smoothie mix, including ice.</p><p>Also available in other fun colours, like <a href="https://www.amazon.com.au/Ninja-Tumbler-Blender-Lavender-Lemonade/dp/B0GF72CK3G/ref=ast_sto_dp_puis" target="_blank">Lavender Lemonade</a>, <a href="https://www.amazon.com.au/Ninja-Blend-Tumbler-Blender-Stone/dp/B0GF6PXMFP/ref=ast_sto_dp_puis" target="_blank">Stone Mint</a>, and <a href="https://www.amazon.com.au/Ninja-Tumbler-Blender-Watermelon-Bubblegum/dp/B0GF6SQNP1/ref=ast_sto_dp_puis" target="_blank">Watermelon Bubblegum</a>. <a class="view-deal button" href="https://www.amazon.com.au/Ninja-DB351BL3-Tumbler-Blender-Raspberry/dp/B0GF6V6KK1/ref=ast_sto_dp_puis" target="_blank" rel="nofollow" data-dimension112="5277af50-bc6d-11f1-9236-395438631048" data-action="Deal Block" data-label="BlendBoss blender (Blue Raspberry)" data-dimension48="BlendBoss blender (Blue Raspberry)" data-dimension25="$141.55">View Deal</a></p></div><div class="product"><a data-dimension112="5277afc8-bc6d-11f1-9267-dbfb05baae75" data-action="Deal Block" data-label="Luxe Café coffee machine" data-dimension48="Luxe Café coffee machine" data-dimension25="$598" href="https://www.amazon.com.au/dp/B0FLDT92Q6/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:541px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="HcnQ36qmUJg5VJidxsJ76X" name="Ninja Luxe Cafe.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/HcnQ36qmUJg5VJidxsJ76X-1920-80.jpg" mos="" align="middle" fullscreen="" width="541" height="541" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/dp/B0FLDT92Q6/" target="_blank" rel="nofollow" data-dimension112="5277afc8-bc6d-11f1-9267-dbfb05baae75" data-action="Deal Block" data-label="Luxe Café coffee machine" data-dimension48="Luxe Café coffee machine" data-dimension25="$598">Luxe Café coffee machine: was $849.99 now $598</a></strong><br />This Ninja 3-in-1 coffee machine brews quality espresso, drip coffee and even fast cold brew using its Barista Assist technology, an integrated grinder and weight-based dosing. As an iced coffee all-year-round enjoyer, the Ninja Luxe Cafe has changed my life, thanks to its cold-pressed espresso presets and its specialty Dual Froth system with a cold-foam setting. </p><p>Also available in the new <a href="https://www.amazon.com.au/dp/B0GXKXXRKL/" target="_blank">Oat colourway for AU$577.89</a>, or in the <a href="https://www.amazon.com.au/Ninja-Espresso-settings-assisted-Cyberspace/dp/B0FLDPX5B8/ref=ast_sto_dp_puis" target="_blank">Cyberspace colourway for AU$559.99</a>.<a class="view-deal button" href="https://www.amazon.com.au/dp/B0FLDT92Q6/" target="_blank" rel="nofollow" data-dimension112="5277afc8-bc6d-11f1-9267-dbfb05baae75" data-action="Deal Block" data-label="Luxe Café coffee machine" data-dimension48="Luxe Café coffee machine" data-dimension25="$598">View Deal</a></p></div><div class="product"><a data-dimension112="5277b036-bc6d-11f1-8c0f-95523f3b5256" data-action="Deal Block" data-label="Crispi air fryer (Cyberspace)" data-dimension48="Crispi air fryer (Cyberspace)" data-dimension25="$178.60" href="https://www.amazon.com.au/Ninja-CleanCrispTM-Functionality-Leak-Proof-FN101GYANZ/dp/B0FLDV535Q/ref=ast_sto_dp_puis" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1509px;"><p class="vanilla-image-block" style="padding-top:99.34%;"><img id="eEfVJnAAG2Hmtvf8eUP5dk" name="Ninja Crispi.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/eEfVJnAAG2Hmtvf8eUP5dk-1920-80.jpg" mos="" align="middle" fullscreen="" width="1509" height="1499" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/Ninja-CleanCrispTM-Functionality-Leak-Proof-FN101GYANZ/dp/B0FLDV535Q/ref=ast_sto_dp_puis" target="_blank" rel="nofollow" data-dimension112="5277b036-bc6d-11f1-8c0f-95523f3b5256" data-action="Deal Block" data-label="Crispi air fryer (Cyberspace)" data-dimension48="Crispi air fryer (Cyberspace)" data-dimension25="$178.60">Crispi air fryer (Cyberspace): was $299.99 now $178.60</a></strong><br />Ninja's glass air fryer packs 1700W of power into its portable design and comes with a 1.4L and a 3.8L container. The borosilicate glassware can withstand extreme temperatures, taking your favourite foods from frozen to crispy easily. </p><p>Also available in <a href="https://www.amazon.com.au/Ninja-CleanCrispTM-Functionality-Leak-Proof-FN101GYANZ/dp/B0FLDTL1TC/ref=ast_sto_dp_puis?th=1" target="_blank">Sage</a>, <a href="https://www.amazon.com.au/Ninja-CleanCrispTM-Functionality-Leak-Proof-FN101STANZ/dp/B0FLDW86PW/" target="_blank">Stone</a> and <a href="https://www.amazon.com.au/Ninja-Crispi-Portable-Glass-Fryer/dp/B0GX9TX26P/ref=pd_sbs_d_sccl_2_3/358-4947397-0956621?pd_rd_w=V5a51&amp;content-id=amzn1.sym.9809e620-093c-462d-962c-62e810229c4c&amp;pf_rd_p=9809e620-093c-462d-962c-62e810229c4c&amp;pf_rd_r=Q1WAJMY9K2NNC04Z2WEM&amp;pd_rd_wg=RIK7Q&amp;pd_rd_r=6c619d16-fc74-4824-a6c5-30d9fcaac419&amp;pd_rd_i=B0GX9TX26P&amp;psc=1" target="_blank">Pink</a> colourways with slightly varying discounts. <a class="view-deal button" href="https://www.amazon.com.au/Ninja-CleanCrispTM-Functionality-Leak-Proof-FN101GYANZ/dp/B0FLDV535Q/ref=ast_sto_dp_puis" target="_blank" rel="nofollow" data-dimension112="5277b036-bc6d-11f1-8c0f-95523f3b5256" data-action="Deal Block" data-label="Crispi air fryer (Cyberspace)" data-dimension48="Crispi air fryer (Cyberspace)" data-dimension25="$178.60">View Deal</a></p></div><div class="product"><a data-dimension112="5277b0a4-bc6d-11f1-93d7-ad87275534f6" data-action="Deal Block" data-label="Crispi Pro 6-In-1 air fryer (Sage Green)" data-dimension48="Crispi Pro 6-In-1 air fryer (Sage Green)" data-dimension25="$290.70" href="https://www.amazon.com.au/dp/B0GXL6CK8Q" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="ccy7dva5HqkgHz5Y78zLTU" name="ninja-crispi-pro-6in1-countertop-glass-a-cb8f6e48-595a-4b8e-ad1a-fc352b244d80.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/ccy7dva5HqkgHz5Y78zLTU-1920-80.jpg" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/dp/B0GXL6CK8Q" target="_blank" rel="nofollow" data-dimension112="5277b0a4-bc6d-11f1-93d7-ad87275534f6" data-action="Deal Block" data-label="Crispi Pro 6-In-1 air fryer (Sage Green)" data-dimension48="Crispi Pro 6-In-1 air fryer (Sage Green)" data-dimension25="$290.70">Crispi Pro 6-In-1 air fryer (Sage Green): was $499.99 now $290.70</a></strong><br />Meet the Ninja Crispi's newest sibling. With six modes, three different-sized borosilicate glassware "baskets" with container lids, and a larger, benchtop-permanent stand, this Pro takes the Crispi to the max. </p><p>Also available in <a href="https://www.amazon.com.au/dp/B0GXL2TM17/ref=sspa_dk_detail_1" target="_blank">Stone</a> and <a href="https://www.amazon.com.au/Ninja-Crispi-Glass-Fryer-5-7L/dp/B0GXKWFTKP/ref=pd_sbs_d_sccl_2_1/358-4947397-0956621?pd_rd_w=1VeSU&amp;content-id=amzn1.sym.9809e620-093c-462d-962c-62e810229c4c&amp;pf_rd_p=9809e620-093c-462d-962c-62e810229c4c&amp;pf_rd_r=HQEEQFPNPWZRFE9ZE5VF&amp;pd_rd_wg=enLo2&amp;pd_rd_r=e2d6a1f1-afe1-4ea0-92bc-4e36be87a2a6&amp;pd_rd_i=B0GXKWFTKP&amp;psc=1" target="_blank">Pink</a>. <a class="view-deal button" href="https://www.amazon.com.au/dp/B0GXL6CK8Q" target="_blank" rel="nofollow" data-dimension112="5277b0a4-bc6d-11f1-93d7-ad87275534f6" data-action="Deal Block" data-label="Crispi Pro 6-In-1 air fryer (Sage Green)" data-dimension48="Crispi Pro 6-In-1 air fryer (Sage Green)" data-dimension25="$290.70">View Deal</a></p></div><div class="product"><a data-dimension112="5277b11c-bc6d-11f1-8caa-4930fa47c54d" data-action="Deal Block" data-label="XXXL FlexDrawer air fryer" data-dimension48="XXXL FlexDrawer air fryer" data-dimension25="$217.55" href="https://www.amazon.com.au/Ninja-FlexDrawer-Removable-Dishwasher-AF500/dp/B0CGH4Y9L2/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:500px;"><p class="vanilla-image-block" style="padding-top:82.00%;"><img id="Tat4mSppRuqPhvfNiUGzWX" name="ninja-xxxl-flexdrawer-air-fryer-104l-ext-28ac8d79-69b5-4a05-8555-a14438f0bf8f.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/Tat4mSppRuqPhvfNiUGzWX-1920-80.jpg" mos="" align="middle" fullscreen="" width="500" height="410" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/Ninja-FlexDrawer-Removable-Dishwasher-AF500/dp/B0CGH4Y9L2/" target="_blank" rel="nofollow" data-dimension112="5277b11c-bc6d-11f1-8caa-4930fa47c54d" data-action="Deal Block" data-label="XXXL FlexDrawer air fryer" data-dimension48="XXXL FlexDrawer air fryer" data-dimension25="$217.55">XXXL FlexDrawer air fryer: was $449.99 now $217.55</a></strong><br />With an extra-large 10.4L drawer capacity, a removable divider and dual temperature zones, this FlexDrawer air fryer is the ideal family feast maker. You can chuck in your proteins and veggies and set the cooking times to finish at the same time, making meals that much easier. <a class="view-deal button" href="https://www.amazon.com.au/Ninja-FlexDrawer-Removable-Dishwasher-AF500/dp/B0CGH4Y9L2/" target="_blank" rel="nofollow" data-dimension112="5277b11c-bc6d-11f1-8caa-4930fa47c54d" data-action="Deal Block" data-label="XXXL FlexDrawer air fryer" data-dimension48="XXXL FlexDrawer air fryer" data-dimension25="$217.55">View Deal</a></p></div><div class="product"><a data-dimension112="5277b18a-bc6d-11f1-b4cc-bbccd6a78ec9" data-action="Deal Block" data-label="DoubleStack XXXL 9.5L air fryer" data-dimension48="DoubleStack XXXL 9.5L air fryer" data-dimension25="$170.05" href="https://www.amazon.com.au/Ninja-Stacked-Fryer-Litre-Capacity/dp/B0DM5LBBVW/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="H7TVEoDX26dUtCAnyg62Hn" name="ninja-doublestack-air-fryer" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/H7TVEoDX26dUtCAnyg62Hn-1920-80.png" mos="" align="middle" fullscreen="" width="1000" height="1000" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/Ninja-Stacked-Fryer-Litre-Capacity/dp/B0DM5LBBVW/" target="_blank" rel="nofollow" data-dimension112="5277b18a-bc6d-11f1-b4cc-bbccd6a78ec9" data-action="Deal Block" data-label="DoubleStack XXXL 9.5L air fryer" data-dimension48="DoubleStack XXXL 9.5L air fryer" data-dimension25="$170.05">DoubleStack XXXL 9.5L air fryer: was $499.99 now $170.05</a></strong><br />Roast, bake, or crisp twice as many dishes with Ninja's DoubleStack air fryer tower, now 66% off. This model houses two independently controlled drawers that can cook up to four different foods at once, all while taking up less counter space than a typical extra-large air fryer. With a massive 9.5L capacity, you can even control the timings so that your whole meal — sides and all — is done at the exact same time. <a class="view-deal button" href="https://www.amazon.com.au/Ninja-Stacked-Fryer-Litre-Capacity/dp/B0DM5LBBVW/" target="_blank" rel="nofollow" data-dimension112="5277b18a-bc6d-11f1-b4cc-bbccd6a78ec9" data-action="Deal Block" data-label="DoubleStack XXXL 9.5L air fryer" data-dimension48="DoubleStack XXXL 9.5L air fryer" data-dimension25="$170.05">View Deal</a></p></div><div class="product"><a data-dimension112="5277b1f8-bc6d-11f1-9ed0-e5ced7e0a2e8" data-action="Deal Block" data-label="Hyperheat 9-In-1 multicooker" data-dimension48="Hyperheat 9-In-1 multicooker" data-dimension25="$179" href="https://www.amazon.com.au/Ninja-Hyperheat-Multicooker-Dark-PC201ANZ/dp/B0GXKTWGSM/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="i5uKhxfkHtoRmGkX36cpeX" name="ninja-hyperheat-9in1-multicooker-dark-gr-55af60a9-4fad-4808-ad44-a80d5a15c224.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/i5uKhxfkHtoRmGkX36cpeX-1920-80.jpg" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/Ninja-Hyperheat-Multicooker-Dark-PC201ANZ/dp/B0GXKTWGSM/" target="_blank" rel="nofollow" data-dimension112="5277b1f8-bc6d-11f1-9ed0-e5ced7e0a2e8" data-action="Deal Block" data-label="Hyperheat 9-In-1 multicooker" data-dimension48="Hyperheat 9-In-1 multicooker" data-dimension25="$179">Hyperheat 9-In-1 multicooker: was $349.99 now $179</a></strong><br />Interested in adding a multicooker to your kitchen's arsenal? This one from Ninja can pressure cook, steam, slow cook, sear, bake, roast and more, so you can prepare meals in one compact device. Now 49% off. <a class="view-deal button" href="https://www.amazon.com.au/Ninja-Hyperheat-Multicooker-Dark-PC201ANZ/dp/B0GXKTWGSM/" target="_blank" rel="nofollow" data-dimension112="5277b1f8-bc6d-11f1-9ed0-e5ced7e0a2e8" data-action="Deal Block" data-label="Hyperheat 9-In-1 multicooker" data-dimension48="Hyperheat 9-In-1 multicooker" data-dimension25="$179">View Deal</a></p></div><div class="product"><a data-dimension112="5277b270-bc6d-11f1-805a-9f364b8a2d13" data-action="Deal Block" data-label="Woodfire Electric BBQ Grill and Smoker" data-dimension48="Woodfire Electric BBQ Grill and Smoker" data-dimension25="$536" href="https://www.amazon.com.au/Ninja-Woodfire-Outdoor-Grill-Smart/dp/B0CGH179G7/ref=ast_sto_dp_puis" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="FvHPCLXhcQc4YKjkFTJwYo" name="ninja-woodfire-electric-grill" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/FvHPCLXhcQc4YKjkFTJwYo-1920-80.png" mos="" align="middle" fullscreen="" width="1000" height="1000" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/Ninja-Woodfire-Outdoor-Grill-Smart/dp/B0CGH179G7/ref=ast_sto_dp_puis" target="_blank" rel="nofollow" data-dimension112="5277b270-bc6d-11f1-805a-9f364b8a2d13" data-action="Deal Block" data-label="Woodfire Electric BBQ Grill and Smoker" data-dimension48="Woodfire Electric BBQ Grill and Smoker" data-dimension25="$536">Woodfire Electric BBQ Grill and Smoker: was $699.99 now $536</a></strong><br />While it's not quite summer, BBQ season is already starting up again. It's no surprise that Ninja has you covered with its electric grill and smoker. Using wood pellets, this grill can easily add rich and smoky flavour to your favourite meats, veggies and side dishes. You'll achieve great results every time with its built-in temperature control probe, and you can also bake, roast, dehydrate, and air fry with the same device. <a class="view-deal button" href="https://www.amazon.com.au/Ninja-Woodfire-Outdoor-Grill-Smart/dp/B0CGH179G7/ref=ast_sto_dp_puis" target="_blank" rel="nofollow" data-dimension112="5277b270-bc6d-11f1-805a-9f364b8a2d13" data-action="Deal Block" data-label="Woodfire Electric BBQ Grill and Smoker" data-dimension48="Woodfire Electric BBQ Grill and Smoker" data-dimension25="$536">View Deal</a></p></div><div class="product"><a data-dimension112="5277b2de-bc6d-11f1-a706-d9f4a6a5f2f0" data-action="Deal Block" data-label="Woodfire Pizza Oven" data-dimension48="Woodfire Pizza Oven" data-dimension25="$469" href="https://www.amazon.com.au/Ninja-functionality-Temperature-Resistant-OO101ANZ/dp/B0D22F1VGN" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1666px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="W5gcaBRuDdjvCedzhvKyej" name="Outdoor oven.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/W5gcaBRuDdjvCedzhvKyej-1920-80.jpg" mos="" align="middle" fullscreen="" width="1666" height="1666" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/Ninja-functionality-Temperature-Resistant-OO101ANZ/dp/B0D22F1VGN" target="_blank" rel="nofollow" data-dimension112="5277b2de-bc6d-11f1-a706-d9f4a6a5f2f0" data-action="Deal Block" data-label="Woodfire Pizza Oven" data-dimension48="Woodfire Pizza Oven" data-dimension25="$469">Woodfire Pizza Oven: was $699.99 now $469</a></strong><br />If you're keen to get outside and cook this spring, chances are that this deal is for you. This Ninja outdoor pizza oven offers 8 functions, including pizza, max roast, specialty roast and smoker, amongst others, so it’s by no means limited to just pizza. <a class="view-deal button" href="https://www.amazon.com.au/Ninja-functionality-Temperature-Resistant-OO101ANZ/dp/B0D22F1VGN" target="_blank" rel="nofollow" data-dimension112="5277b2de-bc6d-11f1-a706-d9f4a6a5f2f0" data-action="Deal Block" data-label="Woodfire Pizza Oven" data-dimension48="Woodfire Pizza Oven" data-dimension25="$469">View Deal</a></p></div> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/home/air-fryers/prime-big-deal-days-are-the-best-time-to-shop-ninjas-impressive-kitchen-appliance-range-save-up-to-au-usd363-on-ice-cream-makers-slushy-machines-and-blenders</link>
                                                                            <description>
                            <![CDATA[ Ninja's Prime Day deals are hard to beat, with up to AU$363 sliced across its entire range of kitchen appliances during Amazon's members-only sale. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">SwFj8e5ZpyNeZQozVR2TgG</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/VCBawb7G7tb6FxnRcQfHKK-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 30 Sep 2026 04:20:15 +0000</pubDate>                                                                                                                                <updated>Sat, 03 Oct 2026 23:34:02 +0000</updated>
                                                                                                                                            <category><![CDATA[Air Fryers]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                    <category><![CDATA[Home Appliances]]></category>
                                                    <category><![CDATA[Kitchen & Dining]]></category>
                                                                                                <author><![CDATA[ lucy.scotting@futurenet.com (Lucy Scotting) ]]></author>                    <dc:creator><![CDATA[ Lucy Scotting ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PQTnAGVHEDNmwJEbWkaqHV-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Lucy Scotting is a staff writer for Tom’s Guide Australia, primarily covering lifestyle, streaming and internet-related news. Lucy started her career writing for HR and staffing industry publications, covering emerging tech, business and finance.&lt;/p&gt;&lt;p&gt;In her spare time, Lucy can be found watching sci-fi movies, working on her dystopian fiction novel (in progress since 2017) or hanging out with her dog, Fletcher. If she’s not found doing any of the above, she’s likely on her next adventure to a new city, country, or continent. &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/VCBawb7G7tb6FxnRcQfHKK-1920-80.jpg">
                                                            <media:credit><![CDATA[Future / Ninja / edited with gemini]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Ninja products on blue background]]></media:description>                                                            <media:text><![CDATA[Ninja products on blue background]]></media:text>
                                <media:title type="plain"><![CDATA[Ninja products on blue background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/VCBawb7G7tb6FxnRcQfHKK-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>As a home appliance reviewer, there's one brand I tend to recommend to my friends and family for great-value, long-lasting kitchen devices — and that's Ninja. </p><p>I know I'm not the only Ninja fan out there — we've reviewed plenty of its great appliances here at Tom's Guide — but sometimes, seeing the brand's price tags makes me want to close my eyes. Because I know deep down that no matter the cost, I'm probably going to love my next Ninja appliance, despite my wallet's protests. </p><p><strong>• </strong><a href="https://www.amazon.com.au/primebigdealdays" target="_blank"><strong>Shop Amazon's full Prime Day sale</strong></a></p><p>Thankfully for my credit card, Ninja's great kitchen appliances have gotten their prices slashed at Amazon during the retailer's massive <a href="https://www.tomsguide.com/live/news/prime-big-deal-days-2026-au" target="_blank">Prime Big Deal Day sale</a>. From now until <strong>Monday, October 5, </strong>there are plenty of discounts on Ninja's <a href="https://www.amazon.com.au/stores/page/E542A989-11B7-43A8-9B77-843A3B8908FD?ingress=2&amp;lp_context_asin=B0FLDVKMH2&amp;lp_context_query=ninja&amp;visitId=4baba633-f02f-4324-a896-060e065e571f&amp;ref_=ast_bln" target="_blank">Amazon storefront</a>. </p><p>From summer essentials like the <a href="https://www.amazon.com.au/Ninja-Slushi-Professional-Frozen-Drink/dp/B0DM5J3QXK/" target="_blank">Slushi</a>, <a href="https://www.amazon.com.au/Ninja-Mix-ins-Milkshakes-Smoothie-NC300/dp/B0B4HDQQJG/" target="_blank">Creami</a> and <a href="https://www.amazon.com.au/Ninja-DB351BL3-Tumbler-Blender-Raspberry/dp/B0GF6V6KK1/ref=ast_sto_dp_puis" target="_blank">BlendBoss</a> tumbler to kitchen staples like the <a href="https://www.amazon.com.au/Ninja-CleanCrispTM-Functionality-Leak-Proof-FN101GYANZ/dp/B0FLDV535Q/ref=ast_sto_dp_puis" target="_blank">Crispi air fryer</a> and the <a href="https://www.amazon.com.au/dp/B0FLDT92Q6/ref=sspa_dk_detail_1" target="_blank">Ninja Luxe Cafe coffee machine</a>, there's up to 66% off. </p><p>I've gathered my top-recommended deals from Ninja for your perusal below. You'll need to act fast to nab these deals, though, as they will finish up on <strong>Monday, October 5. </strong></p><h3 class="article-body__section" id="section-best-ninja-prime-day-deals"><span>Best Ninja Prime Day deals</span></h3><div class="product"><a data-dimension112="5277ac94-bc6d-11f1-9f9f-ed099f9a480e" data-action="Deal Block" data-label="Creami ice cream maker (Cloud Silver)" data-dimension48="Creami ice cream maker (Cloud Silver)" data-dimension25="$208.05" href="https://www.amazon.com.au/Ninja-Mix-ins-Milkshakes-Smoothie-NC300/dp/B0B4HDQQJG/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="f8gg4pJdMpcdzpxoqpLPeX" name="ninja-creami-ice-cream-maker-automatic-d-518eb370-8311-4a1f-8d1b-49837be1c62f.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/f8gg4pJdMpcdzpxoqpLPeX-1920-80.jpg" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/Ninja-Mix-ins-Milkshakes-Smoothie-NC300/dp/B0B4HDQQJG/" target="_blank" rel="nofollow" data-dimension112="5277ac94-bc6d-11f1-9f9f-ed099f9a480e" data-action="Deal Block" data-label="Creami ice cream maker (Cloud Silver)" data-dimension48="Creami ice cream maker (Cloud Silver)" data-dimension25="$208.05">Creami ice cream maker (Cloud Silver): was $349.99 now $208.05</a></strong><br />Ninja's classic ice cream maker, the Creami, is now discounted to a new low price for Prime Big Deal Days. Sure, it's not the AU$188 outlay we saw in December 2024 for Boxing Day, but the discount is so close you can almost taste it. With five ice cream presets, you'll be whipping up a sundae storm all summer long. <a class="view-deal button" href="https://www.amazon.com.au/Ninja-Mix-ins-Milkshakes-Smoothie-NC300/dp/B0B4HDQQJG/" target="_blank" rel="nofollow" data-dimension112="5277ac94-bc6d-11f1-9f9f-ed099f9a480e" data-action="Deal Block" data-label="Creami ice cream maker (Cloud Silver)" data-dimension48="Creami ice cream maker (Cloud Silver)" data-dimension25="$208.05">View Deal</a></p></div><div class="product"><a data-dimension112="5277ad0c-bc6d-11f1-8151-43af8cf0f012" data-action="Deal Block" data-label="Creami ice cream maker (Coffee Cream)" data-dimension48="Creami ice cream maker (Coffee Cream)" data-dimension25="$214" href="https://www.amazon.com.au/Ninja-CREAMi-Frozen-Dessert-Coffee/dp/B0GX9SGRXC/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:363px;"><p class="vanilla-image-block" style="padding-top:137.74%;"><img id="3fehNmj4sbY9NcFEFWfRUX" name="ninja-creami-ice-cream-maker-7in1-frozen-ab6f8823-8f03-4492-9aea-d7c41f66eca2.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/3fehNmj4sbY9NcFEFWfRUX-1920-80.jpg" mos="" align="middle" fullscreen="" width="363" height="500" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/Ninja-CREAMi-Frozen-Dessert-Coffee/dp/B0GX9SGRXC/" target="_blank" rel="nofollow" data-dimension112="5277ad0c-bc6d-11f1-8151-43af8cf0f012" data-action="Deal Block" data-label="Creami ice cream maker (Coffee Cream)" data-dimension48="Creami ice cream maker (Coffee Cream)" data-dimension25="$214">Creami ice cream maker (Coffee Cream): was $299.99 now $214</a></strong><br />Don't love the idea of adding another grey or black appliance to your cupboard? Me too! That's why this Coffee Cream colourway deserves its own attention, as something a little different and perhaps more aesthetic than the traditional Creami above. With the same great presets, you'll be crafting your favourite pints in no time. <a class="view-deal button" href="https://www.amazon.com.au/Ninja-CREAMi-Frozen-Dessert-Coffee/dp/B0GX9SGRXC/" target="_blank" rel="nofollow" data-dimension112="5277ad0c-bc6d-11f1-8151-43af8cf0f012" data-action="Deal Block" data-label="Creami ice cream maker (Coffee Cream)" data-dimension48="Creami ice cream maker (Coffee Cream)" data-dimension25="$214">View Deal</a></p></div><div class="product"><a data-dimension112="5277ad7a-bc6d-11f1-887e-9962fdf780ff" data-action="Deal Block" data-label="Swirl by Creami" data-dimension48="Swirl by Creami" data-dimension25="$265.05" href="https://www.amazon.com.au/dp/B0FLDVKMH2/ref=sspa_dk_detail_1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="xRQCwBjCoTkFWE9GHprYN4" name="ninja-swirl" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/xRQCwBjCoTkFWE9GHprYN4-1920-80.png" mos="" align="middle" fullscreen="" width="1000" height="1000" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/dp/B0FLDVKMH2/ref=sspa_dk_detail_1" target="_blank" rel="nofollow" data-dimension112="5277ad7a-bc6d-11f1-887e-9962fdf780ff" data-action="Deal Block" data-label="Swirl by Creami" data-dimension48="Swirl by Creami" data-dimension25="$265.05">Swirl by Creami: was $549 now $265.05</a></strong><br />During Prime Day, the Ninja Creami Swirl has received a nice 52% discount on Amazon. Featuring 13 one-touch presets and a soft-serve handle, the new take on the Creami can dispense up to 4 small cones from one container using the soft-serve side, or can whip up your preferred pint on the Creami side. <a class="view-deal button" href="https://www.amazon.com.au/dp/B0FLDVKMH2/ref=sspa_dk_detail_1" target="_blank" rel="nofollow" data-dimension112="5277ad7a-bc6d-11f1-887e-9962fdf780ff" data-action="Deal Block" data-label="Swirl by Creami" data-dimension48="Swirl by Creami" data-dimension25="$265.05">View Deal</a></p></div><div class="product"><a data-dimension112="5277adf2-bc6d-11f1-85c5-372afffdc2f3" data-action="Deal Block" data-label="Slushi" data-dimension48="Slushi" data-dimension25="$236.55" href="https://www.amazon.com.au/Ninja-Slushi-Professional-Frozen-Drink/dp/B0DM5J3QXK/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="aosw5KqH89a9NCzPFbQ2yA" name="Ninja Slushi (1).jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/aosw5KqH89a9NCzPFbQ2yA-1920-80.jpg" mos="" align="middle" fullscreen="" width="1500" height="1500" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p>The <a href="https://www.tomsguide.com/home/kitchen-dining/ive-been-crafting-drinks-in-the-ninja-slushi-for-a-month-here-are-my-hot-tips-for-the-ultimate-frozen-drink" data-dimension112="5277adf2-bc6d-11f1-85c5-372afffdc2f3" data-action="Deal Block" data-label="Slushi" data-dimension48="Slushi" data-dimension25="$236.55">Ninja Slushi</a> is awesome for everything from frappes to smoothies, and even a boozy slushie if that's your vibe, thanks to its super handy drink modes. While Ninja's RRP isn't anything special, the Amazon price is truly special, at just AU$236.55 during the Prime Day sale. <a class="view-deal button" href="https://www.amazon.com.au/Ninja-Slushi-Professional-Frozen-Drink/dp/B0DM5J3QXK/" target="_blank" rel="nofollow" data-dimension112="5277adf2-bc6d-11f1-85c5-372afffdc2f3" data-action="Deal Block" data-label="Slushi" data-dimension48="Slushi" data-dimension25="$236.55">View Deal</a></p></div><div class="product"><a data-dimension112="5277ae60-bc6d-11f1-9073-ebbdc93459cd" data-action="Deal Block" data-label="Slushi Limited Edition - Frosé" data-dimension48="Slushi Limited Edition - Frosé" data-dimension25="$229" href="https://www.amazon.com.au/Ninja-Slushi-Professional-Frozen-Drink/dp/B0GX9WG98D" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="rfivt6BxbZEjPpZhySX3nE" name="ninja-slushi-professional-frozen-drink-m-5f720f3a-c40e-4643-8eb3-f25aa4470d50.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/rfivt6BxbZEjPpZhySX3nE-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="2000" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/Ninja-Slushi-Professional-Frozen-Drink/dp/B0GX9WG98D" target="_blank" rel="nofollow" data-dimension112="5277ae60-bc6d-11f1-9073-ebbdc93459cd" data-action="Deal Block" data-label="Slushi Limited Edition - Frosé" data-dimension48="Slushi Limited Edition - Frosé" data-dimension25="$229">Slushi Limited Edition - Frosé: was $399.99 now $229</a></strong><br />Look, this discount isn't as much as the standard colour above, but it's worth considering if you're after the limited edition Slushi in the fun Frosé or <a href="https://www.amazon.com.au/Ninja-Slushi-Professional-Frozen-Drink/dp/B0GX9XN6WN?ref_=ast_sto_dp&amp;th=1" target="_blank">Margarita</a> colourway. Packing the same great features as the original, who needs a dull grey appliance when you can have a pink one? <a class="view-deal button" href="https://www.amazon.com.au/Ninja-Slushi-Professional-Frozen-Drink/dp/B0GX9WG98D" target="_blank" rel="nofollow" data-dimension112="5277ae60-bc6d-11f1-9073-ebbdc93459cd" data-action="Deal Block" data-label="Slushi Limited Edition - Frosé" data-dimension48="Slushi Limited Edition - Frosé" data-dimension25="$229">View Deal</a></p></div><div class="product"><a data-dimension112="5277aed8-bc6d-11f1-849f-57c2fcdef228" data-action="Deal Block" data-label="Slushi Max (Cyberspace)" data-dimension48="Slushi Max (Cyberspace)" data-dimension25="$374.99" href="https://www.amazon.com.au/Ninja-SLUSHi-Frozen-Presets-Cyberspace/dp/B0GX9R48L8/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="Hryi2xfq37LDesqv4PJtSX" name="ninja-slushi-max-frozen-drink-maker-44l--f54a2c3a-056e-49e5-9106-3c2737ab617b.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/Hryi2xfq37LDesqv4PJtSX-1920-80.jpg" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/Ninja-SLUSHi-Frozen-Presets-Cyberspace/dp/B0GX9R48L8/" target="_blank" rel="nofollow" data-dimension112="5277aed8-bc6d-11f1-849f-57c2fcdef228" data-action="Deal Block" data-label="Slushi Max (Cyberspace)" data-dimension48="Slushi Max (Cyberspace)" data-dimension25="$374.99">Slushi Max (Cyberspace): was $599.99 now $374.99</a></strong><br />If the Slushi above isn't enough to fulfil your frozen beverage dreams, then you may want to consider its larger sibling. The Slushi Max can easily make up to 12 servings per batch, has six drink presets and can whip up your iced drink of choice within 15 minutes. Now discounted by 38%, this is the perfect poolside appliance for summer. <a class="view-deal button" href="https://www.amazon.com.au/Ninja-SLUSHi-Frozen-Presets-Cyberspace/dp/B0GX9R48L8/" target="_blank" rel="nofollow" data-dimension112="5277aed8-bc6d-11f1-849f-57c2fcdef228" data-action="Deal Block" data-label="Slushi Max (Cyberspace)" data-dimension48="Slushi Max (Cyberspace)" data-dimension25="$374.99">View Deal</a></p></div><div class="product"><a data-dimension112="5277af50-bc6d-11f1-9236-395438631048" data-action="Deal Block" data-label="BlendBoss blender (Blue Raspberry)" data-dimension48="BlendBoss blender (Blue Raspberry)" data-dimension25="$141.55" href="https://www.amazon.com.au/Ninja-DB351BL3-Tumbler-Blender-Raspberry/dp/B0GF6V6KK1/ref=ast_sto_dp_puis" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="KHiTYxeHgbwDSDMuzUUzAn" name="ninja-blendboss--personal-blender-for-sm-d51ca1a8-b418-40de-b1de-df2679e80cf0.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/KHiTYxeHgbwDSDMuzUUzAn-1920-80.jpg" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/Ninja-DB351BL3-Tumbler-Blender-Raspberry/dp/B0GF6V6KK1/ref=ast_sto_dp_puis" target="_blank" rel="nofollow" data-dimension112="5277af50-bc6d-11f1-9236-395438631048" data-action="Deal Block" data-label="BlendBoss blender (Blue Raspberry)" data-dimension48="BlendBoss blender (Blue Raspberry)" data-dimension25="$141.55">BlendBoss blender (Blue Raspberry): was $299.99 now $141.55</a></strong><br />The Ninja BlendBoss is a sleek, smart, and powerful appliance for enjoying blended drinks on the go. Simply pop in your ingredients to blend, then detach the tumbler from its base to carry it around. With a 1,100W motor, it's more than capable of crushing your favourite smoothie mix, including ice.</p><p>Also available in other fun colours, like <a href="https://www.amazon.com.au/Ninja-Tumbler-Blender-Lavender-Lemonade/dp/B0GF72CK3G/ref=ast_sto_dp_puis" target="_blank">Lavender Lemonade</a>, <a href="https://www.amazon.com.au/Ninja-Blend-Tumbler-Blender-Stone/dp/B0GF6PXMFP/ref=ast_sto_dp_puis" target="_blank">Stone Mint</a>, and <a href="https://www.amazon.com.au/Ninja-Tumbler-Blender-Watermelon-Bubblegum/dp/B0GF6SQNP1/ref=ast_sto_dp_puis" target="_blank">Watermelon Bubblegum</a>. <a class="view-deal button" href="https://www.amazon.com.au/Ninja-DB351BL3-Tumbler-Blender-Raspberry/dp/B0GF6V6KK1/ref=ast_sto_dp_puis" target="_blank" rel="nofollow" data-dimension112="5277af50-bc6d-11f1-9236-395438631048" data-action="Deal Block" data-label="BlendBoss blender (Blue Raspberry)" data-dimension48="BlendBoss blender (Blue Raspberry)" data-dimension25="$141.55">View Deal</a></p></div><div class="product"><a data-dimension112="5277afc8-bc6d-11f1-9267-dbfb05baae75" data-action="Deal Block" data-label="Luxe Café coffee machine" data-dimension48="Luxe Café coffee machine" data-dimension25="$598" href="https://www.amazon.com.au/dp/B0FLDT92Q6/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:541px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="HcnQ36qmUJg5VJidxsJ76X" name="Ninja Luxe Cafe.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/HcnQ36qmUJg5VJidxsJ76X-1920-80.jpg" mos="" align="middle" fullscreen="" width="541" height="541" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/dp/B0FLDT92Q6/" target="_blank" rel="nofollow" data-dimension112="5277afc8-bc6d-11f1-9267-dbfb05baae75" data-action="Deal Block" data-label="Luxe Café coffee machine" data-dimension48="Luxe Café coffee machine" data-dimension25="$598">Luxe Café coffee machine: was $849.99 now $598</a></strong><br />This Ninja 3-in-1 coffee machine brews quality espresso, drip coffee and even fast cold brew using its Barista Assist technology, an integrated grinder and weight-based dosing. As an iced coffee all-year-round enjoyer, the Ninja Luxe Cafe has changed my life, thanks to its cold-pressed espresso presets and its specialty Dual Froth system with a cold-foam setting. </p><p>Also available in the new <a href="https://www.amazon.com.au/dp/B0GXKXXRKL/" target="_blank">Oat colourway for AU$577.89</a>, or in the <a href="https://www.amazon.com.au/Ninja-Espresso-settings-assisted-Cyberspace/dp/B0FLDPX5B8/ref=ast_sto_dp_puis" target="_blank">Cyberspace colourway for AU$559.99</a>.<a class="view-deal button" href="https://www.amazon.com.au/dp/B0FLDT92Q6/" target="_blank" rel="nofollow" data-dimension112="5277afc8-bc6d-11f1-9267-dbfb05baae75" data-action="Deal Block" data-label="Luxe Café coffee machine" data-dimension48="Luxe Café coffee machine" data-dimension25="$598">View Deal</a></p></div><div class="product"><a data-dimension112="5277b036-bc6d-11f1-8c0f-95523f3b5256" data-action="Deal Block" data-label="Crispi air fryer (Cyberspace)" data-dimension48="Crispi air fryer (Cyberspace)" data-dimension25="$178.60" href="https://www.amazon.com.au/Ninja-CleanCrispTM-Functionality-Leak-Proof-FN101GYANZ/dp/B0FLDV535Q/ref=ast_sto_dp_puis" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1509px;"><p class="vanilla-image-block" style="padding-top:99.34%;"><img id="eEfVJnAAG2Hmtvf8eUP5dk" name="Ninja Crispi.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/eEfVJnAAG2Hmtvf8eUP5dk-1920-80.jpg" mos="" align="middle" fullscreen="" width="1509" height="1499" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/Ninja-CleanCrispTM-Functionality-Leak-Proof-FN101GYANZ/dp/B0FLDV535Q/ref=ast_sto_dp_puis" target="_blank" rel="nofollow" data-dimension112="5277b036-bc6d-11f1-8c0f-95523f3b5256" data-action="Deal Block" data-label="Crispi air fryer (Cyberspace)" data-dimension48="Crispi air fryer (Cyberspace)" data-dimension25="$178.60">Crispi air fryer (Cyberspace): was $299.99 now $178.60</a></strong><br />Ninja's glass air fryer packs 1700W of power into its portable design and comes with a 1.4L and a 3.8L container. The borosilicate glassware can withstand extreme temperatures, taking your favourite foods from frozen to crispy easily. </p><p>Also available in <a href="https://www.amazon.com.au/Ninja-CleanCrispTM-Functionality-Leak-Proof-FN101GYANZ/dp/B0FLDTL1TC/ref=ast_sto_dp_puis?th=1" target="_blank">Sage</a>, <a href="https://www.amazon.com.au/Ninja-CleanCrispTM-Functionality-Leak-Proof-FN101STANZ/dp/B0FLDW86PW/" target="_blank">Stone</a> and <a href="https://www.amazon.com.au/Ninja-Crispi-Portable-Glass-Fryer/dp/B0GX9TX26P/ref=pd_sbs_d_sccl_2_3/358-4947397-0956621?pd_rd_w=V5a51&amp;content-id=amzn1.sym.9809e620-093c-462d-962c-62e810229c4c&amp;pf_rd_p=9809e620-093c-462d-962c-62e810229c4c&amp;pf_rd_r=Q1WAJMY9K2NNC04Z2WEM&amp;pd_rd_wg=RIK7Q&amp;pd_rd_r=6c619d16-fc74-4824-a6c5-30d9fcaac419&amp;pd_rd_i=B0GX9TX26P&amp;psc=1" target="_blank">Pink</a> colourways with slightly varying discounts. <a class="view-deal button" href="https://www.amazon.com.au/Ninja-CleanCrispTM-Functionality-Leak-Proof-FN101GYANZ/dp/B0FLDV535Q/ref=ast_sto_dp_puis" target="_blank" rel="nofollow" data-dimension112="5277b036-bc6d-11f1-8c0f-95523f3b5256" data-action="Deal Block" data-label="Crispi air fryer (Cyberspace)" data-dimension48="Crispi air fryer (Cyberspace)" data-dimension25="$178.60">View Deal</a></p></div><div class="product"><a data-dimension112="5277b0a4-bc6d-11f1-93d7-ad87275534f6" data-action="Deal Block" data-label="Crispi Pro 6-In-1 air fryer (Sage Green)" data-dimension48="Crispi Pro 6-In-1 air fryer (Sage Green)" data-dimension25="$290.70" href="https://www.amazon.com.au/dp/B0GXL6CK8Q" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="ccy7dva5HqkgHz5Y78zLTU" name="ninja-crispi-pro-6in1-countertop-glass-a-cb8f6e48-595a-4b8e-ad1a-fc352b244d80.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/ccy7dva5HqkgHz5Y78zLTU-1920-80.jpg" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/dp/B0GXL6CK8Q" target="_blank" rel="nofollow" data-dimension112="5277b0a4-bc6d-11f1-93d7-ad87275534f6" data-action="Deal Block" data-label="Crispi Pro 6-In-1 air fryer (Sage Green)" data-dimension48="Crispi Pro 6-In-1 air fryer (Sage Green)" data-dimension25="$290.70">Crispi Pro 6-In-1 air fryer (Sage Green): was $499.99 now $290.70</a></strong><br />Meet the Ninja Crispi's newest sibling. With six modes, three different-sized borosilicate glassware "baskets" with container lids, and a larger, benchtop-permanent stand, this Pro takes the Crispi to the max. </p><p>Also available in <a href="https://www.amazon.com.au/dp/B0GXL2TM17/ref=sspa_dk_detail_1" target="_blank">Stone</a> and <a href="https://www.amazon.com.au/Ninja-Crispi-Glass-Fryer-5-7L/dp/B0GXKWFTKP/ref=pd_sbs_d_sccl_2_1/358-4947397-0956621?pd_rd_w=1VeSU&amp;content-id=amzn1.sym.9809e620-093c-462d-962c-62e810229c4c&amp;pf_rd_p=9809e620-093c-462d-962c-62e810229c4c&amp;pf_rd_r=HQEEQFPNPWZRFE9ZE5VF&amp;pd_rd_wg=enLo2&amp;pd_rd_r=e2d6a1f1-afe1-4ea0-92bc-4e36be87a2a6&amp;pd_rd_i=B0GXKWFTKP&amp;psc=1" target="_blank">Pink</a>. <a class="view-deal button" href="https://www.amazon.com.au/dp/B0GXL6CK8Q" target="_blank" rel="nofollow" data-dimension112="5277b0a4-bc6d-11f1-93d7-ad87275534f6" data-action="Deal Block" data-label="Crispi Pro 6-In-1 air fryer (Sage Green)" data-dimension48="Crispi Pro 6-In-1 air fryer (Sage Green)" data-dimension25="$290.70">View Deal</a></p></div><div class="product"><a data-dimension112="5277b11c-bc6d-11f1-8caa-4930fa47c54d" data-action="Deal Block" data-label="XXXL FlexDrawer air fryer" data-dimension48="XXXL FlexDrawer air fryer" data-dimension25="$217.55" href="https://www.amazon.com.au/Ninja-FlexDrawer-Removable-Dishwasher-AF500/dp/B0CGH4Y9L2/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:500px;"><p class="vanilla-image-block" style="padding-top:82.00%;"><img id="Tat4mSppRuqPhvfNiUGzWX" name="ninja-xxxl-flexdrawer-air-fryer-104l-ext-28ac8d79-69b5-4a05-8555-a14438f0bf8f.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/Tat4mSppRuqPhvfNiUGzWX-1920-80.jpg" mos="" align="middle" fullscreen="" width="500" height="410" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/Ninja-FlexDrawer-Removable-Dishwasher-AF500/dp/B0CGH4Y9L2/" target="_blank" rel="nofollow" data-dimension112="5277b11c-bc6d-11f1-8caa-4930fa47c54d" data-action="Deal Block" data-label="XXXL FlexDrawer air fryer" data-dimension48="XXXL FlexDrawer air fryer" data-dimension25="$217.55">XXXL FlexDrawer air fryer: was $449.99 now $217.55</a></strong><br />With an extra-large 10.4L drawer capacity, a removable divider and dual temperature zones, this FlexDrawer air fryer is the ideal family feast maker. You can chuck in your proteins and veggies and set the cooking times to finish at the same time, making meals that much easier. <a class="view-deal button" href="https://www.amazon.com.au/Ninja-FlexDrawer-Removable-Dishwasher-AF500/dp/B0CGH4Y9L2/" target="_blank" rel="nofollow" data-dimension112="5277b11c-bc6d-11f1-8caa-4930fa47c54d" data-action="Deal Block" data-label="XXXL FlexDrawer air fryer" data-dimension48="XXXL FlexDrawer air fryer" data-dimension25="$217.55">View Deal</a></p></div><div class="product"><a data-dimension112="5277b18a-bc6d-11f1-b4cc-bbccd6a78ec9" data-action="Deal Block" data-label="DoubleStack XXXL 9.5L air fryer" data-dimension48="DoubleStack XXXL 9.5L air fryer" data-dimension25="$170.05" href="https://www.amazon.com.au/Ninja-Stacked-Fryer-Litre-Capacity/dp/B0DM5LBBVW/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="H7TVEoDX26dUtCAnyg62Hn" name="ninja-doublestack-air-fryer" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/H7TVEoDX26dUtCAnyg62Hn-1920-80.png" mos="" align="middle" fullscreen="" width="1000" height="1000" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/Ninja-Stacked-Fryer-Litre-Capacity/dp/B0DM5LBBVW/" target="_blank" rel="nofollow" data-dimension112="5277b18a-bc6d-11f1-b4cc-bbccd6a78ec9" data-action="Deal Block" data-label="DoubleStack XXXL 9.5L air fryer" data-dimension48="DoubleStack XXXL 9.5L air fryer" data-dimension25="$170.05">DoubleStack XXXL 9.5L air fryer: was $499.99 now $170.05</a></strong><br />Roast, bake, or crisp twice as many dishes with Ninja's DoubleStack air fryer tower, now 66% off. This model houses two independently controlled drawers that can cook up to four different foods at once, all while taking up less counter space than a typical extra-large air fryer. With a massive 9.5L capacity, you can even control the timings so that your whole meal — sides and all — is done at the exact same time. <a class="view-deal button" href="https://www.amazon.com.au/Ninja-Stacked-Fryer-Litre-Capacity/dp/B0DM5LBBVW/" target="_blank" rel="nofollow" data-dimension112="5277b18a-bc6d-11f1-b4cc-bbccd6a78ec9" data-action="Deal Block" data-label="DoubleStack XXXL 9.5L air fryer" data-dimension48="DoubleStack XXXL 9.5L air fryer" data-dimension25="$170.05">View Deal</a></p></div><div class="product"><a data-dimension112="5277b1f8-bc6d-11f1-9ed0-e5ced7e0a2e8" data-action="Deal Block" data-label="Hyperheat 9-In-1 multicooker" data-dimension48="Hyperheat 9-In-1 multicooker" data-dimension25="$179" href="https://www.amazon.com.au/Ninja-Hyperheat-Multicooker-Dark-PC201ANZ/dp/B0GXKTWGSM/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="i5uKhxfkHtoRmGkX36cpeX" name="ninja-hyperheat-9in1-multicooker-dark-gr-55af60a9-4fad-4808-ad44-a80d5a15c224.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/i5uKhxfkHtoRmGkX36cpeX-1920-80.jpg" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/Ninja-Hyperheat-Multicooker-Dark-PC201ANZ/dp/B0GXKTWGSM/" target="_blank" rel="nofollow" data-dimension112="5277b1f8-bc6d-11f1-9ed0-e5ced7e0a2e8" data-action="Deal Block" data-label="Hyperheat 9-In-1 multicooker" data-dimension48="Hyperheat 9-In-1 multicooker" data-dimension25="$179">Hyperheat 9-In-1 multicooker: was $349.99 now $179</a></strong><br />Interested in adding a multicooker to your kitchen's arsenal? This one from Ninja can pressure cook, steam, slow cook, sear, bake, roast and more, so you can prepare meals in one compact device. Now 49% off. <a class="view-deal button" href="https://www.amazon.com.au/Ninja-Hyperheat-Multicooker-Dark-PC201ANZ/dp/B0GXKTWGSM/" target="_blank" rel="nofollow" data-dimension112="5277b1f8-bc6d-11f1-9ed0-e5ced7e0a2e8" data-action="Deal Block" data-label="Hyperheat 9-In-1 multicooker" data-dimension48="Hyperheat 9-In-1 multicooker" data-dimension25="$179">View Deal</a></p></div><div class="product"><a data-dimension112="5277b270-bc6d-11f1-805a-9f364b8a2d13" data-action="Deal Block" data-label="Woodfire Electric BBQ Grill and Smoker" data-dimension48="Woodfire Electric BBQ Grill and Smoker" data-dimension25="$536" href="https://www.amazon.com.au/Ninja-Woodfire-Outdoor-Grill-Smart/dp/B0CGH179G7/ref=ast_sto_dp_puis" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="FvHPCLXhcQc4YKjkFTJwYo" name="ninja-woodfire-electric-grill" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/FvHPCLXhcQc4YKjkFTJwYo-1920-80.png" mos="" align="middle" fullscreen="" width="1000" height="1000" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/Ninja-Woodfire-Outdoor-Grill-Smart/dp/B0CGH179G7/ref=ast_sto_dp_puis" target="_blank" rel="nofollow" data-dimension112="5277b270-bc6d-11f1-805a-9f364b8a2d13" data-action="Deal Block" data-label="Woodfire Electric BBQ Grill and Smoker" data-dimension48="Woodfire Electric BBQ Grill and Smoker" data-dimension25="$536">Woodfire Electric BBQ Grill and Smoker: was $699.99 now $536</a></strong><br />While it's not quite summer, BBQ season is already starting up again. It's no surprise that Ninja has you covered with its electric grill and smoker. Using wood pellets, this grill can easily add rich and smoky flavour to your favourite meats, veggies and side dishes. You'll achieve great results every time with its built-in temperature control probe, and you can also bake, roast, dehydrate, and air fry with the same device. <a class="view-deal button" href="https://www.amazon.com.au/Ninja-Woodfire-Outdoor-Grill-Smart/dp/B0CGH179G7/ref=ast_sto_dp_puis" target="_blank" rel="nofollow" data-dimension112="5277b270-bc6d-11f1-805a-9f364b8a2d13" data-action="Deal Block" data-label="Woodfire Electric BBQ Grill and Smoker" data-dimension48="Woodfire Electric BBQ Grill and Smoker" data-dimension25="$536">View Deal</a></p></div><div class="product"><a data-dimension112="5277b2de-bc6d-11f1-a706-d9f4a6a5f2f0" data-action="Deal Block" data-label="Woodfire Pizza Oven" data-dimension48="Woodfire Pizza Oven" data-dimension25="$469" href="https://www.amazon.com.au/Ninja-functionality-Temperature-Resistant-OO101ANZ/dp/B0D22F1VGN" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1666px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="W5gcaBRuDdjvCedzhvKyej" name="Outdoor oven.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/W5gcaBRuDdjvCedzhvKyej-1920-80.jpg" mos="" align="middle" fullscreen="" width="1666" height="1666" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/Ninja-functionality-Temperature-Resistant-OO101ANZ/dp/B0D22F1VGN" target="_blank" rel="nofollow" data-dimension112="5277b2de-bc6d-11f1-a706-d9f4a6a5f2f0" data-action="Deal Block" data-label="Woodfire Pizza Oven" data-dimension48="Woodfire Pizza Oven" data-dimension25="$469">Woodfire Pizza Oven: was $699.99 now $469</a></strong><br />If you're keen to get outside and cook this spring, chances are that this deal is for you. This Ninja outdoor pizza oven offers 8 functions, including pizza, max roast, specialty roast and smoker, amongst others, so it’s by no means limited to just pizza. <a class="view-deal button" href="https://www.amazon.com.au/Ninja-functionality-Temperature-Resistant-OO101ANZ/dp/B0D22F1VGN" target="_blank" rel="nofollow" data-dimension112="5277b2de-bc6d-11f1-a706-d9f4a6a5f2f0" data-action="Deal Block" data-label="Woodfire Pizza Oven" data-dimension48="Woodfire Pizza Oven" data-dimension25="$469">View Deal</a></p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ It's Spring Cleaning time — here are 18 Prime Day home appliance deals that'll take the "work" out of housework ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Spring has <em>finally</em> sprung in Australia, so it's the perfect time to tidy up and dust away your winter blues with some new cleaning appliances. </p><p>If you're in the market for a new vacuum, floorwasher or spot cleaner, it's an ideal time to shop at Amazon. This week, the retailer is holding its annual <a href="https://www.tomsguide.com/live/news/prime-big-deal-days-2026-au" target="_blank">Prime Big Deal Days</a> sale, running until <strong>Monday, October 5, </strong>and there are deep discounts on home appliances from brands like Dyson, Ecovacs, Roborock, Shark and Tineco. </p><p><strong>• </strong><a href="https://www.amazon.com.au/primebigdealdays" target="_blank"><strong>Shop Amazon's full Prime Day sale</strong></a></p><p>I've gathered 18 great spring cleaning deals below to help you find your next best home appliance. Do note, though, these discounts won't last long, as they're set to expire next <strong>Monday, October 5</strong>, when the sale comes to a close. </p>        <div class="featured_product_block featured_block_hero" data-id="4361ac8c-bbb9-11f1-bc0a-89d50df8fa05">            <a href="https://www.amazon.com.au/Shark-PowerDetect-Multi-Directional-Automatically-IP3251ANZ/dp/B0DM5L7MT4" data-model-name="Cordless PowerDetect Clean &amp; Empty System" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/cP7FYnCsiAxuEAH5SwUfw8.jpg" alt="Shark Cordless Powerdetect Clean &amp; Empty System, Multi-Directional Cleaning, Automatically Charges &amp; Empties, 70 Min Runtime, Ip3251anz, Colour: Brass" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Shark</div>                                        <div class="featured__title">Cordless PowerDetect Clean &amp; Empty System</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="4361ad04-bbb9-11f1-a39e-4342fb72622a">            <a href="https://www.amazon.com.au/Mova-Tangle-Free-Self-Cleaning-Dual-Edge-Adjustment/dp/B0FVLC5HY8" data-model-name="X4 Pro Cordless Wet Dry Vacuum Cleaner" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/35sDCpRwkQRCrcfY2Mwri9.jpg" alt="Mova X4 Pro Cordless Wet Dry Vacuum Cleaner, Hot Water Mopping, Tangle-Free, 212°f Self-Cleaning, 20kpa Suction, Push-In Station, Led Brush Head, Dual-Edge, Smart Suction Adjustment" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>MOVA</div>                                        <div class="featured__title">X4 Pro Cordless Wet Dry Vacuum Cleaner</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="4361ad7c-bbb9-11f1-b02d-6391b986161c">            <a href="https://www.amazon.com.au/Hoover-Powerscrub-Cleaner-Shampooer-FH68050/dp/B09FQ7QBTS" data-model-name="Powerscrub XL Carpet Cleaner" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/RbPH3jE4ZsLvHFUMeS5sc9.jpg" alt="Hoover Powerscrub Xl Carpet Cleaner, Large Capacity Upright Carpet Washer With 5 Spinscrub Brushes for Multiple Room Deep Cleaning, Quick Dry" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Hoover</div>                                        <div class="featured__title">Powerscrub XL Carpet Cleaner</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="4361adea-bbb9-11f1-9eee-55fd39ba17ae">            <a href="https://www.amazon.com.au/dp/B0G5YDSZBV" data-model-name="Qrevo Curv 2 Flow Robot Vacuum &amp; Roller Mop" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/SEP2Ccb3qxMEZMgXC6cK59.jpg" alt="Roborock Qrevo Curv 2 Flow Robot Vacuum&amp;roller Mop, Powerful 20000pa Suction, Rear-Time Roller Cleaning W/ 2.5x Pressure, Lift Up for Carpet,edge Cleaning, Zero-Tangling, Self-Emptying, Hot Air Drying" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>roborock</div>                                        <div class="featured__title">Qrevo Curv 2 Flow Robot Vacuum &amp; Roller Mop</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="4361ae4e-bbb9-11f1-b3ec-719d53432428">            <a href="https://www.amazon.com.au/dp/B0DJ7LFXC6" data-model-name="F25 Ace Wet Dry Vacuum Cleaner" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/7r3bJC8nj7eLed4CViaBR9.jpg" alt="Roborock F25 Ace Wet Dry Vacuum Cleaner, Cordless Vacuum Mop All in One for Hard Floor, 20000pa Hardwood Floor Cleaner With Zero Tangle, 194°f Hot Air Flash Drying Electric Mop, 180° Lie Flat, Wifi" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>roborock</div>                                        <div class="featured__title">F25 Ace Wet Dry Vacuum Cleaner</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="4361aebc-bbb9-11f1-94e4-019c0b0e63ec">            <a href="https://www.amazon.com.au/Shark-PowerPro-Cordless-Vacuum-Filter/dp/B0GF76NV2C/" data-model-name="Powerpro Cordless Stick Vacuum" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/C4jqNhyGMt284PKxCTRsk8.jpg" alt="Shark Powerpro Cordless Stick Vacuum With Hepa Filter" /><span class='featured__label hero__label'>Out of stock</span></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Shark</div>                                        <div class="featured__title">Powerpro Cordless Stick Vacuum</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="4361af2a-bbb9-11f1-8b23-bf0e3d1702e4">            <a href="https://www.amazon.com.au/Shark-StainStriker-Upholstery-Dual-Action-PX200ANZ/dp/B0DK8JTTQ9/" data-model-name="Stainstriker Portable Carpet and Upholstery Cleaner" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/4PqkQkWVqvbZShDzqEKUJ9.jpg" alt="Shark Stainstriker Portable Carpet and Upholstery Cleaner, Portable Spot Cleaner, Powerful Dual-Action Stain and Spot Remover for Deep Cleaning, Px200anz, White" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Shark</div>                                        <div class="featured__title">Stainstriker Portable Carpet and Upholstery Cleaner</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="4361af98-bbb9-11f1-9de8-538afd1a9108">            <a href="https://www.amazon.com.au/roborock-Qrevo-Powerful-Refilling-Anti-Tangle/dp/B0F4CLCNJR" data-model-name="Qrevo L Robot Vacuum and Mop" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/xvz8T86wWcg662uM6uPmE9.jpg" alt="Roborock Qrevo L Robot Vacuum and Mop, All-In-One Vacuum Cleaner, 10,000pa Powerful Suction, Self Emptying &amp; Refilling, Self Mop Washing &amp; Air Drying, Anti-Tangle Brushes for Home, Pet Hairs, Black" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>roborock</div>                                        <div class="featured__title">Qrevo L Robot Vacuum and Mop</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="4361b006-bbb9-11f1-b195-5b1a96757a7f">            <a href="https://www.amazon.com.au/dp/B0GWPVYWRJ" data-model-name="H60 Hub Plus Cordless Vacuum Cleaner With Auto-Empty Dock" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/DssFVEgdaYES53kvnVKoW9.jpg" alt="Roborock H60 Hub Plus Cordless Vacuum Cleaner With Auto-Empty Dock, 170aw Max Suction, 0% Tangle Rate, 140° Ultra-Wide Green Led Light, Up to 80 Min Runtime, Anti-Tangle Brush for Carpets" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Roborock</div>                                        <div class="featured__title">H60 Hub Plus Cordless Vacuum Cleaner With Auto-Empty Dock</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="4361b06a-bbb9-11f1-b2c3-937bdeb7ca38">            <a href="https://www.amazon.com.au/ECOVACS-T30S-Auto-Empty-TrueMapping-TrueDetect/dp/B0GVMLY34V" data-model-name="Deebot T30s Pro Plus Black Robot Vacuum and Mop" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/z4dcCazm35ju5iEYT4v699.jpg" alt="Ecovacs Deebot T30s Pro Plus Black Robot Vacuum and Mop, 25000pa Suction, Zero Tangle 2.0, Ozmo Turbo 2.0, Auto-Empty,45°c Hot Air Drying, Truemapping 2.0, Truedetect 3d, Auto-Lift Mop" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>ECOVACS</div>                                        <div class="featured__title">Deebot T30s Pro Plus Black Robot Vacuum and Mop</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="4361b0d8-bbb9-11f1-a887-bbd3c72abec3">            <a href="https://www.amazon.com.au/dp/B0GTQ3NNXS" data-model-name="F25 LT Gen2 Wet Dry Vacuum Cleaner" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/fqePFU2XenBbcDXhxJR2u8.jpg" alt="Roborock F25 Lt Gen2 Wet Dry Vacuum Cleaner, Cordless Vacuum Mop All in One for Hard Floor, 20000pa Floor Cleaner With Zero Tangle, Edge-To-Edge Cleaning, Ideal for Homes With Pets, 90℃ Self-Cleaning" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>roborock</div>                                        <div class="featured__title">F25 LT Gen2 Wet Dry Vacuum Cleaner</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="4361b146-bbb9-11f1-a544-a5c48c5dd82e">            <a href="https://www.amazon.com.au/Bissell-36984-Spotclean-Purple/dp/B074JF68TY" data-model-name="Spotclean Portable Carpet &amp; Upholstery Spot Cleaner" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/zVtRDT3RykZEW9tPQQeup8.jpg" alt="Bissell Spotclean 36984 | Portable Carpet &amp; Upholstery Spot Cleaner, Powerful 330w Motor, Specialised Formulas &amp; Tools for Tough Stains, Pet Messes &amp; Odour Removal" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Bissell</div>                                        <div class="featured__title">Spotclean Portable Carpet &amp; Upholstery Spot Cleaner</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="4361b1b4-bbb9-11f1-b76b-756d5edd56d5">            <a href="https://www.amazon.com.au/Dyson-V15s-DetectTM-Submarine-Absolute/dp/B0D7MLR1ZG" data-model-name="V15s Detect Submarine Absolute Wet and Dry Vacuum Cleaner" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:150%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/SAvx326J545b2dnMURTvB9.jpg" alt="Dyson V15s Detect™ Submarine Absolute Wet and Dry Vacuum Cleaner" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Dyson</div>                                        <div class="featured__title">V15s Detect Submarine Absolute Wet and Dry Vacuum Cleaner</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="4361b218-bbb9-11f1-bbfe-ef8949ab2cab">            <a href="https://www.amazon.com.au/dreame-Cordless-Cleaner-Powerful-Lightweight/dp/B0GSVQXLHN" data-model-name="R20 SE Cordless Vacuum Cleaner" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/YrwN4ZrWu8xseDk4DcSfT9.jpg" alt="Dreame R20 Se Cordless Vacuum Cleaner, Smart Stick Vacuum for Home, 150aw/20kpa Powerful Suction, Up to 90 Mins, Blue Lights, Lightweight for Hard Floor, Carpet, Pet Hair" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>dreame</div>                                        <div class="featured__title">R20 SE Cordless Vacuum Cleaner</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="4361b286-bbb9-11f1-954b-bf531c8a80c1">            <a href="https://www.amazon.com.au/roborock-Q7T-Anti-Tangle-Hands-Free-Navigation/dp/B0GZVV4D94" data-model-name="Q7t+ Robot Vacuum &amp; Mop" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:76.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/ADzupWRLdezpb5ytkWQF29.jpg" alt="Roborock Q7t+ Robot Vacuum &amp; Mop, All-In-One Vacuum Cleaner, Top 10,000pa Suction, Duoroller Anti-Tangle Brush, Hands-Free Cleaning 7 Weeks, Precise Navigation, Perfect for Pet Hair【q8 Max+ Upgraded】" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>roborock</div>                                        <div class="featured__title">Q7t+ Robot Vacuum &amp; Mop</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="4361b2ea-bbb9-11f1-abdc-adc555a5aee5">            <a href="https://www.amazon.com.au/Tineco-S5-Cordless-Vacuum-Cleaner/dp/B09P2RKRWX" data-model-name="Floor One S5 Smart Cordless Wet Dry Vacuum Cleaner and Mop" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/DD3FbFFzt2FXrVk5Sv69g9.jpg" alt="Tineco Floor One S5 Smart Cordless Wet Dry Vacuum Cleaner and Mop" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Tineco</div>                                        <div class="featured__title">Floor One S5 Smart Cordless Wet Dry Vacuum Cleaner and Mop</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="4361b362-bbb9-11f1-acd7-81e54ee61e3f">            <a href="https://www.amazon.com.au/Tineco-Cordless-Full-Path-Self-Cleaning-ZeroTangle/dp/B0DRFWWY3H" data-model-name="Pure One Station 5 Cordless Smart Vacuum With 2.5l Auto Dust Base" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:125.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/K8ZtzkyUhwAkR5fkpfBVM9.jpg" alt="Tineco Pure One Station 5 Cordless Smart Vacuum With 2.5l Auto Dust Base" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Tineco</div>                                        <div class="featured__title">Pure One Station 5 Cordless Smart Vacuum With 2.5l Auto Dust Base</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="4361b3c6-bbb9-11f1-9548-c5e67711ca67">            <a href="https://www.amazon.com.au/Bissell-Featherweight-Stick-Vacuum-Blue/dp/B078GGN9ZS" data-model-name="Featherweight Lightweight Bagless Stick Vacuum With Crevice Tool" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:150%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/rTPvePGmfjikSHpzJWdpZ9.jpg" alt="Bissell Featherweight 2024f Lightweight Bagless Stick Vacuum With Crevice Tool" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Bissell</div>                                        <div class="featured__title">Featherweight Lightweight Bagless Stick Vacuum With Crevice Tool</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/home/home-appliances/its-spring-cleaning-time-here-are-18-prime-day-home-appliance-deals-thatll-take-the-work-out-of-housework</link>
                                                                            <description>
                            <![CDATA[ Need some new appliances? Here are 18 Prime Day deals that'll help get your spring cleaning on. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">yUkBUY7smVV83ShcYJKVzD</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/RTbDrwTgBEkYBe68v5kWiV-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 30 Sep 2026 00:12:28 +0000</pubDate>                                                                                                                                <updated>Thu, 01 Oct 2026 21:20:01 +0000</updated>
                                                                                                                                            <category><![CDATA[Home Appliances]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                <author><![CDATA[ lucy.scotting@futurenet.com (Lucy Scotting) ]]></author>                    <dc:creator><![CDATA[ Lucy Scotting ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PQTnAGVHEDNmwJEbWkaqHV-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Lucy Scotting is a staff writer for Tom’s Guide Australia, primarily covering lifestyle, streaming and internet-related news. Lucy started her career writing for HR and staffing industry publications, covering emerging tech, business and finance.&lt;/p&gt;&lt;p&gt;In her spare time, Lucy can be found watching sci-fi movies, working on her dystopian fiction novel (in progress since 2017) or hanging out with her dog, Fletcher. If she’s not found doing any of the above, she’s likely on her next adventure to a new city, country, or continent. &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/RTbDrwTgBEkYBe68v5kWiV-1920-80.jpg">
                                                            <media:credit><![CDATA[Future / Edited with Gemini]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Vacuums on blue background with tg deal badge]]></media:description>                                                            <media:text><![CDATA[Vacuums on blue background with tg deal badge]]></media:text>
                                <media:title type="plain"><![CDATA[Vacuums on blue background with tg deal badge]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/RTbDrwTgBEkYBe68v5kWiV-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Spring has <em>finally</em> sprung in Australia, so it's the perfect time to tidy up and dust away your winter blues with some new cleaning appliances. </p><p>If you're in the market for a new vacuum, floorwasher or spot cleaner, it's an ideal time to shop at Amazon. This week, the retailer is holding its annual <a href="https://www.tomsguide.com/live/news/prime-big-deal-days-2026-au" target="_blank">Prime Big Deal Days</a> sale, running until <strong>Monday, October 5, </strong>and there are deep discounts on home appliances from brands like Dyson, Ecovacs, Roborock, Shark and Tineco. </p><p><strong>• </strong><a href="https://www.amazon.com.au/primebigdealdays" target="_blank"><strong>Shop Amazon's full Prime Day sale</strong></a></p><p>I've gathered 18 great spring cleaning deals below to help you find your next best home appliance. Do note, though, these discounts won't last long, as they're set to expire next <strong>Monday, October 5</strong>, when the sale comes to a close. </p>        <div class="featured_product_block featured_block_hero" data-id="4361ac8c-bbb9-11f1-bc0a-89d50df8fa05">            <a href="https://www.amazon.com.au/Shark-PowerDetect-Multi-Directional-Automatically-IP3251ANZ/dp/B0DM5L7MT4" data-model-name="Cordless PowerDetect Clean &amp; Empty System" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/cP7FYnCsiAxuEAH5SwUfw8.jpg" alt="Shark Cordless Powerdetect Clean &amp; Empty System, Multi-Directional Cleaning, Automatically Charges &amp; Empties, 70 Min Runtime, Ip3251anz, Colour: Brass" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Shark</div>                                        <div class="featured__title">Cordless PowerDetect Clean &amp; Empty System</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="4361ad04-bbb9-11f1-a39e-4342fb72622a">            <a href="https://www.amazon.com.au/Mova-Tangle-Free-Self-Cleaning-Dual-Edge-Adjustment/dp/B0FVLC5HY8" data-model-name="X4 Pro Cordless Wet Dry Vacuum Cleaner" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/35sDCpRwkQRCrcfY2Mwri9.jpg" alt="Mova X4 Pro Cordless Wet Dry Vacuum Cleaner, Hot Water Mopping, Tangle-Free, 212°f Self-Cleaning, 20kpa Suction, Push-In Station, Led Brush Head, Dual-Edge, Smart Suction Adjustment" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>MOVA</div>                                        <div class="featured__title">X4 Pro Cordless Wet Dry Vacuum Cleaner</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="4361ad7c-bbb9-11f1-b02d-6391b986161c">            <a href="https://www.amazon.com.au/Hoover-Powerscrub-Cleaner-Shampooer-FH68050/dp/B09FQ7QBTS" data-model-name="Powerscrub XL Carpet Cleaner" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/RbPH3jE4ZsLvHFUMeS5sc9.jpg" alt="Hoover Powerscrub Xl Carpet Cleaner, Large Capacity Upright Carpet Washer With 5 Spinscrub Brushes for Multiple Room Deep Cleaning, Quick Dry" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Hoover</div>                                        <div class="featured__title">Powerscrub XL Carpet Cleaner</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="4361adea-bbb9-11f1-9eee-55fd39ba17ae">            <a href="https://www.amazon.com.au/dp/B0G5YDSZBV" data-model-name="Qrevo Curv 2 Flow Robot Vacuum &amp; Roller Mop" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/SEP2Ccb3qxMEZMgXC6cK59.jpg" alt="Roborock Qrevo Curv 2 Flow Robot Vacuum&amp;roller Mop, Powerful 20000pa Suction, Rear-Time Roller Cleaning W/ 2.5x Pressure, Lift Up for Carpet,edge Cleaning, Zero-Tangling, Self-Emptying, Hot Air Drying" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>roborock</div>                                        <div class="featured__title">Qrevo Curv 2 Flow Robot Vacuum &amp; Roller Mop</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="4361ae4e-bbb9-11f1-b3ec-719d53432428">            <a href="https://www.amazon.com.au/dp/B0DJ7LFXC6" data-model-name="F25 Ace Wet Dry Vacuum Cleaner" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/7r3bJC8nj7eLed4CViaBR9.jpg" alt="Roborock F25 Ace Wet Dry Vacuum Cleaner, Cordless Vacuum Mop All in One for Hard Floor, 20000pa Hardwood Floor Cleaner With Zero Tangle, 194°f Hot Air Flash Drying Electric Mop, 180° Lie Flat, Wifi" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>roborock</div>                                        <div class="featured__title">F25 Ace Wet Dry Vacuum Cleaner</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="4361aebc-bbb9-11f1-94e4-019c0b0e63ec">            <a href="https://www.amazon.com.au/Shark-PowerPro-Cordless-Vacuum-Filter/dp/B0GF76NV2C/" data-model-name="Powerpro Cordless Stick Vacuum" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/C4jqNhyGMt284PKxCTRsk8.jpg" alt="Shark Powerpro Cordless Stick Vacuum With Hepa Filter" /><span class='featured__label hero__label'>Out of stock</span></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Shark</div>                                        <div class="featured__title">Powerpro Cordless Stick Vacuum</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="4361af2a-bbb9-11f1-8b23-bf0e3d1702e4">            <a href="https://www.amazon.com.au/Shark-StainStriker-Upholstery-Dual-Action-PX200ANZ/dp/B0DK8JTTQ9/" data-model-name="Stainstriker Portable Carpet and Upholstery Cleaner" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/4PqkQkWVqvbZShDzqEKUJ9.jpg" alt="Shark Stainstriker Portable Carpet and Upholstery Cleaner, Portable Spot Cleaner, Powerful Dual-Action Stain and Spot Remover for Deep Cleaning, Px200anz, White" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Shark</div>                                        <div class="featured__title">Stainstriker Portable Carpet and Upholstery Cleaner</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="4361af98-bbb9-11f1-9de8-538afd1a9108">            <a href="https://www.amazon.com.au/roborock-Qrevo-Powerful-Refilling-Anti-Tangle/dp/B0F4CLCNJR" data-model-name="Qrevo L Robot Vacuum and Mop" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/xvz8T86wWcg662uM6uPmE9.jpg" alt="Roborock Qrevo L Robot Vacuum and Mop, All-In-One Vacuum Cleaner, 10,000pa Powerful Suction, Self Emptying &amp; Refilling, Self Mop Washing &amp; Air Drying, Anti-Tangle Brushes for Home, Pet Hairs, Black" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>roborock</div>                                        <div class="featured__title">Qrevo L Robot Vacuum and Mop</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="4361b006-bbb9-11f1-b195-5b1a96757a7f">            <a href="https://www.amazon.com.au/dp/B0GWPVYWRJ" data-model-name="H60 Hub Plus Cordless Vacuum Cleaner With Auto-Empty Dock" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/DssFVEgdaYES53kvnVKoW9.jpg" alt="Roborock H60 Hub Plus Cordless Vacuum Cleaner With Auto-Empty Dock, 170aw Max Suction, 0% Tangle Rate, 140° Ultra-Wide Green Led Light, Up to 80 Min Runtime, Anti-Tangle Brush for Carpets" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Roborock</div>                                        <div class="featured__title">H60 Hub Plus Cordless Vacuum Cleaner With Auto-Empty Dock</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="4361b06a-bbb9-11f1-b2c3-937bdeb7ca38">            <a href="https://www.amazon.com.au/ECOVACS-T30S-Auto-Empty-TrueMapping-TrueDetect/dp/B0GVMLY34V" data-model-name="Deebot T30s Pro Plus Black Robot Vacuum and Mop" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/z4dcCazm35ju5iEYT4v699.jpg" alt="Ecovacs Deebot T30s Pro Plus Black Robot Vacuum and Mop, 25000pa Suction, Zero Tangle 2.0, Ozmo Turbo 2.0, Auto-Empty,45°c Hot Air Drying, Truemapping 2.0, Truedetect 3d, Auto-Lift Mop" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>ECOVACS</div>                                        <div class="featured__title">Deebot T30s Pro Plus Black Robot Vacuum and Mop</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="4361b0d8-bbb9-11f1-a887-bbd3c72abec3">            <a href="https://www.amazon.com.au/dp/B0GTQ3NNXS" data-model-name="F25 LT Gen2 Wet Dry Vacuum Cleaner" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/fqePFU2XenBbcDXhxJR2u8.jpg" alt="Roborock F25 Lt Gen2 Wet Dry Vacuum Cleaner, Cordless Vacuum Mop All in One for Hard Floor, 20000pa Floor Cleaner With Zero Tangle, Edge-To-Edge Cleaning, Ideal for Homes With Pets, 90℃ Self-Cleaning" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>roborock</div>                                        <div class="featured__title">F25 LT Gen2 Wet Dry Vacuum Cleaner</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="4361b146-bbb9-11f1-a544-a5c48c5dd82e">            <a href="https://www.amazon.com.au/Bissell-36984-Spotclean-Purple/dp/B074JF68TY" data-model-name="Spotclean Portable Carpet &amp; Upholstery Spot Cleaner" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/zVtRDT3RykZEW9tPQQeup8.jpg" alt="Bissell Spotclean 36984 | Portable Carpet &amp; Upholstery Spot Cleaner, Powerful 330w Motor, Specialised Formulas &amp; Tools for Tough Stains, Pet Messes &amp; Odour Removal" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Bissell</div>                                        <div class="featured__title">Spotclean Portable Carpet &amp; Upholstery Spot Cleaner</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="4361b1b4-bbb9-11f1-b76b-756d5edd56d5">            <a href="https://www.amazon.com.au/Dyson-V15s-DetectTM-Submarine-Absolute/dp/B0D7MLR1ZG" data-model-name="V15s Detect Submarine Absolute Wet and Dry Vacuum Cleaner" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:150%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/SAvx326J545b2dnMURTvB9.jpg" alt="Dyson V15s Detect™ Submarine Absolute Wet and Dry Vacuum Cleaner" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Dyson</div>                                        <div class="featured__title">V15s Detect Submarine Absolute Wet and Dry Vacuum Cleaner</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="4361b218-bbb9-11f1-bbfe-ef8949ab2cab">            <a href="https://www.amazon.com.au/dreame-Cordless-Cleaner-Powerful-Lightweight/dp/B0GSVQXLHN" data-model-name="R20 SE Cordless Vacuum Cleaner" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/YrwN4ZrWu8xseDk4DcSfT9.jpg" alt="Dreame R20 Se Cordless Vacuum Cleaner, Smart Stick Vacuum for Home, 150aw/20kpa Powerful Suction, Up to 90 Mins, Blue Lights, Lightweight for Hard Floor, Carpet, Pet Hair" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>dreame</div>                                        <div class="featured__title">R20 SE Cordless Vacuum Cleaner</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="4361b286-bbb9-11f1-954b-bf531c8a80c1">            <a href="https://www.amazon.com.au/roborock-Q7T-Anti-Tangle-Hands-Free-Navigation/dp/B0GZVV4D94" data-model-name="Q7t+ Robot Vacuum &amp; Mop" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:76.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/ADzupWRLdezpb5ytkWQF29.jpg" alt="Roborock Q7t+ Robot Vacuum &amp; Mop, All-In-One Vacuum Cleaner, Top 10,000pa Suction, Duoroller Anti-Tangle Brush, Hands-Free Cleaning 7 Weeks, Precise Navigation, Perfect for Pet Hair【q8 Max+ Upgraded】" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>roborock</div>                                        <div class="featured__title">Q7t+ Robot Vacuum &amp; Mop</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="4361b2ea-bbb9-11f1-abdc-adc555a5aee5">            <a href="https://www.amazon.com.au/Tineco-S5-Cordless-Vacuum-Cleaner/dp/B09P2RKRWX" data-model-name="Floor One S5 Smart Cordless Wet Dry Vacuum Cleaner and Mop" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/DD3FbFFzt2FXrVk5Sv69g9.jpg" alt="Tineco Floor One S5 Smart Cordless Wet Dry Vacuum Cleaner and Mop" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Tineco</div>                                        <div class="featured__title">Floor One S5 Smart Cordless Wet Dry Vacuum Cleaner and Mop</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="4361b362-bbb9-11f1-acd7-81e54ee61e3f">            <a href="https://www.amazon.com.au/Tineco-Cordless-Full-Path-Self-Cleaning-ZeroTangle/dp/B0DRFWWY3H" data-model-name="Pure One Station 5 Cordless Smart Vacuum With 2.5l Auto Dust Base" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:125.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/K8ZtzkyUhwAkR5fkpfBVM9.jpg" alt="Tineco Pure One Station 5 Cordless Smart Vacuum With 2.5l Auto Dust Base" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Tineco</div>                                        <div class="featured__title">Pure One Station 5 Cordless Smart Vacuum With 2.5l Auto Dust Base</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="4361b3c6-bbb9-11f1-9548-c5e67711ca67">            <a href="https://www.amazon.com.au/Bissell-Featherweight-Stick-Vacuum-Blue/dp/B078GGN9ZS" data-model-name="Featherweight Lightweight Bagless Stick Vacuum With Crevice Tool" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:150%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/rTPvePGmfjikSHpzJWdpZ9.jpg" alt="Bissell Featherweight 2024f Lightweight Bagless Stick Vacuum With Crevice Tool" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Bissell</div>                                        <div class="featured__title">Featherweight Lightweight Bagless Stick Vacuum With Crevice Tool</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Beat the Black Friday rush: 16 top-rated Lego sets are up to 37% off for Amazon AU's Prime Big Deal Days ]]></title>
                                                                                                <dc:content><![CDATA[ <p>I love <a href="https://www.amazon.com.au/stores/page/FF3E9109-FF93-4916-B5DA-007C4BF19C6C?ingress=2&amp;lp_context_asin=B07BT89GTP&amp;lp_context_query=lego&amp;visitId=eb502eb8-2a9f-4333-b075-b4b4bf382dbd&amp;ref_=ast_bln" target="_blank">Lego</a>. Whether it's building minifigures within seconds or spending a full day crafting a huge brick masterpiece, there's nothing better than getting busy with a new Lego build. </p><p>If you're a Lego fan like me, you'll be pleased to know that <a href="https://www.tomsguide.com/live/news/prime-big-deal-days-2026-au" target="_blank">Amazon's Prime Day 2.0</a> sale (a.k.a. Prime Big Deal Days) in now on in Australia, running until next <strong>Monday, October 5</strong>. And as is often the case in Amazon sales, there are sizeable discounts to be had across Lego sets both big and small. I'm talking up to 37% off sets from major franchises like Disney, Pixar and Star Wars, to Lego Icons, Friends and Artworks, and lots in between. </p><p><strong>• </strong><a href="https://www.amazon.com.au/primebigdealdays" target="_blank"><strong>Shop Amazon's full Prime Day sale</strong></a></p><p>I've curated a list of 18 of my top-recommended <a href="https://www.amazon.com.au/stores/page/FF3E9109-FF93-4916-B5DA-007C4BF19C6C?ingress=2&amp;lp_context_asin=B07BT89GTP&amp;lp_context_query=lego&amp;visitId=eb502eb8-2a9f-4333-b075-b4b4bf382dbd&amp;ref_=ast_bln" target="_blank">Lego Prime Day deals below</a> to help you zero in on the best sets — noting that, in my experience, Lego sets like these sell out super quickly during Amazon Prime Day events, so you may want to act fast if any take your fancy. </p><p>If you're in the brick-building mood this Prime Day, these are the Lego sets worth your attention.</p>        <div class="featured_product_block featured_block_hero" data-id="cc1faba4-bbc9-11f1-b4fd-ed5ed57a34b7">            <a href="https://www.amazon.com.au/LEGO%C2%AE-Star-Wars-Build-Display/dp/B0DWDQ58Y4/ref=ast_sto_dp_puis" data-model-name="Star Wars: The Phantom Menace Battle Droid With Stap Set 75428" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/buSjXFTRz9qNPasDBtKYwE.jpg" alt="Lego® Star Wars: the Phantom Menace™ Battle Droid™ With Stap Set 75428 Buildable Posable Figure, Toys for Boys, Girls and Any Fans, Building Toy for Kids, Build-And-Display Model, Desk Decor" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>LEGO</div>                                        <div class="featured__title">Star Wars: The Phantom Menace Battle Droid With Stap Set 75428</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="cc1fac30-bbc9-11f1-addf-a925881077b5">            <a href="https://www.amazon.com.au/LEGO-Potter-Hogwarts-Castle-71043/dp/B07BLDTWVW/ref=ast_sto_dp_puis" data-model-name="Harry Potter Hogwarts Castle 71043" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/NcZewLmA39dVdAXy9dVcsE.jpg" alt="Lego Harry Potter Hogwarts Castle 71043 Castle Model,building Kit With Harry Potter,collectable Set With the Great Hall,sword of Gryffindor &amp; Chamber of Secrets,wizarding World Treat Idea for Fans" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>LEGO</div>                                        <div class="featured__title">Harry Potter Hogwarts Castle 71043</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="cc1facb2-bbc9-11f1-88b4-93f5d12d0036">            <a href="https://www.amazon.com.au/BatmanTM-76300-Collectible-Super-Hero-Minifigures/dp/B0FPXG76FP/ref=ast_sto_dp_puis" data-model-name="DC Batman Arkham Asylum 76300" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/ZupMCtqkrYNVQB8HuKdJLE.jpg" alt="Lego® Dc Batman™ Arkham Asylum™ 76300 Collectible Super-Hero Building Set With 16 Minifigures, Build-And-Display Merch for Decor or a 24-Build Advent Calendar, Toy for Adult" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>LEGO</div>                                        <div class="featured__title">DC Batman Arkham Asylum 76300</div>                                    </div>                <div class="subtitle__description">                                                            <p><p><strong>[Ed note: 499.99 to 399 - OOS as of 04/10 @ 10am]</strong></p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="cc1fad34-bbc9-11f1-977d-db35e5d8a651">            <a href="https://www.amazon.com.au/Hunters-Sussie-72537-Posable-Display/dp/B0GJDDY8FD/ref=ast_sto_dp_puis" data-model-name="K-Pop Demon Hunters Derpy Tiger and Sussie Bird 72537 " data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/2fKSnSwVMjFdTs9JohZLPF.jpg" alt="Lego® Kpop Demon Hunters Derpy Tiger and Sussie Bird 72537 Posable K-Pop Merch Toy for Play and Display - With Flowerpot and Letters - Kids’ Birthday Playset Idea for Girls and Boys Aged 9+" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>LEGO</div>                                        <div class="featured__title">K-Pop Demon Hunters Derpy Tiger and Sussie Bird 72537 </div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="cc1fadb6-bbc9-11f1-91c7-510863e3961b">            <a href="https://www.amazon.com.au/Botanicals-Rocking-Plants-11506-Building/dp/B0FPXFLNR7/ref=ast_sto_dp_puis" data-model-name="Botanicals Rocking Plants 11506" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/mrRHAEAMomRMxibbFxQHpE.jpg" alt="Lego® Botanicals Rocking Plants 11506 Flower Building Set for Girls and Boys - Nature Decor - Includes 2 Plants and 2 Pastel Coloured Pots - Treat Idea for Kids - Bedroom or Desk Decorations" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>LEGO</div>                                        <div class="featured__title">Botanicals Rocking Plants 11506</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="cc1fae38-bbc9-11f1-92bd-9768833dfe78">            <a href="https://www.amazon.com.au/LEGO%C2%AE-Battle-Castle-75645-Pretend/dp/B0GGSZZ69C/ref=ast_sto_dp_puis" data-model-name="One Piece Battle at Drum Castle 75645" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/ZFnMgBKeT92kzvPLqXdJjF.jpg" alt="Lego® One Piece Battle at Drum Castle 75645 Pretend Play Toy for Boys, Girls and Kids Aged 9+ - Multilevel Building Set With 6 Minifigures - Playset for Fans of the One Piece Netflix Show" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>LEGO</div>                                        <div class="featured__title">One Piece Battle at Drum Castle 75645</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="cc1faeba-bbc9-11f1-bce7-83f175748c31">            <a href="https://www.amazon.com.au/Technic-Furious-Mitsubishi-42229-Building/dp/B0FPXH19C6/ref=ast_sto_dp_puis" data-model-name="Technic Fast and Furious Mitsubishi Eclipse Car 42229" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/5yD22ZUWaEmvZbbbPoXNQF.jpg" alt="Lego® Technic Fast and Furious Mitsubishi Eclipse Car 42229 Building Set - Racing Features, Steering, Engine, Pistons, 2 Nos Bottles - Playset Idea for Teenage Boys and Girls Aged 14+" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>LEGO</div>                                        <div class="featured__title">Technic Fast and Furious Mitsubishi Eclipse Car 42229</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="cc1faf3c-bbc9-11f1-bc41-eb5c258fe823">            <a href="https://www.amazon.com.au/LEGO%C2%AE-Creator-Iconic-Pirate-31387/dp/B0FPXGBPR6/ref=ast_sto_dp_puis" data-model-name="Creator 3 in 1 Iconic Pirate Ship 31387" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/2juBsEqajUuV6ANTFDsPfE.jpg" alt="Lego® Creator 3 in 1 Iconic Pirate Ship 31387 Toy for Kids - Construct a Pirate Ship, Castle or Twin Ships - Building Set With 5 Minifigures - Birthday Playset Idea for Boys and Girls Aged 9+" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>LEGO</div>                                        <div class="featured__title">Creator 3 in 1 Iconic Pirate Ship 31387</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="cc1fafd2-bbc9-11f1-9adb-a18baf0a4b67">            <a href="https://www.amazon.com.au/PotterTM-Knockturn-Wizarding-76471-Building/dp/B0FPXGSWZ5/ref=ast_sto_dp_puis" data-model-name="Harry Potter Knockturn Alley Wizarding Shops 76471" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/Vw5dFY7wxkoBZby9Zge3VE.jpg" alt="Lego® Harry Potter™ Knockturn Alley™ Wizarding Shops 76471 Building Set - Fantasy Toy for Kids - Pretend Play With 8 Minifigures - Fun Bedroom Decor - Playset for Boys, Girls and Any Fans Aged 8+" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>LEGO</div>                                        <div class="featured__title">Harry Potter Knockturn Alley Wizarding Shops 76471</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="cc1fb054-bbc9-11f1-9ee6-8b6f2192167e">            <a href="https://www.amazon.com.au/LEGO%C2%AE-Pok%C3%A9monTM-Arcanine-72160-Building/dp/B0GGST2VCK/ref=ast_sto_dp_puis" data-model-name="Pokémon Arcanine 72160" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/sARqdYR3D4Eie6DbyzaLME.jpg" alt="Lego® Pokémon™ Arcanine 72160 Building Set - Construct a Detailed Figure With Posable Features to Display as Pokémon Decor - Collectable Video Game Toy Idea for Ages 18+" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>LEGO</div>                                        <div class="featured__title">Pokémon Arcanine 72160</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="cc1fb0d6-bbc9-11f1-9045-b160894cee13">            <a href="https://www.amazon.com.au/Champions-Jaguar-Project-Defender-77264/dp/B0GGSHJWPS/ref=ast_sto_dp_puis" data-model-name="Speed Champions Jaguar Project 7 &amp; Land Rover Defender 77264" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/TH4zKMiCvEo4f385JsgubE.jpg" alt="Lego® Speed Champions Jaguar Project 7 &amp; Land Rover Defender 77264 Toy Car Kit for Kids Aged 10+ - Building Set With 2 Cars and 2 Minifigures - Playset Idea for Boys, Girls and Car Lovers" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>LEGO</div>                                        <div class="featured__title">Speed Champions Jaguar Project 7 &amp; Land Rover Defender 77264</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="cc1fb14e-bbc9-11f1-8d54-5b5f1c8950e1">            <a href="https://www.amazon.com.au/Marvel-Spider-Man-Figure-76346-Building/dp/B0FR9QQ1B1/ref=ast_sto_dp_puis" data-model-name="Marvel Spider-Man Hero Figure 76346" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/5AzjZvM4khcmEvGCrMYBQE.jpg" alt="Lego® ǀ Marvel Spider-Man Hero Figure 76346 Super Hero Toy Building Set - Marvel Collectable for Kids - Playset for 12+ Year Old Boys and Girls - Posable for Dynamic Play and Display" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>LEGO</div>                                        <div class="featured__title">Marvel Spider-Man Hero Figure 76346</div>                                    </div>                <div class="subtitle__description">                                                            <p><p><strong>[Ed note: 149.99 to 99 - price increased to 119.99 as of 04/10 @ 10am]</strong></p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="cc1fb1d0-bbc9-11f1-b0d1-2f3ed049f569">            <a href="https://www.amazon.com.au/HedgehogTM-77120-Building-Hedgehog-Motorcycle/dp/B0GPPV32Y8/ref=ast_sto_dp_puis" data-model-name="Sonic the Hedgehog Shadow’s Mech Vs. G.u.n. Trooper 77120" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/M4Zc7xnN8PeJ43gYg5g4zE.jpg" alt="Lego® Sonic the Hedgehog™ Shadow’s Mech Vs. G.u.n. Trooper 77120 Building Toy With a Shadow the Hedgehog Figure, Action Mech, 2 Chaos Emeralds and Motorcycle - Playset Idea for Gamers Aged 8+" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>LEGO</div>                                        <div class="featured__title">Sonic the Hedgehog Shadow’s Mech Vs. G.u.n. Trooper 77120</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="cc1fb25c-bbc9-11f1-9ef8-4fcf84a6e420">            <a href="https://www.amazon.com.au/Friends-Glamping-42682-Pretend-Building/dp/B0FPXFTCCG/ref=ast_sto_dp_puis" data-model-name="Friends Nature Glamping Cabin 42682" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/GGaUVkQRAgEcHAuPrPEDDF.jpg" alt="Lego® Friends Nature Glamping Cabin 42682 Pretend Play Building Set for Kids Aged 6+ - A-Frame Cabin, 2 Minidolls and Toy Kitten - Playset Idea for Nature Lovers, Girls and Boys" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>LEGO</div>                                        <div class="featured__title">Friends Nature Glamping Cabin 42682</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="cc1fb2e8-bbc9-11f1-8ac4-0344a21cd656">            <a href="https://www.amazon.com.au/Animal-CrossingTM-Tommys-77059-Collectable/dp/B0GGSBRWL4/ref=ast_sto_dp_puis" data-model-name="Animal Crossing Timmy &amp; Tommy’s Fun Day Out 77059" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/Ch2nTgRGN7BFoXWZdNaJiE.jpg" alt="Lego® Animal Crossing™ Timmy &amp; Tommy’s Fun Day Out 77059 Video Game Collectable - Building Toy for Kids - Display Set - the Nooklings, Tom Nook’s Protégés - Playset Idea for Girls and Boys Aged 10+" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>LEGO</div>                                        <div class="featured__title">Animal Crossing Timmy &amp; Tommy’s Fun Day Out 77059</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="cc1fb360-bbc9-11f1-abfc-f14bb002e7d0">            <a href="https://www.amazon.com.au/21350-Classic-Film-Lovers-Minifigures-Buildable-Memorabilia/dp/B0CZP1MKN8/ref=ast_sto_dp_puis" data-model-name="Ideas Jaws Set 21350" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/yeAB9ezfapJbLzMyY3iLWE.jpg" alt="Lego® Ideas Jaws Set 21350 Shark Treat for Classic-Film-Lovers, Diorama Kit for Adults, Orca Boat, Chief Brody, Hooper and Quint Minifigures, Buildable Movie Memorabilia" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>LEGO</div>                                        <div class="featured__title">Ideas Jaws Set 21350</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="cc1fb3e2-bbc9-11f1-8db5-1395e4345aa4">            <a href="https://www.amazon.com.au/LEGO%C2%AE-WarsTM-SMART-PlayTM-WingTM/dp/B0FPXRW6LL/ref=ast_sto_dp_puis" data-model-name="Star Wars Smart Play: Throne Room Duel &amp; A-Wing 75427" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/AJ4cwEsAL6zRnudm5V2BmE.jpg" alt="Lego® Star Wars™ Smart Play™: Throne Room Duel &amp; A-Wing™ 75427 Interactive Building Toy -All-In-One Set - Reacts to How You Move and Play With a Smart Brick - Treat for Kids Aged 9+" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>LEGO</div>                                        <div class="featured__title">Star Wars Smart Play: Throne Room Duel &amp; A-Wing 75427</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="cc1fb464-bbc9-11f1-9d5b-6f030c382bbc">            <a href="https://www.amazon.com.au/75685-Aesthetic-Adventure-Minifigures-Including/dp/B0DWDTVVTB/ref=ast_sto_dp_puis" data-model-name="Wicked Emerald City Wall Art 75685" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/UTUaXZdCi4kiXoHq9DcQZE.jpg" alt="Lego® Wicked Emerald City Wall Art 75685 Aesthetic Room Decor, Adventure Toy for Adults With 6 Minifigures Including Elphaba, Glinda, Dorothy Gale, Cowardly Lion, Scarecrow and Tin Man" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>LEGO</div>                                        <div class="featured__title">Wicked Emerald City Wall Art 75685</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/sales-events/beat-the-black-friday-rush-18-top-rated-lego-sets-are-up-to-40-percent-off-for-amazon-aus-prime-big-deal-days</link>
                                                                            <description>
                            <![CDATA[ It's officially Amazon Prime Day 2.0 — and here are 18 Lego builds worth adding to your cart. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">E4sh9qKRPWQ9BWmU2TvHLe</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/e82e3AEdh28UsqC3U3jnxb-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 29 Sep 2026 07:50:38 +0000</pubDate>                                                                                                                                <updated>Sat, 03 Oct 2026 23:08:02 +0000</updated>
                                                                                                                                            <category><![CDATA[Sales Events]]></category>
                                                                                                <author><![CDATA[ lucy.scotting@futurenet.com (Lucy Scotting) ]]></author>                    <dc:creator><![CDATA[ Lucy Scotting ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PQTnAGVHEDNmwJEbWkaqHV-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Lucy Scotting is a staff writer for Tom’s Guide Australia, primarily covering lifestyle, streaming and internet-related news. Lucy started her career writing for HR and staffing industry publications, covering emerging tech, business and finance.&lt;/p&gt;&lt;p&gt;In her spare time, Lucy can be found watching sci-fi movies, working on her dystopian fiction novel (in progress since 2017) or hanging out with her dog, Fletcher. If she’s not found doing any of the above, she’s likely on her next adventure to a new city, country, or continent. &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/e82e3AEdh28UsqC3U3jnxb-1920-80.jpg">
                                                            <media:credit><![CDATA[Future / Edited with Gemini]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Lego deals]]></media:description>                                                            <media:text><![CDATA[Lego deals]]></media:text>
                                <media:title type="plain"><![CDATA[Lego deals]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/e82e3AEdh28UsqC3U3jnxb-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I love <a href="https://www.amazon.com.au/stores/page/FF3E9109-FF93-4916-B5DA-007C4BF19C6C?ingress=2&amp;lp_context_asin=B07BT89GTP&amp;lp_context_query=lego&amp;visitId=eb502eb8-2a9f-4333-b075-b4b4bf382dbd&amp;ref_=ast_bln" target="_blank">Lego</a>. Whether it's building minifigures within seconds or spending a full day crafting a huge brick masterpiece, there's nothing better than getting busy with a new Lego build. </p><p>If you're a Lego fan like me, you'll be pleased to know that <a href="https://www.tomsguide.com/live/news/prime-big-deal-days-2026-au" target="_blank">Amazon's Prime Day 2.0</a> sale (a.k.a. Prime Big Deal Days) in now on in Australia, running until next <strong>Monday, October 5</strong>. And as is often the case in Amazon sales, there are sizeable discounts to be had across Lego sets both big and small. I'm talking up to 37% off sets from major franchises like Disney, Pixar and Star Wars, to Lego Icons, Friends and Artworks, and lots in between. </p><p><strong>• </strong><a href="https://www.amazon.com.au/primebigdealdays" target="_blank"><strong>Shop Amazon's full Prime Day sale</strong></a></p><p>I've curated a list of 18 of my top-recommended <a href="https://www.amazon.com.au/stores/page/FF3E9109-FF93-4916-B5DA-007C4BF19C6C?ingress=2&amp;lp_context_asin=B07BT89GTP&amp;lp_context_query=lego&amp;visitId=eb502eb8-2a9f-4333-b075-b4b4bf382dbd&amp;ref_=ast_bln" target="_blank">Lego Prime Day deals below</a> to help you zero in on the best sets — noting that, in my experience, Lego sets like these sell out super quickly during Amazon Prime Day events, so you may want to act fast if any take your fancy. </p><p>If you're in the brick-building mood this Prime Day, these are the Lego sets worth your attention.</p>        <div class="featured_product_block featured_block_hero" data-id="cc1faba4-bbc9-11f1-b4fd-ed5ed57a34b7">            <a href="https://www.amazon.com.au/LEGO%C2%AE-Star-Wars-Build-Display/dp/B0DWDQ58Y4/ref=ast_sto_dp_puis" data-model-name="Star Wars: The Phantom Menace Battle Droid With Stap Set 75428" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/buSjXFTRz9qNPasDBtKYwE.jpg" alt="Lego® Star Wars: the Phantom Menace™ Battle Droid™ With Stap Set 75428 Buildable Posable Figure, Toys for Boys, Girls and Any Fans, Building Toy for Kids, Build-And-Display Model, Desk Decor" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>LEGO</div>                                        <div class="featured__title">Star Wars: The Phantom Menace Battle Droid With Stap Set 75428</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="cc1fac30-bbc9-11f1-addf-a925881077b5">            <a href="https://www.amazon.com.au/LEGO-Potter-Hogwarts-Castle-71043/dp/B07BLDTWVW/ref=ast_sto_dp_puis" data-model-name="Harry Potter Hogwarts Castle 71043" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/NcZewLmA39dVdAXy9dVcsE.jpg" alt="Lego Harry Potter Hogwarts Castle 71043 Castle Model,building Kit With Harry Potter,collectable Set With the Great Hall,sword of Gryffindor &amp; Chamber of Secrets,wizarding World Treat Idea for Fans" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>LEGO</div>                                        <div class="featured__title">Harry Potter Hogwarts Castle 71043</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="cc1facb2-bbc9-11f1-88b4-93f5d12d0036">            <a href="https://www.amazon.com.au/BatmanTM-76300-Collectible-Super-Hero-Minifigures/dp/B0FPXG76FP/ref=ast_sto_dp_puis" data-model-name="DC Batman Arkham Asylum 76300" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/ZupMCtqkrYNVQB8HuKdJLE.jpg" alt="Lego® Dc Batman™ Arkham Asylum™ 76300 Collectible Super-Hero Building Set With 16 Minifigures, Build-And-Display Merch for Decor or a 24-Build Advent Calendar, Toy for Adult" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>LEGO</div>                                        <div class="featured__title">DC Batman Arkham Asylum 76300</div>                                    </div>                <div class="subtitle__description">                                                            <p><p><strong>[Ed note: 499.99 to 399 - OOS as of 04/10 @ 10am]</strong></p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="cc1fad34-bbc9-11f1-977d-db35e5d8a651">            <a href="https://www.amazon.com.au/Hunters-Sussie-72537-Posable-Display/dp/B0GJDDY8FD/ref=ast_sto_dp_puis" data-model-name="K-Pop Demon Hunters Derpy Tiger and Sussie Bird 72537 " data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/2fKSnSwVMjFdTs9JohZLPF.jpg" alt="Lego® Kpop Demon Hunters Derpy Tiger and Sussie Bird 72537 Posable K-Pop Merch Toy for Play and Display - With Flowerpot and Letters - Kids’ Birthday Playset Idea for Girls and Boys Aged 9+" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>LEGO</div>                                        <div class="featured__title">K-Pop Demon Hunters Derpy Tiger and Sussie Bird 72537 </div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="cc1fadb6-bbc9-11f1-91c7-510863e3961b">            <a href="https://www.amazon.com.au/Botanicals-Rocking-Plants-11506-Building/dp/B0FPXFLNR7/ref=ast_sto_dp_puis" data-model-name="Botanicals Rocking Plants 11506" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/mrRHAEAMomRMxibbFxQHpE.jpg" alt="Lego® Botanicals Rocking Plants 11506 Flower Building Set for Girls and Boys - Nature Decor - Includes 2 Plants and 2 Pastel Coloured Pots - Treat Idea for Kids - Bedroom or Desk Decorations" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>LEGO</div>                                        <div class="featured__title">Botanicals Rocking Plants 11506</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="cc1fae38-bbc9-11f1-92bd-9768833dfe78">            <a href="https://www.amazon.com.au/LEGO%C2%AE-Battle-Castle-75645-Pretend/dp/B0GGSZZ69C/ref=ast_sto_dp_puis" data-model-name="One Piece Battle at Drum Castle 75645" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/ZFnMgBKeT92kzvPLqXdJjF.jpg" alt="Lego® One Piece Battle at Drum Castle 75645 Pretend Play Toy for Boys, Girls and Kids Aged 9+ - Multilevel Building Set With 6 Minifigures - Playset for Fans of the One Piece Netflix Show" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>LEGO</div>                                        <div class="featured__title">One Piece Battle at Drum Castle 75645</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="cc1faeba-bbc9-11f1-bce7-83f175748c31">            <a href="https://www.amazon.com.au/Technic-Furious-Mitsubishi-42229-Building/dp/B0FPXH19C6/ref=ast_sto_dp_puis" data-model-name="Technic Fast and Furious Mitsubishi Eclipse Car 42229" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/5yD22ZUWaEmvZbbbPoXNQF.jpg" alt="Lego® Technic Fast and Furious Mitsubishi Eclipse Car 42229 Building Set - Racing Features, Steering, Engine, Pistons, 2 Nos Bottles - Playset Idea for Teenage Boys and Girls Aged 14+" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>LEGO</div>                                        <div class="featured__title">Technic Fast and Furious Mitsubishi Eclipse Car 42229</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="cc1faf3c-bbc9-11f1-bc41-eb5c258fe823">            <a href="https://www.amazon.com.au/LEGO%C2%AE-Creator-Iconic-Pirate-31387/dp/B0FPXGBPR6/ref=ast_sto_dp_puis" data-model-name="Creator 3 in 1 Iconic Pirate Ship 31387" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/2juBsEqajUuV6ANTFDsPfE.jpg" alt="Lego® Creator 3 in 1 Iconic Pirate Ship 31387 Toy for Kids - Construct a Pirate Ship, Castle or Twin Ships - Building Set With 5 Minifigures - Birthday Playset Idea for Boys and Girls Aged 9+" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>LEGO</div>                                        <div class="featured__title">Creator 3 in 1 Iconic Pirate Ship 31387</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="cc1fafd2-bbc9-11f1-9adb-a18baf0a4b67">            <a href="https://www.amazon.com.au/PotterTM-Knockturn-Wizarding-76471-Building/dp/B0FPXGSWZ5/ref=ast_sto_dp_puis" data-model-name="Harry Potter Knockturn Alley Wizarding Shops 76471" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/Vw5dFY7wxkoBZby9Zge3VE.jpg" alt="Lego® Harry Potter™ Knockturn Alley™ Wizarding Shops 76471 Building Set - Fantasy Toy for Kids - Pretend Play With 8 Minifigures - Fun Bedroom Decor - Playset for Boys, Girls and Any Fans Aged 8+" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>LEGO</div>                                        <div class="featured__title">Harry Potter Knockturn Alley Wizarding Shops 76471</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="cc1fb054-bbc9-11f1-9ee6-8b6f2192167e">            <a href="https://www.amazon.com.au/LEGO%C2%AE-Pok%C3%A9monTM-Arcanine-72160-Building/dp/B0GGST2VCK/ref=ast_sto_dp_puis" data-model-name="Pokémon Arcanine 72160" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/sARqdYR3D4Eie6DbyzaLME.jpg" alt="Lego® Pokémon™ Arcanine 72160 Building Set - Construct a Detailed Figure With Posable Features to Display as Pokémon Decor - Collectable Video Game Toy Idea for Ages 18+" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>LEGO</div>                                        <div class="featured__title">Pokémon Arcanine 72160</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="cc1fb0d6-bbc9-11f1-9045-b160894cee13">            <a href="https://www.amazon.com.au/Champions-Jaguar-Project-Defender-77264/dp/B0GGSHJWPS/ref=ast_sto_dp_puis" data-model-name="Speed Champions Jaguar Project 7 &amp; Land Rover Defender 77264" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/TH4zKMiCvEo4f385JsgubE.jpg" alt="Lego® Speed Champions Jaguar Project 7 &amp; Land Rover Defender 77264 Toy Car Kit for Kids Aged 10+ - Building Set With 2 Cars and 2 Minifigures - Playset Idea for Boys, Girls and Car Lovers" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>LEGO</div>                                        <div class="featured__title">Speed Champions Jaguar Project 7 &amp; Land Rover Defender 77264</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="cc1fb14e-bbc9-11f1-8d54-5b5f1c8950e1">            <a href="https://www.amazon.com.au/Marvel-Spider-Man-Figure-76346-Building/dp/B0FR9QQ1B1/ref=ast_sto_dp_puis" data-model-name="Marvel Spider-Man Hero Figure 76346" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/5AzjZvM4khcmEvGCrMYBQE.jpg" alt="Lego® ǀ Marvel Spider-Man Hero Figure 76346 Super Hero Toy Building Set - Marvel Collectable for Kids - Playset for 12+ Year Old Boys and Girls - Posable for Dynamic Play and Display" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>LEGO</div>                                        <div class="featured__title">Marvel Spider-Man Hero Figure 76346</div>                                    </div>                <div class="subtitle__description">                                                            <p><p><strong>[Ed note: 149.99 to 99 - price increased to 119.99 as of 04/10 @ 10am]</strong></p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="cc1fb1d0-bbc9-11f1-b0d1-2f3ed049f569">            <a href="https://www.amazon.com.au/HedgehogTM-77120-Building-Hedgehog-Motorcycle/dp/B0GPPV32Y8/ref=ast_sto_dp_puis" data-model-name="Sonic the Hedgehog Shadow’s Mech Vs. G.u.n. Trooper 77120" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/M4Zc7xnN8PeJ43gYg5g4zE.jpg" alt="Lego® Sonic the Hedgehog™ Shadow’s Mech Vs. G.u.n. Trooper 77120 Building Toy With a Shadow the Hedgehog Figure, Action Mech, 2 Chaos Emeralds and Motorcycle - Playset Idea for Gamers Aged 8+" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>LEGO</div>                                        <div class="featured__title">Sonic the Hedgehog Shadow’s Mech Vs. G.u.n. Trooper 77120</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="cc1fb25c-bbc9-11f1-9ef8-4fcf84a6e420">            <a href="https://www.amazon.com.au/Friends-Glamping-42682-Pretend-Building/dp/B0FPXFTCCG/ref=ast_sto_dp_puis" data-model-name="Friends Nature Glamping Cabin 42682" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/GGaUVkQRAgEcHAuPrPEDDF.jpg" alt="Lego® Friends Nature Glamping Cabin 42682 Pretend Play Building Set for Kids Aged 6+ - A-Frame Cabin, 2 Minidolls and Toy Kitten - Playset Idea for Nature Lovers, Girls and Boys" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>LEGO</div>                                        <div class="featured__title">Friends Nature Glamping Cabin 42682</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="cc1fb2e8-bbc9-11f1-8ac4-0344a21cd656">            <a href="https://www.amazon.com.au/Animal-CrossingTM-Tommys-77059-Collectable/dp/B0GGSBRWL4/ref=ast_sto_dp_puis" data-model-name="Animal Crossing Timmy &amp; Tommy’s Fun Day Out 77059" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/Ch2nTgRGN7BFoXWZdNaJiE.jpg" alt="Lego® Animal Crossing™ Timmy &amp; Tommy’s Fun Day Out 77059 Video Game Collectable - Building Toy for Kids - Display Set - the Nooklings, Tom Nook’s Protégés - Playset Idea for Girls and Boys Aged 10+" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>LEGO</div>                                        <div class="featured__title">Animal Crossing Timmy &amp; Tommy’s Fun Day Out 77059</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="cc1fb360-bbc9-11f1-abfc-f14bb002e7d0">            <a href="https://www.amazon.com.au/21350-Classic-Film-Lovers-Minifigures-Buildable-Memorabilia/dp/B0CZP1MKN8/ref=ast_sto_dp_puis" data-model-name="Ideas Jaws Set 21350" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/yeAB9ezfapJbLzMyY3iLWE.jpg" alt="Lego® Ideas Jaws Set 21350 Shark Treat for Classic-Film-Lovers, Diorama Kit for Adults, Orca Boat, Chief Brody, Hooper and Quint Minifigures, Buildable Movie Memorabilia" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>LEGO</div>                                        <div class="featured__title">Ideas Jaws Set 21350</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="cc1fb3e2-bbc9-11f1-8db5-1395e4345aa4">            <a href="https://www.amazon.com.au/LEGO%C2%AE-WarsTM-SMART-PlayTM-WingTM/dp/B0FPXRW6LL/ref=ast_sto_dp_puis" data-model-name="Star Wars Smart Play: Throne Room Duel &amp; A-Wing 75427" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/AJ4cwEsAL6zRnudm5V2BmE.jpg" alt="Lego® Star Wars™ Smart Play™: Throne Room Duel &amp; A-Wing™ 75427 Interactive Building Toy -All-In-One Set - Reacts to How You Move and Play With a Smart Brick - Treat for Kids Aged 9+" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>LEGO</div>                                        <div class="featured__title">Star Wars Smart Play: Throne Room Duel &amp; A-Wing 75427</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="cc1fb464-bbc9-11f1-9d5b-6f030c382bbc">            <a href="https://www.amazon.com.au/75685-Aesthetic-Adventure-Minifigures-Including/dp/B0DWDTVVTB/ref=ast_sto_dp_puis" data-model-name="Wicked Emerald City Wall Art 75685" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/UTUaXZdCi4kiXoHq9DcQZE.jpg" alt="Lego® Wicked Emerald City Wall Art 75685 Aesthetic Room Decor, Adventure Toy for Adults With 6 Minifigures Including Elphaba, Glinda, Dorothy Gale, Cowardly Lion, Scarecrow and Tin Man" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>LEGO</div>                                        <div class="featured__title">Wicked Emerald City Wall Art 75685</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Prime Video top 10 movies — here’s the 3 worth watching this week (Sept. 28-Oct. 4) ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Looking for something to watch on Prime Video this week? Then the platform’s top 10 most-watched list makes for a great starting point. However, just because a movie ranks on the ever-rotating charts doesn’t necessarily mean it’s worthy of your streaming watchlist.</p><p>I track <a href="https://www.tomsguide.com/us/best-streaming-video-services,review-2625.html">streaming service</a> top 10 lists every week, and can attest first-hand that sometimes less-than-worthwhile watches find their way into the rankings. That’s why I’ve combed through the latest Prime Video top 10 movies list (as of Monday, September 28), and picked out three movies that should be on your radar. </p><p>My latest picks include a new Prime Video original rom-com, a nostalgic fantasy blockbuster that puts fun above everything, and a Western drama with a tragic behind-the-scenes story. </p><p>These are three movies in today’s Prime Video top 10 to add to your watchlist.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XYkQYW"></div>                            </div>                            <script src="https://kwizly.com/embed/XYkQYW.js" async=""></script><h3 class="article-body__section" id="section-best-movies-in-the-prime-video-top-10"><span>Best movies in the Prime Video top 10</span></h3><h2 id="the-love-hypothesis-2026-2">‘The Love Hypothesis’ (2026)</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/xwdamnfS6IM" allowfullscreen=""></iframe></div></div><p>Prime Video’s feature film adaptation of Ali Hazelwood’s best-selling novel has made a strong connection with subscribers. The Prime Video original released last week (on Sept. 23) and rocketed straight to the No. 1 spot in the platform’s top 10. It’s remained there over the weekend, and it’s the perfect pick if you need some rom-com charm to chase away the Monday blues. Though you will have to tolerate the movie’s oddly washed-out color palette. </p><p>Olive (Reinhart) is a gifted PhD student who, in an effort to prove to her best friend (Rachel Marsh) that she’s over her crush (Nicholas Duvernay), kisses a professor, Adam (Tom Bateman). This spirals into a whole fake relationship, with rules and boundaries set in advance. But you know how these things go in rom-coms! Before long, the pair’s pretend romance blossoms into the real thing, putting their theories about love to the ultimate test.</p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B0H4WZS7VX" target="_blank" rel="nofollow"><em><strong>"The Love Hypothesis" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="masters-of-the-universe-39-2026">‘Masters of the Universe' (2026)</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/X21JsHLHnY8" allowfullscreen=""></iframe></div></div><p>“Masters of the Universe” proves that box office bombs can find a second wind on streaming services. The fantasy blockbuster flopped in theaters, failing to recoup its eye-watering $170 million, but has found a very receptive audience on Prime Video. It’s been a permanent fixture in the top 10 chart for more than a month, and He-Man fans clearly like what they’re seeing, as the movie holds a strong 86% viewer score on review site <a href="https://www.rottentomatoes.com/m/masters_of_the_universe_2026" target="_blank">Rotten Tomatoes</a>.</p><p>Based on the beloved Mattel toy range, which was initially created to compete with a rival’s lineup of popular “Star Wars” action figures, “Masters of the Universe” follows Prince Adam (Nicholas Galitzine), who is sent to Earth as a child when his home of Eternia is conquered by the ruthless Skeletor (Jared Leto). Years later, now a fully grown adult, he must return to the fantastical setting to fulfil his destiny and become the legendary warrior He-Man.</p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/dp/B0GZHLSV86" target="_blank" rel="nofollow"><em><strong>"Masters of the Universe on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="rust-2024">‘Rust’ (2024)</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/8fEmnkP3nLk" allowfullscreen=""></iframe></div></div><p>“Rust” is a 2024 Western starring Alec Baldwin, infamous for an on-set accident that resulted in the death of cinematographer Halyna Hutchins when live rounds were fired from a prop revolver. This tragedy overshadowed the movie, paused production, and led to numerous lawsuits. Eventually, filming resumed, and the movie was finished, but it’s hard to separate the sad story behind this one from the events depicted on screen.  </p><p>“Rust” chronicles the tale of two adolescent boys forced to fend for themselves in 19th-century Wyoming after their parents' deaths. When the older sibling, Lucas (Patrick Scott McDermott), accidentally kills somebody while hunting, he’s sentenced to death. But before his sentence can be carried out, Lucas’ estranged grandfather, an infamous outlaw named Harland Rust (Baldwin), breaks him out of jail and the two flee to the Mexican border. Given what happened on the set, the story revolving around an accidental killing feels a little unsettling. Appropriately, the final film is dedicated to the memory of Halyna Hutchins.</p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B0CVSMYBND" target="_blank" rel="nofollow"><em><strong>"Rust" on Prime Video</strong></em></a><em><strong> now</strong></em></p><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="gdR2W4" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><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/entertainment/prime-video/new-on-prime-video-in-october-2026-top-new-movies-and-shows-to-stream-this-month">New on Prime Video in October 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/i-watched-prime-videos-new-romantic-comedy-movie-and-i-think-the-logic-mostly-checks-out">The Love Hypothesis review: the logic mostly checks out</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/3-feel-good-movies-on-prime-video-to-chase-away-the-sunday-scaries">3 feel-good movies on Prime Video</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/prime-video/prime-video-top-10-movies-heres-the-3-worth-watching-this-week-sept-28-oct-4</link>
                                                                            <description>
                            <![CDATA[ The Prime Video top 10 most-watched list has been refreshed, and I've combed through the ranking to pick out the three movies to watch. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">73cwqkrCTxQjV99XCPRzKD</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/CzNUtUmp7P3FEQqLgbp8z4-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 28 Sep 2026 11:03:18 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Prime Video]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                    <category><![CDATA[Streaming]]></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>
                                                                                                                                <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/CzNUtUmp7P3FEQqLgbp8z4-1920-80.jpg">
                                                            <media:credit><![CDATA[Prime Video; Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Prime Video logo on a green background]]></media:description>                                                            <media:text><![CDATA[Prime Video logo on a green background]]></media:text>
                                <media:title type="plain"><![CDATA[Prime Video logo on a green background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/CzNUtUmp7P3FEQqLgbp8z4-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Looking for something to watch on Prime Video this week? Then the platform’s top 10 most-watched list makes for a great starting point. However, just because a movie ranks on the ever-rotating charts doesn’t necessarily mean it’s worthy of your streaming watchlist.</p><p>I track <a href="https://www.tomsguide.com/us/best-streaming-video-services,review-2625.html">streaming service</a> top 10 lists every week, and can attest first-hand that sometimes less-than-worthwhile watches find their way into the rankings. That’s why I’ve combed through the latest Prime Video top 10 movies list (as of Monday, September 28), and picked out three movies that should be on your radar. </p><p>My latest picks include a new Prime Video original rom-com, a nostalgic fantasy blockbuster that puts fun above everything, and a Western drama with a tragic behind-the-scenes story. </p><p>These are three movies in today’s Prime Video top 10 to add to your watchlist.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XYkQYW"></div>                            </div>                            <script src="https://kwizly.com/embed/XYkQYW.js" async=""></script><h3 class="article-body__section" id="section-best-movies-in-the-prime-video-top-10"><span>Best movies in the Prime Video top 10</span></h3><h2 id="the-love-hypothesis-2026-2">‘The Love Hypothesis’ (2026)</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/xwdamnfS6IM" allowfullscreen=""></iframe></div></div><p>Prime Video’s feature film adaptation of Ali Hazelwood’s best-selling novel has made a strong connection with subscribers. The Prime Video original released last week (on Sept. 23) and rocketed straight to the No. 1 spot in the platform’s top 10. It’s remained there over the weekend, and it’s the perfect pick if you need some rom-com charm to chase away the Monday blues. Though you will have to tolerate the movie’s oddly washed-out color palette. </p><p>Olive (Reinhart) is a gifted PhD student who, in an effort to prove to her best friend (Rachel Marsh) that she’s over her crush (Nicholas Duvernay), kisses a professor, Adam (Tom Bateman). This spirals into a whole fake relationship, with rules and boundaries set in advance. But you know how these things go in rom-coms! Before long, the pair’s pretend romance blossoms into the real thing, putting their theories about love to the ultimate test.</p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B0H4WZS7VX" target="_blank" rel="nofollow"><em><strong>"The Love Hypothesis" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="masters-of-the-universe-39-2026">‘Masters of the Universe' (2026)</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/X21JsHLHnY8" allowfullscreen=""></iframe></div></div><p>“Masters of the Universe” proves that box office bombs can find a second wind on streaming services. The fantasy blockbuster flopped in theaters, failing to recoup its eye-watering $170 million, but has found a very receptive audience on Prime Video. It’s been a permanent fixture in the top 10 chart for more than a month, and He-Man fans clearly like what they’re seeing, as the movie holds a strong 86% viewer score on review site <a href="https://www.rottentomatoes.com/m/masters_of_the_universe_2026" target="_blank">Rotten Tomatoes</a>.</p><p>Based on the beloved Mattel toy range, which was initially created to compete with a rival’s lineup of popular “Star Wars” action figures, “Masters of the Universe” follows Prince Adam (Nicholas Galitzine), who is sent to Earth as a child when his home of Eternia is conquered by the ruthless Skeletor (Jared Leto). Years later, now a fully grown adult, he must return to the fantastical setting to fulfil his destiny and become the legendary warrior He-Man.</p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/dp/B0GZHLSV86" target="_blank" rel="nofollow"><em><strong>"Masters of the Universe on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="rust-2024">‘Rust’ (2024)</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/8fEmnkP3nLk" allowfullscreen=""></iframe></div></div><p>“Rust” is a 2024 Western starring Alec Baldwin, infamous for an on-set accident that resulted in the death of cinematographer Halyna Hutchins when live rounds were fired from a prop revolver. This tragedy overshadowed the movie, paused production, and led to numerous lawsuits. Eventually, filming resumed, and the movie was finished, but it’s hard to separate the sad story behind this one from the events depicted on screen.  </p><p>“Rust” chronicles the tale of two adolescent boys forced to fend for themselves in 19th-century Wyoming after their parents' deaths. When the older sibling, Lucas (Patrick Scott McDermott), accidentally kills somebody while hunting, he’s sentenced to death. But before his sentence can be carried out, Lucas’ estranged grandfather, an infamous outlaw named Harland Rust (Baldwin), breaks him out of jail and the two flee to the Mexican border. Given what happened on the set, the story revolving around an accidental killing feels a little unsettling. Appropriately, the final film is dedicated to the memory of Halyna Hutchins.</p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B0CVSMYBND" target="_blank" rel="nofollow"><em><strong>"Rust" on Prime Video</strong></em></a><em><strong> now</strong></em></p><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="gdR2W4" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><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/entertainment/prime-video/new-on-prime-video-in-october-2026-top-new-movies-and-shows-to-stream-this-month">New on Prime Video in October 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/i-watched-prime-videos-new-romantic-comedy-movie-and-i-think-the-logic-mostly-checks-out">The Love Hypothesis review: the logic mostly checks out</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/3-feel-good-movies-on-prime-video-to-chase-away-the-sunday-scaries">3 feel-good movies on Prime Video</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ New on Prime Video in October 2026: All the new movies and shows to stream this month ]]></title>
                                                                                                <dc:content><![CDATA[ <p>October is shaping up to be another busy month for <a href="https://www.tomsguide.com/entertainment/streaming/prime-video"><strong>Prime Video</strong></a>, with plenty of new movies and shows heading to the streaming service as we settle into fall. From returning favorites to highly anticipated new releases, there’s already plenty to look forward to if you’re planning your next few weeks of streaming.</p><p>Thankfully, Prime Video has revealed its full October 2026 release schedule, which means I’ve updated this list with every confirmed title and its release date on the service. We also know about some of the biggest movies and shows coming to Prime Video in October, so I’ve rounded up the releases worth keeping on your radar.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-WQQbzW"></div>                            </div>                            <script src="https://kwizly.com/embed/WQQbzW.js" async=""></script><h3 class="article-body__section" id="section-new-on-prime-video-in-october-2026-top-picks"><span>New on Prime Video in October 2026: Top picks</span></h3><h2 id="carrie-october-7">‘Carrie’ (October 7)</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/jkUw2nh6fT0" allowfullscreen=""></iframe></div></div><p>One of my most anticipated shows of fall 2026 has to be “Carrie,” the latest adaptation of Stephen King’s iconic 1974 debut novel. This eight-episode series is being developed by Mike Flanagan, who is taking the familiar story and expanding it into a longer-form TV series. The original novel used things like news reports, transcripts and excerpts from other documents to tell Carrie’s story, and the new series looks set to play with that idea in its own way. Rather than simply retelling the story we already know, the series will explore Carrie’s powers and the events surrounding them from a wider perspective.</p><p>Carrie White (Summer H. Howell) is a sheltered high-school student who has spent most of her life isolated at home with her fiercely protective mother, Margaret (Samantha Sloyan). After her father’s sudden death, Carrie begins attending public school, where she becomes caught up in a bullying scandal that spreads throughout her community. At the same time, Carrie discovers that she has mysterious telekinetic abilities that are becoming increasingly difficult to control. The eight-episode series follows Carrie and the people around her as events build toward a devastating night. </p><p><em><strong>Stream "Carrie" on </strong></em><a href="https://www.amazon.com/gp/video/detail/B0H8R9DQHS" target="_blank" rel="nofollow"><em><strong>Prime Video</strong></em></a><em><strong> from Oct. 7</strong></em></p><h2 id="love-of-your-life-october-14">‘Love Of Your Life’ (October 14)</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/HzGx48E64Xg" allowfullscreen=""></iframe></div></div><p>“Love of Your Life” is a romantic drama that follows a sweeping love story across several years and different parts of the world. Instead of being another straightforward rom-com in Prime Video’s library, the movie focuses more on how relationships change over time and how people try to move forward after major life changes and personal loss. Directed by Oscar-nominated cinematographer Rachel Morrison, the movie puts a lot of emphasis on its emotional story, making this one for anyone in the mood for something a little more heartfelt.</p><p>Maya (Margaret Qualley) is a nurse whose chance encounter with Charlie (Gabriel Basso) leads to an unexpected romance and a future neither of them could have predicted. As their relationship develops, Maya builds a life with Charlie, but that future is suddenly shattered, leaving her to navigate a completely different chapter of her life. Years later, Maya finds herself facing new relationships, experiences and difficult choices as she tries to figure out what comes next. The film also stars Aaron Pierre, Patrick Schwarzenegger and Catherine Keener.</p><p><em><strong>Stream "Love of Your Life" on </strong></em><a href="https://www.amazon.com/gp/video/detail/B0HFJCW6VG" target="_blank" rel="nofollow"><em><strong>Prime Video</strong></em></a><em><strong> from Oct. 14</strong></em></p><h2 id="helluva-boss-season-3-october-14">‘Helluva Boss’ season 3 (October 14)</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/WylSo1LhWfY" allowfullscreen=""></iframe></div></div><p>“Helluva Boss” is returning for season 3 this month, and it’s set to be the show’s biggest season yet. The adult animated dark comedy started out as an independent web series before making the jump to a major streaming production, and the new season will also be its longest so far with 15 episodes. The first seven episodes will arrive on October 14, with the remaining eight following in 2027. Expect the same colorful animation, chaotic humor, over-the-top violence and plenty of very adult jokes that fans have come to expect from the series.</p><p>Season 3 of “Helluva Boss” picks up with Blitzo (Brandon Rogers) and the I.M.P. crew continuing their assassination jobs across Earth and Hell. As the team takes on increasingly chaotic assignments, their personal lives become more complicated. Blitzo and Stolas (Bryce Pinkham) are forced to figure out their relationship, while Moxxie (Richard Horvitz) and Millie (Vivian Nixon Williams) prepare for a major change in their lives. Loona (Erica Lindbeck) also takes on a bigger role within I.M.P. Meanwhile, old enemies return and new opportunities crop up, creating fresh problems for the group. </p><p><em><strong>Stream "Helluva Boss" season 3 on </strong></em><a href="https://www.amazon.com/gp/video/detail/B0F9VY2DHL" target="_blank" rel="nofollow"><em><strong>Prime Video</strong></em></a><em><strong> from Oct. 14</strong></em></p><h2 id="masterplan-october-16">‘Masterplan’ (October 16)</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/gc0t8AfMP6k" allowfullscreen=""></iframe></div></div><p>If you’re in the mood for something a little more intense but still a lot of fun, “Masterplan” is worth adding to your watchlist. This action thriller follows a global heist and is Amazon’s first major Franco-Italian co-production to be filmed in English. Shot across France and Italy, the movie has plenty of slick action and a European crime caper feel. It was also co-produced with legendary French studio Gaumont, which gives the whole thing a polished, international feel that should appeal to fans of stylish heist movies.</p><p>“Masterplan” follows a legendary thief, Roger (Stanley Tucci), who sets his sights on stealing the Mona Lisa from the Louvre. To pull off the ambitious heist, he recruits Chiara (Simona Tabasco), a skilled Italian cybercrime expert, and Jay (Victor Belmondo), a French explosives specialist. However, the pair soon discover that they are actually long-lost siblings and that their mysterious employer is their father. With the trio thrown together for the first time, they must put their differences aside and work as a team if they want to successfully carry out the elaborate robbery. </p><p><em><strong>Stream "Masterplan" on </strong></em><a href="https://www.amazon.com/gp/video/storefront" target="_blank" rel="nofollow"><em><strong>Prime Video</strong></em></a><em><strong> from Oct. 16</strong></em></p><h2 id="the-terminal-list-season-2-october-21">‘The Terminal List’ season 2 (October 21)</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/sGmhziz9MoE" allowfullscreen=""></iframe></div></div><p>Another show returning with a new season is “The Terminal List.” After a four-year wait following the first season’s 2022 debut, the military action-thriller is finally back, this time adapting Jack Carr’s second novel, “True Believer.” The new season takes the story far beyond the events of the first, with James Reece caught up in an international conspiracy that takes him across the Indian Ocean, Africa, the Middle East and Europe. The show is also taking its military detail seriously, with former Navy SEALs and special forces veterans involved throughout the production. It makes the show even more compelling.</p><p>Season 2 picks up with James Reece (Chris Pratt) after he has completed his revenge mission and is searching for a new purpose. His situation changes when the CIA corners him and offers a deal: clear his name by helping stop a resurgent terrorist group that has recruited one of his former allies. Reece is drawn into a globe-spanning operation that takes him from the Indian Ocean through Africa, the Middle East and Europe. Soon, he discovers a larger conspiracy stretching from Moscow to Langley, with unexpected connections to his own family history.</p><p><em><strong>Stream "The Terminal List" season 2 on </strong></em><a href="https://www.amazon.com/gp/video/detail/B09K9M94L7" target="_blank" rel="nofollow"><em><strong>Prime Video</strong></em></a><em><strong> from Oct. 21</strong></em></p><h3 class="article-body__section" id="section-new-shows-on-prime-video-in-october-2026"><span>New shows on Prime Video in October 2026</span></h3><p><strong>October 1</strong></p><ul><li>Miss Scarlet season 1 (2021)</li><li>Poldark season 1 (2015)</li><li>Sanditon (2020)</li><li>Scream Queens seasons 1-2 (2015)</li></ul><p><strong>October 2</strong></p><ul><li>Prefiero la Muerte (I Would Rather Die) (2026)</li><li>ONE Championship on Prime (2026)</li></ul><p><strong>October 4</strong></p><ul><li>Chucky seasons 1-3 (2021)</li><li>The Seven Knights of the Marronnier Kingdom (2026)</li></ul><p><strong>October 7</strong></p><ul><li>Carrie (2026)</li></ul><p><strong>October 19</strong></p><ul><li>Love in Disguise (2026)</li></ul><p><strong>October 21</strong></p><ul><li>The Terminal List season 2 (2026)</li></ul><p><strong>October 23</strong></p><ul><li>Last One Laughing: Halloween (2026)</li></ul><p><strong>October 24</strong></p><ul><li>Final Table (2026)</li></ul><p><strong>October 30</strong></p><ul><li>Last One Laughing Philippines season 2 (2026)</li></ul><h3 class="article-body__section" id="section-new-movies-on-prime-video-in-october-2026"><span>New movies on Prime Video in October 2026</span></h3><p><strong>October 1</strong></p><ul><li>A View to a Kill (1985)</li><li>American Fiction (2023)</li><li>Bend Of The River (1952)</li><li>Blade Runner 2049 (2017)</li><li>Blade Runner: The Final Cut (1982)</li><li>Bodies Bodies Bodies (2022)</li><li>Candyman (1992)</li><li>Casino (1995)</li><li>Casino Royale (1967)</li><li>Casino Royale (2006)</li><li>Child's Play (1988)</li><li>Child's Play (2019)</li><li>Chitty Chitty Bang Bang (1968)</li><li>Creature From The Black Lagoon (1954)</li><li>Creed (2015)</li><li>Creed II (2018)</li><li>Creed III (2023)</li><li>Dances With Wolves (1990)</li><li>Dark Harvest (2023)</li><li>Deepwater Horizon (2016)</li><li>Diamonds Are Forever (1971)</li><li>Diary Of A Wimpy Kid: The Long Haul (2017)</li><li>Die Another Day (2002)</li><li>Dog (2022)</li><li>Dr. No (1962)</li><li>Dracula (1931)</li><li>Duel At Diablo (1966)</li><li>Duets (2000)</li><li>EDtv (1999)</li><li>Fletch (1985)</li><li>Fletch Lives (1989)</li><li>For Your Eyes Only (1981)</li><li>Frankenstein (1931)</li><li>From Russia With Love (1964)</li><li>Girls Trip (2017)</li><li>Going My Way (1944)</li><li>Goldeneye (1995)</li><li>Goldfinger (1965)</li><li>Guy Ritchie's The Covenant (2023)</li><li>Hereditary (2018)</li><li>Holiday Inn (1942)</li><li>Hoosiers (1987)</li><li>Hot Pursuit (2015)</li><li>House Of Gucci (2021)</li><li>Hungry (2026)</li><li>Indiana Jones and the Kingdom of the Crystal Skull (2008)</li><li>Indiana Jones and the Last Crusade (1989)</li><li>Indiana Jones and the Raiders of the Lost Ark (1981)</li><li>Indiana Jones and the Temple Of Doom (1984)</li><li>Infinite (2021)</li><li>It's a Mad, Mad, Mad, Mad World (1963)</li><li>Jason's Lyric (1994)</li><li>John Wick (2014)</li><li>John Wick: Chapter 2 (2017)</li><li>John Wick: Chapter 3 - Parabellum (2019)</li><li>John Wick: Chapter 4 (2023)</li><li>Killer Klowns From Outer Space (1988)</li><li>Krampus (2015)</li><li>Kung Fu Panda (2008)</li><li>Kung Fu Panda 2 (2011)</li><li>Kung Fu Panda 3 (2016)</li><li>Lawman (1971)</li><li>Licence to Kill (1989)</li><li>Lifeforce (1985)</li><li>Live And Let Die (1973)</li><li>Lone Survivor (2014)</li><li>Lone Wolf McQuade (1983)</li><li>Mariah Carey's All I Want For Christmas Is You (2017)</li><li>MaXXXine (2024)</li><li>Midsommar (2019)</li><li>Moonraker (1979)</li><li>Mr. Mom (1983)</li><li>My Adventures With Santa (2019)</li><li>Mystery Men (1999)</li><li>Never Say Never Again (1983)</li><li>No Time To Die (2021)</li><li>Octopussy (1983)</li><li>On Her Majesty's Secret Service (1969)</li><li>Over The Top (1987)</li><li>Pearl (2022)</li><li>Primary Colors (1998)</li><li>Quantum Of Solace (2008)</li><li>R.I.P.D. (2013)</li><li>Red Dawn (1984)</li><li>Red Dawn (2012)</li><li>Rocky (1976)</li><li>Rocky Balboa (2006)</li><li>Rocky II (1979)</li><li>Rocky III (1982)</li><li>Rocky IV (1985)</li><li>Rocky IV: Rocky Vs. Drago (1985)</li><li>Rocky V (1990)</li><li>Sea Of Love (1989)</li><li>She's All That (1999)</li><li>Skyfall (2012)</li><li>Spaceballs (1987)</li><li>Spectre (2015)</li><li>Stir Of Echoes (1999)</li><li>Stir Of Echoes: The Homecoming (2007)</li><li>That Awkward Moment (2014)</li><li>The Amityville Horror (1979)</li><li>The Amityville Horror (2005)</li><li>The Battle Of Britain (1969)</li><li>The Best Man Holiday (2013)</li><li>The Boy (2015)</li><li>The Boys In The Boat (2023)</li><li>The Bride Of Frankenstein (1935)</li><li>The Godfather (1972)</li><li>The Godfather Coda: The Death Of Michael Corleone (1990)</li><li>The Godfather Part II (1974)</li><li>The Invisible Man (1933)</li><li>The Judge (2014)</li><li>The Living Daylights (1987)</li><li>The Long Riders (1980)</li><li>The Man With The Golden Gun (1974)</li><li>The Marsh King's Daughter (2023)</li><li>The Pope's Exorcist (2023)</li><li>The Poughkeepsie Tapes (2007)</li><li>The Prodigy (2019)</li><li>The Spy Who Loved Me (1977)</li><li>The Sting (1973)</li><li>The Terminator (1984)</li><li>The Witch (2016)</li><li>The World Is Not Enough (1999)</li><li>The Zookeeper's Wife (2017)</li><li>Thelma &amp; Louise (1991)</li><li>There Will Be Blood (2008)</li><li>Thief (1981)</li><li>Thunderball (1965)</li><li>Tomorrow Never Dies (1997)</li><li>Touch Of Evil (1958)</li><li>Walking Tall (2004)</li><li>Walking Tall: The Payback (2007)</li><li>Wrath Of Man (2021)</li><li>X (2022)</li><li>You Only Live Twice (1967)</li></ul><p><strong>October 2</strong></p><ul><li>Now You See Me: Now You Don't (2025)</li><li>Wuthering Heights (2026)</li></ul><p><strong>October 4</strong></p><ul><li>Godzilla x Kong: The New Empire (2024)</li></ul><p><strong>October 14</strong></p><ul><li>Love of Your Life (2026)</li></ul><p><strong>October 16</strong></p><ul><li>Masterplan (2026)</li><li>Scream 7 (2026)</li></ul><p><strong>October 23</strong></p><ul><li>The Bride! (2026)</li></ul><p><strong>October 30</strong></p><ul><li>Apocalypse Z: New World (2026)</li></ul><h3 class="article-body__section" id="section-live-sports"><span>Live sports</span></h3><p><strong>NWSL</strong></p><ul><li><strong>Fri, Oct 2 – 8 p.m. ET: </strong>Orlando Pride vs. San Diego Wave</li><li><strong>Fri, Oct 16 – 8 p.m. ET:</strong> Boston Legacy FC vs. Racing Louisville</li><li><strong>Fri, Oct 23 – 10 p.m. ET: </strong>Portland Thorns vs. NC Courage</li></ul><p><strong>Thursday Night Football</strong></p><ul><li><strong>Thu, Oct. 1: </strong>Pittsburgh Steelers at Cleveland Browns</li><li><strong>Thu, Oct. 8: </strong>Tampa Bay Buccaneers at Dallas Cowboys</li><li><strong>Thu, Oct. 15: </strong>Seattle Seahawks at Denver Broncos</li><li><strong>Thu, Oct. 22: </strong>New England Patriots at Chicago Bears</li><li>T<strong>hu, Oct. 29:</strong> Carolina Panthers at Green Bay Packers</li></ul><p><strong>NBA</strong></p><ul><li><strong>Fri, Oct. 23 — 7 p.m. ET: </strong>New York vs. Boston</li><li><strong>Fri, Oct. 23 — 9:30 p.m. ET: </strong>Houston vs. San Antonio (in Austin)</li><li><strong>Fri, Oct. 30 — 7:30 p.m. ET: </strong>New York vs Philadelphia (Emirates NBA Cup Group Play)</li><li><strong>Fri, Oct. 30 — 10 p.m. ET: </strong>Los Angeles vs. Golden State (Emirates NBA Cup Group Play)</li></ul><p><strong>ONE Championship on Prime </strong></p><ul><li><strong>Fri, Oct 2 – 9 p.m. ET </strong>– ONE Fight Night 48: Erdogan vs. Elliott</li></ul><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="gdR2W4" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><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/entertainment/streaming/bookgirlies-rise-here-are-the-upcoming-book-to-screen-adaptations-that-im-genuinely-excited-about">Upcoming book-to-screen adaptations I'm excited about</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/3-best-psychological-thriller-movies-on-prime-video-you-probably-havent-seen">3 best psychological thriller movies on Prime Video</a></li><li><a href="https://www.tomsguide.com/entertainment/streaming/3-acclaimed-dramas-with-90-percent-on-rotten-tomatoes-to-watch-free-on-pluto-tv-including-bo-burnhams-slept-on-coming-of-age-tale">3 acclaimed dramas with 90%+ on Rotten Tomatoes on Pluto TV</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/prime-video/new-on-prime-video-in-october-2026-top-new-movies-and-shows-to-stream-this-month</link>
                                                                            <description>
                            <![CDATA[ Our guide to the best new movies and shows you can stream on Prime Video in October 2026. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">kg4iw56SbmHndatZoWE56X</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/q5arBLX4hzJNvdbpqJKhZe-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 27 Sep 2026 04:01:00 +0000</pubDate>                                                                                                                                <updated>Tue, 29 Sep 2026 09:41:08 +0000</updated>
                                                                                                                                            <category><![CDATA[Prime Video]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                    <category><![CDATA[Streaming]]></category>
                                                                                                <author><![CDATA[ alix.blackburn@futurenet.com (Alix Blackburn) ]]></author>                    <dc:creator><![CDATA[ Alix Blackburn ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/8UxyT2McanNFLYwQ6wC7di-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/q5arBLX4hzJNvdbpqJKhZe-1920-80.jpg">
                                                            <media:credit><![CDATA[Alamy]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Prime Video logo on blue abstract background]]></media:description>                                                            <media:text><![CDATA[Prime Video logo on blue abstract background]]></media:text>
                                <media:title type="plain"><![CDATA[Prime Video logo on blue abstract background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/q5arBLX4hzJNvdbpqJKhZe-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>October is shaping up to be another busy month for <a href="https://www.tomsguide.com/entertainment/streaming/prime-video"><strong>Prime Video</strong></a>, with plenty of new movies and shows heading to the streaming service as we settle into fall. From returning favorites to highly anticipated new releases, there’s already plenty to look forward to if you’re planning your next few weeks of streaming.</p><p>Thankfully, Prime Video has revealed its full October 2026 release schedule, which means I’ve updated this list with every confirmed title and its release date on the service. We also know about some of the biggest movies and shows coming to Prime Video in October, so I’ve rounded up the releases worth keeping on your radar.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-WQQbzW"></div>                            </div>                            <script src="https://kwizly.com/embed/WQQbzW.js" async=""></script><h3 class="article-body__section" id="section-new-on-prime-video-in-october-2026-top-picks"><span>New on Prime Video in October 2026: Top picks</span></h3><h2 id="carrie-october-7">‘Carrie’ (October 7)</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/jkUw2nh6fT0" allowfullscreen=""></iframe></div></div><p>One of my most anticipated shows of fall 2026 has to be “Carrie,” the latest adaptation of Stephen King’s iconic 1974 debut novel. This eight-episode series is being developed by Mike Flanagan, who is taking the familiar story and expanding it into a longer-form TV series. The original novel used things like news reports, transcripts and excerpts from other documents to tell Carrie’s story, and the new series looks set to play with that idea in its own way. Rather than simply retelling the story we already know, the series will explore Carrie’s powers and the events surrounding them from a wider perspective.</p><p>Carrie White (Summer H. Howell) is a sheltered high-school student who has spent most of her life isolated at home with her fiercely protective mother, Margaret (Samantha Sloyan). After her father’s sudden death, Carrie begins attending public school, where she becomes caught up in a bullying scandal that spreads throughout her community. At the same time, Carrie discovers that she has mysterious telekinetic abilities that are becoming increasingly difficult to control. The eight-episode series follows Carrie and the people around her as events build toward a devastating night. </p><p><em><strong>Stream "Carrie" on </strong></em><a href="https://www.amazon.com/gp/video/detail/B0H8R9DQHS" target="_blank" rel="nofollow"><em><strong>Prime Video</strong></em></a><em><strong> from Oct. 7</strong></em></p><h2 id="love-of-your-life-october-14">‘Love Of Your Life’ (October 14)</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/HzGx48E64Xg" allowfullscreen=""></iframe></div></div><p>“Love of Your Life” is a romantic drama that follows a sweeping love story across several years and different parts of the world. Instead of being another straightforward rom-com in Prime Video’s library, the movie focuses more on how relationships change over time and how people try to move forward after major life changes and personal loss. Directed by Oscar-nominated cinematographer Rachel Morrison, the movie puts a lot of emphasis on its emotional story, making this one for anyone in the mood for something a little more heartfelt.</p><p>Maya (Margaret Qualley) is a nurse whose chance encounter with Charlie (Gabriel Basso) leads to an unexpected romance and a future neither of them could have predicted. As their relationship develops, Maya builds a life with Charlie, but that future is suddenly shattered, leaving her to navigate a completely different chapter of her life. Years later, Maya finds herself facing new relationships, experiences and difficult choices as she tries to figure out what comes next. The film also stars Aaron Pierre, Patrick Schwarzenegger and Catherine Keener.</p><p><em><strong>Stream "Love of Your Life" on </strong></em><a href="https://www.amazon.com/gp/video/detail/B0HFJCW6VG" target="_blank" rel="nofollow"><em><strong>Prime Video</strong></em></a><em><strong> from Oct. 14</strong></em></p><h2 id="helluva-boss-season-3-october-14">‘Helluva Boss’ season 3 (October 14)</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/WylSo1LhWfY" allowfullscreen=""></iframe></div></div><p>“Helluva Boss” is returning for season 3 this month, and it’s set to be the show’s biggest season yet. The adult animated dark comedy started out as an independent web series before making the jump to a major streaming production, and the new season will also be its longest so far with 15 episodes. The first seven episodes will arrive on October 14, with the remaining eight following in 2027. Expect the same colorful animation, chaotic humor, over-the-top violence and plenty of very adult jokes that fans have come to expect from the series.</p><p>Season 3 of “Helluva Boss” picks up with Blitzo (Brandon Rogers) and the I.M.P. crew continuing their assassination jobs across Earth and Hell. As the team takes on increasingly chaotic assignments, their personal lives become more complicated. Blitzo and Stolas (Bryce Pinkham) are forced to figure out their relationship, while Moxxie (Richard Horvitz) and Millie (Vivian Nixon Williams) prepare for a major change in their lives. Loona (Erica Lindbeck) also takes on a bigger role within I.M.P. Meanwhile, old enemies return and new opportunities crop up, creating fresh problems for the group. </p><p><em><strong>Stream "Helluva Boss" season 3 on </strong></em><a href="https://www.amazon.com/gp/video/detail/B0F9VY2DHL" target="_blank" rel="nofollow"><em><strong>Prime Video</strong></em></a><em><strong> from Oct. 14</strong></em></p><h2 id="masterplan-october-16">‘Masterplan’ (October 16)</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/gc0t8AfMP6k" allowfullscreen=""></iframe></div></div><p>If you’re in the mood for something a little more intense but still a lot of fun, “Masterplan” is worth adding to your watchlist. This action thriller follows a global heist and is Amazon’s first major Franco-Italian co-production to be filmed in English. Shot across France and Italy, the movie has plenty of slick action and a European crime caper feel. It was also co-produced with legendary French studio Gaumont, which gives the whole thing a polished, international feel that should appeal to fans of stylish heist movies.</p><p>“Masterplan” follows a legendary thief, Roger (Stanley Tucci), who sets his sights on stealing the Mona Lisa from the Louvre. To pull off the ambitious heist, he recruits Chiara (Simona Tabasco), a skilled Italian cybercrime expert, and Jay (Victor Belmondo), a French explosives specialist. However, the pair soon discover that they are actually long-lost siblings and that their mysterious employer is their father. With the trio thrown together for the first time, they must put their differences aside and work as a team if they want to successfully carry out the elaborate robbery. </p><p><em><strong>Stream "Masterplan" on </strong></em><a href="https://www.amazon.com/gp/video/storefront" target="_blank" rel="nofollow"><em><strong>Prime Video</strong></em></a><em><strong> from Oct. 16</strong></em></p><h2 id="the-terminal-list-season-2-october-21">‘The Terminal List’ season 2 (October 21)</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/sGmhziz9MoE" allowfullscreen=""></iframe></div></div><p>Another show returning with a new season is “The Terminal List.” After a four-year wait following the first season’s 2022 debut, the military action-thriller is finally back, this time adapting Jack Carr’s second novel, “True Believer.” The new season takes the story far beyond the events of the first, with James Reece caught up in an international conspiracy that takes him across the Indian Ocean, Africa, the Middle East and Europe. The show is also taking its military detail seriously, with former Navy SEALs and special forces veterans involved throughout the production. It makes the show even more compelling.</p><p>Season 2 picks up with James Reece (Chris Pratt) after he has completed his revenge mission and is searching for a new purpose. His situation changes when the CIA corners him and offers a deal: clear his name by helping stop a resurgent terrorist group that has recruited one of his former allies. Reece is drawn into a globe-spanning operation that takes him from the Indian Ocean through Africa, the Middle East and Europe. Soon, he discovers a larger conspiracy stretching from Moscow to Langley, with unexpected connections to his own family history.</p><p><em><strong>Stream "The Terminal List" season 2 on </strong></em><a href="https://www.amazon.com/gp/video/detail/B09K9M94L7" target="_blank" rel="nofollow"><em><strong>Prime Video</strong></em></a><em><strong> from Oct. 21</strong></em></p><h3 class="article-body__section" id="section-new-shows-on-prime-video-in-october-2026"><span>New shows on Prime Video in October 2026</span></h3><p><strong>October 1</strong></p><ul><li>Miss Scarlet season 1 (2021)</li><li>Poldark season 1 (2015)</li><li>Sanditon (2020)</li><li>Scream Queens seasons 1-2 (2015)</li></ul><p><strong>October 2</strong></p><ul><li>Prefiero la Muerte (I Would Rather Die) (2026)</li><li>ONE Championship on Prime (2026)</li></ul><p><strong>October 4</strong></p><ul><li>Chucky seasons 1-3 (2021)</li><li>The Seven Knights of the Marronnier Kingdom (2026)</li></ul><p><strong>October 7</strong></p><ul><li>Carrie (2026)</li></ul><p><strong>October 19</strong></p><ul><li>Love in Disguise (2026)</li></ul><p><strong>October 21</strong></p><ul><li>The Terminal List season 2 (2026)</li></ul><p><strong>October 23</strong></p><ul><li>Last One Laughing: Halloween (2026)</li></ul><p><strong>October 24</strong></p><ul><li>Final Table (2026)</li></ul><p><strong>October 30</strong></p><ul><li>Last One Laughing Philippines season 2 (2026)</li></ul><h3 class="article-body__section" id="section-new-movies-on-prime-video-in-october-2026"><span>New movies on Prime Video in October 2026</span></h3><p><strong>October 1</strong></p><ul><li>A View to a Kill (1985)</li><li>American Fiction (2023)</li><li>Bend Of The River (1952)</li><li>Blade Runner 2049 (2017)</li><li>Blade Runner: The Final Cut (1982)</li><li>Bodies Bodies Bodies (2022)</li><li>Candyman (1992)</li><li>Casino (1995)</li><li>Casino Royale (1967)</li><li>Casino Royale (2006)</li><li>Child's Play (1988)</li><li>Child's Play (2019)</li><li>Chitty Chitty Bang Bang (1968)</li><li>Creature From The Black Lagoon (1954)</li><li>Creed (2015)</li><li>Creed II (2018)</li><li>Creed III (2023)</li><li>Dances With Wolves (1990)</li><li>Dark Harvest (2023)</li><li>Deepwater Horizon (2016)</li><li>Diamonds Are Forever (1971)</li><li>Diary Of A Wimpy Kid: The Long Haul (2017)</li><li>Die Another Day (2002)</li><li>Dog (2022)</li><li>Dr. No (1962)</li><li>Dracula (1931)</li><li>Duel At Diablo (1966)</li><li>Duets (2000)</li><li>EDtv (1999)</li><li>Fletch (1985)</li><li>Fletch Lives (1989)</li><li>For Your Eyes Only (1981)</li><li>Frankenstein (1931)</li><li>From Russia With Love (1964)</li><li>Girls Trip (2017)</li><li>Going My Way (1944)</li><li>Goldeneye (1995)</li><li>Goldfinger (1965)</li><li>Guy Ritchie's The Covenant (2023)</li><li>Hereditary (2018)</li><li>Holiday Inn (1942)</li><li>Hoosiers (1987)</li><li>Hot Pursuit (2015)</li><li>House Of Gucci (2021)</li><li>Hungry (2026)</li><li>Indiana Jones and the Kingdom of the Crystal Skull (2008)</li><li>Indiana Jones and the Last Crusade (1989)</li><li>Indiana Jones and the Raiders of the Lost Ark (1981)</li><li>Indiana Jones and the Temple Of Doom (1984)</li><li>Infinite (2021)</li><li>It's a Mad, Mad, Mad, Mad World (1963)</li><li>Jason's Lyric (1994)</li><li>John Wick (2014)</li><li>John Wick: Chapter 2 (2017)</li><li>John Wick: Chapter 3 - Parabellum (2019)</li><li>John Wick: Chapter 4 (2023)</li><li>Killer Klowns From Outer Space (1988)</li><li>Krampus (2015)</li><li>Kung Fu Panda (2008)</li><li>Kung Fu Panda 2 (2011)</li><li>Kung Fu Panda 3 (2016)</li><li>Lawman (1971)</li><li>Licence to Kill (1989)</li><li>Lifeforce (1985)</li><li>Live And Let Die (1973)</li><li>Lone Survivor (2014)</li><li>Lone Wolf McQuade (1983)</li><li>Mariah Carey's All I Want For Christmas Is You (2017)</li><li>MaXXXine (2024)</li><li>Midsommar (2019)</li><li>Moonraker (1979)</li><li>Mr. Mom (1983)</li><li>My Adventures With Santa (2019)</li><li>Mystery Men (1999)</li><li>Never Say Never Again (1983)</li><li>No Time To Die (2021)</li><li>Octopussy (1983)</li><li>On Her Majesty's Secret Service (1969)</li><li>Over The Top (1987)</li><li>Pearl (2022)</li><li>Primary Colors (1998)</li><li>Quantum Of Solace (2008)</li><li>R.I.P.D. (2013)</li><li>Red Dawn (1984)</li><li>Red Dawn (2012)</li><li>Rocky (1976)</li><li>Rocky Balboa (2006)</li><li>Rocky II (1979)</li><li>Rocky III (1982)</li><li>Rocky IV (1985)</li><li>Rocky IV: Rocky Vs. Drago (1985)</li><li>Rocky V (1990)</li><li>Sea Of Love (1989)</li><li>She's All That (1999)</li><li>Skyfall (2012)</li><li>Spaceballs (1987)</li><li>Spectre (2015)</li><li>Stir Of Echoes (1999)</li><li>Stir Of Echoes: The Homecoming (2007)</li><li>That Awkward Moment (2014)</li><li>The Amityville Horror (1979)</li><li>The Amityville Horror (2005)</li><li>The Battle Of Britain (1969)</li><li>The Best Man Holiday (2013)</li><li>The Boy (2015)</li><li>The Boys In The Boat (2023)</li><li>The Bride Of Frankenstein (1935)</li><li>The Godfather (1972)</li><li>The Godfather Coda: The Death Of Michael Corleone (1990)</li><li>The Godfather Part II (1974)</li><li>The Invisible Man (1933)</li><li>The Judge (2014)</li><li>The Living Daylights (1987)</li><li>The Long Riders (1980)</li><li>The Man With The Golden Gun (1974)</li><li>The Marsh King's Daughter (2023)</li><li>The Pope's Exorcist (2023)</li><li>The Poughkeepsie Tapes (2007)</li><li>The Prodigy (2019)</li><li>The Spy Who Loved Me (1977)</li><li>The Sting (1973)</li><li>The Terminator (1984)</li><li>The Witch (2016)</li><li>The World Is Not Enough (1999)</li><li>The Zookeeper's Wife (2017)</li><li>Thelma &amp; Louise (1991)</li><li>There Will Be Blood (2008)</li><li>Thief (1981)</li><li>Thunderball (1965)</li><li>Tomorrow Never Dies (1997)</li><li>Touch Of Evil (1958)</li><li>Walking Tall (2004)</li><li>Walking Tall: The Payback (2007)</li><li>Wrath Of Man (2021)</li><li>X (2022)</li><li>You Only Live Twice (1967)</li></ul><p><strong>October 2</strong></p><ul><li>Now You See Me: Now You Don't (2025)</li><li>Wuthering Heights (2026)</li></ul><p><strong>October 4</strong></p><ul><li>Godzilla x Kong: The New Empire (2024)</li></ul><p><strong>October 14</strong></p><ul><li>Love of Your Life (2026)</li></ul><p><strong>October 16</strong></p><ul><li>Masterplan (2026)</li><li>Scream 7 (2026)</li></ul><p><strong>October 23</strong></p><ul><li>The Bride! (2026)</li></ul><p><strong>October 30</strong></p><ul><li>Apocalypse Z: New World (2026)</li></ul><h3 class="article-body__section" id="section-live-sports"><span>Live sports</span></h3><p><strong>NWSL</strong></p><ul><li><strong>Fri, Oct 2 – 8 p.m. ET: </strong>Orlando Pride vs. San Diego Wave</li><li><strong>Fri, Oct 16 – 8 p.m. ET:</strong> Boston Legacy FC vs. Racing Louisville</li><li><strong>Fri, Oct 23 – 10 p.m. ET: </strong>Portland Thorns vs. NC Courage</li></ul><p><strong>Thursday Night Football</strong></p><ul><li><strong>Thu, Oct. 1: </strong>Pittsburgh Steelers at Cleveland Browns</li><li><strong>Thu, Oct. 8: </strong>Tampa Bay Buccaneers at Dallas Cowboys</li><li><strong>Thu, Oct. 15: </strong>Seattle Seahawks at Denver Broncos</li><li><strong>Thu, Oct. 22: </strong>New England Patriots at Chicago Bears</li><li>T<strong>hu, Oct. 29:</strong> Carolina Panthers at Green Bay Packers</li></ul><p><strong>NBA</strong></p><ul><li><strong>Fri, Oct. 23 — 7 p.m. ET: </strong>New York vs. Boston</li><li><strong>Fri, Oct. 23 — 9:30 p.m. ET: </strong>Houston vs. San Antonio (in Austin)</li><li><strong>Fri, Oct. 30 — 7:30 p.m. ET: </strong>New York vs Philadelphia (Emirates NBA Cup Group Play)</li><li><strong>Fri, Oct. 30 — 10 p.m. ET: </strong>Los Angeles vs. Golden State (Emirates NBA Cup Group Play)</li></ul><p><strong>ONE Championship on Prime </strong></p><ul><li><strong>Fri, Oct 2 – 9 p.m. ET </strong>– ONE Fight Night 48: Erdogan vs. Elliott</li></ul><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="gdR2W4" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><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/entertainment/streaming/bookgirlies-rise-here-are-the-upcoming-book-to-screen-adaptations-that-im-genuinely-excited-about">Upcoming book-to-screen adaptations I'm excited about</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/3-best-psychological-thriller-movies-on-prime-video-you-probably-havent-seen">3 best psychological thriller movies on Prime Video</a></li><li><a href="https://www.tomsguide.com/entertainment/streaming/3-acclaimed-dramas-with-90-percent-on-rotten-tomatoes-to-watch-free-on-pluto-tv-including-bo-burnhams-slept-on-coming-of-age-tale">3 acclaimed dramas with 90%+ on Rotten Tomatoes on Pluto TV</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Blink and you'll miss it: this 70% off 4-pack camera deal will have your indoor and outdoor home security sorted in this early Prime Big Deal Days bargain ]]></title>
                                                                                                <dc:content><![CDATA[ <p>It's almost Amazon Prime Day 2.0 in Australia, with less than a week to go until Prime Big Deal Days start on <strong>Tuesday, September 29. </strong></p><p><a href="https://www.tomsguide.com/au/news/best-prime-day-deals-and-sales" target="_blank">Early Prime Day deals</a> are alive and well ahead of next week's <a href="https://www.tomsguide.com/sales-events/amazons-next-big-sale-has-been-confirmed-for-australia-here-are-the-dates-for-prime-big-deal-days" target="_blank">member-exclusive sale</a>, with discounts on Amazon's own devices, the latest tech, homewares, appliances, and more. </p><p>The star of the deals show right now is budget home security brand Blink, with up to 72% off its indoor and outdoor camera bundles on <a href="https://www.amazon.com.au/stores/page/7B12D26C-37A4-49C6-A6BB-419F4CD85C96" target="_blank">its Amazon storefront</a>. Its most enticing deal is 70% off a new bundle, which pairs the <a href="https://www.amazon.com.au/Blink-Outdoor-Camera-Bundle-plug/dp/B0GLR3HL2P" target="_blank">Outdoor Camera 2K+ with the Mini 2K+ in a four-camera package</a>. </p><p>Now just AU$91, the pack can provide more than enough protection for inside AND outside your home. Blink's cameras offer incredible features for a low cost, such as high-resolution live view, infrared night vision, two-way audio, and the accompanying free Blink app so users can monitor their homes when they're away. If you're an Alexa fan, you can also sync Blink cameras to the app, making it all the easier to control your smart home from your phone. </p><p>If this bundle doesn't quite tickle your fancy, there's a full list of deals on <a href="https://www.amazon.com.au/stores/page/7B12D26C-37A4-49C6-A6BB-419F4CD85C96" target="_blank">Blink's Amazon storefront</a> that will cover all your home security needs. Blink's cameras come with a 30-day free trial for its subscription plan, which includes features like cloud footage backup and person detection. After the trial period, Blink's plans start from<a href="https://www.amazon.com.au/Blink-Plus-Plan-monthly-auto-renewal/dp/B0D3V7W9KK" target="_blank"> AU$4.95p/m for a basic subscription</a>. </p><p>You'll need to act fast to grab this discount, though — Blink's bundle deal will finish by the end of Prime Week on <strong>Monday, October 5.</strong></p><div class="product"><a data-dimension112="f92f590a-b7aa-11f1-9ebc-85b53e7a39aa" data-action="Deal Block" data-label="Outdoor Camera 2k+ and Mini 2k+ Bundle (4 Camera Deal)" data-dimension48="Outdoor Camera 2k+ and Mini 2k+ Bundle (4 Camera Deal)" data-dimension25="$91" href="https://www.amazon.com.au/Blink-Outdoor-Camera-Bundle-plug/dp/B0GLR3HL2P" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:313px;"><p class="vanilla-image-block" style="padding-top:159.74%;"><img id="MB8k2xGovtwygW5kbxGFfn" name="blink-outdoor-camera-2k-and-mini-2k-bund-d268e91d-0581-4633-8d96-e89e6b4fae88.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/MB8k2xGovtwygW5kbxGFfn-1920-80.jpg" mos="" align="middle" fullscreen="" width="313" height="500" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/Blink-Outdoor-Camera-Bundle-plug/dp/B0GLR3HL2P" target="_blank" rel="nofollow" data-dimension112="f92f590a-b7aa-11f1-9ebc-85b53e7a39aa" data-action="Deal Block" data-label="Outdoor Camera 2k+ and Mini 2k+ Bundle (4 Camera Deal)" data-dimension48="Outdoor Camera 2k+ and Mini 2k+ Bundle (4 Camera Deal)" data-dimension25="$91">Outdoor Camera 2k+ and Mini 2k+ Bundle (4 Camera Deal): was $308 now $91</a></strong><br />Now 70% off, Blink has combined its Outdoor 2k+ and Mini 2k+ into an affordable home security package. You'll score two of each camera for the ultimate protection when you're away from home, and you'll get the Blink Sync Module 2, which allows you to store your footage locally. </p><p>Better yet, you'll be able to check in on your home and view footage in 2K clear resolution, even at night and zoom in on all the nooks and crannies around your home. What a win. <a class="view-deal button" href="https://www.amazon.com.au/Blink-Outdoor-Camera-Bundle-plug/dp/B0GLR3HL2P" target="_blank" rel="nofollow" data-dimension112="f92f590a-b7aa-11f1-9ebc-85b53e7a39aa" data-action="Deal Block" data-label="Outdoor Camera 2k+ and Mini 2k+ Bundle (4 Camera Deal)" data-dimension48="Outdoor Camera 2k+ and Mini 2k+ Bundle (4 Camera Deal)" data-dimension25="$91">View Deal</a></p></div><p>If you're keen to expand your current Blink system or want to see what other devices the budget brand has to offer, I've rounded up 6 top picks below. </p><p>You'll need to act fast, though — these Blink discounts will also expire on Monday, October 5. </p>        <div class="featured_product_block featured_block_hero" data-id="f92f5a04-b7aa-11f1-bc49-4f9a521ce4f8">            <a href="https://www.amazon.com.au/Blink-Doorbell-Wireless-Security-Detection/dp/B0GZJM54MJ" data-model-name="Outdoor 4 (1pk System) + Free Blink Video Doorbell (white)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/jrg4QoaTXVAauMTX4EVprk.jpg" alt="Blink Outdoor 4 (1pk System) + Free Blink Video Doorbell (white) | Wireless Hd Smart Security Bundle | Two-Year Battery Life | Diy Install | Two-Way Talk | Motion Detection | Sync Module 2 Included" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Blink</div>                                        <div class="featured__title">Outdoor 4 (1pk System) + Free Blink Video Doorbell (white)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="f92f5a7c-b7aa-11f1-ac65-3b39c7309071">            <a href="https://www.amazon.com.au/Blink-Outdoor-Camera-newest-model/dp/B0F962ZG8F/ref=ast_sto_dp_puis" data-model-name="Outdoor Camera 2k+ — 1 Camera System (black)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:150%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/ttvv8He37tVqSxSgn9Hhzk.jpg" alt="Blink Outdoor Camera 2k+ (newest Model) — Wireless Smart Security Camera, 2k Video Resolution, Diy Install, Enhanced Audio, Up to Two-Year Battery. Sync Module Core Included — 1 Camera System (black)" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Blink</div>                                        <div class="featured__title">Outdoor Camera 2k+ — 1 Camera System (black)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="f92f5aea-b7aa-11f1-8067-6970e766f601">            <a href="https://www.amazon.com.au/Mini-2K/dp/B0F3B482LZ/ref=ast_sto_dp_puis" data-model-name="Mini 2k+ 1 Camera – (black)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:150%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/CE72hmyj5NLCKRQCM7fzmk.jpg" alt="Blink Mini 2k+ | Plug-In Indoor/outdoor Security Camera | 2k Wide-Angle Video | 4x Zoom | Colour Night Vision With Built-In Spotlight | Works With Alexa | 1 Camera – (black)" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Blink</div>                                        <div class="featured__title">Mini 2k+ 1 Camera – (black)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="f92f5b62-b7aa-11f1-ac37-fb00baf2aa1e">            <a href="https://www.amazon.com.au/Mini-2K/dp/B0F3BMCQV2/ref=ast_sto_dp_puis" data-model-name="Mini 2k+ 2 Cameras – (white)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:128.21%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/gufkiyLmX7injxLWpfvWtk.jpg" alt="Blink Mini 2k+ | Plug-In Indoor/outdoor Security Camera | 2k Wide-Angle Video | 4x Zoom | Colour Night Vision With Built-In Spotlight | Works With Alexa | 2 Cameras – (white)" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Blink</div>                                        <div class="featured__title">Mini 2k+ 2 Cameras – (white)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="f92f5bd0-b7aa-11f1-b774-1735f9a62988">            <a href="https://www.amazon.com.au/Blink-Video-Doorbell/dp/B0DJDT1WLC/ref=ast_sto_dp_puis?th=1" data-model-name="Video Doorbell System " data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/SN8DB3jcPYAF5KKN5t9yZm.jpg" alt="Blink Video Doorbell System | Head-To-Toe Hd View, Two-Year Battery Life, Simple Setup, Ip-65 | Works With Alexa | Sync Module Core Included – (white)" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Blink</div>                                        <div class="featured__title">Video Doorbell System </div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="f92f5c48-b7aa-11f1-9c30-c5bc66cfac90">            <a href="https://www.amazon.com.au/Blink-Doorbell-Long-lasting-battery-included/dp/B0H28MND1M" data-model-name="Video Doorbell 2k+ and Mini 2k+" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:150%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/8PTwayjaksf6mXYHgdSPwk.jpg" alt="New Blink Video Doorbell 2k+ and Mini 2k+ | Head-To-Toe View | 2k Video | Long-Lasting Battery Life | Easy Diy Setup | Sync Module Core Included – Video Doorbell System (black) + 2 Cameras (black)" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Blink</div>                                        <div class="featured__title">Video Doorbell 2k+ and Mini 2k+</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/home/home-security/blink-and-youll-miss-it-this-70-percent-off-4-pack-camera-deal-will-have-your-indoor-and-outdoor-home-security-sorted-in-this-early-prime-big-deal-days-bargain</link>
                                                                            <description>
                            <![CDATA[ Blink's affordable security cameras have hit an impressive 70% discount before Prime Day. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">MA9GV9KY2r44Cw7w3FqDMn</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/qUHdPFAhviAU82RMTcrAeT-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 24 Sep 2026 02:09:01 +0000</pubDate>                                                                                                                                <updated>Sun, 27 Sep 2026 23:13:30 +0000</updated>
                                                                                                                                            <category><![CDATA[Home Security]]></category>
                                                    <category><![CDATA[Sales Events]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                <author><![CDATA[ lucy.scotting@futurenet.com (Lucy Scotting) ]]></author>                    <dc:creator><![CDATA[ Lucy Scotting ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PQTnAGVHEDNmwJEbWkaqHV-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Lucy Scotting is a staff writer for Tom’s Guide Australia, primarily covering lifestyle, streaming and internet-related news. Lucy started her career writing for HR and staffing industry publications, covering emerging tech, business and finance.&lt;/p&gt;&lt;p&gt;In her spare time, Lucy can be found watching sci-fi movies, working on her dystopian fiction novel (in progress since 2017) or hanging out with her dog, Fletcher. If she’s not found doing any of the above, she’s likely on her next adventure to a new city, country, or continent. &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/qUHdPFAhviAU82RMTcrAeT-1920-80.jpg">
                                                            <media:credit><![CDATA[Future / Blink]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Blink cameras on gradient background with tom&#039;s guide deal badge]]></media:description>                                                            <media:text><![CDATA[Blink cameras on gradient background with tom&#039;s guide deal badge]]></media:text>
                                <media:title type="plain"><![CDATA[Blink cameras on gradient background with tom&#039;s guide deal badge]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/qUHdPFAhviAU82RMTcrAeT-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>It's almost Amazon Prime Day 2.0 in Australia, with less than a week to go until Prime Big Deal Days start on <strong>Tuesday, September 29. </strong></p><p><a href="https://www.tomsguide.com/au/news/best-prime-day-deals-and-sales" target="_blank">Early Prime Day deals</a> are alive and well ahead of next week's <a href="https://www.tomsguide.com/sales-events/amazons-next-big-sale-has-been-confirmed-for-australia-here-are-the-dates-for-prime-big-deal-days" target="_blank">member-exclusive sale</a>, with discounts on Amazon's own devices, the latest tech, homewares, appliances, and more. </p><p>The star of the deals show right now is budget home security brand Blink, with up to 72% off its indoor and outdoor camera bundles on <a href="https://www.amazon.com.au/stores/page/7B12D26C-37A4-49C6-A6BB-419F4CD85C96" target="_blank">its Amazon storefront</a>. Its most enticing deal is 70% off a new bundle, which pairs the <a href="https://www.amazon.com.au/Blink-Outdoor-Camera-Bundle-plug/dp/B0GLR3HL2P" target="_blank">Outdoor Camera 2K+ with the Mini 2K+ in a four-camera package</a>. </p><p>Now just AU$91, the pack can provide more than enough protection for inside AND outside your home. Blink's cameras offer incredible features for a low cost, such as high-resolution live view, infrared night vision, two-way audio, and the accompanying free Blink app so users can monitor their homes when they're away. If you're an Alexa fan, you can also sync Blink cameras to the app, making it all the easier to control your smart home from your phone. </p><p>If this bundle doesn't quite tickle your fancy, there's a full list of deals on <a href="https://www.amazon.com.au/stores/page/7B12D26C-37A4-49C6-A6BB-419F4CD85C96" target="_blank">Blink's Amazon storefront</a> that will cover all your home security needs. Blink's cameras come with a 30-day free trial for its subscription plan, which includes features like cloud footage backup and person detection. After the trial period, Blink's plans start from<a href="https://www.amazon.com.au/Blink-Plus-Plan-monthly-auto-renewal/dp/B0D3V7W9KK" target="_blank"> AU$4.95p/m for a basic subscription</a>. </p><p>You'll need to act fast to grab this discount, though — Blink's bundle deal will finish by the end of Prime Week on <strong>Monday, October 5.</strong></p><div class="product"><a data-dimension112="f92f590a-b7aa-11f1-9ebc-85b53e7a39aa" data-action="Deal Block" data-label="Outdoor Camera 2k+ and Mini 2k+ Bundle (4 Camera Deal)" data-dimension48="Outdoor Camera 2k+ and Mini 2k+ Bundle (4 Camera Deal)" data-dimension25="$91" href="https://www.amazon.com.au/Blink-Outdoor-Camera-Bundle-plug/dp/B0GLR3HL2P" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:313px;"><p class="vanilla-image-block" style="padding-top:159.74%;"><img id="MB8k2xGovtwygW5kbxGFfn" name="blink-outdoor-camera-2k-and-mini-2k-bund-d268e91d-0581-4633-8d96-e89e6b4fae88.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/MB8k2xGovtwygW5kbxGFfn-1920-80.jpg" mos="" align="middle" fullscreen="" width="313" height="500" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong><a href="https://www.amazon.com.au/Blink-Outdoor-Camera-Bundle-plug/dp/B0GLR3HL2P" target="_blank" rel="nofollow" data-dimension112="f92f590a-b7aa-11f1-9ebc-85b53e7a39aa" data-action="Deal Block" data-label="Outdoor Camera 2k+ and Mini 2k+ Bundle (4 Camera Deal)" data-dimension48="Outdoor Camera 2k+ and Mini 2k+ Bundle (4 Camera Deal)" data-dimension25="$91">Outdoor Camera 2k+ and Mini 2k+ Bundle (4 Camera Deal): was $308 now $91</a></strong><br />Now 70% off, Blink has combined its Outdoor 2k+ and Mini 2k+ into an affordable home security package. You'll score two of each camera for the ultimate protection when you're away from home, and you'll get the Blink Sync Module 2, which allows you to store your footage locally. </p><p>Better yet, you'll be able to check in on your home and view footage in 2K clear resolution, even at night and zoom in on all the nooks and crannies around your home. What a win. <a class="view-deal button" href="https://www.amazon.com.au/Blink-Outdoor-Camera-Bundle-plug/dp/B0GLR3HL2P" target="_blank" rel="nofollow" data-dimension112="f92f590a-b7aa-11f1-9ebc-85b53e7a39aa" data-action="Deal Block" data-label="Outdoor Camera 2k+ and Mini 2k+ Bundle (4 Camera Deal)" data-dimension48="Outdoor Camera 2k+ and Mini 2k+ Bundle (4 Camera Deal)" data-dimension25="$91">View Deal</a></p></div><p>If you're keen to expand your current Blink system or want to see what other devices the budget brand has to offer, I've rounded up 6 top picks below. </p><p>You'll need to act fast, though — these Blink discounts will also expire on Monday, October 5. </p>        <div class="featured_product_block featured_block_hero" data-id="f92f5a04-b7aa-11f1-bc49-4f9a521ce4f8">            <a href="https://www.amazon.com.au/Blink-Doorbell-Wireless-Security-Detection/dp/B0GZJM54MJ" data-model-name="Outdoor 4 (1pk System) + Free Blink Video Doorbell (white)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/jrg4QoaTXVAauMTX4EVprk.jpg" alt="Blink Outdoor 4 (1pk System) + Free Blink Video Doorbell (white) | Wireless Hd Smart Security Bundle | Two-Year Battery Life | Diy Install | Two-Way Talk | Motion Detection | Sync Module 2 Included" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Blink</div>                                        <div class="featured__title">Outdoor 4 (1pk System) + Free Blink Video Doorbell (white)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="f92f5a7c-b7aa-11f1-ac65-3b39c7309071">            <a href="https://www.amazon.com.au/Blink-Outdoor-Camera-newest-model/dp/B0F962ZG8F/ref=ast_sto_dp_puis" data-model-name="Outdoor Camera 2k+ — 1 Camera System (black)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:150%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/ttvv8He37tVqSxSgn9Hhzk.jpg" alt="Blink Outdoor Camera 2k+ (newest Model) — Wireless Smart Security Camera, 2k Video Resolution, Diy Install, Enhanced Audio, Up to Two-Year Battery. Sync Module Core Included — 1 Camera System (black)" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Blink</div>                                        <div class="featured__title">Outdoor Camera 2k+ — 1 Camera System (black)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="f92f5aea-b7aa-11f1-8067-6970e766f601">            <a href="https://www.amazon.com.au/Mini-2K/dp/B0F3B482LZ/ref=ast_sto_dp_puis" data-model-name="Mini 2k+ 1 Camera – (black)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:150%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/CE72hmyj5NLCKRQCM7fzmk.jpg" alt="Blink Mini 2k+ | Plug-In Indoor/outdoor Security Camera | 2k Wide-Angle Video | 4x Zoom | Colour Night Vision With Built-In Spotlight | Works With Alexa | 1 Camera – (black)" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Blink</div>                                        <div class="featured__title">Mini 2k+ 1 Camera – (black)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="f92f5b62-b7aa-11f1-ac37-fb00baf2aa1e">            <a href="https://www.amazon.com.au/Mini-2K/dp/B0F3BMCQV2/ref=ast_sto_dp_puis" data-model-name="Mini 2k+ 2 Cameras – (white)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:128.21%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/gufkiyLmX7injxLWpfvWtk.jpg" alt="Blink Mini 2k+ | Plug-In Indoor/outdoor Security Camera | 2k Wide-Angle Video | 4x Zoom | Colour Night Vision With Built-In Spotlight | Works With Alexa | 2 Cameras – (white)" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Blink</div>                                        <div class="featured__title">Mini 2k+ 2 Cameras – (white)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="f92f5bd0-b7aa-11f1-b774-1735f9a62988">            <a href="https://www.amazon.com.au/Blink-Video-Doorbell/dp/B0DJDT1WLC/ref=ast_sto_dp_puis?th=1" data-model-name="Video Doorbell System " data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/SN8DB3jcPYAF5KKN5t9yZm.jpg" alt="Blink Video Doorbell System | Head-To-Toe Hd View, Two-Year Battery Life, Simple Setup, Ip-65 | Works With Alexa | Sync Module Core Included – (white)" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Blink</div>                                        <div class="featured__title">Video Doorbell System </div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="f92f5c48-b7aa-11f1-9c30-c5bc66cfac90">            <a href="https://www.amazon.com.au/Blink-Doorbell-Long-lasting-battery-included/dp/B0H28MND1M" data-model-name="Video Doorbell 2k+ and Mini 2k+" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:150%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/8PTwayjaksf6mXYHgdSPwk.jpg" alt="New Blink Video Doorbell 2k+ and Mini 2k+ | Head-To-Toe View | 2k Video | Long-Lasting Battery Life | Easy Diy Setup | Sync Module Core Included – Video Doorbell System (black) + 2 Cameras (black)" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Blink</div>                                        <div class="featured__title">Video Doorbell 2k+ and Mini 2k+</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Early Amazon Prime Day Skechers deals — shop up to 56% off men's and women's sneakers, sandals and slides ]]></title>
                                                                                                <dc:content><![CDATA[ <p>If you're looking for an early Prime Day Skechers deal, you better run! 🏃🏼‍♀️‍➡️</p><p>Right now, <a href="https://www.tomsguide.com/au/news/best-prime-day-deals-and-sales" target="_blank">early Amazon Prime Day deals</a> are live ahead of next week's <a href="https://www.tomsguide.com/sales-events/amazons-next-big-sale-has-been-confirmed-for-australia-here-are-the-dates-for-prime-big-deal-days" target="_blank">member-exclusive sale</a>, with discounts across tech, homewares, appliances, and, of course, footwear. </p><p>One of my top-rated shoe brands, Skechers, has a plethora of great deals already available in the lead-up to the sale, with up to 56% off men's and women's shoes. I've gathered 18 of the best discounts right now, categorised into men's and women's sections below. If none of the styles below tickle your fancy, check out <a href="https://www.amazon.com.au/stores/SKECHERS/page/A61EFD85-67B1-46A7-8F40-3F76074A2573?lp_asin=B0CWTRKVSJ&amp;ref_=ast_bln" target="_blank">Skechers' Amazon storefront</a> for its complete range of <a href="https://www.amazon.com.au/stores/SKECHERS/page/A61EFD85-67B1-46A7-8F40-3F76074A2573?lp_asin=B0CWTRKVSJ&amp;ref_=ast_bln" target="_blank">discounted sneakers, slides and sandals</a>. </p><p>You'll need to act fast to nab one of these Skechers bargains, though, as some pairs have already sold out since I started tracking them this morning. And I also don't expect these prices to hang around longer than the final day of Prime Week, which falls on <strong>Monday, October 5. </strong></p><h3 class="article-body__section" id="section-best-women-s-skechers-prime-day-deals"><span>Best Women's Skechers Prime Day deals</span></h3>        <div class="featured_product_block featured_block_hero" data-id="bb8e199a-b79d-11f1-91de-319b10ede3fa">            <a href="https://www.amazon.com.au/Skechers-Womens-Walk-Sandal-Black/dp/B0FVVSHWLW?th=1&amp;psc=1" data-model-name="Women's Go Walk Flex Sandal Clog (White/silver)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:88.60%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/6cEPqqXK9mkTaAsDaefvMT.jpg" alt="Skechers Women's Go Walk Flex Sandal Clog, White/silver, Us 11" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Skechers</div>                                        <div class="featured__title">Women's Go Walk Flex Sandal Clog (White/silver)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="bb8e19fe-b79d-11f1-88dd-db6bb7338bb9">            <a href="https://www.amazon.com.au/Skechers-Womens-Quarter-Fisherman-Sandal/dp/B0DDRTDZ51" data-model-name="Women's Quarter Strap Fisherman Sandal (Black/black)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/4YsqMb4E34tqWMBUH5ZSQ6.jpg" alt="Skechers Women's Quarter Strap Fisherman Sandal, Black/black, 10" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Skechers</div>                                        <div class="featured__title">Women's Quarter Strap Fisherman Sandal (Black/black)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="bb8e1a62-b79d-11f1-a474-7f2e6cc211d5">            <a href="https://www.amazon.com.au/Skechers-Womens-Jade-Neutral-White/dp/B0DC1242HC" data-model-name="Women's Jade - Put It in Neutral (White)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:75.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/me9kHzUnrub3CFFtJM2zW6.jpg" alt="Skechers Women's Jade - Put It in Neutral, White, Us 7" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Skechers</div>                                        <div class="featured__title">Women's Jade - Put It in Neutral (White)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="bb8e1ac6-b79d-11f1-b11f-373e95a7cece">            <a href="https://www.amazon.com.au/Skechers-Womens-Slip-ins-Summits-Service/dp/B0BY47C9GP" data-model-name="Women's Hands Free Slip-Ins: Work Summits - Enslee (Black/black)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:64.40%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/cjzjgqtqoi8mjNVw2bGTT6.jpg" alt="Skechers Women's Hands Free Slip-Ins: Work Summits - Enslee Slip Resistant Sneaker, Black/black, Us 7" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Skechers</div>                                        <div class="featured__title">Women's Hands Free Slip-Ins: Work Summits - Enslee (Black/black)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="bb8e1b2a-b79d-11f1-b1b4-a33a7fb56980">            <a href="https://www.amazon.com.au/Skechers-Womens-Hands-Free-Slip-Ins/dp/B0F3RNZ42M" data-model-name="Women's Hands Free Slip-Ins: Contour Foam - Cozy Fit (White/natural)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:88.60%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/DGSgPoReyvVsEMGpVzphjg.jpg" alt="Skechers Women's Hands Free Slip-Ins: Contour Foam - Cozy Fit Sneaker, White/natural, Us 9" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Skechers</div>                                        <div class="featured__title">Women's Hands Free Slip-Ins: Contour Foam - Cozy Fit (White/natural)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="bb8e1b8e-b79d-11f1-9e67-0d8931890cd5">            <a href="https://www.amazon.com.au/Skechers-Womens-Uno-Safari-Sneaker-Leopard/dp/B0DWTQN546" data-model-name="Women's Uno-Safari Time Sneaker (White/leopard)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:88.60%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/KhmaJNYXwrKyMC5VeW6EZg.jpg" alt="Skechers Women's Uno-Safari Time Sneaker, White/leopard, 6.5" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Skechers</div>                                        <div class="featured__title">Women's Uno-Safari Time Sneaker (White/leopard)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="bb8e1bf2-b79d-11f1-b5b2-45fa3c98f143">            <a href="https://www.amazon.com.au/Skechers-Womens-Hotshot-Sneaker-Light/dp/B0DBZZKP5S" data-model-name="Women's Hotshot-For the Win Sneaker (Light Blue/multi)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/CgbrZxqb33infkcDQsV4og.jpg" alt="Skechers Women's Hotshot-For the Win Sneaker, Light Blue/multi, 9" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Skechers</div>                                        <div class="featured__title">Women's Hotshot-For the Win Sneaker (Light Blue/multi)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="bb8e1c4c-b79d-11f1-9d4f-a5b96cee4781">            <a href="https://www.amazon.com.au/Skechers-Arch-Fit-Beverlee-Stays/dp/B09HS8ZKFJ" data-model-name="Women's Beverlee Wedge Sandal (Black)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:70.60%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/NPwv8QLuMj3PtExETV6mgg.jpg" alt="Skechers Women's Beverlee Wedge Sandal, Arch Fit - Love Stays - Black, Us 7" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Skechers</div>                                        <div class="featured__title">Women's Beverlee Wedge Sandal (Black)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="bb8e1cb0-b79d-11f1-975b-a7f100654f4b">            <a href="https://www.amazon.com.au/Skechers-Womens-Uno-Summer-Stand2-Sandal/dp/B0CYTRTSSG" data-model-name="Women's Uno - Summer Stand 2 Sandal (Blush)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/vqdHih4xY9bNKXAJ8Hvkdg.jpg" alt="Skechers Women's Uno - Summer Stand 2 Sandal, Blush, Us 5" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Skechers</div>                                        <div class="featured__title">Women's Uno - Summer Stand 2 Sandal (Blush)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div><h3 class="article-body__section" id="section-best-men-s-skechers-prime-day-deals"><span>Best Men's Skechers Prime Day deals</span></h3>        <div class="featured_product_block featured_block_hero" data-id="bb8e1d78-b79d-11f1-9f9d-1f396ed249b9">            <a href="https://www.amazon.com.au/Skechers-Mens-Hands-Free-Slip-Ins/dp/B0DP7KC6Y6" data-model-name="Men's Hands Free Slip-Ins: Gowalk 8 - Pelayo (Black/black)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:88.60%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/b5pLe7guePnBjJeyxfvKB6.jpg" alt="Skechers Men's Hands Free Slip-Ins: Gowalk 8 - Pelayo Laceless Sneaker, Black/black, Us 12" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Skechers</div>                                        <div class="featured__title">Men's Hands Free Slip-Ins: Gowalk 8 - Pelayo (Black/black)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="bb8e1dd2-b79d-11f1-a45f-c3d3f95e60f8">            <a href="https://www.amazon.com.au/Skechers-Mens-Hands-Free-Slip-Ins/dp/B0DL4NX868" data-model-name="Men's Hands Free Slip-Ins: Arch Fit 2.0 - Lestur (Black/black)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:88.60%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/VxAaon7HUzf3r4fNBJfQE6.jpg" alt="Skechers Men's Hands Free Slip-Ins: Arch Fit 2.0 - Lestur Sneaker, Black/black, Us 8" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Skechers</div>                                        <div class="featured__title">Men's Hands Free Slip-Ins: Arch Fit 2.0 - Lestur (Black/black)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="bb8e1e36-b79d-11f1-9419-a9965e51e183">            <a href="https://www.amazon.com.au/Skechers-Mens-Gowalk-Idris-Sneaker/dp/B0DZXSMJ3H" data-model-name="Men's Gowalk 8 - Idris (Black/black)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:88.60%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/9bN3VpKgm7nR4eeZpTby66.jpg" alt="Skechers Men's Gowalk 8 - Idris Sneaker, Black/black, Us 9.5" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Skechers</div>                                        <div class="featured__title">Men's Gowalk 8 - Idris (Black/black)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="bb8e1e90-b79d-11f1-9250-df938e78865d">            <a href="https://www.amazon.com.au/Skechers-Edgeride-Raygo-Hands-Sneaker/dp/B0CWPLDDJH" data-model-name="Men's Edgeride-Raygo Sneaker (Taupe)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/CRg4ojTvbXScDgx3CRy5J6.jpg" alt="Skechers Men's Edgeride-Raygo Sneaker, Taupe, 8" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Skechers</div>                                        <div class="featured__title">Men's Edgeride-Raygo Sneaker (Taupe)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="bb8e1ef4-b79d-11f1-9919-e727af12d19e">            <a href="https://www.amazon.com.au/Skechers-Mens-Delson-Service-Black/dp/B0D7QH9QZL" data-model-name="Men's Delson 3.0 (Black)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/brymYA7itVzpkagidg7SM6.jpg" alt="Skechers Mens Delson 3.0 Sr Bungee Slip On, Black, 12" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Skechers</div>                                        <div class="featured__title">Men's Delson 3.0 (Black)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="bb8e1fd0-b79d-11f1-9c1f-d30bb508f2fa">            <a href="https://www.amazon.com.au/Skechers-Mens-Bounder-2-0-Sneaker/dp/B0DL4NCDC6" data-model-name="Men's Bounder 2.0 - Maylon Sneaker (Blue/lime)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:55.80%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/pRroTRuav3XqatEAHLCHwN.jpg" alt="Skechers Men's Bounder 2.0 - Maylon Sneaker, Blue/lime, Us 10.5" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Skechers</div>                                        <div class="featured__title">Men's Bounder 2.0 - Maylon Sneaker (Blue/lime)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="bb8e2034-b79d-11f1-9f8e-a3c1fccc2efa">            <a href="https://www.amazon.com.au/Skechers-Glide-Step-Altus-Hands-Sneaker/dp/B0CWPM1TKJ" data-model-name="Men's Glide-Step Altus Hands Free Slip-In Sneaker, (Navy/blue)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:88.60%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/umvvu86eobbNUxevRcAqzN.jpg" alt="Skechers Men's Glide-Step Altus Hands Free Slip-In Sneaker, Navy/blue, 9.5" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Skechers</div>                                        <div class="featured__title">Men's Glide-Step Altus Hands Free Slip-In Sneaker, (Navy/blue)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="bb8e208e-b79d-11f1-b62e-b52c02e93b40">            <a href="https://www.amazon.com.au/Skechers-Mens-Hiking-Shoes-Slip-Ins/dp/B0FH4HSWQ5/" data-model-name="Men's Slip-Ins: Hotshot - Relegate Sneaker (White/black)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:125.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/T2vwJKZc4jNaWQ7RSYoU5P.jpg" alt="Skechers Men's Slip-Ins: Hotshot - Relegate Sneaker, Wide Fit - White/black, Us 9.5" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Skechers</div>                                        <div class="featured__title">Men's Slip-Ins: Hotshot - Relegate Sneaker (White/black)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="bb8e20f2-b79d-11f1-83e9-d371af4e9f10">            <a href="https://www.amazon.com.au/Skechers-Mens-Uno-Sneaker-Natural/dp/B0CSK99J6L/" data-model-name="Men's Uno - Suited on Air Sneaker (Natural)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/XMHThhV9RKimJQtkbo3PsN.jpg" alt="Skechers Men's Uno - Suited on Air Sneaker, Natural, Us 8" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Skechers</div>                                        <div class="featured__title">Men's Uno - Suited on Air Sneaker (Natural)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/wellness/early-amazon-prime-day-skechers-deals-shop-up-to-56-percent-off-mens-and-womens-sneakers-sandals-and-slides</link>
                                                                            <description>
                            <![CDATA[ Looking for an early Prime Day bargain? Check out these 18 pairs of discounted Skechers available in the week before the big sale. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">3p3p9HyXh8wKSbQXAUWRPb</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/r8ppvg8syL6sbySzfGZW68-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 23 Sep 2026 22:53:10 +0000</pubDate>                                                                                                                                <updated>Thu, 24 Sep 2026 22:43:20 +0000</updated>
                                                                                                                                            <category><![CDATA[Wellness]]></category>
                                                                                                <author><![CDATA[ lucy.scotting@futurenet.com (Lucy Scotting) ]]></author>                    <dc:creator><![CDATA[ Lucy Scotting ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/PQTnAGVHEDNmwJEbWkaqHV-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Lucy Scotting is a staff writer for Tom’s Guide Australia, primarily covering lifestyle, streaming and internet-related news. Lucy started her career writing for HR and staffing industry publications, covering emerging tech, business and finance.&lt;/p&gt;&lt;p&gt;In her spare time, Lucy can be found watching sci-fi movies, working on her dystopian fiction novel (in progress since 2017) or hanging out with her dog, Fletcher. If she’s not found doing any of the above, she’s likely on her next adventure to a new city, country, or continent. &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/r8ppvg8syL6sbySzfGZW68-1920-80.jpg">
                                                            <media:credit><![CDATA[Future / Edited with Gemini]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[skechers shoes on blue background]]></media:description>                                                            <media:text><![CDATA[skechers shoes on blue background]]></media:text>
                                <media:title type="plain"><![CDATA[skechers shoes on blue background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/r8ppvg8syL6sbySzfGZW68-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>If you're looking for an early Prime Day Skechers deal, you better run! 🏃🏼‍♀️‍➡️</p><p>Right now, <a href="https://www.tomsguide.com/au/news/best-prime-day-deals-and-sales" target="_blank">early Amazon Prime Day deals</a> are live ahead of next week's <a href="https://www.tomsguide.com/sales-events/amazons-next-big-sale-has-been-confirmed-for-australia-here-are-the-dates-for-prime-big-deal-days" target="_blank">member-exclusive sale</a>, with discounts across tech, homewares, appliances, and, of course, footwear. </p><p>One of my top-rated shoe brands, Skechers, has a plethora of great deals already available in the lead-up to the sale, with up to 56% off men's and women's shoes. I've gathered 18 of the best discounts right now, categorised into men's and women's sections below. If none of the styles below tickle your fancy, check out <a href="https://www.amazon.com.au/stores/SKECHERS/page/A61EFD85-67B1-46A7-8F40-3F76074A2573?lp_asin=B0CWTRKVSJ&amp;ref_=ast_bln" target="_blank">Skechers' Amazon storefront</a> for its complete range of <a href="https://www.amazon.com.au/stores/SKECHERS/page/A61EFD85-67B1-46A7-8F40-3F76074A2573?lp_asin=B0CWTRKVSJ&amp;ref_=ast_bln" target="_blank">discounted sneakers, slides and sandals</a>. </p><p>You'll need to act fast to nab one of these Skechers bargains, though, as some pairs have already sold out since I started tracking them this morning. And I also don't expect these prices to hang around longer than the final day of Prime Week, which falls on <strong>Monday, October 5. </strong></p><h3 class="article-body__section" id="section-best-women-s-skechers-prime-day-deals"><span>Best Women's Skechers Prime Day deals</span></h3>        <div class="featured_product_block featured_block_hero" data-id="bb8e199a-b79d-11f1-91de-319b10ede3fa">            <a href="https://www.amazon.com.au/Skechers-Womens-Walk-Sandal-Black/dp/B0FVVSHWLW?th=1&amp;psc=1" data-model-name="Women's Go Walk Flex Sandal Clog (White/silver)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:88.60%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/6cEPqqXK9mkTaAsDaefvMT.jpg" alt="Skechers Women's Go Walk Flex Sandal Clog, White/silver, Us 11" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Skechers</div>                                        <div class="featured__title">Women's Go Walk Flex Sandal Clog (White/silver)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="bb8e19fe-b79d-11f1-88dd-db6bb7338bb9">            <a href="https://www.amazon.com.au/Skechers-Womens-Quarter-Fisherman-Sandal/dp/B0DDRTDZ51" data-model-name="Women's Quarter Strap Fisherman Sandal (Black/black)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/4YsqMb4E34tqWMBUH5ZSQ6.jpg" alt="Skechers Women's Quarter Strap Fisherman Sandal, Black/black, 10" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Skechers</div>                                        <div class="featured__title">Women's Quarter Strap Fisherman Sandal (Black/black)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="bb8e1a62-b79d-11f1-a474-7f2e6cc211d5">            <a href="https://www.amazon.com.au/Skechers-Womens-Jade-Neutral-White/dp/B0DC1242HC" data-model-name="Women's Jade - Put It in Neutral (White)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:75.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/me9kHzUnrub3CFFtJM2zW6.jpg" alt="Skechers Women's Jade - Put It in Neutral, White, Us 7" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Skechers</div>                                        <div class="featured__title">Women's Jade - Put It in Neutral (White)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="bb8e1ac6-b79d-11f1-b11f-373e95a7cece">            <a href="https://www.amazon.com.au/Skechers-Womens-Slip-ins-Summits-Service/dp/B0BY47C9GP" data-model-name="Women's Hands Free Slip-Ins: Work Summits - Enslee (Black/black)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:64.40%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/cjzjgqtqoi8mjNVw2bGTT6.jpg" alt="Skechers Women's Hands Free Slip-Ins: Work Summits - Enslee Slip Resistant Sneaker, Black/black, Us 7" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Skechers</div>                                        <div class="featured__title">Women's Hands Free Slip-Ins: Work Summits - Enslee (Black/black)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="bb8e1b2a-b79d-11f1-b1b4-a33a7fb56980">            <a href="https://www.amazon.com.au/Skechers-Womens-Hands-Free-Slip-Ins/dp/B0F3RNZ42M" data-model-name="Women's Hands Free Slip-Ins: Contour Foam - Cozy Fit (White/natural)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:88.60%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/DGSgPoReyvVsEMGpVzphjg.jpg" alt="Skechers Women's Hands Free Slip-Ins: Contour Foam - Cozy Fit Sneaker, White/natural, Us 9" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Skechers</div>                                        <div class="featured__title">Women's Hands Free Slip-Ins: Contour Foam - Cozy Fit (White/natural)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="bb8e1b8e-b79d-11f1-9e67-0d8931890cd5">            <a href="https://www.amazon.com.au/Skechers-Womens-Uno-Safari-Sneaker-Leopard/dp/B0DWTQN546" data-model-name="Women's Uno-Safari Time Sneaker (White/leopard)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:88.60%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/KhmaJNYXwrKyMC5VeW6EZg.jpg" alt="Skechers Women's Uno-Safari Time Sneaker, White/leopard, 6.5" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Skechers</div>                                        <div class="featured__title">Women's Uno-Safari Time Sneaker (White/leopard)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="bb8e1bf2-b79d-11f1-b5b2-45fa3c98f143">            <a href="https://www.amazon.com.au/Skechers-Womens-Hotshot-Sneaker-Light/dp/B0DBZZKP5S" data-model-name="Women's Hotshot-For the Win Sneaker (Light Blue/multi)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/CgbrZxqb33infkcDQsV4og.jpg" alt="Skechers Women's Hotshot-For the Win Sneaker, Light Blue/multi, 9" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Skechers</div>                                        <div class="featured__title">Women's Hotshot-For the Win Sneaker (Light Blue/multi)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="bb8e1c4c-b79d-11f1-9d4f-a5b96cee4781">            <a href="https://www.amazon.com.au/Skechers-Arch-Fit-Beverlee-Stays/dp/B09HS8ZKFJ" data-model-name="Women's Beverlee Wedge Sandal (Black)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:70.60%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/NPwv8QLuMj3PtExETV6mgg.jpg" alt="Skechers Women's Beverlee Wedge Sandal, Arch Fit - Love Stays - Black, Us 7" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Skechers</div>                                        <div class="featured__title">Women's Beverlee Wedge Sandal (Black)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="bb8e1cb0-b79d-11f1-975b-a7f100654f4b">            <a href="https://www.amazon.com.au/Skechers-Womens-Uno-Summer-Stand2-Sandal/dp/B0CYTRTSSG" data-model-name="Women's Uno - Summer Stand 2 Sandal (Blush)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/vqdHih4xY9bNKXAJ8Hvkdg.jpg" alt="Skechers Women's Uno - Summer Stand 2 Sandal, Blush, Us 5" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Skechers</div>                                        <div class="featured__title">Women's Uno - Summer Stand 2 Sandal (Blush)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div><h3 class="article-body__section" id="section-best-men-s-skechers-prime-day-deals"><span>Best Men's Skechers Prime Day deals</span></h3>        <div class="featured_product_block featured_block_hero" data-id="bb8e1d78-b79d-11f1-9f9d-1f396ed249b9">            <a href="https://www.amazon.com.au/Skechers-Mens-Hands-Free-Slip-Ins/dp/B0DP7KC6Y6" data-model-name="Men's Hands Free Slip-Ins: Gowalk 8 - Pelayo (Black/black)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:88.60%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/b5pLe7guePnBjJeyxfvKB6.jpg" alt="Skechers Men's Hands Free Slip-Ins: Gowalk 8 - Pelayo Laceless Sneaker, Black/black, Us 12" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Skechers</div>                                        <div class="featured__title">Men's Hands Free Slip-Ins: Gowalk 8 - Pelayo (Black/black)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="bb8e1dd2-b79d-11f1-a45f-c3d3f95e60f8">            <a href="https://www.amazon.com.au/Skechers-Mens-Hands-Free-Slip-Ins/dp/B0DL4NX868" data-model-name="Men's Hands Free Slip-Ins: Arch Fit 2.0 - Lestur (Black/black)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:88.60%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/VxAaon7HUzf3r4fNBJfQE6.jpg" alt="Skechers Men's Hands Free Slip-Ins: Arch Fit 2.0 - Lestur Sneaker, Black/black, Us 8" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Skechers</div>                                        <div class="featured__title">Men's Hands Free Slip-Ins: Arch Fit 2.0 - Lestur (Black/black)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="bb8e1e36-b79d-11f1-9419-a9965e51e183">            <a href="https://www.amazon.com.au/Skechers-Mens-Gowalk-Idris-Sneaker/dp/B0DZXSMJ3H" data-model-name="Men's Gowalk 8 - Idris (Black/black)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:88.60%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/9bN3VpKgm7nR4eeZpTby66.jpg" alt="Skechers Men's Gowalk 8 - Idris Sneaker, Black/black, Us 9.5" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Skechers</div>                                        <div class="featured__title">Men's Gowalk 8 - Idris (Black/black)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="bb8e1e90-b79d-11f1-9250-df938e78865d">            <a href="https://www.amazon.com.au/Skechers-Edgeride-Raygo-Hands-Sneaker/dp/B0CWPLDDJH" data-model-name="Men's Edgeride-Raygo Sneaker (Taupe)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/CRg4ojTvbXScDgx3CRy5J6.jpg" alt="Skechers Men's Edgeride-Raygo Sneaker, Taupe, 8" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Skechers</div>                                        <div class="featured__title">Men's Edgeride-Raygo Sneaker (Taupe)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="bb8e1ef4-b79d-11f1-9919-e727af12d19e">            <a href="https://www.amazon.com.au/Skechers-Mens-Delson-Service-Black/dp/B0D7QH9QZL" data-model-name="Men's Delson 3.0 (Black)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/brymYA7itVzpkagidg7SM6.jpg" alt="Skechers Mens Delson 3.0 Sr Bungee Slip On, Black, 12" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Skechers</div>                                        <div class="featured__title">Men's Delson 3.0 (Black)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="bb8e1fd0-b79d-11f1-9c1f-d30bb508f2fa">            <a href="https://www.amazon.com.au/Skechers-Mens-Bounder-2-0-Sneaker/dp/B0DL4NCDC6" data-model-name="Men's Bounder 2.0 - Maylon Sneaker (Blue/lime)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:55.80%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/pRroTRuav3XqatEAHLCHwN.jpg" alt="Skechers Men's Bounder 2.0 - Maylon Sneaker, Blue/lime, Us 10.5" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Skechers</div>                                        <div class="featured__title">Men's Bounder 2.0 - Maylon Sneaker (Blue/lime)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="bb8e2034-b79d-11f1-9f8e-a3c1fccc2efa">            <a href="https://www.amazon.com.au/Skechers-Glide-Step-Altus-Hands-Sneaker/dp/B0CWPM1TKJ" data-model-name="Men's Glide-Step Altus Hands Free Slip-In Sneaker, (Navy/blue)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:88.60%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/umvvu86eobbNUxevRcAqzN.jpg" alt="Skechers Men's Glide-Step Altus Hands Free Slip-In Sneaker, Navy/blue, 9.5" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Skechers</div>                                        <div class="featured__title">Men's Glide-Step Altus Hands Free Slip-In Sneaker, (Navy/blue)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="bb8e208e-b79d-11f1-b62e-b52c02e93b40">            <a href="https://www.amazon.com.au/Skechers-Mens-Hiking-Shoes-Slip-Ins/dp/B0FH4HSWQ5/" data-model-name="Men's Slip-Ins: Hotshot - Relegate Sneaker (White/black)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:125.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/T2vwJKZc4jNaWQ7RSYoU5P.jpg" alt="Skechers Men's Slip-Ins: Hotshot - Relegate Sneaker, Wide Fit - White/black, Us 9.5" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Skechers</div>                                        <div class="featured__title">Men's Slip-Ins: Hotshot - Relegate Sneaker (White/black)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="bb8e20f2-b79d-11f1-83e9-d371af4e9f10">            <a href="https://www.amazon.com.au/Skechers-Mens-Uno-Sneaker-Natural/dp/B0CSK99J6L/" data-model-name="Men's Uno - Suited on Air Sneaker (Natural)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check="" style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/XMHThhV9RKimJQtkbo3PsN.jpg" alt="Skechers Men's Uno - Suited on Air Sneaker, Natural, Us 8" /></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Skechers</div>                                        <div class="featured__title">Men's Uno - Suited on Air Sneaker (Natural)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 3 best new to Prime Video movies to binge-watch this weekend (Sept. 18-20)  — including an iconic Ethan Hawke horror phenomenon ]]></title>
                                                                                                <dc:content><![CDATA[ <p>We're in the middle of the month, which tends to be a quiet time for releases. Prime Video is no different, with just one new movie release this week — but boy howdy, is it a good one. </p><p>If you're scratching your head over what to watch on Prime Video this weekend, I've got you covered. Of <a href="https://www.tomsguide.com/entertainment/prime-video/prime-video-just-added-98-new-movies-here-are-the-5-im-streaming-first">everything new on Prime Video in September</a>, my top three picks include:</p><ul><li><strong>"Bombshell," </strong>a drama that turns one of Fox News' biggest scandals into a star-studded affair led by Charlize Theron, Nicole Kidman, and Margot Robbie;</li><li><strong>"Demon Slayer – Kimetsu no Yaiba – The Movie: Mugen Train,"</strong> a must-watch if you love a great fight scene (or trains I s'pose)</li><li><strong>"The Purge,"</strong> a genuinely well-crafted thriller set in a single location that ditches the theatrics of the sequels</li></ul><p>Need to know before you decide which to start watching? Here's why each one is worth a spot on your watchlist this weekend.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ePaVgW"></div>                            </div>                            <script src="https://kwizly.com/embed/ePaVgW.js" async=""></script><h2 id="bombshell-2019">Bombshell (2019)</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/0rBnkBIhoFE" allowfullscreen=""></iframe></div></div><p><strong>The vibe</strong>: An excuse to watch powerful (and stunning) women for an hour and 49 minutes</p><p><strong>Why you should watch it:</strong> Inspired by real events and set against the backdrop of the 2016 U.S. presidential election, "Bombshell" follows three women whose allegations against longtime Fox News chairman Roger Ailes ultimately get him the boot. Charlize Theron heads a stacked cast as political commentator Megyn Kelly, alongside Nicole Kidman as acclaimed journalist Gretchen Carlson and Margot Robbie as Kayla Pospisil, the wide-eyed audience surrogate thrown into the cutthroat world of broadcast news.</p><p>Kate McKinnon is also a standout as a no-nonsense Fox producer who delivers one of the movie’s best lines: “What would scare my grandmother or piss off my grandfather — that’s a Fox story.” Theron and Robbie both earned Oscar nominations for their performances, though neither took home the trophy. </p><p><em><strong>Watch </strong></em><a href="https://www.primevideo.com/detail/0TYGP49ZNBUWAFLR8E5CRKTPVF" target="_blank" rel="nofollow"><em><strong>"Bombshell" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="39-demon-slayer-kimetsu-no-yaiba-the-movie-mugen-train-39-2021">'Demon Slayer – Kimetsu no Yaiba – The Movie: Mugen Train' (2021)</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/ATJYac_dORw" allowfullscreen=""></iframe></div></div><p><strong>The vibe: </strong>Sick anime fight scenes on a train 'r us</p><p><strong>Why you should watch it:</strong> "Demon Slayer" is not usually an anime I point newcomers to the genre toward, but the series' first theatrical feature film, "Demon Slayer – Kimetsu no Yaiba – The Movie: Mugen Train," is well worth a watch for anyone who loves a good fight scene  — animated or otherwise. The characters and their back stories are simple enough that you don't need to watch the show to follow along with the story's main beats, and the English dub is phenomenal! </p><p>The series follows 13-year-old Tanjiro Kamado, who finds his family brutally murdered, except his sister Nezuko Kamado, who has turned into a demon. He sets out with her in tow (literally in a basket on his shoulders) to join a secret organization known as the Demon Slayer Corps to avenge his family and cure Nezuko. In the movie, he and his friends board a train along with a high-ranking Demon Slayer to exterminate the demon terrorizing the train’s passengers.</p><p><em><strong>Watch </strong></em><a href="https://www.primevideo.com/detail/0GYBXT8IFQBUNY759F4GY0A0O1" target="_blank" rel="nofollow"><em><strong>"Demon Slayer – Kimetsu no Yaiba – The Movie: Mugen Train" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="the-purge-39-2013">‘The Purge' (2013)</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/K0LLaybEuzA" allowfullscreen=""></iframe></div></div><p><strong>The vibe:</strong> A sublime single-setting thriller</p><p><strong>Why you should watch it:</strong> Of all "The Purge" movies, the only one I genuinely recommend people watch is the original. For all the theatrics that came later, 2013's "The Purge" is a surprisingly grounded, single-setting psychological thriller that keeps you on the edge of your seat. There's a fun moral dilemma thrown into the mix that I sorely missed in later "Purge" movies. </p><p>A decade before we got Ethan Hawke at his most terrifying in the equally superb <a href="https://www.tomsguide.com/entertainment/netflix/one-of-the-highest-rated-horror-sequels-of-the-decade-black-phone-2-just-landed-on-netflix-and-ethan-hawke-has-never-been-more-terrifying">"The Black Phone" movies</a>, he starred as a terrified patriarch in the purge: a night of bedlam where all crimes (including murder) are legal until the sun comes up. It's a government-sanctioned stress relief exercise, supposedly to ensure a more peaceful and orderly society for the rest of the year. Hawke's character makes the mistake of letting a wounded stranger inside on purge night, drawing the attention of a bloodthirsty group of purgers. </p><p><em><strong>Stream </strong></em><a href="https://www.youtube.com/watch?v=K0LLaybEuzA" target="_blank" rel="nofollow"><em><strong>"The Purge" on Prime Video</strong></em></a><em><strong> now</strong></em></p><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="gdR2W4" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><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/sales-events/amazon-october-prime-big-deal-days-2026-best-sales-now">Amazon's Prime Big Deal Days is official, and here's 39 deals I didn't expect to see on sale this early</a></li><li><a href="https://www.tomsguide.com/entertainment/streaming/13-new-movies-and-shows-to-stream-this-weekend-on-netflix-apple-tv-and-more-sept-18-20">13 new movies and shows to stream this weekend on Netflix, Apple TV and more (Sept. 18-20)</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/3-best-new-to-prime-video-shows-you-should-binge-watch-this-weekend-including-a-reacher-spinoff-sept-18-20">3 best new to Prime Video shows you should binge-watch this weekend — including a 'Reacher' spinoff (Sept. 18-20)</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/prime-video/3-best-new-to-prime-video-movies-to-binge-watch-this-weekend-sept-18-20-including-an-iconic-ethan-hawke-horror-phenomenon</link>
                                                                            <description>
                            <![CDATA[ Planning to binge-watch something new this weekend? Here's our weekly guide to the best new to Prime Video movies you should be streaming right now. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">DxmiM7hoUQahSGbRgQNGgY</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/Z7nRM6RNHkoHV9PB6Hsx3X-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 18 Sep 2026 17:14:08 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Prime Video]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                    <category><![CDATA[Streaming]]></category>
                                                                                                                    <dc:creator><![CDATA[ Alyse Stanley ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/BxNnQuBWRHqkv5xWZsjrjc-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Alyse Stanley is a news editor at Tom’s Guide, overseeing weekend coverage and writing about the latest in tech, gaming, and entertainment. Before Tom’s Guide, Alyse worked as an editor for the Washington Post’s sunsetted video game section, Launcher, where she also wrote about indie games you shouldn’t miss, how to tackle your gaming backlog, and all things Nintendo. She previously led Gizmodo’s weekend news desk covering breaking tech news and has written game reviews and features for outlets like Polygon, Unwinnable, and Rock, Paper, Shotgun. A recent Chicago-area transplant born and raised in Virginia, Alyse is a big fan of horror movies, cartoons, and roller skating. She&#039;s also a puzzle fan and can often be found contributing to the NYT Connections coverage on Tom&#039;s Guide &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/Z7nRM6RNHkoHV9PB6Hsx3X-1920-80.jpg">
                                                            <media:credit><![CDATA[Tuomas Lehtinen / Alamy]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Prime Video logo on blue striped background]]></media:description>                                                            <media:text><![CDATA[Prime Video logo on blue striped background]]></media:text>
                                <media:title type="plain"><![CDATA[Prime Video logo on blue striped background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/Z7nRM6RNHkoHV9PB6Hsx3X-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>We're in the middle of the month, which tends to be a quiet time for releases. Prime Video is no different, with just one new movie release this week — but boy howdy, is it a good one. </p><p>If you're scratching your head over what to watch on Prime Video this weekend, I've got you covered. Of <a href="https://www.tomsguide.com/entertainment/prime-video/prime-video-just-added-98-new-movies-here-are-the-5-im-streaming-first">everything new on Prime Video in September</a>, my top three picks include:</p><ul><li><strong>"Bombshell," </strong>a drama that turns one of Fox News' biggest scandals into a star-studded affair led by Charlize Theron, Nicole Kidman, and Margot Robbie;</li><li><strong>"Demon Slayer – Kimetsu no Yaiba – The Movie: Mugen Train,"</strong> a must-watch if you love a great fight scene (or trains I s'pose)</li><li><strong>"The Purge,"</strong> a genuinely well-crafted thriller set in a single location that ditches the theatrics of the sequels</li></ul><p>Need to know before you decide which to start watching? Here's why each one is worth a spot on your watchlist this weekend.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ePaVgW"></div>                            </div>                            <script src="https://kwizly.com/embed/ePaVgW.js" async=""></script><h2 id="bombshell-2019">Bombshell (2019)</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/0rBnkBIhoFE" allowfullscreen=""></iframe></div></div><p><strong>The vibe</strong>: An excuse to watch powerful (and stunning) women for an hour and 49 minutes</p><p><strong>Why you should watch it:</strong> Inspired by real events and set against the backdrop of the 2016 U.S. presidential election, "Bombshell" follows three women whose allegations against longtime Fox News chairman Roger Ailes ultimately get him the boot. Charlize Theron heads a stacked cast as political commentator Megyn Kelly, alongside Nicole Kidman as acclaimed journalist Gretchen Carlson and Margot Robbie as Kayla Pospisil, the wide-eyed audience surrogate thrown into the cutthroat world of broadcast news.</p><p>Kate McKinnon is also a standout as a no-nonsense Fox producer who delivers one of the movie’s best lines: “What would scare my grandmother or piss off my grandfather — that’s a Fox story.” Theron and Robbie both earned Oscar nominations for their performances, though neither took home the trophy. </p><p><em><strong>Watch </strong></em><a href="https://www.primevideo.com/detail/0TYGP49ZNBUWAFLR8E5CRKTPVF" target="_blank" rel="nofollow"><em><strong>"Bombshell" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="39-demon-slayer-kimetsu-no-yaiba-the-movie-mugen-train-39-2021">'Demon Slayer – Kimetsu no Yaiba – The Movie: Mugen Train' (2021)</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/ATJYac_dORw" allowfullscreen=""></iframe></div></div><p><strong>The vibe: </strong>Sick anime fight scenes on a train 'r us</p><p><strong>Why you should watch it:</strong> "Demon Slayer" is not usually an anime I point newcomers to the genre toward, but the series' first theatrical feature film, "Demon Slayer – Kimetsu no Yaiba – The Movie: Mugen Train," is well worth a watch for anyone who loves a good fight scene  — animated or otherwise. The characters and their back stories are simple enough that you don't need to watch the show to follow along with the story's main beats, and the English dub is phenomenal! </p><p>The series follows 13-year-old Tanjiro Kamado, who finds his family brutally murdered, except his sister Nezuko Kamado, who has turned into a demon. He sets out with her in tow (literally in a basket on his shoulders) to join a secret organization known as the Demon Slayer Corps to avenge his family and cure Nezuko. In the movie, he and his friends board a train along with a high-ranking Demon Slayer to exterminate the demon terrorizing the train’s passengers.</p><p><em><strong>Watch </strong></em><a href="https://www.primevideo.com/detail/0GYBXT8IFQBUNY759F4GY0A0O1" target="_blank" rel="nofollow"><em><strong>"Demon Slayer – Kimetsu no Yaiba – The Movie: Mugen Train" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="the-purge-39-2013">‘The Purge' (2013)</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/K0LLaybEuzA" allowfullscreen=""></iframe></div></div><p><strong>The vibe:</strong> A sublime single-setting thriller</p><p><strong>Why you should watch it:</strong> Of all "The Purge" movies, the only one I genuinely recommend people watch is the original. For all the theatrics that came later, 2013's "The Purge" is a surprisingly grounded, single-setting psychological thriller that keeps you on the edge of your seat. There's a fun moral dilemma thrown into the mix that I sorely missed in later "Purge" movies. </p><p>A decade before we got Ethan Hawke at his most terrifying in the equally superb <a href="https://www.tomsguide.com/entertainment/netflix/one-of-the-highest-rated-horror-sequels-of-the-decade-black-phone-2-just-landed-on-netflix-and-ethan-hawke-has-never-been-more-terrifying">"The Black Phone" movies</a>, he starred as a terrified patriarch in the purge: a night of bedlam where all crimes (including murder) are legal until the sun comes up. It's a government-sanctioned stress relief exercise, supposedly to ensure a more peaceful and orderly society for the rest of the year. Hawke's character makes the mistake of letting a wounded stranger inside on purge night, drawing the attention of a bloodthirsty group of purgers. </p><p><em><strong>Stream </strong></em><a href="https://www.youtube.com/watch?v=K0LLaybEuzA" target="_blank" rel="nofollow"><em><strong>"The Purge" on Prime Video</strong></em></a><em><strong> now</strong></em></p><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="gdR2W4" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><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/sales-events/amazon-october-prime-big-deal-days-2026-best-sales-now">Amazon's Prime Big Deal Days is official, and here's 39 deals I didn't expect to see on sale this early</a></li><li><a href="https://www.tomsguide.com/entertainment/streaming/13-new-movies-and-shows-to-stream-this-weekend-on-netflix-apple-tv-and-more-sept-18-20">13 new movies and shows to stream this weekend on Netflix, Apple TV and more (Sept. 18-20)</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/3-best-new-to-prime-video-shows-you-should-binge-watch-this-weekend-including-a-reacher-spinoff-sept-18-20">3 best new to Prime Video shows you should binge-watch this weekend — including a 'Reacher' spinoff (Sept. 18-20)</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 3 best new to Prime Video shows you should binge-watch this weekend —including a 'Reacher' spinoff (Sept. 18-20) ]]></title>
                                                                                                <dc:content><![CDATA[ <p>We're in the last weeks of September, which means we've only got a little time before our viewing habits go fully Halloween-themed with the official arrival of spooky season and movie marathons full of ghosts and ghouls. Thankfully, <a href="https://www.tomsguide.com/entertainment/streaming/prime-video">Prime Video</a>, one of the top <a href="https://www.tomsguide.com/us/best-streaming-video-services,review-2625.html">streaming services</a>, has plenty of non-creepy new movies and TV shows to keep us distracted until October rolls along, which means that you won't have to spend long hunting for something top-notch to watch this weekend. </p><p>That includes "A Love Other Than Yours," a new South Korean romantic melodrama centered on what happens when long-term couples encounter new romantic interests while approaching marriage. There's also an action-crime newcomer in the form of "Neagley," a spin-off of the fan-favorite "Reacher" franchise. (Speaking of, the <a href="https://www.tomsguide.com/entertainment/streaming/watch-reacher-season-4">"Reacher" season 4</a> finale just dropped on the streamer, so you can also add that to your weekend watch!) And for you animated fans, all four seasons of the Japanese anime series "Demon Slayer: Kimetsu no Yaiba" have also recently arrived on the Apple platform. </p><p>Without further ado, here are the three best new-to-Prime Video shows to binge this weekend. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ePaVgW"></div>                            </div>                            <script src="https://kwizly.com/embed/ePaVgW.js" async=""></script><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="gdR2W4" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><h2 id="39-a-love-other-than-yours-39">'A Love Other Than Yours'</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/zp62ID0bbQM" allowfullscreen=""></iframe></div></div><p><strong>What it's about:</strong> Most screen romances have a happily-ever-after, but this South Korean series deals with what happens <em>after</em> all that. The 14-episode K-drama, which arrived stateside on Prime Video on September 12, revolves around childhood friends-turned-romantic partners Namgung Ho (Seo Kang-joon) and Lee Mi-do (Ahn Eun-jin), who have been dating for 10 years. As the topic of marriage swirls around them, their strong connection dulls with comfort and monotony, leaving the couple conflicted when new love interests pop up in their respective lives. </p><p><strong>Why you should watch it: </strong>Written by Yoo Soo-ji and directed by Hwang Seung-gi and Lee Ga-ram, the series takes a realistic and relatable look at navigating long-term relationships, with all of the emotional messiness and angst that can come with spending year after year with a person. The natural chemistry between lead actors Seo Kang-joon and Ahn Eun-jin keep you rooting on for the on-screen pair, even when things </p><p><em><strong>Stream </strong></em><a href="https://www.primevideo.com/detail/0JVRCMM5QX6UT6H68UDP3DKOEP" target="_blank" rel="nofollow"><em><strong>"A Love Other Than Yours" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="39-neagley-39-season-one">'Neagley' season one</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/BOzNaa_o9_g" allowfullscreen=""></iframe></div></div><p><strong>What it's about:</strong> A spin-off of the "Reacher" franchise, this action-packed crime thriller follows Frances Neagley (Maria Sten), a Chicago-based private investigator and former military protégé of Jack Reacher (Alan Ritchson) in the Army's 110th Special Investigations Unit. When our titular heroine learns that a beloved friend from her past has been killed in a suspicious accident, she taps into everything she learned from Reacher and sets out for justice. </p><p><strong>Why you should watch it: </strong>As of press time, the Prime Video newcomer has a strong 91% approval rating on Rotten Tomatoes; <a href="https://www.theguardian.com/tv-and-radio/2026/sep/16/neagley-review-reacher-spinoff-amazon-prime-video" target="_blank" rel="nofollow">The Guardian</a> critic Lucy Mangan praised the "violent Reacher spinoff" as "a glorious hour off from normal life," and added: "If you like Reacher, you’ll like Neagley – especially if, like its progenitor did, it gains more confidence and starts to allow a little levity to creep in."</p><p><em><strong>Stream </strong></em><a href="https://www.primevideo.com/detail/0RZB1U1IL8TB1J9Z2UN3UF7H2C" target="_blank" rel="nofollow"><em><strong>"Neagley" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="39-demon-slayer-kimetsu-no-yaiba-39">'Demon Slayer: Kimetsu no Yaiba'</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/VQGCKyvzIM4" allowfullscreen=""></iframe></div></div><p><strong>What it's about: </strong>Based on the Japanese manga series written and illustrated by Koyoharu Gotouge, this TV adaptation plunges viewers into the realm of humans and demons. We follow a kind-hearted teenage boy named Tanjiro Kamado (voiced by Natsuki Hanae and English-dubbed by Zach Aguilar) who joins a secret society of sword-swinging warriors to avenge his murdered family and find a cure for his sister, Nezuko (Akari Kitō and Abby Trott), who was transformed into a demon. </p><p><strong>Why you should watch it: </strong>All four seasons of "Demon Slayer: Kimetsu no Yaiba"—along with the franchise’s first film, 2021's "Mugen Train"—are available to watch on Prime Video as of September 15. The anime adaptation was widely acclaimed by critics, who praised "the animation quality and flowing battle scenes that integrate digital effects seamlessly" (per Patrick Frye for <a href="https://www.animegeek.com/demon-slayer-season-2-release-date-december-fall-2021-kimetsu-no-yaiba-season-2/" target="_blank">Monsters and Critics</a>); the first season has a rare perfect 100% rating on Rotten Tomatoes. </p><p><em><strong>Stream </strong></em><a href="https://www.primevideo.com/detail/0IGU74KHHZARVO5UAR87R3AZMV" target="_blank" rel="nofollow"><em><strong>"Demon Slayer: Kimetsu no Yaiba" on Prime Video</strong></em></a><em><strong> now</strong></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/entertainment/prime-video/tired-of-watching-the-same-old-action-movies-ive-got-3-picks-on-prime-video-you-probably-havent-seen">Tired of watching the same old action movies? I've got 3 picks on Prime Video you probably haven't seen</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/5-new-to-prime-video-movies-in-september-2026-with-90-percent-or-higher-on-rotten-tomatoes">5 new to Prime Video movies with 90% or higher on Rotten Tomatoes</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/3-new-to-prime-video-thriller-movies-to-watch-this-week-including-an-intense-war-movie-starring-tom-cruise-sept-8-13">3 new to Prime Video thriller movies to watch this week — including an intense war movie starring Tom Cruise</a></li></ul><div data-model-name="Amazon Prime Video,Hulu,Netflix,Paramount Plus,Peacock TV,Disney+,Apple TV" data-widget-type="multimodelreview" data-widget-title="Today's best streaming service deals"></div> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/prime-video/3-best-new-to-prime-video-shows-you-should-binge-watch-this-weekend-including-a-reacher-spinoff-sept-18-20</link>
                                                                            <description>
                            <![CDATA[ Planning to binge-watch something new this weekend? Here's our weekly guide to the best new to Prime Video series you should be streaming right now. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Z4fKPZwn8EfR7QJkVK3MKh</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/QnWGM5CthNb8zgXsNbAcv-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 18 Sep 2026 13:08:31 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Prime Video]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                    <category><![CDATA[Streaming]]></category>
                                                                                                                    <dc:creator><![CDATA[ Christina Izzo ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/LMncQCRNbbLXxxjbfZJvWE-320-70.jpeg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/QnWGM5CthNb8zgXsNbAcv-1920-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Prime Video streaming logo purple]]></media:description>                                                            <media:text><![CDATA[Prime Video streaming logo purple]]></media:text>
                                <media:title type="plain"><![CDATA[Prime Video streaming logo purple]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/QnWGM5CthNb8zgXsNbAcv-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>We're in the last weeks of September, which means we've only got a little time before our viewing habits go fully Halloween-themed with the official arrival of spooky season and movie marathons full of ghosts and ghouls. Thankfully, <a href="https://www.tomsguide.com/entertainment/streaming/prime-video">Prime Video</a>, one of the top <a href="https://www.tomsguide.com/us/best-streaming-video-services,review-2625.html">streaming services</a>, has plenty of non-creepy new movies and TV shows to keep us distracted until October rolls along, which means that you won't have to spend long hunting for something top-notch to watch this weekend. </p><p>That includes "A Love Other Than Yours," a new South Korean romantic melodrama centered on what happens when long-term couples encounter new romantic interests while approaching marriage. There's also an action-crime newcomer in the form of "Neagley," a spin-off of the fan-favorite "Reacher" franchise. (Speaking of, the <a href="https://www.tomsguide.com/entertainment/streaming/watch-reacher-season-4">"Reacher" season 4</a> finale just dropped on the streamer, so you can also add that to your weekend watch!) And for you animated fans, all four seasons of the Japanese anime series "Demon Slayer: Kimetsu no Yaiba" have also recently arrived on the Apple platform. </p><p>Without further ado, here are the three best new-to-Prime Video shows to binge this weekend. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ePaVgW"></div>                            </div>                            <script src="https://kwizly.com/embed/ePaVgW.js" async=""></script><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="gdR2W4" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><h2 id="39-a-love-other-than-yours-39">'A Love Other Than Yours'</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/zp62ID0bbQM" allowfullscreen=""></iframe></div></div><p><strong>What it's about:</strong> Most screen romances have a happily-ever-after, but this South Korean series deals with what happens <em>after</em> all that. The 14-episode K-drama, which arrived stateside on Prime Video on September 12, revolves around childhood friends-turned-romantic partners Namgung Ho (Seo Kang-joon) and Lee Mi-do (Ahn Eun-jin), who have been dating for 10 years. As the topic of marriage swirls around them, their strong connection dulls with comfort and monotony, leaving the couple conflicted when new love interests pop up in their respective lives. </p><p><strong>Why you should watch it: </strong>Written by Yoo Soo-ji and directed by Hwang Seung-gi and Lee Ga-ram, the series takes a realistic and relatable look at navigating long-term relationships, with all of the emotional messiness and angst that can come with spending year after year with a person. The natural chemistry between lead actors Seo Kang-joon and Ahn Eun-jin keep you rooting on for the on-screen pair, even when things </p><p><em><strong>Stream </strong></em><a href="https://www.primevideo.com/detail/0JVRCMM5QX6UT6H68UDP3DKOEP" target="_blank" rel="nofollow"><em><strong>"A Love Other Than Yours" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="39-neagley-39-season-one">'Neagley' season one</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/BOzNaa_o9_g" allowfullscreen=""></iframe></div></div><p><strong>What it's about:</strong> A spin-off of the "Reacher" franchise, this action-packed crime thriller follows Frances Neagley (Maria Sten), a Chicago-based private investigator and former military protégé of Jack Reacher (Alan Ritchson) in the Army's 110th Special Investigations Unit. When our titular heroine learns that a beloved friend from her past has been killed in a suspicious accident, she taps into everything she learned from Reacher and sets out for justice. </p><p><strong>Why you should watch it: </strong>As of press time, the Prime Video newcomer has a strong 91% approval rating on Rotten Tomatoes; <a href="https://www.theguardian.com/tv-and-radio/2026/sep/16/neagley-review-reacher-spinoff-amazon-prime-video" target="_blank" rel="nofollow">The Guardian</a> critic Lucy Mangan praised the "violent Reacher spinoff" as "a glorious hour off from normal life," and added: "If you like Reacher, you’ll like Neagley – especially if, like its progenitor did, it gains more confidence and starts to allow a little levity to creep in."</p><p><em><strong>Stream </strong></em><a href="https://www.primevideo.com/detail/0RZB1U1IL8TB1J9Z2UN3UF7H2C" target="_blank" rel="nofollow"><em><strong>"Neagley" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="39-demon-slayer-kimetsu-no-yaiba-39">'Demon Slayer: Kimetsu no Yaiba'</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/VQGCKyvzIM4" allowfullscreen=""></iframe></div></div><p><strong>What it's about: </strong>Based on the Japanese manga series written and illustrated by Koyoharu Gotouge, this TV adaptation plunges viewers into the realm of humans and demons. We follow a kind-hearted teenage boy named Tanjiro Kamado (voiced by Natsuki Hanae and English-dubbed by Zach Aguilar) who joins a secret society of sword-swinging warriors to avenge his murdered family and find a cure for his sister, Nezuko (Akari Kitō and Abby Trott), who was transformed into a demon. </p><p><strong>Why you should watch it: </strong>All four seasons of "Demon Slayer: Kimetsu no Yaiba"—along with the franchise’s first film, 2021's "Mugen Train"—are available to watch on Prime Video as of September 15. The anime adaptation was widely acclaimed by critics, who praised "the animation quality and flowing battle scenes that integrate digital effects seamlessly" (per Patrick Frye for <a href="https://www.animegeek.com/demon-slayer-season-2-release-date-december-fall-2021-kimetsu-no-yaiba-season-2/" target="_blank">Monsters and Critics</a>); the first season has a rare perfect 100% rating on Rotten Tomatoes. </p><p><em><strong>Stream </strong></em><a href="https://www.primevideo.com/detail/0IGU74KHHZARVO5UAR87R3AZMV" target="_blank" rel="nofollow"><em><strong>"Demon Slayer: Kimetsu no Yaiba" on Prime Video</strong></em></a><em><strong> now</strong></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/entertainment/prime-video/tired-of-watching-the-same-old-action-movies-ive-got-3-picks-on-prime-video-you-probably-havent-seen">Tired of watching the same old action movies? I've got 3 picks on Prime Video you probably haven't seen</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/5-new-to-prime-video-movies-in-september-2026-with-90-percent-or-higher-on-rotten-tomatoes">5 new to Prime Video movies with 90% or higher on Rotten Tomatoes</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/3-new-to-prime-video-thriller-movies-to-watch-this-week-including-an-intense-war-movie-starring-tom-cruise-sept-8-13">3 new to Prime Video thriller movies to watch this week — including an intense war movie starring Tom Cruise</a></li></ul><div data-model-name="Amazon Prime Video,Hulu,Netflix,Paramount Plus,Peacock TV,Disney+,Apple TV" data-widget-type="multimodelreview" data-widget-title="Today's best streaming service deals"></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
            </channel>
</rss>