<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
     xmlns:content="http://purl.org/rss/1.0/modules/content/"
     xmlns:dc="http://purl.org/dc/elements/1.1/"
     xmlns:dcterms="http://purl.org/dc/terms/"
     xmlns:media="http://search.yahoo.com/mrss/"
     xmlns:atom="http://www.w3.org/2005/Atom"
     xmlns:cf="https://www.futureplc.com/rss/content-flags"
>
    <channel>
                    <atom:link href="https://www.tomsguide.com/feeds/articletype/opinion" rel="self" type="application/rss+xml" />
                            <title><![CDATA[ Latest from Tom's Guide in Opinion ]]></title>
                <link>https://www.tomsguide.com/opinion</link>
        <description><![CDATA[ All the latest opinion content from the Tom's Guide team ]]></description>
                                    <lastBuildDate>Wed, 30 Sep 2026 07:00:00 +0000</lastBuildDate>
                            <language>en</language>
                                <item>
                                                            <title><![CDATA[ 20 years ago, 'The Departed' was Martin Scorsese's biggest success. It also almost broke him ]]></title>
                                                                                                <dc:content><![CDATA[ <p>“<a href="https://www.youtube.com/watch?v=JShbW--K3TE&pp=ygUadGhlIGRlcGFydGVkIGFyZSB5b3UgYSBjb3A%3D" target="_blank" rel="nofollow">Are you still  acop?</a>” That question, asked by Jack Nicholson to Leonardo DiCaprio, is one of the first things that comes to mind when I think about “<strong>The Departed</strong>.” Directed by <strong>Martin Scorsese</strong>, “The Departed” is a riveting crime thriller about cops, criminals, and the lies, deception and loyalty that come with the territory. The star-studded cast includes Nicholson, DiCaprio, Matt Damon, Mark Wahlberg, Alec Baldwin, Vera Farmiga and Martin Sheen.</p><p>If you thought “The Departed” lost a step, think again. The Oscar-winning movie celebrates its 20th anniversary in October, and I’m proud to report it’s still a heater. It remains a <a href="https://www.tomsguide.com/entertainment/movies/ive-watched-all-97-best-picture-winners-these-are-the-9-best-oscar-movies-of-all-time" target="_blank" rel="nofollow">worthy Best Picture winner</a>, but more than that, it represents the type of movie made for adults that could become both a financial and critical success.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OR9ZGW"></div>                            </div>                            <script src="https://kwizly.com/embed/OR9ZGW.js" async></script><h2 id="scorsese-s-b-movie-becomes-the-biggest-hit-of-his-career-at-that-point">Scorsese’s ‘B-movie’ becomes the biggest hit of his career at that point</h2><p>After the success of “The Aviator,” Scorsese wanted to return to his crime roots and make his version of a <a href="https://youtu.be/iE-b7VRvgvE?si=gqbScBlRRy4jG12j&t=25" target="_blank">B-movie</a>. “The Departed” is not a traditional B-movie; it nearly cost $100 million to make ($90 million budget), has an A-list cast, and has a runtime of 151 minutes. It’s more of an “elevated B-movie.” Regardless of the terminology, it evokes the thrilling style of a B-movie with plot twists and breakneck pacing.</p><p>“The Departed” is a remake of “Infernal Affairs,” an excellent Hong Kong thriller from 2002. William Monahan penned the script for “The Departed.” Originally, Brad Pitt was going to star after purchasing the rights to the movie. However, Pitt stayed on as a producer but turned down an acting role, believing he was too old for one of the leads. Instead, he suggested Matt Damon, and the rest was history.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="high" data-lazy-src="https://www.youtube-nocookie.com/embed/iojhqm0JTW4" allowfullscreen></iframe></div></div><p>“The Departed” blurs the moral lines separating cops from criminals. Colin Sullivan (Damon) is a cop who secretly works as a mole for crime lord Frank Costello (Nicholson). Meanwhile, police recruit Billy Costigan (DiCaprio) goes undercover and infiltrates Costello’s gang. Sullivan’s job is to identify the mole. Costigan’s mission is to find the rat. The two storylines eventually intersect in this exhilarating cat-and-mouse thriller. </p><p>“The Departed” is like a greatest hits CD for Scorsese’s themes and visual motifs. It’s a gritty film rooted in Catholic guilt and nihilism, as every character’s morality comes into question. The cuts are hard and fast, capturing the paranoia and deception that come with being undercover. The “X” motif to foreshadow character deaths is Scorsese’s way of paying respect to films like 1932’s “Scarface.”</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="2v4S8Agi2RzrnmXjAhCiEJ" name="2K224NT-the-departed-movie" alt="Leonardo DiCaprio as William "Billy" Costigan Jr. in "The Departed"" src="https://cdn.mos.cms.futurecdn.net/2v4S8Agi2RzrnmXjAhCiEJ-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: Warner Bros. Pictures / Cinematic / Alamy)</span></figcaption></figure><p>Once “The Departed” begins, strap in because Scorsese never lets the audience come up for air. It’s a movie that plays like chess, but every character has their own board and makes multiple moves at once, which makes for one chaotic game. Each actor embraces their character’s dark side, as none of them has any moral ground to stand on. The bloodbath ending still surprises me to this day, and I’ve seen “The Departed” many times. </p><p>Released in October 2006, “The Departed” was the highest-grossing movie of Scorsese’s career to that point (<a href="https://www.boxofficemojo.com/title/tt0407887/?ref_=bo_se_r_1" target="_blank" rel="nofollow">$292 million worldwide</a>). “The Departed” earned some of the best reviews of the director’s career and culminated in an Oscar statue (more on that below). It’s also a movie that broke Scorsese mentally. Warner Bros. pushed to have Sullivan or Costigan survive in hopes of making a franchise. Scorsese immediately rejected that idea. It’s a cruel twist: knowing the movie that brought Scorsese so much success would be the thing that led him to<a href="https://www.gq.com/story/martin-scorsese-profile" target="_blank" rel="nofollow"> distrust major studios</a>.</p><h2 id="scorsese-finally-gets-his-oscar">Scorsese finally gets his Oscar</h2><p>One of the worst traditions in Academy Awards history is the “It’s Time” narrative. Every year, a few actors, producers, or directors will campaign around the idea that it’s time for them to win an Oscar for their service to Hollywood. It usually happens with older candidates who have multiple nominations and no wins. </p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/YbbzaS8rcak" allowfullscreen></iframe></div></div><p>There are certain situations in which I support this polarizing narrative. I championed Christopher Nolan and Paul Thomas Anderson when they finally won their first Oscars for “Oppenheimer” and “One Battle After Another” after years of being overlooked. Al Pacino winning the Oscar for Best Actor for “Scent of a Woman,” not “Dog Day Afternoon” or “The Godfather Part II,” is still painful to type. It’s the ultimate make-up award—the Academy needed to right a wrong, so they gave Pacino an Oscar for a movie that won’t crack his top five for best performances.</p><p>“The Departed” is unequivocally Scorsese’s make-up Oscar. In a just world, Scorsese should have won multiple Oscars for his masterpiece, “Goodfellas,” but the Academy surprisingly fell in love with Kevin Costner’s “Dances with Wolves.” Overall, “The Departed” won four Oscars: Best Picture, Best Director, Best Film Editing, and Best Adapted Screenplay. That’s a low total for a Best Picture winner these days, especially when its starry cast won zero acting Oscars.</p><p>It’s still strange that Wahlberg was the film’s only actor recognized with an Oscar nomination for his performance. DiCaprio garnered an Academy Award nomination that same year for “Blood Diamond,” not “The Departed,” meaning voters prioritized his <a href="https://www.youtube.com/watch?v=0pBOLdZZT6s" target="_blank" rel="nofollow">puzzling South African accent</a> instead of <a href="https://www.youtube.com/watch?v=EfjbbuKUqak&pp=ygUlbGVvbmFyZG8gZGljYXByaW8gYmVzdCBkZXBhcnRlZCBzY2VuZQ%3D%3D" target="_blank" rel="nofollow">his performance opposite Nicholson</a>. I bet they want that one back! </p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/UUi38Txav00" allowfullscreen></iframe></div></div><p>Speaking of Nicholson, I’d rank his performance in “The Departed” above two of his Oscar-winning performances: “Terms of Endearment” and “As Good as It Gets.” Nicholson is legitimately terrifying in this role, as he plays a monster more frightening than Jason Voorhees. The other actor who deserved award consideration was Damon, who might finally have his own “It’s Time” Oscar moment with “The Odyssey.”</p><p>It’s only been 20 years, but “The Departed” feels like a success story that is unlikely to be replicated. You’re unlikely to find an aging filmmaker making an R-rated <a href="https://www.tomsguide.com/entertainment/netflix/5-best-crime-thriller-movies-to-stream-on-netflix" target="_blank" rel="nofollow">crime movie</a> with an A-list cast and a $90 million budget. More notably, how many films like that could generate nearly $300 million and win multiple Oscars? We’ll see if “Heat 2” can meet those criteria. Until then, how's your mother?</p><p><em><strong>Watch on </strong></em><a href="https://play.hbomax.com/movie/f7e8a59c-740b-40cc-a1f5-2b25b48ec588" target="_blank" rel="nofollow"><em><strong>HBO Max</strong></em></a><em><strong> starting Oct. 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> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/movies/20-years-ago-the-departed-was-martin-scorseses-biggest-success-it-also-almost-broke-him</link>
                                                                            <description>
                            <![CDATA[ Martin Scorsese's Oscar-winning crime film was the last film of a different era ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">2GhGHnKcKShmqbg92DHWQg</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/QwLD784WDwgagJ7q4auMNX-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 30 Sep 2026 07:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Movies]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                                                                                    <dc:creator><![CDATA[ Dan Girolamo ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/vxcyd6Ys4CLeC8aB9eihZR-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/QwLD784WDwgagJ7q4auMNX-1920-80.jpg">
                                                            <media:credit><![CDATA[Pictorial Press Ltd / Alamy Stock Photo]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[(L to R) Leonardo DiCaprio and Jack Nicholson sitting at a table in The Departed]]></media:description>                                                            <media:text><![CDATA[(L to R) Leonardo DiCaprio and Jack Nicholson sitting at a table in The Departed]]></media:text>
                                <media:title type="plain"><![CDATA[(L to R) Leonardo DiCaprio and Jack Nicholson sitting at a table in The Departed]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/QwLD784WDwgagJ7q4auMNX-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>“<a href="https://www.youtube.com/watch?v=JShbW--K3TE&pp=ygUadGhlIGRlcGFydGVkIGFyZSB5b3UgYSBjb3A%3D" target="_blank" rel="nofollow">Are you still  acop?</a>” That question, asked by Jack Nicholson to Leonardo DiCaprio, is one of the first things that comes to mind when I think about “<strong>The Departed</strong>.” Directed by <strong>Martin Scorsese</strong>, “The Departed” is a riveting crime thriller about cops, criminals, and the lies, deception and loyalty that come with the territory. The star-studded cast includes Nicholson, DiCaprio, Matt Damon, Mark Wahlberg, Alec Baldwin, Vera Farmiga and Martin Sheen.</p><p>If you thought “The Departed” lost a step, think again. The Oscar-winning movie celebrates its 20th anniversary in October, and I’m proud to report it’s still a heater. It remains a <a href="https://www.tomsguide.com/entertainment/movies/ive-watched-all-97-best-picture-winners-these-are-the-9-best-oscar-movies-of-all-time" target="_blank" rel="nofollow">worthy Best Picture winner</a>, but more than that, it represents the type of movie made for adults that could become both a financial and critical success.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OR9ZGW"></div>                            </div>                            <script src="https://kwizly.com/embed/OR9ZGW.js" async></script><h2 id="scorsese-s-b-movie-becomes-the-biggest-hit-of-his-career-at-that-point">Scorsese’s ‘B-movie’ becomes the biggest hit of his career at that point</h2><p>After the success of “The Aviator,” Scorsese wanted to return to his crime roots and make his version of a <a href="https://youtu.be/iE-b7VRvgvE?si=gqbScBlRRy4jG12j&t=25" target="_blank">B-movie</a>. “The Departed” is not a traditional B-movie; it nearly cost $100 million to make ($90 million budget), has an A-list cast, and has a runtime of 151 minutes. It’s more of an “elevated B-movie.” Regardless of the terminology, it evokes the thrilling style of a B-movie with plot twists and breakneck pacing.</p><p>“The Departed” is a remake of “Infernal Affairs,” an excellent Hong Kong thriller from 2002. William Monahan penned the script for “The Departed.” Originally, Brad Pitt was going to star after purchasing the rights to the movie. However, Pitt stayed on as a producer but turned down an acting role, believing he was too old for one of the leads. Instead, he suggested Matt Damon, and the rest was history.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="high" data-lazy-src="https://www.youtube-nocookie.com/embed/iojhqm0JTW4" allowfullscreen></iframe></div></div><p>“The Departed” blurs the moral lines separating cops from criminals. Colin Sullivan (Damon) is a cop who secretly works as a mole for crime lord Frank Costello (Nicholson). Meanwhile, police recruit Billy Costigan (DiCaprio) goes undercover and infiltrates Costello’s gang. Sullivan’s job is to identify the mole. Costigan’s mission is to find the rat. The two storylines eventually intersect in this exhilarating cat-and-mouse thriller. </p><p>“The Departed” is like a greatest hits CD for Scorsese’s themes and visual motifs. It’s a gritty film rooted in Catholic guilt and nihilism, as every character’s morality comes into question. The cuts are hard and fast, capturing the paranoia and deception that come with being undercover. The “X” motif to foreshadow character deaths is Scorsese’s way of paying respect to films like 1932’s “Scarface.”</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="2v4S8Agi2RzrnmXjAhCiEJ" name="2K224NT-the-departed-movie" alt="Leonardo DiCaprio as William "Billy" Costigan Jr. in "The Departed"" src="https://cdn.mos.cms.futurecdn.net/2v4S8Agi2RzrnmXjAhCiEJ-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: Warner Bros. Pictures / Cinematic / Alamy)</span></figcaption></figure><p>Once “The Departed” begins, strap in because Scorsese never lets the audience come up for air. It’s a movie that plays like chess, but every character has their own board and makes multiple moves at once, which makes for one chaotic game. Each actor embraces their character’s dark side, as none of them has any moral ground to stand on. The bloodbath ending still surprises me to this day, and I’ve seen “The Departed” many times. </p><p>Released in October 2006, “The Departed” was the highest-grossing movie of Scorsese’s career to that point (<a href="https://www.boxofficemojo.com/title/tt0407887/?ref_=bo_se_r_1" target="_blank" rel="nofollow">$292 million worldwide</a>). “The Departed” earned some of the best reviews of the director’s career and culminated in an Oscar statue (more on that below). It’s also a movie that broke Scorsese mentally. Warner Bros. pushed to have Sullivan or Costigan survive in hopes of making a franchise. Scorsese immediately rejected that idea. It’s a cruel twist: knowing the movie that brought Scorsese so much success would be the thing that led him to<a href="https://www.gq.com/story/martin-scorsese-profile" target="_blank" rel="nofollow"> distrust major studios</a>.</p><h2 id="scorsese-finally-gets-his-oscar">Scorsese finally gets his Oscar</h2><p>One of the worst traditions in Academy Awards history is the “It’s Time” narrative. Every year, a few actors, producers, or directors will campaign around the idea that it’s time for them to win an Oscar for their service to Hollywood. It usually happens with older candidates who have multiple nominations and no wins. </p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/YbbzaS8rcak" allowfullscreen></iframe></div></div><p>There are certain situations in which I support this polarizing narrative. I championed Christopher Nolan and Paul Thomas Anderson when they finally won their first Oscars for “Oppenheimer” and “One Battle After Another” after years of being overlooked. Al Pacino winning the Oscar for Best Actor for “Scent of a Woman,” not “Dog Day Afternoon” or “The Godfather Part II,” is still painful to type. It’s the ultimate make-up award—the Academy needed to right a wrong, so they gave Pacino an Oscar for a movie that won’t crack his top five for best performances.</p><p>“The Departed” is unequivocally Scorsese’s make-up Oscar. In a just world, Scorsese should have won multiple Oscars for his masterpiece, “Goodfellas,” but the Academy surprisingly fell in love with Kevin Costner’s “Dances with Wolves.” Overall, “The Departed” won four Oscars: Best Picture, Best Director, Best Film Editing, and Best Adapted Screenplay. That’s a low total for a Best Picture winner these days, especially when its starry cast won zero acting Oscars.</p><p>It’s still strange that Wahlberg was the film’s only actor recognized with an Oscar nomination for his performance. DiCaprio garnered an Academy Award nomination that same year for “Blood Diamond,” not “The Departed,” meaning voters prioritized his <a href="https://www.youtube.com/watch?v=0pBOLdZZT6s" target="_blank" rel="nofollow">puzzling South African accent</a> instead of <a href="https://www.youtube.com/watch?v=EfjbbuKUqak&pp=ygUlbGVvbmFyZG8gZGljYXByaW8gYmVzdCBkZXBhcnRlZCBzY2VuZQ%3D%3D" target="_blank" rel="nofollow">his performance opposite Nicholson</a>. I bet they want that one back! </p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/UUi38Txav00" allowfullscreen></iframe></div></div><p>Speaking of Nicholson, I’d rank his performance in “The Departed” above two of his Oscar-winning performances: “Terms of Endearment” and “As Good as It Gets.” Nicholson is legitimately terrifying in this role, as he plays a monster more frightening than Jason Voorhees. The other actor who deserved award consideration was Damon, who might finally have his own “It’s Time” Oscar moment with “The Odyssey.”</p><p>It’s only been 20 years, but “The Departed” feels like a success story that is unlikely to be replicated. You’re unlikely to find an aging filmmaker making an R-rated <a href="https://www.tomsguide.com/entertainment/netflix/5-best-crime-thriller-movies-to-stream-on-netflix" target="_blank" rel="nofollow">crime movie</a> with an A-list cast and a $90 million budget. More notably, how many films like that could generate nearly $300 million and win multiple Oscars? We’ll see if “Heat 2” can meet those criteria. Until then, how's your mother?</p><p><em><strong>Watch on </strong></em><a href="https://play.hbomax.com/movie/f7e8a59c-740b-40cc-a1f5-2b25b48ec588" target="_blank" rel="nofollow"><em><strong>HBO Max</strong></em></a><em><strong> starting Oct. 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>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I would definitely cancel HBO Max in October 2026 —there's just one caveat ]]></title>
                                                                                                <dc:content><![CDATA[ <p>October is when the fall TV season hits its stride. There are new episodes to keep up with and fresh series competing for your attention. But with so much to watch, it’s also a good time to take stock of which streaming subscriptions are actually earning their keep.</p><p>A <a href="https://www.tomsguide.com/entertainment/streaming/toms-guide-streaming-survey-shows-the-average-person-is-now-paying-over-usd60-a-month-and-more-than-half-are-using-this-free-service" target="_blank">Tom’s Guide survey about streaming habits </a> found that readers are spending more than $60 a month on seven or more streaming services. That’s a hefty price for a bunch of apps you might not even open every week. Instead of paying for everything all year, consider treating your subscriptions as a rotating lineup. Cancel the services that are low on must-watch shows, then bring them back when something worth streaming arrives.</p><p>For October 2026, HBO Max is the service I’d be most comfortable cutting from my monthly bill — with one major caveat, which I'll get to in a minute. It’s home to some of the best shows on TV, but even a stellar library can’t justify another recurring charge if the current lineup isn’t giving you much reason to tune in. Here’s why HBO Max is the streaming service to cancel right now.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xj2DQX"></div>                            </div>                            <script src="https://kwizly.com/embed/Xj2DQX.js" async></script><h2 id="why-i-39-d-cancel-hbo-max-this-month">Why I'd cancel HBO Max this month</h2><p>HBO Max is still our No. 1 pick among the <a href="https://www.tomsguide.com/us/best-streaming-video-services,review-2625.html">best streaming services</a>, earning an <a href="https://www.tomsguide.com/entertainment/hbo-max/hbo-max-report-card-2026-are-its-originals-and-library-good-enough-to-be-the-no-1-streaming-service">overall grade of B+</a> in our <a href="https://www.tomsguide.com/entertainment/streaming/streaming-service-report-card-2026-we-graded-netflix-prime-video-apple-tv-hbo-max-and-more-heres-the-winner">streaming report cards</a> and topping the competition. So recommending that you cancel it might seem a little strange. But even one of the best streamers on the market doesn’t necessarily deserve a permanent spot on your monthly bill, especially when its latest lineup doesn’t offer enough to keep you watching.</p><p>October does have some promising additions. <strong>"War"</strong> kicks things off on Oct. 1, pulling you into the ruthless world of London's elite divorce lawyers as two rival firms battle over a high-profile split. </p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/ZybkHGaoPvQ" allowfullscreen></iframe></div></div><p>But like most HBO shows, "War" will air weekly (through Nov. 19). So if you're intrigued by this juicy legal drama, you might be better off waiting until the season wraps. Cancel HBO Max now, resubscribe in late November and stream the whole thing in a few nights. Honestly, a show about ruthless divorce lawyers tearing each other apart sounds tailor-made for a deliciously messy binge.</p><p>Now, here's my caveat: There is one major reason to wait a few days before canceling HBO Max. "Lanterns" season 1 wraps up on Oct. 4. If you've been following John Stewart (Aaron Pierre) and Hal Jordan (Kyle Chandler) through their DC superhero mystery, you'll want to stick around for the finale. My advice? Keep HBO Max through the finale, then give your wallet a break until next month.</p><h2 id="how-much-you-39-ll-save-by-canceling-hbo-max">How much you'll save by canceling HBO Max</h2><p>HBO Max offers three subscription tiers, so your savings will depend on which plan you have. Canceling the Basic with Ads plan saves you $10.99 for the month, while dropping the Standard plan saves $18.49. If you're on the Premium tier, you'll pocket $22.99. </p><p>That might not seem like a lot, but the savings can really add up when you rotate through streaming services throughout the year. Skip a month here and there, and you could save hundreds of dollars without giving up the shows you want to watch. That’s money you can put toward the holidays, a trip or just a little extra breathing room in your budget.</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/news/how-to-get-max-for-free">How to get HBO Max for free</a></li><li><a href="https://www.tomsguide.com/entertainment/streaming/what-streaming-costs-in-2026-the-price-of-netflix-disney-plus-max-and-more">What streaming costs in 2026</a></li><li><a href="https://www.tomsguide.com/best-picks/best-free-streaming-services">Best free streaming services</a></li></ul><div data-model-name="Roku Streaming Stick 4K (2021),Roku Express+,Roku Streambar,Roku Ultra" data-widget-type="multimodelreview" data-widget-title="Today's best Roku streaming device deals"></div> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/streaming/i-would-definitely-cancel-hbo-max-in-october-2026-heres-why</link>
                                                                            <description>
                            <![CDATA[ Here's why you should consider canceling HBO Max in September 2026. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">n86NJHvEJzS9jNZMnstsAR</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/NykLkUsQ9DAtdZpsFPkmPh-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 30 Sep 2026 04:01:00 +0000</pubDate>                                                                                                                                <updated>Wed, 30 Sep 2026 08:47:38 +0000</updated>
                                                                                                                                            <category><![CDATA[Streaming]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                                                                <author><![CDATA[ kelly.woo@futurenet.com (Kelly Woo) ]]></author>                    <dc:creator><![CDATA[ Kelly Woo ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/jpnR8RZd8njtxaHRHimzsi-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Kelly is the managing editor of streaming for Tom’s Guide, so basically, she watches TV for a living. She writes news, features and reviews about the streaming realm — hardware, software and content. In a given week, she might test a new Roku stick, check out an interface update on HBO Max, sound off on the trailer for a new Netflix show and provide info on how to watch a fan-favorite series. &lt;/p&gt;&lt;p&gt;In addition to streaming coverage, she also occasionally contributes to the fitness and home sections.&lt;/p&gt;&lt;p&gt;Before joining Tom&#039;s Guide, she was a freelance entertainment writer for Yahoo, Vulture, TV Guide and other outlets and a content creator for HBO, Apple and DotDash. Prior to that, she was a senior editor at AOL Television and Moviefone. She graduated from Duke University with a degree in English literature.&lt;/p&gt;&lt;p&gt;When she’s not watching TV and movies for work, she’s watching them for fun, plus seeing live music, writing songs, knitting and gardening.&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/NykLkUsQ9DAtdZpsFPkmPh-1920-80.jpg">
                                                            <media:credit><![CDATA[Tom&amp;#39;s Guide; HBO Max; Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[HBO Max logo on a television screen with Click to Unsubscribe graphic]]></media:description>                                                            <media:text><![CDATA[HBO Max logo on a television screen with Click to Unsubscribe graphic]]></media:text>
                                <media:title type="plain"><![CDATA[HBO Max logo on a television screen with Click to Unsubscribe graphic]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/NykLkUsQ9DAtdZpsFPkmPh-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>October is when the fall TV season hits its stride. There are new episodes to keep up with and fresh series competing for your attention. But with so much to watch, it’s also a good time to take stock of which streaming subscriptions are actually earning their keep.</p><p>A <a href="https://www.tomsguide.com/entertainment/streaming/toms-guide-streaming-survey-shows-the-average-person-is-now-paying-over-usd60-a-month-and-more-than-half-are-using-this-free-service" target="_blank">Tom’s Guide survey about streaming habits </a> found that readers are spending more than $60 a month on seven or more streaming services. That’s a hefty price for a bunch of apps you might not even open every week. Instead of paying for everything all year, consider treating your subscriptions as a rotating lineup. Cancel the services that are low on must-watch shows, then bring them back when something worth streaming arrives.</p><p>For October 2026, HBO Max is the service I’d be most comfortable cutting from my monthly bill — with one major caveat, which I'll get to in a minute. It’s home to some of the best shows on TV, but even a stellar library can’t justify another recurring charge if the current lineup isn’t giving you much reason to tune in. Here’s why HBO Max is the streaming service to cancel right now.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xj2DQX"></div>                            </div>                            <script src="https://kwizly.com/embed/Xj2DQX.js" async></script><h2 id="why-i-39-d-cancel-hbo-max-this-month">Why I'd cancel HBO Max this month</h2><p>HBO Max is still our No. 1 pick among the <a href="https://www.tomsguide.com/us/best-streaming-video-services,review-2625.html">best streaming services</a>, earning an <a href="https://www.tomsguide.com/entertainment/hbo-max/hbo-max-report-card-2026-are-its-originals-and-library-good-enough-to-be-the-no-1-streaming-service">overall grade of B+</a> in our <a href="https://www.tomsguide.com/entertainment/streaming/streaming-service-report-card-2026-we-graded-netflix-prime-video-apple-tv-hbo-max-and-more-heres-the-winner">streaming report cards</a> and topping the competition. So recommending that you cancel it might seem a little strange. But even one of the best streamers on the market doesn’t necessarily deserve a permanent spot on your monthly bill, especially when its latest lineup doesn’t offer enough to keep you watching.</p><p>October does have some promising additions. <strong>"War"</strong> kicks things off on Oct. 1, pulling you into the ruthless world of London's elite divorce lawyers as two rival firms battle over a high-profile split. </p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/ZybkHGaoPvQ" allowfullscreen></iframe></div></div><p>But like most HBO shows, "War" will air weekly (through Nov. 19). So if you're intrigued by this juicy legal drama, you might be better off waiting until the season wraps. Cancel HBO Max now, resubscribe in late November and stream the whole thing in a few nights. Honestly, a show about ruthless divorce lawyers tearing each other apart sounds tailor-made for a deliciously messy binge.</p><p>Now, here's my caveat: There is one major reason to wait a few days before canceling HBO Max. "Lanterns" season 1 wraps up on Oct. 4. If you've been following John Stewart (Aaron Pierre) and Hal Jordan (Kyle Chandler) through their DC superhero mystery, you'll want to stick around for the finale. My advice? Keep HBO Max through the finale, then give your wallet a break until next month.</p><h2 id="how-much-you-39-ll-save-by-canceling-hbo-max">How much you'll save by canceling HBO Max</h2><p>HBO Max offers three subscription tiers, so your savings will depend on which plan you have. Canceling the Basic with Ads plan saves you $10.99 for the month, while dropping the Standard plan saves $18.49. If you're on the Premium tier, you'll pocket $22.99. </p><p>That might not seem like a lot, but the savings can really add up when you rotate through streaming services throughout the year. Skip a month here and there, and you could save hundreds of dollars without giving up the shows you want to watch. That’s money you can put toward the holidays, a trip or just a little extra breathing room in your budget.</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/news/how-to-get-max-for-free">How to get HBO Max for free</a></li><li><a href="https://www.tomsguide.com/entertainment/streaming/what-streaming-costs-in-2026-the-price-of-netflix-disney-plus-max-and-more">What streaming costs in 2026</a></li><li><a href="https://www.tomsguide.com/best-picks/best-free-streaming-services">Best free streaming services</a></li></ul><div data-model-name="Roku Streaming Stick 4K (2021),Roku Express+,Roku Streambar,Roku Ultra" data-widget-type="multimodelreview" data-widget-title="Today's best Roku streaming device deals"></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Witcher 3 Remastered on Switch 2 is the portable RPG experience Nintendo fans deserve — and a huge upgrade over the Switch 1’s compromised port ]]></title>
                                                                                                <dc:content><![CDATA[ <p>There’s an argument that <a href="https://www.tomsguide.com/opinion/witcher-3-next-gen-update-is-even-better-than-expected-im-shocked-its-free">The Witcher 3: Wild Hunt</a> didn’t need a remaster. The 2015 original holds up extremely well even more than a decade later, and the acclaimed RPG has already been refreshed once in the form of a "next-gen" upgrade for <a href="https://www.tomsguide.com/reviews/ps5">PS5</a> and <a href="https://www.tomsguide.com/reviews/xbox-series-x">Xbox Series X</a> released in December 2022 (with these improvements also brought to PC). </p><p>The newly released The Witcher 3: Wild Hunt — Remastered is arguably more of an exercise in giving players an excuse to rewalk the path ahead of its surprising (but very welcome) third major expansion, Songs of the Past, which is due to launch next year before the next mainline entry in the Witcher saga, the aptly titled The Witcher IV, arrives in (a tentative) 2028. </p><p>Heck, looking at <a href="https://www.youtube.com/watch?v=_oEdB5S2d3U" target="_blank">visual comparisons</a> between the “next-gen” version and Remastered on PS5, Xbox Series X and PC, some online commentators have even questioned whether this new port actually looks better. But one platform where there is no debate is on the <a href="https://www.tomsguide.com/gaming/nintendo/nintendo-switch-2-console-review">Nintendo Switch 2</a>. The Witcher 3 Remastered on Switch 2 is a night-and-day difference compared to the <a href="https://www.tomsguide.com/hands-on/witcher-3-switch-pax-west">compromised port of the original</a> that released on <a href="https://www.tomsguide.com/reviews/nintendo-switch">Nintendo Switch</a> in 2019. </p><p>I’ve dived back into The Witcher 3 on my Switch 2, even picking up my progress from a previous PS5 playthrough thanks to cross-save, and have been particularly impressed with this remastering effort on Nintendo’s latest hybrid console. The good news is that Nintendo finally has a version of The Witcher 3 that I can wholeheartedly recommend you experience. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Wl8dDW"></div>                            </div>                            <script src="https://kwizly.com/embed/Wl8dDW.js" async></script><h2 id="the-witcher-3-experience-nintendo-players-deserve">The Witcher 3 experience Nintendo players deserve</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="VtnVuazMrGx9Bi4MpmNuCG" name="the-witcher-3-wild-hunt-remastered-switch-2-screenshot-06" alt="The Witcher 3: Wild Hunt – Remastered screenshot taken on Nintendo Switch 2" src="https://cdn.mos.cms.futurecdn.net/VtnVuazMrGx9Bi4MpmNuCG-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: CD Projekt Red / Tom's Guide)</span></figcaption></figure><p>The Witcher 3 on the original Nintendo Switch was an impressive demonstration of technical wizardry. The vast RPG already had some performance quirks on <a href="https://www.tomsguide.com/us/sony-ps4-review,review-1939.html">PS4</a> and <a href="https://www.tomsguide.com/us/xbox-one,review-1948.html">Xbox One</a>, so making it run on less powerful hardware was commendable. But frankly, I found The Witcher 3 on Switch 1 to be so compromised that I abandoned my playthrough before leaving White Orchard (the starting area). Too many sacrifices had been made. </p><div><blockquote><p>I found The Witcher 3 on Switch 1 to be so compromised that I abandoned my playthrough before leaving White Orchard (the starting area). Too many sacrifices had been made. </p></blockquote></div><p>Flash forward to the Switch 2 generation and The Witcher 3 Remastered, and Nintendo players now have a version of this RPG masterpiece that is not just technically impressive but a genuinely great way to experience Geralt of Rivia’s sprawling quest to locate his young ward, Ciri.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="6scDqneMYYtwjGysHLF2PG" name="the-witcher-3-wild-hunt-remastered-switch-2-screenshot-05" alt="The Witcher 3: Wild Hunt – Remastered screenshot taken on Nintendo Switch 2" src="https://cdn.mos.cms.futurecdn.net/6scDqneMYYtwjGysHLF2PG-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: CD Projekt Red / Tom's Guide)</span></figcaption></figure><p>Naturally, The Witcher 3 Remastered on Switch 2 is not the premiere port; that’ll be found on PC. For starters, the framerate is capped at 30 fps (on PS5/Xbox Series X and PC, you have the option of 60 fps), and there is a noticeable blurriness in the distance, with background structures and objects lacking sharp definition. But these gripes really are nitpicks. </p><p>Actually, playing Witcher 3 on Switch 2 is as absorbing as it’s ever been, and I’ve been particularly impressed with the framerate, which largely hits the 30 fps target (at least, to my eyes). Even in the map’s dense city locations, Novigrad and Oxenfurt, drops are minimal. The Witcher 3 Remastered is the portable edition of this game that Nintendo fans deserve. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="mFgkGLTNLz2KFhuezNPCUG" name="the-witcher-3-wild-hunt-remastered-switch-2-screenshot-04" alt="The Witcher 3: Wild Hunt – Remastered screenshot taken on Nintendo Switch 2" src="https://cdn.mos.cms.futurecdn.net/mFgkGLTNLz2KFhuezNPCUG-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: CD Projekt Red / Tom's Guide)</span></figcaption></figure><p>The Witcher 3 on Switch 1 was a version of the game I could only recommend if you could not play anywhere else, and had no plans to pick up a PlayStation/Xbox or gaming PC in the future. That's not the case with Remastered on Switch 2, which makes a compelling case for itself. </p><p>It might not be the most visually detailed, but having such a grand adventure available on a console that doubles as a handheld is enticing, and the visual/performance sacrifices aren’t so great this time around to effectively outweigh the portable advantage as they did on the Switch 1. </p><h2 id="witcher-3-has-been-refined-not-overhauled">Witcher 3 has been refined, not overhauled</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/OlmuIckOX0c" allowfullscreen></iframe></div></div><p>Developer CD Projekt Red has been eager to point out that The Witcher 3: Wild Hunt — Remastered isn’t<em> just</em> about enhancing visuals across platforms, but also brings a wealth of changes to the experience. These are detailed in a lengthy list on <a href="https://www.thewitcher.com/us/en/news/52041/see-whats-new-in-the-witcher-3-wild-hunt-remastered" target="_blank">CDPR’s official website</a>. </p><div><blockquote><p>Playing Witcher 3 on Switch 2 is as absorbing as it’s ever been, and I’ve been particularly impressed with the framerate, which largely hits the 30 fps target.</p></blockquote></div><p>In truth, this is not an overhaul of The Witcher 3. The changes merely refine the base game. It adds several nice-to-have features, such as “transmogging” (setting your outfit's appearance independent of stats) and the option to remove inventory weight restrictions. Combat has also been sharpened with new animations, and your horse, Roach, controls a little less like a tank. </p><p>Perhaps the single biggest change is an entirely reworked skill tree, though I can’t say much about how this “upgrade” affects Geralt's power curve. I’ll need to dive into a fresh playthrough to really see whether it’s an improvement over the previous skill system available in the base game. </p><p>Ultimately, this is still The Witcher 3 — Wild Hunt, a game released in 2015 at its core. It’s not a complete remake that reshapes the RPG in numerous ways. But I don’t think many players were asking for such radical alterations. The Witcher 3 remains one of the yardsticks modern RPGs are measured against, and Remastered buffs out a few minor blemishes.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="ut4TiTYJt25naGncF9kcTG" name="the-witcher-3-wild-hunt-remastered-switch-2-screenshot-01" alt="The Witcher 3: Wild Hunt – Remastered screenshot taken on Nintendo Switch 2" src="https://cdn.mos.cms.futurecdn.net/ut4TiTYJt25naGncF9kcTG-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: CD Projekt Red / Tom's Guide)</span></figcaption></figure><p>For anybody who still hasn’t played this masterpiece in the past 11 years, The Witcher 3 — Wild Hunt Remastered is a well-timed excuse to fill that gap in your gaming backlog. And this time around, playing on Nintendo hardware is a viable choice, rather than a last resort for those who didn’t have access to a more powerful console or a PC, as it was on Switch 1.</p><p>Best of all, returning to The Witcher 3 via Remastered on Switch 2 has reminded me just how special this fantasy RPG truly is. And now, in a fall season packed with new releases (not to mention the spectre of GTA 6 looming large), I’m trying to figure out if I have the time to squeeze in a full run over the next few weeks. At least on Switch 2, I can play it anywhere!</p><p><em><strong>The Witcher 3: Wild Hunt — Remastered is out now as a free upgrade for existing owners on PC, PS5, Xbox Series X/S and Nintendo Switch 2.</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/gaming/nintendo/best-nintendo-switch-2-games">Best Nintendo Switch 2 games in 2026</a></li><li><a href="https://www.tomsguide.com/gaming/nintendo/i-play-my-nintendo-switch-2-every-day-and-these-early-prime-day-switch-deals-are-must-haves">Early Prime Day Nintendo Switch deals</a></li><li><a href="https://www.tomsguide.com/gaming/nintendo/fortunes-weave-is-the-best-fire-emblem-yet-but-not-for-the-reasons-you-might-expect">Fortune's Weave is the best Fire Emblem yet</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/gaming/nintendo/witcher-3-remastered-on-switch-2-is-the-portable-rpg-experience-nintendo-fans-deserve-and-a-huge-upgrade-over-the-switch-1s-compromised-port</link>
                                                                            <description>
                            <![CDATA[ The Witcher 3 Remastered on Nintendo Switch 2 is the best way to experience Geralt of Rivia's acclaimed RPG adventure on a handheld. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">hRJ5SRCocqmqFe3PEvTvei</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/AHcX2Ah85pNJgEs3A42ZTG-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 29 Sep 2026 12:08:51 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Nintendo]]></category>
                                                    <category><![CDATA[Gaming]]></category>
                                                                                                <author><![CDATA[ rory.mellon@futurenet.com (Rory Mellon) ]]></author>                    <dc:creator><![CDATA[ Rory Mellon ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/5Rv6LtQXMj5JB4Eu8Lt4Sn-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <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/AHcX2Ah85pNJgEs3A42ZTG-1920-80.jpg">
                                                            <media:credit><![CDATA[CD Projekt Red / Tom&amp;#39;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Witcher 3: Wild Hunt – Remastered screenshot taken on Nintendo Switch 2]]></media:description>                                                            <media:text><![CDATA[The Witcher 3: Wild Hunt – Remastered screenshot taken on Nintendo Switch 2]]></media:text>
                                <media:title type="plain"><![CDATA[The Witcher 3: Wild Hunt – Remastered screenshot taken on Nintendo Switch 2]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/AHcX2Ah85pNJgEs3A42ZTG-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>There’s an argument that <a href="https://www.tomsguide.com/opinion/witcher-3-next-gen-update-is-even-better-than-expected-im-shocked-its-free">The Witcher 3: Wild Hunt</a> didn’t need a remaster. The 2015 original holds up extremely well even more than a decade later, and the acclaimed RPG has already been refreshed once in the form of a "next-gen" upgrade for <a href="https://www.tomsguide.com/reviews/ps5">PS5</a> and <a href="https://www.tomsguide.com/reviews/xbox-series-x">Xbox Series X</a> released in December 2022 (with these improvements also brought to PC). </p><p>The newly released The Witcher 3: Wild Hunt — Remastered is arguably more of an exercise in giving players an excuse to rewalk the path ahead of its surprising (but very welcome) third major expansion, Songs of the Past, which is due to launch next year before the next mainline entry in the Witcher saga, the aptly titled The Witcher IV, arrives in (a tentative) 2028. </p><p>Heck, looking at <a href="https://www.youtube.com/watch?v=_oEdB5S2d3U" target="_blank">visual comparisons</a> between the “next-gen” version and Remastered on PS5, Xbox Series X and PC, some online commentators have even questioned whether this new port actually looks better. But one platform where there is no debate is on the <a href="https://www.tomsguide.com/gaming/nintendo/nintendo-switch-2-console-review">Nintendo Switch 2</a>. The Witcher 3 Remastered on Switch 2 is a night-and-day difference compared to the <a href="https://www.tomsguide.com/hands-on/witcher-3-switch-pax-west">compromised port of the original</a> that released on <a href="https://www.tomsguide.com/reviews/nintendo-switch">Nintendo Switch</a> in 2019. </p><p>I’ve dived back into The Witcher 3 on my Switch 2, even picking up my progress from a previous PS5 playthrough thanks to cross-save, and have been particularly impressed with this remastering effort on Nintendo’s latest hybrid console. The good news is that Nintendo finally has a version of The Witcher 3 that I can wholeheartedly recommend you experience. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Wl8dDW"></div>                            </div>                            <script src="https://kwizly.com/embed/Wl8dDW.js" async></script><h2 id="the-witcher-3-experience-nintendo-players-deserve">The Witcher 3 experience Nintendo players deserve</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="VtnVuazMrGx9Bi4MpmNuCG" name="the-witcher-3-wild-hunt-remastered-switch-2-screenshot-06" alt="The Witcher 3: Wild Hunt – Remastered screenshot taken on Nintendo Switch 2" src="https://cdn.mos.cms.futurecdn.net/VtnVuazMrGx9Bi4MpmNuCG-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: CD Projekt Red / Tom's Guide)</span></figcaption></figure><p>The Witcher 3 on the original Nintendo Switch was an impressive demonstration of technical wizardry. The vast RPG already had some performance quirks on <a href="https://www.tomsguide.com/us/sony-ps4-review,review-1939.html">PS4</a> and <a href="https://www.tomsguide.com/us/xbox-one,review-1948.html">Xbox One</a>, so making it run on less powerful hardware was commendable. But frankly, I found The Witcher 3 on Switch 1 to be so compromised that I abandoned my playthrough before leaving White Orchard (the starting area). Too many sacrifices had been made. </p><div><blockquote><p>I found The Witcher 3 on Switch 1 to be so compromised that I abandoned my playthrough before leaving White Orchard (the starting area). Too many sacrifices had been made. </p></blockquote></div><p>Flash forward to the Switch 2 generation and The Witcher 3 Remastered, and Nintendo players now have a version of this RPG masterpiece that is not just technically impressive but a genuinely great way to experience Geralt of Rivia’s sprawling quest to locate his young ward, Ciri.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="6scDqneMYYtwjGysHLF2PG" name="the-witcher-3-wild-hunt-remastered-switch-2-screenshot-05" alt="The Witcher 3: Wild Hunt – Remastered screenshot taken on Nintendo Switch 2" src="https://cdn.mos.cms.futurecdn.net/6scDqneMYYtwjGysHLF2PG-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: CD Projekt Red / Tom's Guide)</span></figcaption></figure><p>Naturally, The Witcher 3 Remastered on Switch 2 is not the premiere port; that’ll be found on PC. For starters, the framerate is capped at 30 fps (on PS5/Xbox Series X and PC, you have the option of 60 fps), and there is a noticeable blurriness in the distance, with background structures and objects lacking sharp definition. But these gripes really are nitpicks. </p><p>Actually, playing Witcher 3 on Switch 2 is as absorbing as it’s ever been, and I’ve been particularly impressed with the framerate, which largely hits the 30 fps target (at least, to my eyes). Even in the map’s dense city locations, Novigrad and Oxenfurt, drops are minimal. The Witcher 3 Remastered is the portable edition of this game that Nintendo fans deserve. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="mFgkGLTNLz2KFhuezNPCUG" name="the-witcher-3-wild-hunt-remastered-switch-2-screenshot-04" alt="The Witcher 3: Wild Hunt – Remastered screenshot taken on Nintendo Switch 2" src="https://cdn.mos.cms.futurecdn.net/mFgkGLTNLz2KFhuezNPCUG-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: CD Projekt Red / Tom's Guide)</span></figcaption></figure><p>The Witcher 3 on Switch 1 was a version of the game I could only recommend if you could not play anywhere else, and had no plans to pick up a PlayStation/Xbox or gaming PC in the future. That's not the case with Remastered on Switch 2, which makes a compelling case for itself. </p><p>It might not be the most visually detailed, but having such a grand adventure available on a console that doubles as a handheld is enticing, and the visual/performance sacrifices aren’t so great this time around to effectively outweigh the portable advantage as they did on the Switch 1. </p><h2 id="witcher-3-has-been-refined-not-overhauled">Witcher 3 has been refined, not overhauled</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/OlmuIckOX0c" allowfullscreen></iframe></div></div><p>Developer CD Projekt Red has been eager to point out that The Witcher 3: Wild Hunt — Remastered isn’t<em> just</em> about enhancing visuals across platforms, but also brings a wealth of changes to the experience. These are detailed in a lengthy list on <a href="https://www.thewitcher.com/us/en/news/52041/see-whats-new-in-the-witcher-3-wild-hunt-remastered" target="_blank">CDPR’s official website</a>. </p><div><blockquote><p>Playing Witcher 3 on Switch 2 is as absorbing as it’s ever been, and I’ve been particularly impressed with the framerate, which largely hits the 30 fps target.</p></blockquote></div><p>In truth, this is not an overhaul of The Witcher 3. The changes merely refine the base game. It adds several nice-to-have features, such as “transmogging” (setting your outfit's appearance independent of stats) and the option to remove inventory weight restrictions. Combat has also been sharpened with new animations, and your horse, Roach, controls a little less like a tank. </p><p>Perhaps the single biggest change is an entirely reworked skill tree, though I can’t say much about how this “upgrade” affects Geralt's power curve. I’ll need to dive into a fresh playthrough to really see whether it’s an improvement over the previous skill system available in the base game. </p><p>Ultimately, this is still The Witcher 3 — Wild Hunt, a game released in 2015 at its core. It’s not a complete remake that reshapes the RPG in numerous ways. But I don’t think many players were asking for such radical alterations. The Witcher 3 remains one of the yardsticks modern RPGs are measured against, and Remastered buffs out a few minor blemishes.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="ut4TiTYJt25naGncF9kcTG" name="the-witcher-3-wild-hunt-remastered-switch-2-screenshot-01" alt="The Witcher 3: Wild Hunt – Remastered screenshot taken on Nintendo Switch 2" src="https://cdn.mos.cms.futurecdn.net/ut4TiTYJt25naGncF9kcTG-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: CD Projekt Red / Tom's Guide)</span></figcaption></figure><p>For anybody who still hasn’t played this masterpiece in the past 11 years, The Witcher 3 — Wild Hunt Remastered is a well-timed excuse to fill that gap in your gaming backlog. And this time around, playing on Nintendo hardware is a viable choice, rather than a last resort for those who didn’t have access to a more powerful console or a PC, as it was on Switch 1.</p><p>Best of all, returning to The Witcher 3 via Remastered on Switch 2 has reminded me just how special this fantasy RPG truly is. And now, in a fall season packed with new releases (not to mention the spectre of GTA 6 looming large), I’m trying to figure out if I have the time to squeeze in a full run over the next few weeks. At least on Switch 2, I can play it anywhere!</p><p><em><strong>The Witcher 3: Wild Hunt — Remastered is out now as a free upgrade for existing owners on PC, PS5, Xbox Series X/S and Nintendo Switch 2.</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/gaming/nintendo/best-nintendo-switch-2-games">Best Nintendo Switch 2 games in 2026</a></li><li><a href="https://www.tomsguide.com/gaming/nintendo/i-play-my-nintendo-switch-2-every-day-and-these-early-prime-day-switch-deals-are-must-haves">Early Prime Day Nintendo Switch deals</a></li><li><a href="https://www.tomsguide.com/gaming/nintendo/fortunes-weave-is-the-best-fire-emblem-yet-but-not-for-the-reasons-you-might-expect">Fortune's Weave is the best Fire Emblem yet</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Netflix top 10 shows — here’s the 3 you need to binge-watch this week (September 29-October 5) ]]></title>
                                                                                                <dc:content><![CDATA[ <p><a href="https://www.tomsguide.com/entertainment/streaming/netflix">Netflix’s</a> top 10 TV shows list is always changing, which can make it tricky to figure out what’s actually worth adding to your watchlist. There are plenty of options competing for your attention right now, from returning crime dramas and mystery thrillers to brand-new releases that have quickly climbed the rankings. If you’re looking for something to binge this week, I’ve picked out three shows from Netflix’s current top 10 that deserve a spot on your watchlist.</p><p>There’s a nostalgic comedy bringing viewers back to a familiar college campus with a new generation of students, a dark true crime drama revisiting one of America’s most infamous murder cases, and a twisty mystery that strands a group of guests at a remote hotel after a suspicious death. They’re very different shows, but each offers something that should make your next Netflix binge a little easier to choose.</p><p><strong>Note: This list is based on the Netflix U.S. top 10 shows as of Tuesday, September 29, 2026. </strong></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Wwg7mW"></div>                            </div>                            <script src="https://kwizly.com/embed/Wwg7mW.js" async></script><h3 class="article-body__section" id="section-best-shows-in-the-netflix-top-10"><span>Best shows in the Netflix top 10</span></h3><h2 id="a-different-world">‘A Different World’ </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/W8jMEXwErvk" allowfullscreen></iframe></div></div><p>“A Different World” is a 10-episode sequel series that arrived on Netflix exactly 39 years after the original NBC sitcom first premiered in 1987, and it’s already made a big impression with viewers. Produced by original series visionary Debbie Allen alongside Tom Werner, Gina Prince-Bythewood and showrunner Felicia Pride, the new series brings the beloved HBCU sitcom into a new era. Unlike the multi-camera format of the original, the 2026 revival uses a single-camera setup, giving it a more modern and cinematic feel while still keeping a connection to the show that came before it.</p><p>The sequel returns to Hillman College, where freshman Deborah Wayne (Maleah Joi Moon), the daughter of Dwayne Wayne and Whitley Gilbert, begins her college journey. As she settles into campus life, she forms friendships with a new group of students who help her feel comfortable. Deborah also has to deal with the expectations that come with being the daughter of two Hillman alumni while trying to establish herself on her own terms. Alongside the new students, several familiar faces from the original series return, connecting the new generation to Hillman’s past.</p><p><em><strong>Stream "A Different World" on </strong></em><a href="https://www.netflix.com/title/81747525" target="_blank" rel="nofollow"><em><strong>Netflix</strong></em></a></p><h2 id="monster-the-lizzie-borden-story">‘Monster: The Lizzie Borden Story’</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/gYTzF1vna40" allowfullscreen></iframe></div></div><p>“Monster: The Lizzie Borden Story” is the fourth installment in Ryan Murphy and Ian Brennan’s hit “Monster” anthology series on Netflix. It takes the franchise into the 19th century for the first time and also marks its first season centered on a woman. The series puts its own spin on the infamous Lizzie Borden case, bringing together Victorian gothic horror, family drama and some darker moments of humor rather than simply retelling the events as a traditional true crime drama. It’s a pretty different direction for the “Monster” series, but one that makes this season stand out.</p><p>Lizzie Borden (Ella Beatty) is a young woman living with her wealthy family in 1890s Massachusetts. Trapped in a difficult household with her strict stepmother Abby (Rebecca Hall), Lizzie finds an unexpected ally in Maggie (Vicky Krieps), a new maid who arrives at the family home. As their relationship grows closer, the pair begin plotting against those who have mistreated them. Soon, Lizzie’s father Andrew (Charlie Hunnam) and stepmother Abby wind up dead, setting off an investigation and a sensational trial. </p><p><em><strong>Stream "Monster: The Lizzie Borden Story" on </strong></em><a href="https://www.netflix.com/title/82068293" target="_blank" rel="nofollow"><em><strong>Netflix</strong></em></a></p><h2 id="the-final-problem">‘The Final Problem’</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/yLeja7kWgmU" allowfullscreen></iframe></div></div><p>If you’re a fan of a good mystery, “The Final Problem” is one to add to your watchlist this week. This Spanish four-episode limited series is a stylish take on the classic whodunit, with plenty of inspiration from Agatha Christie and old-school mystery movies. It isn’t a direct Sherlock Holmes adaptation, though. Instead, the story follows a retired actor who became famous for playing Sherlock Holmes and suddenly finds himself having to use those detective skills in a real-life mystery. If you enjoyed movies like “Knives Out” or “And Then There Were None,” this could be the perfect pick.</p><p>In 1959, thirteen people become stranded on a small island near Mallorca when a violent storm cuts them off from the mainland. When English tourist Elisa Mander is found dead at their hotel, what initially appears to be suicide is soon revealed to be murder. Retired actor Benjamin Basil (José Coronado), who once played Sherlock Holmes on screen, finds himself investigating the death. With nobody able to leave the island and every guest and member of staff a potential suspect, Basil searches the secluded hotel for answers.</p><p><em><strong>Stream "The Final Problem" on </strong></em><a href="https://www.netflix.com/title/81731510" target="_blank" rel="nofollow"><em><strong>Netflix</strong></em></a></p><h3 class="article-body__section" id="section-netflix-top-10-shows-right-now"><span>Netflix top 10 shows right now</span></h3><p>1. "A Different World" (2026)<br>2. "Wonka's the Golden Ticket" (2026)<br>3. "Monster: The Lizzie Borden Story" (2026)<br>4. "The Great British Baking Show" (2026)<br>5. "Not a Stranger" (2026)<br>6. "Crew Girl" (2026)<br>7. "Death of the Pastor’s Wife" (2026)<br>8. "Doc" (2025)<br>9. "The Final Problem" (2026)<br>10. "The Gentlemen" (2024)</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/netflix/new-on-netflix-october-2026-5-best-movies-and-shows-to-stream-plus-full-release-list">Everything new on Netflix in October 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/netflix/5-best-new-to-netflix-movies-and-shows-to-stream-this-week-sept-28-oct-4">5 best new to Netflix movies and shows to stream this week</a></li><li><a href="https://www.tomsguide.com/entertainment/netflix/netflix-just-got-all-3-seasons-of-this-canceled-cult-comedy-with-adam-scott-paul-rudd-and-a-shocking-number-of-hollywood-stars">Netflix added all 3 seasons of this canceled cult comedy </a></li></ul><div data-model-name="Disney Plus,Hulu,Max,Paramount Plus,Peacock TV" data-widget-type="multimodelreview" data-widget-title="Streaming service deals not to miss"></div> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/netflix/netflix-top-10-shows-heres-the-3-you-need-to-binge-watch-this-week-september-29-october-5</link>
                                                                            <description>
                            <![CDATA[ Looking for something new to watch? We've picked the best shows currently dominating Netflix’s top 10 list, including a new comedy sequel to a classic sitcom. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">vmjopGiUCVhkWrGAZLZCET</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/mxuKAwe4AKGTtKcxerxEA8-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 29 Sep 2026 10:52:25 +0000</pubDate>                                                                                                                                <updated>Wed, 30 Sep 2026 11:22:44 +0000</updated>
                                                                                                                                            <category><![CDATA[Netflix]]></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/mxuKAwe4AKGTtKcxerxEA8-1920-80.jpg">
                                                            <media:credit><![CDATA[Alamy]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Netflix logo on blue background]]></media:description>                                                            <media:text><![CDATA[Netflix logo on blue background]]></media:text>
                                <media:title type="plain"><![CDATA[Netflix logo on blue background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/mxuKAwe4AKGTtKcxerxEA8-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p><a href="https://www.tomsguide.com/entertainment/streaming/netflix">Netflix’s</a> top 10 TV shows list is always changing, which can make it tricky to figure out what’s actually worth adding to your watchlist. There are plenty of options competing for your attention right now, from returning crime dramas and mystery thrillers to brand-new releases that have quickly climbed the rankings. If you’re looking for something to binge this week, I’ve picked out three shows from Netflix’s current top 10 that deserve a spot on your watchlist.</p><p>There’s a nostalgic comedy bringing viewers back to a familiar college campus with a new generation of students, a dark true crime drama revisiting one of America’s most infamous murder cases, and a twisty mystery that strands a group of guests at a remote hotel after a suspicious death. They’re very different shows, but each offers something that should make your next Netflix binge a little easier to choose.</p><p><strong>Note: This list is based on the Netflix U.S. top 10 shows as of Tuesday, September 29, 2026. </strong></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Wwg7mW"></div>                            </div>                            <script src="https://kwizly.com/embed/Wwg7mW.js" async></script><h3 class="article-body__section" id="section-best-shows-in-the-netflix-top-10"><span>Best shows in the Netflix top 10</span></h3><h2 id="a-different-world">‘A Different World’ </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/W8jMEXwErvk" allowfullscreen></iframe></div></div><p>“A Different World” is a 10-episode sequel series that arrived on Netflix exactly 39 years after the original NBC sitcom first premiered in 1987, and it’s already made a big impression with viewers. Produced by original series visionary Debbie Allen alongside Tom Werner, Gina Prince-Bythewood and showrunner Felicia Pride, the new series brings the beloved HBCU sitcom into a new era. Unlike the multi-camera format of the original, the 2026 revival uses a single-camera setup, giving it a more modern and cinematic feel while still keeping a connection to the show that came before it.</p><p>The sequel returns to Hillman College, where freshman Deborah Wayne (Maleah Joi Moon), the daughter of Dwayne Wayne and Whitley Gilbert, begins her college journey. As she settles into campus life, she forms friendships with a new group of students who help her feel comfortable. Deborah also has to deal with the expectations that come with being the daughter of two Hillman alumni while trying to establish herself on her own terms. Alongside the new students, several familiar faces from the original series return, connecting the new generation to Hillman’s past.</p><p><em><strong>Stream "A Different World" on </strong></em><a href="https://www.netflix.com/title/81747525" target="_blank" rel="nofollow"><em><strong>Netflix</strong></em></a></p><h2 id="monster-the-lizzie-borden-story">‘Monster: The Lizzie Borden Story’</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/gYTzF1vna40" allowfullscreen></iframe></div></div><p>“Monster: The Lizzie Borden Story” is the fourth installment in Ryan Murphy and Ian Brennan’s hit “Monster” anthology series on Netflix. It takes the franchise into the 19th century for the first time and also marks its first season centered on a woman. The series puts its own spin on the infamous Lizzie Borden case, bringing together Victorian gothic horror, family drama and some darker moments of humor rather than simply retelling the events as a traditional true crime drama. It’s a pretty different direction for the “Monster” series, but one that makes this season stand out.</p><p>Lizzie Borden (Ella Beatty) is a young woman living with her wealthy family in 1890s Massachusetts. Trapped in a difficult household with her strict stepmother Abby (Rebecca Hall), Lizzie finds an unexpected ally in Maggie (Vicky Krieps), a new maid who arrives at the family home. As their relationship grows closer, the pair begin plotting against those who have mistreated them. Soon, Lizzie’s father Andrew (Charlie Hunnam) and stepmother Abby wind up dead, setting off an investigation and a sensational trial. </p><p><em><strong>Stream "Monster: The Lizzie Borden Story" on </strong></em><a href="https://www.netflix.com/title/82068293" target="_blank" rel="nofollow"><em><strong>Netflix</strong></em></a></p><h2 id="the-final-problem">‘The Final Problem’</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/yLeja7kWgmU" allowfullscreen></iframe></div></div><p>If you’re a fan of a good mystery, “The Final Problem” is one to add to your watchlist this week. This Spanish four-episode limited series is a stylish take on the classic whodunit, with plenty of inspiration from Agatha Christie and old-school mystery movies. It isn’t a direct Sherlock Holmes adaptation, though. Instead, the story follows a retired actor who became famous for playing Sherlock Holmes and suddenly finds himself having to use those detective skills in a real-life mystery. If you enjoyed movies like “Knives Out” or “And Then There Were None,” this could be the perfect pick.</p><p>In 1959, thirteen people become stranded on a small island near Mallorca when a violent storm cuts them off from the mainland. When English tourist Elisa Mander is found dead at their hotel, what initially appears to be suicide is soon revealed to be murder. Retired actor Benjamin Basil (José Coronado), who once played Sherlock Holmes on screen, finds himself investigating the death. With nobody able to leave the island and every guest and member of staff a potential suspect, Basil searches the secluded hotel for answers.</p><p><em><strong>Stream "The Final Problem" on </strong></em><a href="https://www.netflix.com/title/81731510" target="_blank" rel="nofollow"><em><strong>Netflix</strong></em></a></p><h3 class="article-body__section" id="section-netflix-top-10-shows-right-now"><span>Netflix top 10 shows right now</span></h3><p>1. "A Different World" (2026)<br>2. "Wonka's the Golden Ticket" (2026)<br>3. "Monster: The Lizzie Borden Story" (2026)<br>4. "The Great British Baking Show" (2026)<br>5. "Not a Stranger" (2026)<br>6. "Crew Girl" (2026)<br>7. "Death of the Pastor’s Wife" (2026)<br>8. "Doc" (2025)<br>9. "The Final Problem" (2026)<br>10. "The Gentlemen" (2024)</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/netflix/new-on-netflix-october-2026-5-best-movies-and-shows-to-stream-plus-full-release-list">Everything new on Netflix in October 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/netflix/5-best-new-to-netflix-movies-and-shows-to-stream-this-week-sept-28-oct-4">5 best new to Netflix movies and shows to stream this week</a></li><li><a href="https://www.tomsguide.com/entertainment/netflix/netflix-just-got-all-3-seasons-of-this-canceled-cult-comedy-with-adam-scott-paul-rudd-and-a-shocking-number-of-hollywood-stars">Netflix added all 3 seasons of this canceled cult comedy </a></li></ul><div data-model-name="Disney Plus,Hulu,Max,Paramount Plus,Peacock TV" data-widget-type="multimodelreview" data-widget-title="Streaming service deals not to miss"></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 3 new to Prime Video thriller movies to watch this week — including an intense action flick starring Tom Cruise and Jamie Foxx (Sept. 29-Oct. 5) ]]></title>
                                                                                                <dc:content><![CDATA[ <p>September is drawing to a close, but before the new month arrives, you should make time to enjoy some of the best thriller movies added recently to Prime Video. To help you spend more time watching and less time scrolling, I’ve rounded up three great picks below. </p><p>Every week, I comb through the latest arrivals on Prime Video and pick out the best thrillers, and this week there’s plenty to enjoy. From an iconic WWII movie with an earworm theme tune to a spy game perfect for fans of “John Wick.” Or if you want star power, how about an intense action-fueled ride starring Tom Cruise and Jamie Foxx? The choice is yours. </p><p>These are the latest thriller movies added to Prime Video’s movie library; get them in your watchlist this week if you need a dose of streaming excitement.</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-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="39-the-great-escape-39-1963">'The Great Escape' (1963)</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/M2bEzJFVdQ4" allowfullscreen></iframe></div></div><p>I’ve always appreciated that Prime Video respects the classics. More than any of its rivals, the Amazon-owned platform adds a steady clip of yesteryear favorites, and this month the list includes “The Great Escape.” This 1963 epic starring Steve McQueen is iconic for both its breathtaking motorcycle chase sequence — remember this was created before the days of CGI — and its earworm theme tune, which you’re probably humming to yourself right now. </p><p>In “The Great Escape,” McQueen plays Captain Virgil Hilts, an American POW known as “The Cooler King” for his habit of getting thrown into solitary confinement. Set during World War II in a German prisoner of war camp under the watch of Colonel von Luger (Hannes Messemer), a group of Allied soldiers plots a daring escape that involves digging three underground tunnels to crawl to freedom. Alongside McQueen, the classic stars James Garner, Richard Attenborough, Charles Bronson and Donald Pleasence.</p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/Great-Escape-Steve-McQueen/dp/B000IZ0WQ4" target="_blank" rel="nofollow"><em><strong>"The Great Escape" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="atomic-blonde-2017">‘Atomic Blonde’ (2017)</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/yIUube1pSC0" allowfullscreen></iframe></div></div><p>Director David Leitch helms this stylish action-thriller that mixes the one-man-army action highs of “John Wick” with a well-realized 1980s Berlin setting; specifically, it’s set in November 1989, just days before the fall of the Berlin Wall. Also, the figure blasting through scores of assailants is no man. Instead, “Atomic Blonde” stars Charlize Theron, playing a skilled MI6 agent, Lorraine Broughton. And she’s every bit as lethal as a certain Mr. Wick. </p><p>Broughton is dispatched to Berlin, a city on the cusp of being reunited, to retrieve a watch stolen by a KGB agent. But this timepiece is more than a fancy accessory; it holds the name of every active intelligence agent in Berlin, so its return is of paramount importance. Once on the scene, Lorraine links up with a fellow MI6 agent, Percival (James McAvoy), and is drawn into a dangerous spy game where the line between friend and foe blurs. </p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B073VDJGW5" target="_blank" rel="nofollow"><em><strong>"Atomic Blonde" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="collateral-2004">‘Collateral’ (2004)</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/JlcX_GXtf40" allowfullscreen></iframe></div></div><p>Michael Mann delivered an enduring ultra-cool thriller in the genre classic “Heat,” but his 2004 effort “Collateral” shouldn’t be overlooked either. Starring Tom Cruise and Jamie Foxx, the latter securing an Oscar nomination for his performance, it’s an intense crime movie in which an ordinary man finds himself dragged into an increasingly murky situation. And it gives the usually heroic Cruise a chance to flex his acting muscles as a memorable villain. </p><p>Max (Foxx) is an L.A. cab driver whose evening takes a dramatic twist when he picks up a passenger named Vincent (Cruise). Initially, Max believes he’s driving Vincent to a series of business meetings. However, it’s revealed the passenger is actually a hit man, in the city to eliminate a series of high-profile targets. It’s up to Max to find a way to stop him. Elevated beyond its simplistic setup by two strong performances, “Collateral” is slickly crafted and does a great job ratcheting up the stakes across its two-hour runtime.</p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B0HF9PP9XG" target="_blank" rel="nofollow"><em><strong>"Collateral" 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-september-2026-top-picks-and-all-the-new-movies-and-shows-to-watch">New on Prime Video in September 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/movies/5-top-new-movies-to-stream-this-week-on-netflix-hbo-max-apple-tv-and-more-sept-29-oct-5">5 top new movies to stream this week</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/prime-video-top-10-movies-heres-the-3-worth-watching-this-week-sept-28-oct-4">Prime Video top 10 movies — 3 worth watching this week</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-an-intense-action-flick-starring-tom-cruise-and-jamie-foxx-sept-29-oct-5</link>
                                                                            <description>
                            <![CDATA[ Here are the latest thriller movies added to the Prime Video streaming library, including a gritty action flick with Tom Cruise as the villain. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">ELwv3M5zZFBpMvW6HdzDW8</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/JBy4JwfMvxZAJ2z6VKQGeK-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 29 Sep 2026 10:00:34 +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/JBy4JwfMvxZAJ2z6VKQGeK-1920-80.jpg">
                                                            <media:credit><![CDATA[Prime Video; Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Prime Video logo on a blue pink film reel background]]></media:description>                                                            <media:text><![CDATA[Prime Video logo on a blue pink film reel background]]></media:text>
                                <media:title type="plain"><![CDATA[Prime Video logo on a blue pink film reel background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/JBy4JwfMvxZAJ2z6VKQGeK-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>September is drawing to a close, but before the new month arrives, you should make time to enjoy some of the best thriller movies added recently to Prime Video. To help you spend more time watching and less time scrolling, I’ve rounded up three great picks below. </p><p>Every week, I comb through the latest arrivals on Prime Video and pick out the best thrillers, and this week there’s plenty to enjoy. From an iconic WWII movie with an earworm theme tune to a spy game perfect for fans of “John Wick.” Or if you want star power, how about an intense action-fueled ride starring Tom Cruise and Jamie Foxx? The choice is yours. </p><p>These are the latest thriller movies added to Prime Video’s movie library; get them in your watchlist this week if you need a dose of streaming excitement.</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-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="39-the-great-escape-39-1963">'The Great Escape' (1963)</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/M2bEzJFVdQ4" allowfullscreen></iframe></div></div><p>I’ve always appreciated that Prime Video respects the classics. More than any of its rivals, the Amazon-owned platform adds a steady clip of yesteryear favorites, and this month the list includes “The Great Escape.” This 1963 epic starring Steve McQueen is iconic for both its breathtaking motorcycle chase sequence — remember this was created before the days of CGI — and its earworm theme tune, which you’re probably humming to yourself right now. </p><p>In “The Great Escape,” McQueen plays Captain Virgil Hilts, an American POW known as “The Cooler King” for his habit of getting thrown into solitary confinement. Set during World War II in a German prisoner of war camp under the watch of Colonel von Luger (Hannes Messemer), a group of Allied soldiers plots a daring escape that involves digging three underground tunnels to crawl to freedom. Alongside McQueen, the classic stars James Garner, Richard Attenborough, Charles Bronson and Donald Pleasence.</p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/Great-Escape-Steve-McQueen/dp/B000IZ0WQ4" target="_blank" rel="nofollow"><em><strong>"The Great Escape" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="atomic-blonde-2017">‘Atomic Blonde’ (2017)</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/yIUube1pSC0" allowfullscreen></iframe></div></div><p>Director David Leitch helms this stylish action-thriller that mixes the one-man-army action highs of “John Wick” with a well-realized 1980s Berlin setting; specifically, it’s set in November 1989, just days before the fall of the Berlin Wall. Also, the figure blasting through scores of assailants is no man. Instead, “Atomic Blonde” stars Charlize Theron, playing a skilled MI6 agent, Lorraine Broughton. And she’s every bit as lethal as a certain Mr. Wick. </p><p>Broughton is dispatched to Berlin, a city on the cusp of being reunited, to retrieve a watch stolen by a KGB agent. But this timepiece is more than a fancy accessory; it holds the name of every active intelligence agent in Berlin, so its return is of paramount importance. Once on the scene, Lorraine links up with a fellow MI6 agent, Percival (James McAvoy), and is drawn into a dangerous spy game where the line between friend and foe blurs. </p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B073VDJGW5" target="_blank" rel="nofollow"><em><strong>"Atomic Blonde" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="collateral-2004">‘Collateral’ (2004)</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/JlcX_GXtf40" allowfullscreen></iframe></div></div><p>Michael Mann delivered an enduring ultra-cool thriller in the genre classic “Heat,” but his 2004 effort “Collateral” shouldn’t be overlooked either. Starring Tom Cruise and Jamie Foxx, the latter securing an Oscar nomination for his performance, it’s an intense crime movie in which an ordinary man finds himself dragged into an increasingly murky situation. And it gives the usually heroic Cruise a chance to flex his acting muscles as a memorable villain. </p><p>Max (Foxx) is an L.A. cab driver whose evening takes a dramatic twist when he picks up a passenger named Vincent (Cruise). Initially, Max believes he’s driving Vincent to a series of business meetings. However, it’s revealed the passenger is actually a hit man, in the city to eliminate a series of high-profile targets. It’s up to Max to find a way to stop him. Elevated beyond its simplistic setup by two strong performances, “Collateral” is slickly crafted and does a great job ratcheting up the stakes across its two-hour runtime.</p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B0HF9PP9XG" target="_blank" rel="nofollow"><em><strong>"Collateral" 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-september-2026-top-picks-and-all-the-new-movies-and-shows-to-watch">New on Prime Video in September 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/movies/5-top-new-movies-to-stream-this-week-on-netflix-hbo-max-apple-tv-and-more-sept-29-oct-5">5 top new movies to stream this week</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/prime-video-top-10-movies-heres-the-3-worth-watching-this-week-sept-28-oct-4">Prime Video top 10 movies — 3 worth watching this week</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Netflix just got all 3 seasons of this canceled cult comedy with Adam Scott, Paul Rudd and a shocking number of Hollywood stars ]]></title>
                                                                                                <dc:content><![CDATA[ <p>When <strong>“Party Down”</strong> premiered on Starz in 2009, the premium cable channel was even more obscure than it is today, and in retrospect, the sitcom about the amusingly pathetic lives of Los Angeles cater-waiters probably never stood a chance at finding a wide audience. I don’t think I’d ever watched anything on Starz before checking out “Party Down,” which I was interested in primarily thanks to its association with <a href="https://www.tomsguide.com/entertainment/netflix/this-64-episode-detective-drama-is-finally-available-to-stream-on-netflix-and-i-couldnt-be-happier">“Veronica Mars”</a> creator Rob Thomas. </p><p>It’s a minor miracle that “Party Down” lasted for two 10-episode seasons before getting canceled, and an even greater miracle that it amassed enough of a cult following to be revived for a six-episode third season in 2023. <strong>All three of those seasons are now streaming on </strong><a href="https://www.netflix.com/title/70140422" target="_blank" rel="nofollow"><strong>Netflix</strong></a>, so the show has an opportunity to reach more viewers than it managed in their initial low-profile runs. </p><p>Anyone streaming “Party Down” on Netflix now will find a caustic, hilarious, well-acted comedy with some surprisingly heartfelt moments amid the ruthless Hollywood satire.</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="party-down-boasts-an-all-star-lineup-of-comedic-performers">‘Party Down’ boasts an all-star lineup of comedic performers</h2><p>Thomas and co-creators John Enbom, Dan Etheridge and Paul Rudd (yes, the actor) had an impressive eye for talent when casting “Party Down,” which features Adam Scott, Lizzy Caplan and Jane Lynch before their future breakout roles, along with The State’s Ken Marino, Martin Starr, Ryan Hansen and Megan Mullally. They play the employees of the Party Down catering company, and each episode takes place at a different event, allowing the show to constantly switch up locations and supporting characters.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/FT2DOz2McW8" allowfullscreen></iframe></div></div><p>The ensemble works remarkably well together from the opening episode, which finds Scott’s Henry Pollard returning to Party Down after years away, now that his acting career has fizzled. Nearly everyone in the company is a former or aspiring performer, and the show gently mocks their ambitions while also giving them moments of sympathetic vulnerability. Henry’s claim to fame is uttering a catchphrase in a beer commercial, but he’s also a genuinely talented actor who’s lost his passion for his craft.</p><p>The central romantic relationship on “Party Down” is between Henry and struggling comedian Casey Klein (Caplan), and they bond over their shared cynicism even as they provide each other moral support. Scott and Caplan are excellent at delivering sarcastic putdowns, but they also have sweet, believable chemistry, and one of the only disappointments of the revival season is that Caplan was too busy to appear for more than a brief cameo.</p><p>Marino is both tragic and hilarious as team leader Ron Donald, whose only ambition in life is to open a franchise location of a mediocre chain restaurant. Hansen gives vain actor/musician Kyle Bradway a sort of charming douchebag quality, and Starr finds similar charm on the opposite end of the personality spectrum as condescending would-be sci-fi writer Roman DeBeers. Lynch, Mullally and Jennifer Coolidge rotate through various episodes as the crew’s wild card, each bringing their own unique manic energy.</p><h2 id="party-down-delivers-sharp-humor-and-engaging-storylines">‘Party Down’ delivers sharp humor and engaging storylines</h2><p>The different episode settings provide the context for different types of jokes, and some of the highlights include an adult film awards after-party, a mobster’s acquittal celebration, two different conventions of odious conservative activists, and multiple weddings. </p><p>My favorite episode involves the crew hanging out with actor Steve Guttenberg (playing himself) at his house when he forgets that he’s booked them for a birthday party that is no longer happening. It’s the perfect mix of personal drama, absurdist humor and unexpectedly strong insights about the creative process.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/NZ6rXcT8e5U" allowfullscreen></iframe></div></div><p>The second season ends on a lovely unresolved note, giving Henry a sliver of hope for his renewed acting ambitions, and bringing the show back after more than a decade away could have been a disaster. But "Party Down" season 3 is one of the best examples of the recent wave of TV-series revivals, even without Caplan and with limited appearances from Lynch and Mullally. Tyrel Jackson Williams and Zoë Chao make for solid additions to the catering crew, and Jennifer Garner delivers one of her best, most underrated performances as Henry’s new movie-producer love interest.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1622px;"><p class="vanilla-image-block" style="padding-top:56.29%;"><img id="pWDRSAxoYuSGxGipiz27kG" name="PD 2.jpg" alt="Left to Right: Ryan Hansen (as Kyle Bradway), Zoe Chao (as Lucy), Martin Starr (as Roman Debeers), Adam Scott (as Henry Pollard), Tyrel Jackson Williams (as Sackson) in Party Down season 3 episode 3" src="https://cdn.mos.cms.futurecdn.net/pWDRSAxoYuSGxGipiz27kG-1920-80.jpg" mos="" align="middle" fullscreen="" width="1622" height="913" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Starz)</span></figcaption></figure><p>Most importantly, the third season retains the biting wit of the original two seasons, and there’s an added element of melancholy to seeing these characters mostly stuck in the same dead-end jobs 10-plus years later. It’s easy for viewers to relate to being young and wanting to pursue your dreams, and sadly it’s also easy to relate to being older and realizing those dreams have passed you by. In the meantime, life is often bitterly funny, and “Party Down” captures that ridiculousness in its entertainingly heightened way. </p><p>It’s oddly appropriate that a show about misfit losers was relegated to a lower-tier streaming platform, but now that it’s made its way to a big-time outlet on Netflix, maybe these also-rans can have their time to shine.</p><p><em><strong>Stream </strong></em><a href="https://www.netflix.com/title/70140422" target="_blank" rel="nofollow"><em><strong>“Party Down” on Netflix</strong></em></a><em><strong> now</strong></em></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ODmDlX"></div>                            </div>                            <script src="https://kwizly.com/embed/ODmDlX.js" async></script><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/entertainment/streaming/new-on-tubi-in-june-2026-all-the-movies-and-shows-to-watch">New on Tubi in June 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/sports/watch-world-cup-2026-free-live-streams">How to watch the World Cup for free</a></li><li><a href="https://www.tomsguide.com/best-picks/best-free-streaming-services">The best free streaming services</a></li></ul><div data-model-name="Disney+,Hulu,Peacock TV,Paramount Plus" data-widget-type="multimodelreview" data-widget-title="Streaming service deals not to miss"></div> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/netflix/netflix-just-got-all-3-seasons-of-this-canceled-cult-comedy-with-adam-scott-paul-rudd-and-a-shocking-number-of-hollywood-stars</link>
                                                                            <description>
                            <![CDATA[ 'Party Down' is a sharp, funny comedy about cater waiters featuring a stacked lineup of future stars. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">NQ2Yq9vPwN88Cg8ztB4H2X</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/TPCSHUhYLmbKdjTqNWc5U4-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 29 Sep 2026 06:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Netflix]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                    <category><![CDATA[Streaming]]></category>
                                                                                                                    <dc:creator><![CDATA[ Josh Bell ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/7YJDqbzv55AwNVnwqDfBK9-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/TPCSHUhYLmbKdjTqNWc5U4-1920-80.jpg">
                                                            <media:credit><![CDATA[Starz]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Party Down]]></media:description>                                                            <media:text><![CDATA[Party Down]]></media:text>
                                <media:title type="plain"><![CDATA[Party Down]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/TPCSHUhYLmbKdjTqNWc5U4-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>When <strong>“Party Down”</strong> premiered on Starz in 2009, the premium cable channel was even more obscure than it is today, and in retrospect, the sitcom about the amusingly pathetic lives of Los Angeles cater-waiters probably never stood a chance at finding a wide audience. I don’t think I’d ever watched anything on Starz before checking out “Party Down,” which I was interested in primarily thanks to its association with <a href="https://www.tomsguide.com/entertainment/netflix/this-64-episode-detective-drama-is-finally-available-to-stream-on-netflix-and-i-couldnt-be-happier">“Veronica Mars”</a> creator Rob Thomas. </p><p>It’s a minor miracle that “Party Down” lasted for two 10-episode seasons before getting canceled, and an even greater miracle that it amassed enough of a cult following to be revived for a six-episode third season in 2023. <strong>All three of those seasons are now streaming on </strong><a href="https://www.netflix.com/title/70140422" target="_blank" rel="nofollow"><strong>Netflix</strong></a>, so the show has an opportunity to reach more viewers than it managed in their initial low-profile runs. </p><p>Anyone streaming “Party Down” on Netflix now will find a caustic, hilarious, well-acted comedy with some surprisingly heartfelt moments amid the ruthless Hollywood satire.</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="party-down-boasts-an-all-star-lineup-of-comedic-performers">‘Party Down’ boasts an all-star lineup of comedic performers</h2><p>Thomas and co-creators John Enbom, Dan Etheridge and Paul Rudd (yes, the actor) had an impressive eye for talent when casting “Party Down,” which features Adam Scott, Lizzy Caplan and Jane Lynch before their future breakout roles, along with The State’s Ken Marino, Martin Starr, Ryan Hansen and Megan Mullally. They play the employees of the Party Down catering company, and each episode takes place at a different event, allowing the show to constantly switch up locations and supporting characters.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/FT2DOz2McW8" allowfullscreen></iframe></div></div><p>The ensemble works remarkably well together from the opening episode, which finds Scott’s Henry Pollard returning to Party Down after years away, now that his acting career has fizzled. Nearly everyone in the company is a former or aspiring performer, and the show gently mocks their ambitions while also giving them moments of sympathetic vulnerability. Henry’s claim to fame is uttering a catchphrase in a beer commercial, but he’s also a genuinely talented actor who’s lost his passion for his craft.</p><p>The central romantic relationship on “Party Down” is between Henry and struggling comedian Casey Klein (Caplan), and they bond over their shared cynicism even as they provide each other moral support. Scott and Caplan are excellent at delivering sarcastic putdowns, but they also have sweet, believable chemistry, and one of the only disappointments of the revival season is that Caplan was too busy to appear for more than a brief cameo.</p><p>Marino is both tragic and hilarious as team leader Ron Donald, whose only ambition in life is to open a franchise location of a mediocre chain restaurant. Hansen gives vain actor/musician Kyle Bradway a sort of charming douchebag quality, and Starr finds similar charm on the opposite end of the personality spectrum as condescending would-be sci-fi writer Roman DeBeers. Lynch, Mullally and Jennifer Coolidge rotate through various episodes as the crew’s wild card, each bringing their own unique manic energy.</p><h2 id="party-down-delivers-sharp-humor-and-engaging-storylines">‘Party Down’ delivers sharp humor and engaging storylines</h2><p>The different episode settings provide the context for different types of jokes, and some of the highlights include an adult film awards after-party, a mobster’s acquittal celebration, two different conventions of odious conservative activists, and multiple weddings. </p><p>My favorite episode involves the crew hanging out with actor Steve Guttenberg (playing himself) at his house when he forgets that he’s booked them for a birthday party that is no longer happening. It’s the perfect mix of personal drama, absurdist humor and unexpectedly strong insights about the creative process.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/NZ6rXcT8e5U" allowfullscreen></iframe></div></div><p>The second season ends on a lovely unresolved note, giving Henry a sliver of hope for his renewed acting ambitions, and bringing the show back after more than a decade away could have been a disaster. But "Party Down" season 3 is one of the best examples of the recent wave of TV-series revivals, even without Caplan and with limited appearances from Lynch and Mullally. Tyrel Jackson Williams and Zoë Chao make for solid additions to the catering crew, and Jennifer Garner delivers one of her best, most underrated performances as Henry’s new movie-producer love interest.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1622px;"><p class="vanilla-image-block" style="padding-top:56.29%;"><img id="pWDRSAxoYuSGxGipiz27kG" name="PD 2.jpg" alt="Left to Right: Ryan Hansen (as Kyle Bradway), Zoe Chao (as Lucy), Martin Starr (as Roman Debeers), Adam Scott (as Henry Pollard), Tyrel Jackson Williams (as Sackson) in Party Down season 3 episode 3" src="https://cdn.mos.cms.futurecdn.net/pWDRSAxoYuSGxGipiz27kG-1920-80.jpg" mos="" align="middle" fullscreen="" width="1622" height="913" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Starz)</span></figcaption></figure><p>Most importantly, the third season retains the biting wit of the original two seasons, and there’s an added element of melancholy to seeing these characters mostly stuck in the same dead-end jobs 10-plus years later. It’s easy for viewers to relate to being young and wanting to pursue your dreams, and sadly it’s also easy to relate to being older and realizing those dreams have passed you by. In the meantime, life is often bitterly funny, and “Party Down” captures that ridiculousness in its entertainingly heightened way. </p><p>It’s oddly appropriate that a show about misfit losers was relegated to a lower-tier streaming platform, but now that it’s made its way to a big-time outlet on Netflix, maybe these also-rans can have their time to shine.</p><p><em><strong>Stream </strong></em><a href="https://www.netflix.com/title/70140422" target="_blank" rel="nofollow"><em><strong>“Party Down” on Netflix</strong></em></a><em><strong> now</strong></em></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ODmDlX"></div>                            </div>                            <script src="https://kwizly.com/embed/ODmDlX.js" async></script><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/entertainment/streaming/new-on-tubi-in-june-2026-all-the-movies-and-shows-to-watch">New on Tubi in June 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/sports/watch-world-cup-2026-free-live-streams">How to watch the World Cup for free</a></li><li><a href="https://www.tomsguide.com/best-picks/best-free-streaming-services">The best free streaming services</a></li></ul><div data-model-name="Disney+,Hulu,Peacock TV,Paramount Plus" data-widget-type="multimodelreview" data-widget-title="Streaming service deals not to miss"></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ iPhone Duo — the real reason why Apple will beat all Android foldables ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Did you hear about the new <a href="https://www.mi.com/global/discover/article?id=6357"><u>Xiaomi 18 Fold</u></a>? Maybe not, but this foldable phone is getting a lot of attention on YouTube for “beating” the upcoming <a href="https://www.tomsguide.com/phones/iphones/iphone-duo-hands-on-apple-nailed-it-and-just-put-everyone-else-on-notice"><u>iPhone Duo</u></a> at its own game. Here’s just some of the ways it wins.</p><ul><li>It’s lighter</li><li>It’s thinner</li><li>It has a telephoto camera</li><li>It has a bigger battery</li><li>It charges faster</li><li>It’s better at multitasking</li><li>It has a brighter screen</li><li>It’s hundreds cheaper</li></ul><p>As you’ll see in the very slick video by<a href="https://www.youtube.com/@Mrwhosetheboss"> <u>Mrwhosetheboss</u></a>, which at last count has over 16 million views, Xiaomi has superior hardware. On paper. But when he digs deeper a bunch of flaws emerge in this would be iPhone Duo killer.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/eYBEJBfq_Zs" allowfullscreen></iframe></div></div><p>For starters, the phone is made of less durable aluminum, versus the stronger titanium frame on the iPhone Duo. And that durability advantage extends to the Duo’s IP68 rating for water and dust protection, which the Xiaomi lacks.</p><p>In addition, the crease is more noticeable on the Xiaomi 18 Fold because it lacks the Duo’s nano-texture display. Even worse, Mrwhosetheboss found that just opening and closing the Xiaomi foldable resulted in unsettling clicking sounds.</p><p>But the real reason the iPhone Duo is superior is the software experience, specifically how Apple optimized its OS and apps for the foldable form factor. It looks like Xiaomi just threw its regular OS at a foldable, with sometimes awkward and ugly results.</p><p>This is the same reason why the iPhone Duo will likely beat all other Android foldables once it’s released: no other company focuses as obsessively on how the hardware and software work together.</p><h2 id="hardware-software-innovation">Hardware + Software innovation</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4656px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Q9CmG4bSftigAEdPtH3Qqd" name="iPhone Duo-LIST1" alt="iPhone Duo hands on" src="https://cdn.mos.cms.futurecdn.net/Q9CmG4bSftigAEdPtH3Qqd-1920-80.jpg" mos="" align="middle" fullscreen="" width="4656" height="2619" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>For example, Apple redesigned the dock on the iPhone so it sits on the right side, making it easier to reach both when the display is closed and open. The same thing goes with the controls for apps.</p><p>This is admittedly a bummer for left-handed people, but it is a good use of the available space and wider aspect ratio, so you can see more of your content.</p><div class="looped-video"><video class="lazyload-in-view lazyloading" data-src="https://cdn.mos.cms.futurecdn.net/53Tjqd2ZGw3r4mghxSwHMC/Apple-iPhone-Duo-StandBy-260909.mp4" autoplay loop muted playsinline src="https://cdn.mos.cms.futurecdn.net/53Tjqd2ZGw3r4mghxSwHMC/Apple-iPhone-Duo-StandBy-260909.mp4"></video></div><p>In addition, Apple has optimized the software so that apps can adapt based on the “pose” the device is in. For example, when you turn the iPhone Duo upside down in tent mode, it can automatically morph into an alarm clock. And it emits a soft glow when your alarm goes off.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2820px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="aCP29PwqKVRBqd3bbipckc" name="Apple iPhone Duo" alt="iPhone Duo shown half open" src="https://cdn.mos.cms.futurecdn.net/aCP29PwqKVRBqd3bbipckc-1920-80.jpg" mos="" align="middle" fullscreen="" width="2820" height="1586" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Apple)</span></figcaption></figure><p>Apple has also redesigned <a href="https://www.tomsguide.com/phones/iphones/ios-27-7-features-you-need-to-try-first-after-updating"><u>iOS 27</u></a> so that the iPhone Duo reacts as you fold the device. If you fold the phone half way while in Safari, for example, a keyboard will automatically appear at the bottom of the display. And when it’s stood up vertically, you can display your calendar on the left and favorite photos on the right, just like one of the best digital photo frames.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/y227RF0smAg" allowfullscreen></iframe></div></div><p>Apple is making an API available for developers as well to enable them to make apps that can “read” the angle of the hinge, and in an interview with <a href="https://www.youtube.com/watch?v=y227RF0smAg"><u>Donald Decodes on YouTube</u></a> Apple’s Craig Federighi confirmed it’s accurate to within 5 degrees. But he said that most developers will simply be focusing on various pose states for the device, like the book pose, table pose or tent pose. </p><p>“We make those things so that as a developer you’re not having to operate on how many degrees [it’s] open,” said Federighi. “We can deliver a really standard and consistent experience across apps.”</p><p>Meanwhile, Samsung abandoned its similar Flex mode for the <a href="https://www.tomsguide.com/phones/samsung-phones/samsung-galaxy-z-fold-8-review-wide-for-the-win"><u>Galaxy Z Fold 8</u></a>, reserving this feature only for the <a href="https://www.tomsguide.com/phones/samsung-phones/samsung-galaxy-z-fold-8-ultra-review"><u>Fold 8 Ultra</u></a>.</p><p>“There are choices that Samsung previously tried that Apple is revisiting, including hinges that open at different angles and under-display selfie cameras,” said Avi Greengart, founder and lead analyst at Techsponential. “The different hinge postures are well-supported in iOS27 with interface elements and are a clear win for Apple.”</p><h2 id="a-seamless-transition-but-what-about-multitasking">A seamless transition, but what about multitasking?</h2><div class="looped-video"><video class="lazyload-in-view lazyloading" data-src="https://cdn.mos.cms.futurecdn.net/aqxFE2U2HAYdiGKe3CtHtP/Apple-iPhone-Duo-multitasking-260909.mp4" autoplay loop muted playsinline src="https://cdn.mos.cms.futurecdn.net/aqxFE2U2HAYdiGKe3CtHtP/Apple-iPhone-Duo-multitasking-260909.mp4"></video></div><p>Apple has taken a lot of heat for how much buzz the transition animation has gotten that takes you from the inner to the outer display. But it does make the device feel magical.</p><p>And if this effect was just eye candy, then you wouldn’t have developers racing to copy the effect within the first day. </p><p>To be fair, the iPhone Duo is limited when it comes to multitasking. You can only run two apps side by side, whereas the Galaxy Z Fold 8 lets you run three apps at once, plus put floating windows on top. The Xiaomi 18 Fold lets you run up to eight apps.</p><p>So it remains to be seen if the Duo is versatile enough in this category.</p><p>However, I do give Apple credit for how it enabled Split View. The two sides feel like independent desktops or workspaces. It feels natural when you’re using it.</p><h2 id="the-iphone-duo-app-difference">The iPhone Duo app difference</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="vHxTDrc3YV6DT2rVpf9Sp8" name="Apple-iPhone-Duo-Slack" alt="iPhone Duo apps" src="https://cdn.mos.cms.futurecdn.net/vHxTDrc3YV6DT2rVpf9Sp8-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Slack on the iPhone Duo </span><span class="credit" itemprop="copyrightHolder">(Image credit: Apple)</span></figcaption></figure><p>Apple hasn’t shared much in the way of third-party applications yet, but what I’ve seen so far looks promising.</p><p>On Slack, for example, you’ll see your rooms and contacts on the left and messages on the right. The last time I checked, Slack was just a stretched out phone app on Android foldables with a ton of wasted space. And Zoom lets you easily see the content being shared and other call participants down below.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="KRgUvBrWECLXj3TF4YNro8" name="Apple-iPhone-Duo-Zoom" alt="iPhone Duo apps" src="https://cdn.mos.cms.futurecdn.net/KRgUvBrWECLXj3TF4YNro8-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Zoom on the iPhone Duo </span><span class="credit" itemprop="copyrightHolder">(Image credit: Apple)</span></figcaption></figure><p>Apple's software experience is extremely polished on the Duo, but Android works fine on foldables,” Greengart said. “The real test will be whether Apple can get developers to update their apps so that the entire experience is fluid and optimized; that's the area where Android falls short.”</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2104103592726765722"><p lang="en" dir="ltr">Duo-Man offers the complete walkman experience on the iPhone Duo. Open the Duo to pick and 'insert' the cassette, Close the Duo to start listening.Yes, I actually recorded the button clicks and static noise from a real Walkman!It was fun making this at @bitrig hacks today. pic.twitter.com/juSrLhofrH<a href="https://twitter.com/cantworkitout/status/2104103592726765722">September 27, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>There's already one independent developer showing off an app for the iPhone Duo that's creating some buzz. Vidit Bhargava has revealed the very retro Duo Man app, which mimics the Sony Walkman experience on the foldable. You open the Duo to pick your music and "insert" the cassette, then close the Duo to start listening.</p><p>I also think it’s telling that Netflix has an iPhone Duo-optimized app on day one for this device, while it refused to make one for the Vision Pro at first. Yes, $2,000 is expensive for a phone, but I don’t think Netflix would have bothered with a Duo app unless it believed this device was going to take off.</p><h2 id="where-android-foldables-still-win">Where Android foldables still win</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="F6qr2SDN3gLqxsmgpqVYsY" name="Fold 8 back 2" alt="Samsung Galaxy Z Fold 8" src="https://cdn.mos.cms.futurecdn.net/F6qr2SDN3gLqxsmgpqVYsY-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>As someone who reviewed the Galaxy Z Fold 8, I really like how thin and light the design is. It's nearly a 2-ounce difference, with the Fold 8 weighing 7.09 ounces, compared to 8.96 ounces for the Duo.</p><p>It makes the iPhone Duo seem bulky by comparison when you hold them both as I did. But there's a benefit to this additional heft.</p><p>"The iPhone Duo is thicker and noticeably heavier than Samsung's Galaxy Z Fold8," Greengart said. That's both a disadvantage and a specific choice: the iPhone Duo is more water and dust resistant compared to most Android foldables.</p><p>It's true that the Fold 8 and Fold 8 Ultra both lack an IP68 rating for water and dust resistance, but the <a href="https://www.tomsguide.com/phones/motorola-phones/motorola-razr-fold-review">Motorola Razr Fold</a> and <a href="https://www.tomsguide.com/phones/google-pixel-phones/google-pixel-11-pro-fold-review">Google Pixel 11 Pro Fold</a> both offer it. </p><p>In addition, the Fold 8 has some really cool software tricks I don't think the iPhone Duo will offer, such as suggesting apps that can open in mult-window mode on the fly. </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:5439px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="DrnkS3FeWHhXivG9osdVqd" name="iPhone Duo-4" alt="iPhone Duo hands on" src="https://cdn.mos.cms.futurecdn.net/DrnkS3FeWHhXivG9osdVqd-1920-80.jpg" mos="" align="middle" fullscreen="" width="5439" height="3059" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>It’s clear that the <a href="https://www.tomsguide.com/phones/iphones/iphone-duo-trade-offs"><u>iPhone Duo has some drawbacks</u></a>, especially for its $2,000 price. It’s heavier and thicker than other foldable phones, and you don’t get iPhone 18 Pro features like a telephoto zoom. </p><p>But the real reason that this device will put other foldable phones on notice is how the hardware and software work together. And I think that will spur more innovation on the Android side, which is good for everyone.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/phones/iphones/the-real-reason-why-iphone-duo-will-beat-all-android-foldable-phones</link>
                                                                            <description>
                            <![CDATA[ The iPhone Duo may lose on certain specs versus Android foldables, but it will likely win on software and apps. And that’s what really counts. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">oKJdDQ8avfFYaZyphpB2bH</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/6RbxqgBQeRcLXmzyc9Sx6d-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 29 Sep 2026 04:30:00 +0000</pubDate>                                                                                                                                <updated>Tue, 29 Sep 2026 19:41:28 +0000</updated>
                                                                                                                                            <category><![CDATA[iPhones]]></category>
                                                    <category><![CDATA[Phones]]></category>
                                                                                                                    <dc:creator><![CDATA[ Mark Spoonauer ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/wtAspSzVfcKLB4JEd39AMo-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Mark Spoonauer is the global editor in chief of Tom&#039;s Guide and has covered technology for over 20 years. He oversees the direction of Tom&#039;s Guide and leads a team of over 25 journalists to bring you our expert buying guides, reviews, news, how-to articles, deals and other coverage.&lt;/p&gt;&lt;p&gt;Mark has a passion for covering all things mobile, having reviewed dozens of smartphones and other gadgets. He enjoys testing the top mobile devices and putting them up against each other in our in-depth face-offs. He also works hand in hand with our editors and testing team to continually improve how we evaluate products. &lt;/p&gt;&lt;p&gt;Having led Tom&#039;s Guide since 2013, Mark has focused on growing the core tech coverage of the site while also expanding into new areas, such as entertainment, fitness and home, recruiting talented writers and editors to help our readers figure out what to buy and how to get the most out of the products and services they use every day. &lt;/p&gt;&lt;p&gt;Mark has spoken at key industry events and appears regularly on TV to discuss the latest trends, including &lt;a href=&quot;https://cheddar.com/media/pixel-watch-gets-a-release-date-at-google-i-o-2022&quot;&gt;Cheddar&lt;/a&gt;, Fox 5, &lt;a href=&quot;https://www.foxbusiness.com/technology/apple-march-event-5g-iphone&quot;&gt;Fox Business&lt;/a&gt; and other outlets. Mark was previously editor in chief of Laptop Mag, and his work has appeared in Wired, Popular Science and Inc. Follow him on Twitter at @mspoonauer.&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/6RbxqgBQeRcLXmzyc9Sx6d-1920-80.jpg">
                                                            <media:credit><![CDATA[Tom&amp;#39;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[iPhone Duo hands on]]></media:description>                                                            <media:text><![CDATA[iPhone Duo hands on]]></media:text>
                                <media:title type="plain"><![CDATA[iPhone Duo hands on]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/6RbxqgBQeRcLXmzyc9Sx6d-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Did you hear about the new <a href="https://www.mi.com/global/discover/article?id=6357"><u>Xiaomi 18 Fold</u></a>? Maybe not, but this foldable phone is getting a lot of attention on YouTube for “beating” the upcoming <a href="https://www.tomsguide.com/phones/iphones/iphone-duo-hands-on-apple-nailed-it-and-just-put-everyone-else-on-notice"><u>iPhone Duo</u></a> at its own game. Here’s just some of the ways it wins.</p><ul><li>It’s lighter</li><li>It’s thinner</li><li>It has a telephoto camera</li><li>It has a bigger battery</li><li>It charges faster</li><li>It’s better at multitasking</li><li>It has a brighter screen</li><li>It’s hundreds cheaper</li></ul><p>As you’ll see in the very slick video by<a href="https://www.youtube.com/@Mrwhosetheboss"> <u>Mrwhosetheboss</u></a>, which at last count has over 16 million views, Xiaomi has superior hardware. On paper. But when he digs deeper a bunch of flaws emerge in this would be iPhone Duo killer.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/eYBEJBfq_Zs" allowfullscreen></iframe></div></div><p>For starters, the phone is made of less durable aluminum, versus the stronger titanium frame on the iPhone Duo. And that durability advantage extends to the Duo’s IP68 rating for water and dust protection, which the Xiaomi lacks.</p><p>In addition, the crease is more noticeable on the Xiaomi 18 Fold because it lacks the Duo’s nano-texture display. Even worse, Mrwhosetheboss found that just opening and closing the Xiaomi foldable resulted in unsettling clicking sounds.</p><p>But the real reason the iPhone Duo is superior is the software experience, specifically how Apple optimized its OS and apps for the foldable form factor. It looks like Xiaomi just threw its regular OS at a foldable, with sometimes awkward and ugly results.</p><p>This is the same reason why the iPhone Duo will likely beat all other Android foldables once it’s released: no other company focuses as obsessively on how the hardware and software work together.</p><h2 id="hardware-software-innovation">Hardware + Software innovation</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4656px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Q9CmG4bSftigAEdPtH3Qqd" name="iPhone Duo-LIST1" alt="iPhone Duo hands on" src="https://cdn.mos.cms.futurecdn.net/Q9CmG4bSftigAEdPtH3Qqd-1920-80.jpg" mos="" align="middle" fullscreen="" width="4656" height="2619" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>For example, Apple redesigned the dock on the iPhone so it sits on the right side, making it easier to reach both when the display is closed and open. The same thing goes with the controls for apps.</p><p>This is admittedly a bummer for left-handed people, but it is a good use of the available space and wider aspect ratio, so you can see more of your content.</p><div class="looped-video"><video class="lazyload-in-view lazyloading" data-src="https://cdn.mos.cms.futurecdn.net/53Tjqd2ZGw3r4mghxSwHMC/Apple-iPhone-Duo-StandBy-260909.mp4" autoplay loop muted playsinline src="https://cdn.mos.cms.futurecdn.net/53Tjqd2ZGw3r4mghxSwHMC/Apple-iPhone-Duo-StandBy-260909.mp4"></video></div><p>In addition, Apple has optimized the software so that apps can adapt based on the “pose” the device is in. For example, when you turn the iPhone Duo upside down in tent mode, it can automatically morph into an alarm clock. And it emits a soft glow when your alarm goes off.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2820px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="aCP29PwqKVRBqd3bbipckc" name="Apple iPhone Duo" alt="iPhone Duo shown half open" src="https://cdn.mos.cms.futurecdn.net/aCP29PwqKVRBqd3bbipckc-1920-80.jpg" mos="" align="middle" fullscreen="" width="2820" height="1586" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Apple)</span></figcaption></figure><p>Apple has also redesigned <a href="https://www.tomsguide.com/phones/iphones/ios-27-7-features-you-need-to-try-first-after-updating"><u>iOS 27</u></a> so that the iPhone Duo reacts as you fold the device. If you fold the phone half way while in Safari, for example, a keyboard will automatically appear at the bottom of the display. And when it’s stood up vertically, you can display your calendar on the left and favorite photos on the right, just like one of the best digital photo frames.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/y227RF0smAg" allowfullscreen></iframe></div></div><p>Apple is making an API available for developers as well to enable them to make apps that can “read” the angle of the hinge, and in an interview with <a href="https://www.youtube.com/watch?v=y227RF0smAg"><u>Donald Decodes on YouTube</u></a> Apple’s Craig Federighi confirmed it’s accurate to within 5 degrees. But he said that most developers will simply be focusing on various pose states for the device, like the book pose, table pose or tent pose. </p><p>“We make those things so that as a developer you’re not having to operate on how many degrees [it’s] open,” said Federighi. “We can deliver a really standard and consistent experience across apps.”</p><p>Meanwhile, Samsung abandoned its similar Flex mode for the <a href="https://www.tomsguide.com/phones/samsung-phones/samsung-galaxy-z-fold-8-review-wide-for-the-win"><u>Galaxy Z Fold 8</u></a>, reserving this feature only for the <a href="https://www.tomsguide.com/phones/samsung-phones/samsung-galaxy-z-fold-8-ultra-review"><u>Fold 8 Ultra</u></a>.</p><p>“There are choices that Samsung previously tried that Apple is revisiting, including hinges that open at different angles and under-display selfie cameras,” said Avi Greengart, founder and lead analyst at Techsponential. “The different hinge postures are well-supported in iOS27 with interface elements and are a clear win for Apple.”</p><h2 id="a-seamless-transition-but-what-about-multitasking">A seamless transition, but what about multitasking?</h2><div class="looped-video"><video class="lazyload-in-view lazyloading" data-src="https://cdn.mos.cms.futurecdn.net/aqxFE2U2HAYdiGKe3CtHtP/Apple-iPhone-Duo-multitasking-260909.mp4" autoplay loop muted playsinline src="https://cdn.mos.cms.futurecdn.net/aqxFE2U2HAYdiGKe3CtHtP/Apple-iPhone-Duo-multitasking-260909.mp4"></video></div><p>Apple has taken a lot of heat for how much buzz the transition animation has gotten that takes you from the inner to the outer display. But it does make the device feel magical.</p><p>And if this effect was just eye candy, then you wouldn’t have developers racing to copy the effect within the first day. </p><p>To be fair, the iPhone Duo is limited when it comes to multitasking. You can only run two apps side by side, whereas the Galaxy Z Fold 8 lets you run three apps at once, plus put floating windows on top. The Xiaomi 18 Fold lets you run up to eight apps.</p><p>So it remains to be seen if the Duo is versatile enough in this category.</p><p>However, I do give Apple credit for how it enabled Split View. The two sides feel like independent desktops or workspaces. It feels natural when you’re using it.</p><h2 id="the-iphone-duo-app-difference">The iPhone Duo app difference</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="vHxTDrc3YV6DT2rVpf9Sp8" name="Apple-iPhone-Duo-Slack" alt="iPhone Duo apps" src="https://cdn.mos.cms.futurecdn.net/vHxTDrc3YV6DT2rVpf9Sp8-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Slack on the iPhone Duo </span><span class="credit" itemprop="copyrightHolder">(Image credit: Apple)</span></figcaption></figure><p>Apple hasn’t shared much in the way of third-party applications yet, but what I’ve seen so far looks promising.</p><p>On Slack, for example, you’ll see your rooms and contacts on the left and messages on the right. The last time I checked, Slack was just a stretched out phone app on Android foldables with a ton of wasted space. And Zoom lets you easily see the content being shared and other call participants down below.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="KRgUvBrWECLXj3TF4YNro8" name="Apple-iPhone-Duo-Zoom" alt="iPhone Duo apps" src="https://cdn.mos.cms.futurecdn.net/KRgUvBrWECLXj3TF4YNro8-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Zoom on the iPhone Duo </span><span class="credit" itemprop="copyrightHolder">(Image credit: Apple)</span></figcaption></figure><p>Apple's software experience is extremely polished on the Duo, but Android works fine on foldables,” Greengart said. “The real test will be whether Apple can get developers to update their apps so that the entire experience is fluid and optimized; that's the area where Android falls short.”</p><div class="see-more see-more--clipped"><figure><blockquote class="twitter-tweet hawk-ignore" data-lang="en" cite="https://twitter.com/cantworkitout/status/2104103592726765722"><p lang="en" dir="ltr">Duo-Man offers the complete walkman experience on the iPhone Duo. Open the Duo to pick and 'insert' the cassette, Close the Duo to start listening.Yes, I actually recorded the button clicks and static noise from a real Walkman!It was fun making this at @bitrig hacks today. pic.twitter.com/juSrLhofrH<a href="https://twitter.com/cantworkitout/status/2104103592726765722">September 27, 2026</a></p></blockquote></figure><div class="see-more__filter"></div></div><p>There's already one independent developer showing off an app for the iPhone Duo that's creating some buzz. Vidit Bhargava has revealed the very retro Duo Man app, which mimics the Sony Walkman experience on the foldable. You open the Duo to pick your music and "insert" the cassette, then close the Duo to start listening.</p><p>I also think it’s telling that Netflix has an iPhone Duo-optimized app on day one for this device, while it refused to make one for the Vision Pro at first. Yes, $2,000 is expensive for a phone, but I don’t think Netflix would have bothered with a Duo app unless it believed this device was going to take off.</p><h2 id="where-android-foldables-still-win">Where Android foldables still win</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="F6qr2SDN3gLqxsmgpqVYsY" name="Fold 8 back 2" alt="Samsung Galaxy Z Fold 8" src="https://cdn.mos.cms.futurecdn.net/F6qr2SDN3gLqxsmgpqVYsY-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>As someone who reviewed the Galaxy Z Fold 8, I really like how thin and light the design is. It's nearly a 2-ounce difference, with the Fold 8 weighing 7.09 ounces, compared to 8.96 ounces for the Duo.</p><p>It makes the iPhone Duo seem bulky by comparison when you hold them both as I did. But there's a benefit to this additional heft.</p><p>"The iPhone Duo is thicker and noticeably heavier than Samsung's Galaxy Z Fold8," Greengart said. That's both a disadvantage and a specific choice: the iPhone Duo is more water and dust resistant compared to most Android foldables.</p><p>It's true that the Fold 8 and Fold 8 Ultra both lack an IP68 rating for water and dust resistance, but the <a href="https://www.tomsguide.com/phones/motorola-phones/motorola-razr-fold-review">Motorola Razr Fold</a> and <a href="https://www.tomsguide.com/phones/google-pixel-phones/google-pixel-11-pro-fold-review">Google Pixel 11 Pro Fold</a> both offer it. </p><p>In addition, the Fold 8 has some really cool software tricks I don't think the iPhone Duo will offer, such as suggesting apps that can open in mult-window mode on the fly. </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:5439px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="DrnkS3FeWHhXivG9osdVqd" name="iPhone Duo-4" alt="iPhone Duo hands on" src="https://cdn.mos.cms.futurecdn.net/DrnkS3FeWHhXivG9osdVqd-1920-80.jpg" mos="" align="middle" fullscreen="" width="5439" height="3059" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>It’s clear that the <a href="https://www.tomsguide.com/phones/iphones/iphone-duo-trade-offs"><u>iPhone Duo has some drawbacks</u></a>, especially for its $2,000 price. It’s heavier and thicker than other foldable phones, and you don’t get iPhone 18 Pro features like a telephoto zoom. </p><p>But the real reason that this device will put other foldable phones on notice is how the hardware and software work together. And I think that will spur more innovation on the Android side, which is good for everyone.</p>
                                                            </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">‘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">‘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[ TIFF may have just unveiled the next big horror hit after 'Obsession' —and Blumhouse paid $10M to get it ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Horror movies have historically never been averse to a good surprise, whether it’s an on-screen jump scare or a 20-something filmmaker turning an ultra-low-budget directorial debut into a global phenomenon, as we saw with Curry Barker’s <strong>"Obsession."</strong> The second after it premiered as part of last fall’s Midnight Madness program at the <strong>Toronto International Film Festival</strong>, it was immediately clear that genre enthusiasts had something special on their hands. That realization was quickly proven when the film took in a staggering $500 million at the box office and turned its young star, Inde Navarette, into an overnight sensation.</p><p>With "Obsession" finding such monumental success, it cemented horror as a genre that actively rewards risk, one where untested directors with tiny budgets can launch themselves onto the scene purely on the strength of their ideas, virtually free from studio interference. In September 2025, TIFF discovered a diamond in the rough and presented it to the world. A year later, only one question remained: Could lightning strike twice?</p><p>Are any of the 2026 festival’s new offerings capable of making a similar impact on popular culture? With this year's TIFF now in the rearview mirror, we can take a look back and see which genre films audiences should be keeping an eye out for ahead of their eventual theatrical releases.</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="the-contenders-39-the-face-of-horror-39-and-39-stuffed-39">The contenders: 'The Face of Horror' and 'Stuffed'</h2><p>"Obsession" fans who loved to hate its classic "nice guy," Bear, might be intrigued by <strong>"The Face of Horror,"</strong> the latest film from "The Love Witch" creator Anna Biller. Set in the Middle Ages, it adapts a classic Japanese ghost story about a wronged woman taking revenge on her cheating lover from beyond the grave. But while it has earned praise for its vibrant Technicolor aesthetics, the film as a whole has proven divisive, making it an unlikely candidate for the kind of widespread crossover appeal "Obsession" generated.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/K0RSqAxbehs" allowfullscreen></iframe></div></div><p>Something like <strong>"Stuffed,"</strong> a taxidermy musical starring Jodie Comer and Harry Melling, might strike a chord with audiences who loved the subversive sense of humor in "Obsession." However, considering its plot revolves around a taxidermist falling in love with a man who volunteered to become the latest piece in her collection, it might wind up being a little too out there for mainstream moviegoers.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/K9F9mVijeNM" allowfullscreen></iframe></div></div><h2 id="the-true-breakout-of-tiff-2026-39-river-39-takes-the-plunge">The true breakout of TIFF 2026: 'River' takes the plunge</h2><p>Then again, measuring potential success using the exact template laid out by "Obsession" might be a mistake. That kind of narrow thinking, after all, is what leads studios to chase the highs of their last hit long after audiences have moved on. "Obsession" was a phenomenon precisely because it came out of nowhere — not something you can easily predict or replicate. But if we’re looking at genre films that garnered a genuinely electric reception at TIFF, <strong>"River"</strong> looks poised to blow up among horror fans. </p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/XlGnmp0lHIc" allowfullscreen></iframe></div></div><p>A sleek slasher set on a river as two siblings prepare to spread their late father’s ashes, it marks the directorial debut of Joshua Giuliano, a fresh new voice in a genre that loves embracing first-time filmmakers. "River" also stars Jessica Rothe, who already boasts serious horror cred thanks to her lead role in "Happy Death Day." Most importantly, Midnight Madness audiences devoured it, leaving the film currently sitting at an impressive 93% on <a href="https://www.rottentomatoes.com/m/river_2026" target="_blank">Rotten Tomatoes</a>.</p><p>In the days following the festival, "River" experienced a massive shift in release plans due to its raucous reception. Originally slated for a direct-to-streaming debut on Shudder (which produced the film), "River" was snapped up by Universal Pictures and Blumhouse-Atomic Monster for a full theatrical release. The studios paid upwards of $10 million for the privilege of distributing Giuliano’s debut effort, making it one of the largest acquisitions of TIFF 2026. (In fact, Blumhouse had already acquired Giuliano’s sophomore film before "River" even premiered, proving their immense faith in the fledgling director.)</p><p>"River" will likely find a devoted audience once it hits theaters, even if it's too soon to say whether it will pull "Obsession"-sized box office numbers. The only thing we know for sure is that horror remains the genre most willing to take risks on small-scale productions, newbie filmmakers, and wildly original ideas. In return, theatrical audiences continue to reward that boldness, making the strongest case possible for the communal cinema experience.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eEq8je"></div>                            </div>                            <script src="https://kwizly.com/embed/eEq8je.js" async></script> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/movies/tiff-may-have-just-unveiled-the-next-big-horror-hit-after-obsession-and-blumhouse-paid-usd10m-to-get-it</link>
                                                                            <description>
                            <![CDATA[ Following a breakout run at TIFF 2026, Joshua Giuliano’s "River" landed a massive $10M deal with Universal and Blumhouse, signaling horror's next big theatrical hit after "Obsession." ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">7Uf4RcFv7ad8sLsTdNydm</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/RTKDtMHftfSwW3TRsqsNy4-1920-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Mon, 28 Sep 2026 09:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Movies]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                                                                                    <dc:creator><![CDATA[ Audrey Fox ]]></dc:creator>                                                                                                        <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/png" url="https://cdn.mos.cms.futurecdn.net/RTKDtMHftfSwW3TRsqsNy4-1920-80.png">
                                                            <media:credit><![CDATA[Universal Pictures UK]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Inde Navarrette as Nikki in &quot;Obsession&quot; (2026).]]></media:description>                                                            <media:text><![CDATA[Inde Navarrette as Nikki in &quot;Obsession&quot; (2026).]]></media:text>
                                <media:title type="plain"><![CDATA[Inde Navarrette as Nikki in &quot;Obsession&quot; (2026).]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/RTKDtMHftfSwW3TRsqsNy4-1920-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Horror movies have historically never been averse to a good surprise, whether it’s an on-screen jump scare or a 20-something filmmaker turning an ultra-low-budget directorial debut into a global phenomenon, as we saw with Curry Barker’s <strong>"Obsession."</strong> The second after it premiered as part of last fall’s Midnight Madness program at the <strong>Toronto International Film Festival</strong>, it was immediately clear that genre enthusiasts had something special on their hands. That realization was quickly proven when the film took in a staggering $500 million at the box office and turned its young star, Inde Navarette, into an overnight sensation.</p><p>With "Obsession" finding such monumental success, it cemented horror as a genre that actively rewards risk, one where untested directors with tiny budgets can launch themselves onto the scene purely on the strength of their ideas, virtually free from studio interference. In September 2025, TIFF discovered a diamond in the rough and presented it to the world. A year later, only one question remained: Could lightning strike twice?</p><p>Are any of the 2026 festival’s new offerings capable of making a similar impact on popular culture? With this year's TIFF now in the rearview mirror, we can take a look back and see which genre films audiences should be keeping an eye out for ahead of their eventual theatrical releases.</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="the-contenders-39-the-face-of-horror-39-and-39-stuffed-39">The contenders: 'The Face of Horror' and 'Stuffed'</h2><p>"Obsession" fans who loved to hate its classic "nice guy," Bear, might be intrigued by <strong>"The Face of Horror,"</strong> the latest film from "The Love Witch" creator Anna Biller. Set in the Middle Ages, it adapts a classic Japanese ghost story about a wronged woman taking revenge on her cheating lover from beyond the grave. But while it has earned praise for its vibrant Technicolor aesthetics, the film as a whole has proven divisive, making it an unlikely candidate for the kind of widespread crossover appeal "Obsession" generated.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/K0RSqAxbehs" allowfullscreen></iframe></div></div><p>Something like <strong>"Stuffed,"</strong> a taxidermy musical starring Jodie Comer and Harry Melling, might strike a chord with audiences who loved the subversive sense of humor in "Obsession." However, considering its plot revolves around a taxidermist falling in love with a man who volunteered to become the latest piece in her collection, it might wind up being a little too out there for mainstream moviegoers.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/K9F9mVijeNM" allowfullscreen></iframe></div></div><h2 id="the-true-breakout-of-tiff-2026-39-river-39-takes-the-plunge">The true breakout of TIFF 2026: 'River' takes the plunge</h2><p>Then again, measuring potential success using the exact template laid out by "Obsession" might be a mistake. That kind of narrow thinking, after all, is what leads studios to chase the highs of their last hit long after audiences have moved on. "Obsession" was a phenomenon precisely because it came out of nowhere — not something you can easily predict or replicate. But if we’re looking at genre films that garnered a genuinely electric reception at TIFF, <strong>"River"</strong> looks poised to blow up among horror fans. </p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/XlGnmp0lHIc" allowfullscreen></iframe></div></div><p>A sleek slasher set on a river as two siblings prepare to spread their late father’s ashes, it marks the directorial debut of Joshua Giuliano, a fresh new voice in a genre that loves embracing first-time filmmakers. "River" also stars Jessica Rothe, who already boasts serious horror cred thanks to her lead role in "Happy Death Day." Most importantly, Midnight Madness audiences devoured it, leaving the film currently sitting at an impressive 93% on <a href="https://www.rottentomatoes.com/m/river_2026" target="_blank">Rotten Tomatoes</a>.</p><p>In the days following the festival, "River" experienced a massive shift in release plans due to its raucous reception. Originally slated for a direct-to-streaming debut on Shudder (which produced the film), "River" was snapped up by Universal Pictures and Blumhouse-Atomic Monster for a full theatrical release. The studios paid upwards of $10 million for the privilege of distributing Giuliano’s debut effort, making it one of the largest acquisitions of TIFF 2026. (In fact, Blumhouse had already acquired Giuliano’s sophomore film before "River" even premiered, proving their immense faith in the fledgling director.)</p><p>"River" will likely find a devoted audience once it hits theaters, even if it's too soon to say whether it will pull "Obsession"-sized box office numbers. The only thing we know for sure is that horror remains the genre most willing to take risks on small-scale productions, newbie filmmakers, and wildly original ideas. In return, theatrical audiences continue to reward that boldness, making the strongest case possible for the communal cinema experience.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eEq8je"></div>                            </div>                            <script src="https://kwizly.com/embed/eEq8je.js" async></script>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I’ve been testing this budget Apple Studio Display alternative — and it’s actually better for work and gaming ]]></title>
                                                                                                <dc:content><![CDATA[ <p>If you’re on the hunt for a professional monitor, chances are you’ve considered Apple’s <a href="https://www.tomsguide.com/reviews/apple-studio-display">Studio Display</a> or even the new mini-LED <a href="https://www.tomsguide.com/computing/monitors/apple-studio-display-xdr-review">Studio Display XDR</a>. They’re both great options if you’re looking to give your home office a major upgrade.</p><p>At $1,599 for the standard Studio Display and $3,299 for the Studio Display XDR though, neither of these premium monitors comes cheap. Then when you factor in useful add-ons from Apple like glare-free, nano-texture glass or a <a href="https://www.tomsguide.com/home/home-office/i-added-this-underrated-accessory-to-my-desk-setup-and-its-a-game-changer-for-ergonomics">tilt-and-height-adjustable stand</a>, you’re looking at a very serious investment.</p><p>This is why at Tom’s Guide, we’ve been testing out different Studio Display alternatives. From the <a href="https://www.tomsguide.com/computing/monitors/benq-ma270s-review">BenQ MA270S</a> to the <a href="https://www.tomsguide.com/computing/monitors/msi-pro-max-271upxw12g-review">MSI Pro Max 271UPXW12G</a>, there’s a growing number of creative and professional monitors that give you a similar experience at a fraction of the price. However, while these two options are more affordable, they have the same 27-inch display size as Apple’s Studio Display.</p><p>While 27 inches is the sweet spot for many, once you <a href="https://www.tomsguide.com/computing/monitors/i-just-tested-this-budget-32-inch-4k-gaming-monitor-and-its-the-perfect-upgrade-for-your-ps5-and-xbox-series-x">go up to a 32-inch monitor</a>, it’s hard to go back. That’s why I’ve spent the past month trying out the Innocn CB32U1. Not only is it larger, but it also sports a faster 160Hz refresh rate along with dual HDMI 2.1 ports, which makes it a more work-friendly option than one of the <a href="https://www.tomshardware.com/reviews/best-gaming-monitors,4533.html">best gaming monitors</a>.</p><p>Here’s what it’s been like using this budget-friendly Studio Display alternative as my daily driver — and why I might not be going back to my Apple monitor anytime soon.</p><div class="product"><a data-dimension112="a6497006-ba4b-11f1-9f2e-53fe59121e06" data-action="Deal Block" data-label="CB32U1 32-inch 4K monitor" data-dimension48="CB32U1 32-inch 4K monitor" data-dimension25="$522" href="https://www.amazon.com/INNOCN-32-120Hz-Monitor-DisplayPort/dp/B0G6Y762L5" 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:76.67%;"><img id="9D3t4FL5sNLFxnuz9FJJ84" name="CB32U1 32-inch 4K monitor" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/9D3t4FL5sNLFxnuz9FJJ84-1920-80.jpg" mos="" align="middle" fullscreen="" width="1500" height="1150" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/INNOCN-32-120Hz-Monitor-DisplayPort/dp/B0G6Y762L5" target="_blank" rel="nofollow" data-dimension112="a6497006-ba4b-11f1-9f2e-53fe59121e06" data-action="Deal Block" data-label="CB32U1 32-inch 4K monitor" data-dimension48="CB32U1 32-inch 4K monitor" data-dimension25="$522">CB32U1 32-inch 4K monitor: was $549 now $522</a></strong><br>This 32-inch, 4K IPS monitor runs up to 120Hz and comes with an adjustable stand alongside a VESA mounting plate right in the box. Around back, you get a full array of ports including two HDMI 2.1 ports, DisplayPort 1.4, a USB-C port with 90W Power Delivery for single-cable MacBook charging, and an included external USB hub with extra ports and a 3.5mm audio jack. While it lacks built-in speakers, it pairs seamlessly with Mac and console setups alike.</p><p><strong>Price Check: </strong><a href="https://innocn.com/en-us/products/innocn-32-4k-160hz-ips-usb-c-90w-gaming-monitor-cb32u1" target="_blank" rel="nofollow"><strong>$549 @ Innocn</strong></a><a class="view-deal button" href="https://www.amazon.com/INNOCN-32-120Hz-Monitor-DisplayPort/dp/B0G6Y762L5" target="_blank" rel="nofollow" data-dimension112="a6497006-ba4b-11f1-9f2e-53fe59121e06" data-action="Deal Block" data-label="CB32U1 32-inch 4K monitor" data-dimension48="CB32U1 32-inch 4K monitor" data-dimension25="$522">View Deal</a></p></div><h2 id="part-art-part-gaming-monitor">Part art, part gaming monitor</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="WYa2HkjJpDTpP4XiphXW3n" name="Innocn CB321U--6" alt="The Innocn CB32U1 monitor unboxed on a desk" src="https://cdn.mos.cms.futurecdn.net/WYa2HkjJpDTpP4XiphXW3n-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>This is the third Innocn monitor I’ve checked out and one thing that continues to impress me is the sheer amount of cables and accessories in the box. If there’s a port on the monitor, you get a cable for it so you don’t have to scrounge through your <a href="https://www.tomsguide.com/opinion/i-used-this-simple-hack-to-tame-my-tangled-box-of-cables">box of cables</a> while trying to set up your new display. One surprising addition with the CB32U1 was a USB hub with a USB-C connector on one end and a USB-A one on the other, but more on that in a bit.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="SpR99aPMDGjHmyUyti6Fz" name="Innocn CB321U--5" alt="The rear ports on the back of the Innocn CB32U1 monitor" src="https://cdn.mos.cms.futurecdn.net/SpR99aPMDGjHmyUyti6Fz-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 ports, there’s a nice selection of them around back. You get two HDMI 2.1 connections, DisplayPort 1.4, USB-C with 90W of power delivery, and a power port. </p><p>While the previous two Innocn monitors I tested used a standard PC power plug, this one uses a barrel connector and an external power brick. Normally, this would be a downside, but here it works because instead of being tucked on the underside of the display, all of this monitor's ports are located flat on the back — just like on Apple’s Studio Display. </p><p>With its clean white look with silver trim, you wouldn't think you’re dealing with a display capable of handling high refresh rate gaming just as well as photo or video editing.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="vgCUTJuUtTf9Up6hjWepA6" name="Innocn CB321U--4" alt="The back of the Innocn CB32U1 monitor and the included VESA mount adapter" src="https://cdn.mos.cms.futurecdn.net/vgCUTJuUtTf9Up6hjWepA6-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>Given I often prefer using one of the <a href="https://www.tomsguide.com/best-picks/best-monitor-arms">best monitor arms</a> with my desk setups, I always look for standard VESA mounting options when shopping for a new display. While the CB32U1 uses a quick-release mount for its included stand, Innocn does include a VESA adapter plate right in the box if you want to go that route.</p><p>Speaking of the stand, it has a metal base and metal post which makes it feel quite sturdy on your desk. There isn’t a cable cutout on the post, but to be honest, I kind of prefer it that way. With a cutout, you're forced into routing cables a specific way, but here, I was able to cleanly strap all my cables behind the post without any of them peeking out from the front.</p><p>With the Innocn CB32U1 unboxed and set up, it was time to start putting the display through its paces.</p><h2 id="macbook-ready-but-built-for-more">MacBook-ready but built for more</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="tGCxTj9BGYKgzuwPBgCiN9" name="Innocn CB321U--3" alt="Testing the Innocn CB32U1 monitor with a MacBook Pro" src="https://cdn.mos.cms.futurecdn.net/tGCxTj9BGYKgzuwPBgCiN9-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 I usually do when trying out a new monitor, the first thing I did was connect my <a href="https://www.tomsguide.com/computing/macbooks/macbook-pro-m5-review">16-inch MacBook Pro M5</a> to the CB32U1. I was immediately impressed with the display’s color reproduction and just how close it was to my MacBook’s screen — even without switching to its dedicated Mac Mode. With 90W of Power Delivery over USB-C, I was able to use and charge the laptop with a single cable too.</p><p>From there, I decided to build a full desk setup around the CB32U1, utilizing the rest of its ports to connect one of the <a href="https://www.tomsguide.com/us/best-mini-pc.html">best mini PCs</a> and my Nintendo Switch 2. With its ports flat on the back instead of tucked on the underside, I didn’t have to worry about cables poking out underneath the display, which made cable management an absolute breeze. However, I was curious about that included USB hub I mentioned earlier, so I decided to set it up too.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="vMy5gZp9XYRnRKUZS56AeC" name="Innocn CB321U--2" alt="Cable management behind the Innocn CB32U1 monitor showing of the included USB hub" src="https://cdn.mos.cms.futurecdn.net/vMy5gZp9XYRnRKUZS56AeC-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>Even though the CB32U1 doesn’t have a built-in KVM switch like the 5K2K Innocn ultrawide I previously tried out, this USB hub does a great job of making up for it. You plug the primary end into the USB-C port on the back of the monitor and plug the upstream USB-A end into your computer. Once that's done, you get three extra USB ports and a 3.5mm audio jack you can use with a pair of the <a href="https://www.tomsguide.com/us/best-computer-speakers,review-6355.html">best computer speakers</a>.</p><p>Although a built-in KVM switch would have let me switch seamlessly between devices while using the same peripherals, this USB hub — and the way that I installed it — did let me hotswap computers on a whim. For instance, I first used the CB32U1 with the <a href="https://www.reddit.com/r/MiniPCs/comments/1s35f2c/minisforum_atomman_g1_pro_review/">Minisforum G1 Pro</a> as I wanted to put its gaming capabilities to the test but then I ended up swapping that PC out for Apple’s new <a href="https://www.tomsguide.com/computing/apple-desktops/mac-mini-m6-review">Mac mini M6</a> while working on my review. Thanks to having the 2.4 GHz USB dongles for my mechanical keyboard and trackball mouse installed behind the monitor, I didn’t have to unplug or pair anything. Instead, I just used a USB-A to USB-C adapter on the back of the new Mac mini and voila, I was instantly typing away on Apple’s upgraded Mac desktop.</p><p>Editing photos and doing other creative work on the CB32U1 was an absolute joy. While it wasn’t quite as impressive as back when I reviewed the Studio Display XDR, its IPS panel was clear, sharp and most importantly, glare-free. Even though it’s not as advanced as Apple’s etched nano-texture glass, the matte anti-glare coating Innocn used on this display definitely does the trick.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6000px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="mSbKyxnTP48EhMZtDiyzX6" name="Herman Miller Coyl Gaming Desk-3" alt="A person sitting in the Herman Miller Vantum gaming chair playing games at a desk setup built on top of the Herman Miller Coyl Gaming Desk" src="https://cdn.mos.cms.futurecdn.net/mSbKyxnTP48EhMZtDiyzX6-1920-80.jpg" mos="" align="middle" fullscreen="" width="6000" height="3376" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>As for gaming on the CB32U1, that was a surprisingly good experience as well. Even though it doesn’t have a 240Hz or 360Hz refresh rate like you often see on high-end gaming monitors, this display has a 144Hz one out of the box, though you can overclock that all the way up to 160Hz. This is more than enough for non-competitive players and it also has AMD FreeSync on board for tear-free variable refresh rate (VRR) gaming.</p><p>One thing that stands out here too is the inclusion of not one but two HDMI 2.1 ports. While most PC players chasing maximum frame rates and performance go with DisplayPort, to play above 60Hz on either the PS5 or Xbox Series X, you need HDMI 2.1. </p><p>I could easily see someone using the CB32U1 for work during the day and then having a console next to it to get in a play session at night. You really do get the best of both worlds here for a lot less than you’d typically spend on a professional monitor from brands like MSI or BenQ and of course, Apple.</p><h2 id="not-quite-an-all-in-one-display">Not quite an all-in-one 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:6000px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="C645sXNpPgYyqmbVs6jbPB" name="Herman Miller Coyl Gaming Desk-6" alt="A desk setup built around the Herman Miller Coyl Gaming Desk" src="https://cdn.mos.cms.futurecdn.net/C645sXNpPgYyqmbVs6jbPB-1920-80.jpg" mos="" align="middle" fullscreen="" width="6000" height="3376" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Now what do you lose out on when going with a more affordable Studio Display alternative like the Innocn CB32U1? For starters, you don’t get an integrated webcam and will need to bring your own. At the same time, unlike with the previous two Innocn monitors I tried out, this one doesn’t have built-in speakers. Now I know monitor speakers leave a lot to be desired, but I still like having them as they can be quite useful in a pinch.</p><p>With this desk setup, I went with the <a href="https://www.tomsguide.com/audio/soundbars/i-tried-this-under-monitor-soundbar-and-its-perfect-for-cramped-desks">BlueAnt Soundblade</a> for audio as this under-monitor soundbar helped me free up valuable desk space. However, it also gave me a place to put Flipper’s BUSY Bar – yes, the same Flipper behind the <a href="https://www.tomsguide.com/opinion/the-flipper-zero-has-gotten-a-bad-rap-why-i-love-this-little-hacking-tool">Flipper Zero</a> — which I’m currently testing out. I initially went without one of the <a href="https://www.tomsguide.com/computing/peripherals/best-webcams">best webcams</a> as I mainly used the CB32U1 for more focused work sessions and some gaming at night. However, I eventually put Logitech’s <a href="https://www.tomsguide.com/computing/i-went-all-in-on-logitechs-mx-master-series-for-my-new-desk-setup-and-this-accessory-was-the-real-game-changer">MX Brio webcam</a> on top of my <a href="https://www.tomsguide.com/computing/i-added-this-dollar50-monitor-light-bar-to-my-desk-setup-and-its-a-game-changer-for-how-i-work">monitor light bar</a> to join a few meetings out here in my game room.</p><p>Adding a pair of speakers — or a soundbar in my case — and a webcam to the CB32U1 is still a whole lot cheaper than what you’d pay for the base model of the Studio Display. While this monitor doesn’t have the same first-party integrations you get with Apple’s premium display, you do get a lot more flexibility when it comes to how you want to set it up. While I would have preferred having a built-in power supply over an external power brick, it’s still better than the hardwired power cable on the Studio Display. Likewise, you’re not just limited to Thunderbolt and can plug whatever you want into this monitor, from your Mac to your consoles to your gaming PC.</p><p>At $549, the CB32U1 is on the expensive side when compared to your standard 32-inch monitor. However, this is a professional monitor for creatives that need a wider and more accurate range of color profiles. You also get high-refresh rate gaming built-in as a nice extra.</p><p>Having used the Innocn CB32U1 for a month now, I haven’t once felt the need to swap it out for my Studio Display or my gaming monitor. If you’re looking for a monitor that’s suitable for both work and play and want one in white without spending a fortune, it could earn a spot on your desk too.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide </span></h3><ul><li><strong></strong><a href="https://www.tomsguide.com/computing/monitors/i-ditched-my-dual-monitor-setup-for-a-single-40-inch-ultrawide-and-two-screens-arent-better-than-one"><strong>I ditched my dual-monitor setup for a single 40-inch ultrawide and two screens aren’t better than one</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/computing/peripherals/i-tried-benqs-new-monitor-light-bar-and-its-ultrasonic-motion-sensor-made-my-desk-feel-like-the-future-heres-how"><strong>I tried this futuristic monitor light bar and now my desk lights itself every time I sit down</strong></a><strong></strong></li><li><strong></strong><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"><strong>I spent a week with dual Apple Studio Displays and realized I’ve been lying to myself about glossy screens for years</strong></a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/monitors/ive-been-testing-a-budget-studio-display-alternative-and-its-actually-better-for-work-and-gaming</link>
                                                                            <description>
                            <![CDATA[ The Innocn CB32U1 delivers Studio Display-like color accuracy and Mac integration, but its faster refresh rate makes it a great stealth gaming monitor. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">ucton6RNSmYMnJQjLaFTkd</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/bsP2hyVxrpjuQCoZ4ZHEKj-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 27 Sep 2026 11:00:00 +0000</pubDate>                                                                                                                                <updated>Sun, 27 Sep 2026 14:54:55 +0000</updated>
                                                                                                                                            <category><![CDATA[Monitors]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Computing Hardware]]></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/bsP2hyVxrpjuQCoZ4ZHEKj-1920-80.jpg">
                                                            <media:credit><![CDATA[Tom&amp;#39;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A desk setup built around the Innocn CB32U1 monitor]]></media:description>                                                            <media:text><![CDATA[A desk setup built around the Innocn CB32U1 monitor]]></media:text>
                                <media:title type="plain"><![CDATA[A desk setup built around the Innocn CB32U1 monitor]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/bsP2hyVxrpjuQCoZ4ZHEKj-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>If you’re on the hunt for a professional monitor, chances are you’ve considered Apple’s <a href="https://www.tomsguide.com/reviews/apple-studio-display">Studio Display</a> or even the new mini-LED <a href="https://www.tomsguide.com/computing/monitors/apple-studio-display-xdr-review">Studio Display XDR</a>. They’re both great options if you’re looking to give your home office a major upgrade.</p><p>At $1,599 for the standard Studio Display and $3,299 for the Studio Display XDR though, neither of these premium monitors comes cheap. Then when you factor in useful add-ons from Apple like glare-free, nano-texture glass or a <a href="https://www.tomsguide.com/home/home-office/i-added-this-underrated-accessory-to-my-desk-setup-and-its-a-game-changer-for-ergonomics">tilt-and-height-adjustable stand</a>, you’re looking at a very serious investment.</p><p>This is why at Tom’s Guide, we’ve been testing out different Studio Display alternatives. From the <a href="https://www.tomsguide.com/computing/monitors/benq-ma270s-review">BenQ MA270S</a> to the <a href="https://www.tomsguide.com/computing/monitors/msi-pro-max-271upxw12g-review">MSI Pro Max 271UPXW12G</a>, there’s a growing number of creative and professional monitors that give you a similar experience at a fraction of the price. However, while these two options are more affordable, they have the same 27-inch display size as Apple’s Studio Display.</p><p>While 27 inches is the sweet spot for many, once you <a href="https://www.tomsguide.com/computing/monitors/i-just-tested-this-budget-32-inch-4k-gaming-monitor-and-its-the-perfect-upgrade-for-your-ps5-and-xbox-series-x">go up to a 32-inch monitor</a>, it’s hard to go back. That’s why I’ve spent the past month trying out the Innocn CB32U1. Not only is it larger, but it also sports a faster 160Hz refresh rate along with dual HDMI 2.1 ports, which makes it a more work-friendly option than one of the <a href="https://www.tomshardware.com/reviews/best-gaming-monitors,4533.html">best gaming monitors</a>.</p><p>Here’s what it’s been like using this budget-friendly Studio Display alternative as my daily driver — and why I might not be going back to my Apple monitor anytime soon.</p><div class="product"><a data-dimension112="a6497006-ba4b-11f1-9f2e-53fe59121e06" data-action="Deal Block" data-label="CB32U1 32-inch 4K monitor" data-dimension48="CB32U1 32-inch 4K monitor" data-dimension25="$522" href="https://www.amazon.com/INNOCN-32-120Hz-Monitor-DisplayPort/dp/B0G6Y762L5" 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:76.67%;"><img id="9D3t4FL5sNLFxnuz9FJJ84" name="CB32U1 32-inch 4K monitor" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/9D3t4FL5sNLFxnuz9FJJ84-1920-80.jpg" mos="" align="middle" fullscreen="" width="1500" height="1150" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/INNOCN-32-120Hz-Monitor-DisplayPort/dp/B0G6Y762L5" target="_blank" rel="nofollow" data-dimension112="a6497006-ba4b-11f1-9f2e-53fe59121e06" data-action="Deal Block" data-label="CB32U1 32-inch 4K monitor" data-dimension48="CB32U1 32-inch 4K monitor" data-dimension25="$522">CB32U1 32-inch 4K monitor: was $549 now $522</a></strong><br>This 32-inch, 4K IPS monitor runs up to 120Hz and comes with an adjustable stand alongside a VESA mounting plate right in the box. Around back, you get a full array of ports including two HDMI 2.1 ports, DisplayPort 1.4, a USB-C port with 90W Power Delivery for single-cable MacBook charging, and an included external USB hub with extra ports and a 3.5mm audio jack. While it lacks built-in speakers, it pairs seamlessly with Mac and console setups alike.</p><p><strong>Price Check: </strong><a href="https://innocn.com/en-us/products/innocn-32-4k-160hz-ips-usb-c-90w-gaming-monitor-cb32u1" target="_blank" rel="nofollow"><strong>$549 @ Innocn</strong></a><a class="view-deal button" href="https://www.amazon.com/INNOCN-32-120Hz-Monitor-DisplayPort/dp/B0G6Y762L5" target="_blank" rel="nofollow" data-dimension112="a6497006-ba4b-11f1-9f2e-53fe59121e06" data-action="Deal Block" data-label="CB32U1 32-inch 4K monitor" data-dimension48="CB32U1 32-inch 4K monitor" data-dimension25="$522">View Deal</a></p></div><h2 id="part-art-part-gaming-monitor">Part art, part gaming monitor</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="WYa2HkjJpDTpP4XiphXW3n" name="Innocn CB321U--6" alt="The Innocn CB32U1 monitor unboxed on a desk" src="https://cdn.mos.cms.futurecdn.net/WYa2HkjJpDTpP4XiphXW3n-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>This is the third Innocn monitor I’ve checked out and one thing that continues to impress me is the sheer amount of cables and accessories in the box. If there’s a port on the monitor, you get a cable for it so you don’t have to scrounge through your <a href="https://www.tomsguide.com/opinion/i-used-this-simple-hack-to-tame-my-tangled-box-of-cables">box of cables</a> while trying to set up your new display. One surprising addition with the CB32U1 was a USB hub with a USB-C connector on one end and a USB-A one on the other, but more on that in a bit.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="SpR99aPMDGjHmyUyti6Fz" name="Innocn CB321U--5" alt="The rear ports on the back of the Innocn CB32U1 monitor" src="https://cdn.mos.cms.futurecdn.net/SpR99aPMDGjHmyUyti6Fz-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 ports, there’s a nice selection of them around back. You get two HDMI 2.1 connections, DisplayPort 1.4, USB-C with 90W of power delivery, and a power port. </p><p>While the previous two Innocn monitors I tested used a standard PC power plug, this one uses a barrel connector and an external power brick. Normally, this would be a downside, but here it works because instead of being tucked on the underside of the display, all of this monitor's ports are located flat on the back — just like on Apple’s Studio Display. </p><p>With its clean white look with silver trim, you wouldn't think you’re dealing with a display capable of handling high refresh rate gaming just as well as photo or video editing.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="vgCUTJuUtTf9Up6hjWepA6" name="Innocn CB321U--4" alt="The back of the Innocn CB32U1 monitor and the included VESA mount adapter" src="https://cdn.mos.cms.futurecdn.net/vgCUTJuUtTf9Up6hjWepA6-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>Given I often prefer using one of the <a href="https://www.tomsguide.com/best-picks/best-monitor-arms">best monitor arms</a> with my desk setups, I always look for standard VESA mounting options when shopping for a new display. While the CB32U1 uses a quick-release mount for its included stand, Innocn does include a VESA adapter plate right in the box if you want to go that route.</p><p>Speaking of the stand, it has a metal base and metal post which makes it feel quite sturdy on your desk. There isn’t a cable cutout on the post, but to be honest, I kind of prefer it that way. With a cutout, you're forced into routing cables a specific way, but here, I was able to cleanly strap all my cables behind the post without any of them peeking out from the front.</p><p>With the Innocn CB32U1 unboxed and set up, it was time to start putting the display through its paces.</p><h2 id="macbook-ready-but-built-for-more">MacBook-ready but built for more</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="tGCxTj9BGYKgzuwPBgCiN9" name="Innocn CB321U--3" alt="Testing the Innocn CB32U1 monitor with a MacBook Pro" src="https://cdn.mos.cms.futurecdn.net/tGCxTj9BGYKgzuwPBgCiN9-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 I usually do when trying out a new monitor, the first thing I did was connect my <a href="https://www.tomsguide.com/computing/macbooks/macbook-pro-m5-review">16-inch MacBook Pro M5</a> to the CB32U1. I was immediately impressed with the display’s color reproduction and just how close it was to my MacBook’s screen — even without switching to its dedicated Mac Mode. With 90W of Power Delivery over USB-C, I was able to use and charge the laptop with a single cable too.</p><p>From there, I decided to build a full desk setup around the CB32U1, utilizing the rest of its ports to connect one of the <a href="https://www.tomsguide.com/us/best-mini-pc.html">best mini PCs</a> and my Nintendo Switch 2. With its ports flat on the back instead of tucked on the underside, I didn’t have to worry about cables poking out underneath the display, which made cable management an absolute breeze. However, I was curious about that included USB hub I mentioned earlier, so I decided to set it up too.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="vMy5gZp9XYRnRKUZS56AeC" name="Innocn CB321U--2" alt="Cable management behind the Innocn CB32U1 monitor showing of the included USB hub" src="https://cdn.mos.cms.futurecdn.net/vMy5gZp9XYRnRKUZS56AeC-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>Even though the CB32U1 doesn’t have a built-in KVM switch like the 5K2K Innocn ultrawide I previously tried out, this USB hub does a great job of making up for it. You plug the primary end into the USB-C port on the back of the monitor and plug the upstream USB-A end into your computer. Once that's done, you get three extra USB ports and a 3.5mm audio jack you can use with a pair of the <a href="https://www.tomsguide.com/us/best-computer-speakers,review-6355.html">best computer speakers</a>.</p><p>Although a built-in KVM switch would have let me switch seamlessly between devices while using the same peripherals, this USB hub — and the way that I installed it — did let me hotswap computers on a whim. For instance, I first used the CB32U1 with the <a href="https://www.reddit.com/r/MiniPCs/comments/1s35f2c/minisforum_atomman_g1_pro_review/">Minisforum G1 Pro</a> as I wanted to put its gaming capabilities to the test but then I ended up swapping that PC out for Apple’s new <a href="https://www.tomsguide.com/computing/apple-desktops/mac-mini-m6-review">Mac mini M6</a> while working on my review. Thanks to having the 2.4 GHz USB dongles for my mechanical keyboard and trackball mouse installed behind the monitor, I didn’t have to unplug or pair anything. Instead, I just used a USB-A to USB-C adapter on the back of the new Mac mini and voila, I was instantly typing away on Apple’s upgraded Mac desktop.</p><p>Editing photos and doing other creative work on the CB32U1 was an absolute joy. While it wasn’t quite as impressive as back when I reviewed the Studio Display XDR, its IPS panel was clear, sharp and most importantly, glare-free. Even though it’s not as advanced as Apple’s etched nano-texture glass, the matte anti-glare coating Innocn used on this display definitely does the trick.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6000px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="mSbKyxnTP48EhMZtDiyzX6" name="Herman Miller Coyl Gaming Desk-3" alt="A person sitting in the Herman Miller Vantum gaming chair playing games at a desk setup built on top of the Herman Miller Coyl Gaming Desk" src="https://cdn.mos.cms.futurecdn.net/mSbKyxnTP48EhMZtDiyzX6-1920-80.jpg" mos="" align="middle" fullscreen="" width="6000" height="3376" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>As for gaming on the CB32U1, that was a surprisingly good experience as well. Even though it doesn’t have a 240Hz or 360Hz refresh rate like you often see on high-end gaming monitors, this display has a 144Hz one out of the box, though you can overclock that all the way up to 160Hz. This is more than enough for non-competitive players and it also has AMD FreeSync on board for tear-free variable refresh rate (VRR) gaming.</p><p>One thing that stands out here too is the inclusion of not one but two HDMI 2.1 ports. While most PC players chasing maximum frame rates and performance go with DisplayPort, to play above 60Hz on either the PS5 or Xbox Series X, you need HDMI 2.1. </p><p>I could easily see someone using the CB32U1 for work during the day and then having a console next to it to get in a play session at night. You really do get the best of both worlds here for a lot less than you’d typically spend on a professional monitor from brands like MSI or BenQ and of course, Apple.</p><h2 id="not-quite-an-all-in-one-display">Not quite an all-in-one 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:6000px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="C645sXNpPgYyqmbVs6jbPB" name="Herman Miller Coyl Gaming Desk-6" alt="A desk setup built around the Herman Miller Coyl Gaming Desk" src="https://cdn.mos.cms.futurecdn.net/C645sXNpPgYyqmbVs6jbPB-1920-80.jpg" mos="" align="middle" fullscreen="" width="6000" height="3376" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Now what do you lose out on when going with a more affordable Studio Display alternative like the Innocn CB32U1? For starters, you don’t get an integrated webcam and will need to bring your own. At the same time, unlike with the previous two Innocn monitors I tried out, this one doesn’t have built-in speakers. Now I know monitor speakers leave a lot to be desired, but I still like having them as they can be quite useful in a pinch.</p><p>With this desk setup, I went with the <a href="https://www.tomsguide.com/audio/soundbars/i-tried-this-under-monitor-soundbar-and-its-perfect-for-cramped-desks">BlueAnt Soundblade</a> for audio as this under-monitor soundbar helped me free up valuable desk space. However, it also gave me a place to put Flipper’s BUSY Bar – yes, the same Flipper behind the <a href="https://www.tomsguide.com/opinion/the-flipper-zero-has-gotten-a-bad-rap-why-i-love-this-little-hacking-tool">Flipper Zero</a> — which I’m currently testing out. I initially went without one of the <a href="https://www.tomsguide.com/computing/peripherals/best-webcams">best webcams</a> as I mainly used the CB32U1 for more focused work sessions and some gaming at night. However, I eventually put Logitech’s <a href="https://www.tomsguide.com/computing/i-went-all-in-on-logitechs-mx-master-series-for-my-new-desk-setup-and-this-accessory-was-the-real-game-changer">MX Brio webcam</a> on top of my <a href="https://www.tomsguide.com/computing/i-added-this-dollar50-monitor-light-bar-to-my-desk-setup-and-its-a-game-changer-for-how-i-work">monitor light bar</a> to join a few meetings out here in my game room.</p><p>Adding a pair of speakers — or a soundbar in my case — and a webcam to the CB32U1 is still a whole lot cheaper than what you’d pay for the base model of the Studio Display. While this monitor doesn’t have the same first-party integrations you get with Apple’s premium display, you do get a lot more flexibility when it comes to how you want to set it up. While I would have preferred having a built-in power supply over an external power brick, it’s still better than the hardwired power cable on the Studio Display. Likewise, you’re not just limited to Thunderbolt and can plug whatever you want into this monitor, from your Mac to your consoles to your gaming PC.</p><p>At $549, the CB32U1 is on the expensive side when compared to your standard 32-inch monitor. However, this is a professional monitor for creatives that need a wider and more accurate range of color profiles. You also get high-refresh rate gaming built-in as a nice extra.</p><p>Having used the Innocn CB32U1 for a month now, I haven’t once felt the need to swap it out for my Studio Display or my gaming monitor. If you’re looking for a monitor that’s suitable for both work and play and want one in white without spending a fortune, it could earn a spot on your desk too.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide </span></h3><ul><li><strong></strong><a href="https://www.tomsguide.com/computing/monitors/i-ditched-my-dual-monitor-setup-for-a-single-40-inch-ultrawide-and-two-screens-arent-better-than-one"><strong>I ditched my dual-monitor setup for a single 40-inch ultrawide and two screens aren’t better than one</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/computing/peripherals/i-tried-benqs-new-monitor-light-bar-and-its-ultrasonic-motion-sensor-made-my-desk-feel-like-the-future-heres-how"><strong>I tried this futuristic monitor light bar and now my desk lights itself every time I sit down</strong></a><strong></strong></li><li><strong></strong><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"><strong>I spent a week with dual Apple Studio Displays and realized I’ve been lying to myself about glossy screens for years</strong></a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I just caught up on the new season of Apple TV’s best comfort watch — and no, it’s not ‘Ted Lasso’ ]]></title>
                                                                                                <dc:content><![CDATA[ <p>I have a confession to make. I totally missed the release of <strong>“Trying” season 5 on Apple TV</strong> over the summer. For me, this is doubly embarrassing. Firstly, because as a streaming editor, it’s my job to be on the pulse of the latest arrivals on the <a href="https://www.tomsguide.com/us/best-streaming-video-services,review-2625.html">best streaming service</a>, and secondly, because I’ve been shouting about (and writing about) this wonderfully warm show for years. </p><p>The moment I discovered that “Trying” season 5 was out, I dropped everything and got down to binge-watching. Within a single day, I’d consumed all eight episodes. That speaks to the easygoing nature of Apple TV’s best comfort watch. And yes, that’s a shot at “Ted Lasso.” The optimistic soccer coach might get all the press, but real ones know that “Trying” is actually the most charming show on the platform. It's a simple series, but so very sweet.</p><p>For those out of the loop, “Trying” follows a young(ish) couple, Nikki (Esther Smith) and Jason (Rafe Spall), who enter the world of adoption after difficulties conceiving a child. With their eccentric friends and family in tow, they navigate the lengthy process while <em>trying </em>to prove they're grown-up enough to handle the responsibilities that come with being parents.</p><p>Across its first four seasons, “Trying” struck a perfect balance between good-natured comedy and a sensitive exploration of deeper issues, like the challenges of the adoption process. In season 5, you'll find more of the same. But that's not a criticism. “Trying” isn’t a show that thrives on shocking mid-series twists, and as a viewer since day one, that’s exactly why I love it.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OqgEne"></div>                            </div>                            <script src="https://kwizly.com/embed/OqgEne.js" async></script><h2 id="trying-remains-sugary-sweet-even-if-it-s-losing-some-steam">‘Trying’ remains sugary sweet (even if it’s losing some steam)</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-_Oxuozsw4" allowfullscreen></iframe></div></div><p>“Trying” season 5 briskly picks up in the wake of season 4’s cliffhanger that saw Princess (Scarlett Rayner) and Tyler’s (Cooper Turner) biological mom, Kat (Charlotte Riley), show up on the doorstep of Nikki and Jason’s London home. The focus of the fifth season is largely on Princess’ attempts to connect with her long-absent biological mother and how Nikki handles this new family dynamic (oddly, Kat seems entirely disinterested in her son, and vice versa). </p><p>Another plot point sees recurring character Scott (Darren Boyd) attempting to row the Atlantic Ocean single-handedly. “Trying” fans know that Scott’s hairbrained schemes never really work out, so unsurprisingly this latest one quickly falls apart. Scott and Sian Brooke's Karen continue to be a highlight, taking the spotlight in the season's best episode, "The Hurricane"</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="tFJy5LoUQ8y9pwrvg4usrA" name="trying-season-5-apple-tv-show-02" alt="Rafe Spall and Esther Smith in "Trying" season 5 on Apple TV." src="https://cdn.mos.cms.futurecdn.net/tFJy5LoUQ8y9pwrvg4usrA-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: Apple)</span></figcaption></figure><p>Overall, it’s an unambitious season of television. The core cast is unchanged, aside from Kat, who was already introduced in a season 4 episode. There is little noticeable character development, and the overarching plot barely develops between episodes. But “Trying” was never about grand multi-episode arcs. It’s a show of simple moments between likeable characters, and in this area, “Trying” season 5 maintains the show’s overall consistency.</p><p>The show's dependable gentle comedy is here in spades, and the banter between Nikki and Jason remains one of “Trying’s” biggest strengths. However, a short-lived arc in which Nikki develops a crush on her attractive new co-worker feels ill-judged. Meritfully, it’s wrapped up without melodrama.</p><p>For the more cynical viewers, there is an argument to be made that “Trying” season 5 fails to justify its own existence. By the end, most characters are in the same spot where they began, and the new story arcs that have sprung up are resolved quickly, or even discarded, such as Jason’s new career training to be a social worker, which amounts to very little over the course of the season.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="UmXjUJvcbdmu5n4XqCnBsA" name="trying-season-5-apple-tv-show-01" alt="Scarlett Rayner and Charlotte Riley in "Trying" season 5 on Apple TV" src="https://cdn.mos.cms.futurecdn.net/UmXjUJvcbdmu5n4XqCnBsA-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: Apple)</span></figcaption></figure><p>I also couldn’t help but notice that “Trying” season 5 doesn’t end with a cliffhanger of its own. Instead, the final scene feels more like a series finale, rather than just the latest chapter coming to an end. I won’t be surprised if “Trying” season 5 marks the end of the show.</p><p>If that is the case, I’m content. We got five seasons of a show that never conquered the mainstream in the way “Ted Lasso” did. It feels like a bit of a miracle we got to spend so much time with Nikki and Jason in a streaming era where unceremonious cancellations are commonplace. And it’s clear at this point that “Trying” has little road left to run. Nikki and Jason have their family and have proved more than capable of providing a loving home.</p><p><em><strong>Watch </strong></em><a href="https://tv.apple.com/gb/show/trying/umc.cmc.6muy4la7lj1omu5nci4bt2m66" target="_blank" rel="nofollow"><em><strong>"Trying" seasons 1- 5</strong></em></a><em><strong> on Apple TV 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/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/apple-tv/apple-tvs-brothers-is-a-delightful-matthew-mcconaughey-and-woody-harrelson-reunion-so-why-am-i-disappointed">Apple TV’s 'Brothers' is a delightful 'True Detective' reunion</a></li><li><a href="https://www.tomsguide.com/entertainment/apple-tv/ted-lasso-season-4-review-i-went-in-deeply-skeptical-i-came-out-a-believer">‘Ted Lasso’ season 4 review: I went in skeptical. I came out a believer</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/apple-tv/i-just-caught-up-on-the-new-season-of-apple-tvs-best-comfort-watch-and-no-its-not-ted-lasso</link>
                                                                            <description>
                            <![CDATA[ I binge-watched all of "Trying" season 5 in a single day, and Apple TV's most comforting show is still a winner, even if it's losing some steam. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">4mauwKv4v3BPXCauaGHDka</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/Y9hkMUaDzhaUqgAq3SzdpY-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 27 Sep 2026 10:15:00 +0000</pubDate>                                                                                                                                <updated>Sun, 27 Sep 2026 12:45:05 +0000</updated>
                                                                                                                                            <category><![CDATA[Apple TV]]></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/Y9hkMUaDzhaUqgAq3SzdpY-1920-80.jpg">
                                                            <media:credit><![CDATA[Apple TV]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Rafe Spall as Jason Ross and Esther Smith as Nikki Newman in Trying on Apple TV]]></media:description>                                                            <media:text><![CDATA[Rafe Spall as Jason Ross and Esther Smith as Nikki Newman in Trying on Apple TV]]></media:text>
                                <media:title type="plain"><![CDATA[Rafe Spall as Jason Ross and Esther Smith as Nikki Newman in Trying on Apple TV]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/Y9hkMUaDzhaUqgAq3SzdpY-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I have a confession to make. I totally missed the release of <strong>“Trying” season 5 on Apple TV</strong> over the summer. For me, this is doubly embarrassing. Firstly, because as a streaming editor, it’s my job to be on the pulse of the latest arrivals on the <a href="https://www.tomsguide.com/us/best-streaming-video-services,review-2625.html">best streaming service</a>, and secondly, because I’ve been shouting about (and writing about) this wonderfully warm show for years. </p><p>The moment I discovered that “Trying” season 5 was out, I dropped everything and got down to binge-watching. Within a single day, I’d consumed all eight episodes. That speaks to the easygoing nature of Apple TV’s best comfort watch. And yes, that’s a shot at “Ted Lasso.” The optimistic soccer coach might get all the press, but real ones know that “Trying” is actually the most charming show on the platform. It's a simple series, but so very sweet.</p><p>For those out of the loop, “Trying” follows a young(ish) couple, Nikki (Esther Smith) and Jason (Rafe Spall), who enter the world of adoption after difficulties conceiving a child. With their eccentric friends and family in tow, they navigate the lengthy process while <em>trying </em>to prove they're grown-up enough to handle the responsibilities that come with being parents.</p><p>Across its first four seasons, “Trying” struck a perfect balance between good-natured comedy and a sensitive exploration of deeper issues, like the challenges of the adoption process. In season 5, you'll find more of the same. But that's not a criticism. “Trying” isn’t a show that thrives on shocking mid-series twists, and as a viewer since day one, that’s exactly why I love it.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OqgEne"></div>                            </div>                            <script src="https://kwizly.com/embed/OqgEne.js" async></script><h2 id="trying-remains-sugary-sweet-even-if-it-s-losing-some-steam">‘Trying’ remains sugary sweet (even if it’s losing some steam)</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-_Oxuozsw4" allowfullscreen></iframe></div></div><p>“Trying” season 5 briskly picks up in the wake of season 4’s cliffhanger that saw Princess (Scarlett Rayner) and Tyler’s (Cooper Turner) biological mom, Kat (Charlotte Riley), show up on the doorstep of Nikki and Jason’s London home. The focus of the fifth season is largely on Princess’ attempts to connect with her long-absent biological mother and how Nikki handles this new family dynamic (oddly, Kat seems entirely disinterested in her son, and vice versa). </p><p>Another plot point sees recurring character Scott (Darren Boyd) attempting to row the Atlantic Ocean single-handedly. “Trying” fans know that Scott’s hairbrained schemes never really work out, so unsurprisingly this latest one quickly falls apart. Scott and Sian Brooke's Karen continue to be a highlight, taking the spotlight in the season's best episode, "The Hurricane"</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="tFJy5LoUQ8y9pwrvg4usrA" name="trying-season-5-apple-tv-show-02" alt="Rafe Spall and Esther Smith in "Trying" season 5 on Apple TV." src="https://cdn.mos.cms.futurecdn.net/tFJy5LoUQ8y9pwrvg4usrA-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: Apple)</span></figcaption></figure><p>Overall, it’s an unambitious season of television. The core cast is unchanged, aside from Kat, who was already introduced in a season 4 episode. There is little noticeable character development, and the overarching plot barely develops between episodes. But “Trying” was never about grand multi-episode arcs. It’s a show of simple moments between likeable characters, and in this area, “Trying” season 5 maintains the show’s overall consistency.</p><p>The show's dependable gentle comedy is here in spades, and the banter between Nikki and Jason remains one of “Trying’s” biggest strengths. However, a short-lived arc in which Nikki develops a crush on her attractive new co-worker feels ill-judged. Meritfully, it’s wrapped up without melodrama.</p><p>For the more cynical viewers, there is an argument to be made that “Trying” season 5 fails to justify its own existence. By the end, most characters are in the same spot where they began, and the new story arcs that have sprung up are resolved quickly, or even discarded, such as Jason’s new career training to be a social worker, which amounts to very little over the course of the season.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="UmXjUJvcbdmu5n4XqCnBsA" name="trying-season-5-apple-tv-show-01" alt="Scarlett Rayner and Charlotte Riley in "Trying" season 5 on Apple TV" src="https://cdn.mos.cms.futurecdn.net/UmXjUJvcbdmu5n4XqCnBsA-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: Apple)</span></figcaption></figure><p>I also couldn’t help but notice that “Trying” season 5 doesn’t end with a cliffhanger of its own. Instead, the final scene feels more like a series finale, rather than just the latest chapter coming to an end. I won’t be surprised if “Trying” season 5 marks the end of the show.</p><p>If that is the case, I’m content. We got five seasons of a show that never conquered the mainstream in the way “Ted Lasso” did. It feels like a bit of a miracle we got to spend so much time with Nikki and Jason in a streaming era where unceremonious cancellations are commonplace. And it’s clear at this point that “Trying” has little road left to run. Nikki and Jason have their family and have proved more than capable of providing a loving home.</p><p><em><strong>Watch </strong></em><a href="https://tv.apple.com/gb/show/trying/umc.cmc.6muy4la7lj1omu5nci4bt2m66" target="_blank" rel="nofollow"><em><strong>"Trying" seasons 1- 5</strong></em></a><em><strong> on Apple TV 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/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/apple-tv/apple-tvs-brothers-is-a-delightful-matthew-mcconaughey-and-woody-harrelson-reunion-so-why-am-i-disappointed">Apple TV’s 'Brothers' is a delightful 'True Detective' reunion</a></li><li><a href="https://www.tomsguide.com/entertainment/apple-tv/ted-lasso-season-4-review-i-went-in-deeply-skeptical-i-came-out-a-believer">‘Ted Lasso’ season 4 review: I went in skeptical. I came out a believer</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I found the best Brad Pitt movie on each of the top streaming services — including my favorite crime-thriller of all time and a Tarantino masterpiece ]]></title>
                                                                                                <dc:content><![CDATA[ <p><strong>Brad Pitt</strong> is the definition of an A-lister. More than 30 years into his career, his star power hasn't faded. Pitt's latest movie, <a href="https://www.tomsguide.com/entertainment/movies/heart-of-the-beast-review-i-wanted-to-love-brad-pitts-new-survival-thriller-then-it-got-really-cheesy">“Heart of the Beast,”</a> is now in theaters, so you might be in the mood to enjoy some of Brad Pitt’s best movies. </p><p>But with a filmography spanning several decades and more than 60 roles to his name, Brad Pitt movies are scattered across the <a href="https://www.tomsguide.com/us/best-streaming-video-services,review-2625.html">best streaming services</a>. So, I’ve combed through the libraries of the biggest platforms to find the best Brad Pitt movie on each. I've got picks on Netflix, Prime Video, HBO Max, Paramount+, Hulu and more. Each offers <em>at least </em>one Brad Pitt movie.</p><p>So, whichever major streamer you’re currently subscribed to, here’s the best Brad Pitt movie on each of the top streaming services. </p><p><em>Note: Peacock is not included in this list because, as of September 25, 2026, it doesn’t have any movies featuring Brad Pitt in its library. </em></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XZqr2O"></div>                            </div>                            <script src="https://kwizly.com/embed/XZqr2O.js" async></script><h3 class="article-body__section" id="section-best-brad-pitt-movie-on-netflix"><span>Best Brad Pitt movie on Netflix</span></h3><h2 id="war-machine-2017">‘War Machine’ (2017)</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/a9Jg20Ukf4E" allowfullscreen></iframe></div></div><p>Earlier this year, Netflix released “War Machine,” an original sci-fi action movie with Alan Ritchson. It created some confusion because the streamer previously released an original movie called “War Machine” in 2017. Granted, this satirical comedy isn’t exactly memorable, and its lukewarm critical reception saw it fade from the spotlight fast. But at present it’s the only Brad Pitt movie available on Netflix, so it wins the spot in this roundup by default. </p><p>Based on Michael Hastings’ non-fiction book, “The Operators,” the movie tells the fictional story of a decorated U.S. military general, Glen McMahon (Pitt), who is dispatched to Afghanistan to “clean up” the situation, eight years into the war effort. Once on the ground, he faces resistance from beleaguered soldiers, stuffy bureaucrats, and a cynical journalist (Scoot McNairy), who is planning a no-holds-barred exposé that could bring McMahon down.</p><p><em><strong>Watch </strong></em><a href="https://www.netflix.com/title/80068327" target="_blank" rel="nofollow"><em><strong>"War Machine" on Netflix</strong></em></a><em><strong> now</strong></em></p><h3 class="article-body__section" id="section-best-brad-pitt-movie-on-prime-video"><span>Best Brad Pitt movie on Prime Video</span></h3><h2 id="once-upon-a-time-in-hollywood-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>Quentin Tarantino’s latest feature, “Once Upon a Time… in Hollywood,” isn’t my favorite movie of his acclaimed filmography, but it might just be his most entertaining. Plus, now is a great time to watch, as Pitt’s character, Cliff Booth, is set to return later this year in a spinoff sequel, “The Further Mis-Adventures of Cliff Booth,” which debuts on Netflix this December. “Hollywood” is Tarantino’s tribute to classic cinema and the era of larger-than-life movie stars. Pitt also won his first Best Supporting Actor Oscar for his performance as Booth.</p><p>Opening in the 1960s, Rick Dalton (Leonardo DiCaprio), a former Western TV star who made the jump to the silver screen, struggles to cope with his fading career as the Los Angeles landscape shifts around him. But at his side is his stunt double and close friend, Cliff Booth (Pitt). The two navigate shifting studio dynamics and A-list egos, while also encountering the infamous Charles Mason (Damon Herriman) and his devoted followers. </p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/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><h3 class="article-body__section" id="section-best-brad-pitt-movie-on-apple-tv"><span>Best Brad Pitt movie on Apple TV</span></h3><h2 id="f1-2025">‘F1’ (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/69ffwl-8pCU" allowfullscreen></iframe></div></div><p>Director Joseph Kosinski proved his ability to capture fast-moving vehicular spectacle with “Top Gun: Maverick,” and the filmmaker followed it up with “F1,” a breakneck sports drama made in collaboration with Formula One. This gives the movie an impressive sense of authenticity, and also a whole truckload of unsubtle product placement. But still, if you want to see Pitt drive some very fast cars, it offers some of the best racing sequences around.</p><p>Pitt plays Sonny Hayes, a washed-up racer who is a whizz behind the wheel but who never lived up to his true potential. He’s given an unexpected shot at the big time when the struggling APXGP team recruits him as their new driver for the upcoming F1 season. Paired with an ambitious but arrogant rookie (Damon Herriman), “F1” is a basic underdog story that follows all the conventions of the sports drama genre but looks darn good doing it.</p><p><em><strong>Watch </strong></em><a href="https://tv.apple.com/us/movie/f1-the-movie/umc.cmc.3t6dvnnr87zwd4wmvpdx5came" target="_blank" rel="nofollow"><em><strong>"F1" on Apple TV</strong></em></a><em><strong> now</strong></em></p><h3 class="article-body__section" id="section-best-brad-pitt-movie-on-hulu"><span>Best Brad Pitt movie on Hulu</span></h3><h2 id="inglourious-basterds-2009">‘Inglourious Basterds’ (2009)</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/KnrRy6kSFF0" allowfullscreen></iframe></div></div><p>Pitt’s first collaboration with Quentin Tarantino came in “Inglourious Basterds,” and to borrow a phrase from his character, Lieutenant Aldo Raine, it “might just be [his] masterpiece.” This sprawling WWII movie plays fast-and-loose with historical fact, but Tarantino delivers a movie that is thrilling, funny, compelling and tragic. Plus, while Pitt deserves his flowers for his work here, it’s Christoph Waltz who steals the show, playing a despicable villain. </p><p>The flick tells two intertwining stories: One sees a French cinema owner, Shosanna (Mélanie Laurent), seek revenge after her Jewish family is murdered by SS officer Hans Landa (Waltz), while the other centers on Lt. Aldo Raine (Pitt), who leads a band of American soldiers behind enemy lines to seek retribution for the German army's war crimes. These two plotlines eventually converge as a daring plot to bring down the Third Reich is sprung. Earlier this year, <a href="https://variety.com/2025/film/news/quentin-tarantino-inglourious-basterds-masterpiece-favorite-1236491539/" target="_blank">Quentin Tarantino labeled</a> “Inglourious Basterds” his “masterpiece,” and I certainly don’t disagree with the celebrated director. </p><p><em><strong>Watch </strong></em><a href="https://www.hulu.com/movie/inglourious-basterds-54da4af5-9c47-48d1-91bf-d05e27024b94" target="_blank" rel="nofollow"><em><strong>“Inglourious Basterds” on Hulu</strong></em></a><em><strong> now</strong></em></p><h3 class="article-body__section" id="section-best-brad-pitt-movie-on-paramount"><span>Best Brad Pitt movie on Paramount+</span></h3><h2 id="seven-1995">‘Seven’ (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/znmZoVkCjpI" allowfullscreen></iframe></div></div><p>Paramount+ is the current streaming home of my personal favorite Brad Pitt movie. In fact, “Seven” is my favorite crime thriller of all time, which is saying something, as I’m a thriller fanatic. Directed by David Fincher (also my favorite director — yes, I’ve used the word favorite a lot!), It’s a dark mystery flick that brings together Fincher’s trademark style with a twisting plot and one of the most shocking (and unsettling) endings in movie history.</p><p>Set in an oppressive city, detective William Somerset (Morgan Freeman) is just a week from retirement when he’s paired with the younger and overly-confident David Mills (Pitt). The two are assigned to investigate a gruesome murder, which quickly spirals into a manhunt for a serial killer who is committing crimes based on the seven deadly sins. If you somehow don’t know how this one ends, then stop reading this article and stream it ASAP.</p><p><em><strong>Watch </strong></em><a href="https://www.paramountplus.com/movies/video/ALVE01KWJ2FGZTEG7AX7Y9D7TNTKC2/" target="_blank" rel="nofollow"><em><strong>"Seven" on Paramount+</strong></em></a><em><strong> now</strong></em></p><h3 class="article-body__section" id="section-best-brad-pitt-movie-on-hbo-max"><span>Best Brad Pitt movie on HBO Max</span></h3><h2 id="interview-with-the-vampire-1994">‘Interview with the Vampire’ (1994)</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/sCmYN6TLd8A" allowfullscreen></iframe></div></div><p>Before the successful TV series on AMC, there was 1996’s “Interview with the Vampire,” a ‘90s gothic horror movie and one of Pitt’s earlier celebrated roles. Based on Anne Rice’s 1976 novel and also starring Tom Cruise, Antonio Banderas, Christian Slater and Kristen Dunst (talk about an impressive cast!), it’s an intriguing tale set over multiple decades that explores what it means to be a creature of the night when morals conflict with a monstrous nature.</p><p>Louis de Pointe du Lac (Pitt) is an 18th-century lord whose encounter with a vampire named Lestat (Cruise) changes his life. At his lowest, Louis accepts Lestat’s offer of being turned into a bloodsucker, but quickly comes to regret the decision. He attempts to forgo giving in to his violent impulses and plans to abandon his creator. But when Lestat turns a young girl (Dunst), Louis feels compelled to stay and serve as her protector. The story unfolds via flashbacks, as Louis is interviewed by a journalist (Slater), hence the title!</p><p><em><strong>Watch </strong></em><a href="https://www.hbomax.com/sg/en/movie/a2eb98ac-9c42-4a95-b9d2-ef07b2d73f27" target="_blank" rel="nofollow"><em><strong>"Interview with the Vampire" on HBO Max</strong></em></a><em><strong> now</strong></em></p><h3 class="article-body__section" id="section-best-brad-pitt-movie-on-disney"><span>Best Brad Pitt movie on Disney+</span></h3><h2 id="deadpool-2-2018">‘Deadpool 2’ (2018)</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/D86RtevtfrA" allowfullscreen></iframe></div></div><p>“Deadpool 2” qualifies for this list on something of a technicality. Yes, Pitt does appear in his superhero sequel, but he plays an invisible character. His actual on-screen time can be measured in mere seconds. But hey, even if Pitt’s appearance is minimal, “Deadpool 2” is still a movie worth watching. And fun fact: Pitt was originally considered for the much larger role of Cable, but scheduling conflicts got in the way. Josh Brolin took on the part instead.</p><p>Released when Deadpool was still part of the Fox Marvel Universe, the sequel sees Wade Wilson (Ryan Reynolds) become the reluctant protector of a young mutant, Russell (Julian Dennison), who is being hunted by a time-travelling mercenary who believes that killing the youngster will change the future and therefore save his wife and daughter. It’s a quippy, action-packed follow-up, with the larger budget over its predecessor put to good use.</p><p><em><strong>Watch </strong></em><a href="https://www.disneyplus.com/browse/entity-27e84e56-31d3-4813-91ba-602cb52890f1" target="_blank" rel="nofollow"><em><strong>"Deadpool 2" on Disney+</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/netflix/new-on-netflix-in-september-2026-5-best-movies-and-shows-to-stream-plus-full-release-list">New on Netflix in September 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/movies/how-well-do-you-remember-80s-sci-fi-movies-our-quiz-will-test-you-from-star-wars-to-back-to-the-future">How well do you remember ‘80s sci-fi movies? Take our quiz!</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/movies/i-found-the-best-brad-pitt-movie-on-each-of-the-top-streaming-services-including-my-favorite-crime-thriller-of-all-time-and-a-tarantino-masterpiece</link>
                                                                            <description>
                            <![CDATA[ To mark Brad Pitt's latest movie, "Heart of the Beast," openning in theaters, I've found the A-lister's best film on each streaming service. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">gW4p9ziLzzWfe2sWXoXwVY</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/EJRi5Ye2HaKjPnoTttaY2G-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 27 Sep 2026 08:45:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Movies]]></category>
                                                    <category><![CDATA[Entertainment]]></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/EJRi5Ye2HaKjPnoTttaY2G-1920-80.jpg">
                                                            <media:credit><![CDATA[Apple]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Bratt Pitt in F1]]></media:description>                                                            <media:text><![CDATA[Bratt Pitt in F1]]></media:text>
                                <media:title type="plain"><![CDATA[Bratt Pitt in F1]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/EJRi5Ye2HaKjPnoTttaY2G-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p><strong>Brad Pitt</strong> is the definition of an A-lister. More than 30 years into his career, his star power hasn't faded. Pitt's latest movie, <a href="https://www.tomsguide.com/entertainment/movies/heart-of-the-beast-review-i-wanted-to-love-brad-pitts-new-survival-thriller-then-it-got-really-cheesy">“Heart of the Beast,”</a> is now in theaters, so you might be in the mood to enjoy some of Brad Pitt’s best movies. </p><p>But with a filmography spanning several decades and more than 60 roles to his name, Brad Pitt movies are scattered across the <a href="https://www.tomsguide.com/us/best-streaming-video-services,review-2625.html">best streaming services</a>. So, I’ve combed through the libraries of the biggest platforms to find the best Brad Pitt movie on each. I've got picks on Netflix, Prime Video, HBO Max, Paramount+, Hulu and more. Each offers <em>at least </em>one Brad Pitt movie.</p><p>So, whichever major streamer you’re currently subscribed to, here’s the best Brad Pitt movie on each of the top streaming services. </p><p><em>Note: Peacock is not included in this list because, as of September 25, 2026, it doesn’t have any movies featuring Brad Pitt in its library. </em></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XZqr2O"></div>                            </div>                            <script src="https://kwizly.com/embed/XZqr2O.js" async></script><h3 class="article-body__section" id="section-best-brad-pitt-movie-on-netflix"><span>Best Brad Pitt movie on Netflix</span></h3><h2 id="war-machine-2017">‘War Machine’ (2017)</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/a9Jg20Ukf4E" allowfullscreen></iframe></div></div><p>Earlier this year, Netflix released “War Machine,” an original sci-fi action movie with Alan Ritchson. It created some confusion because the streamer previously released an original movie called “War Machine” in 2017. Granted, this satirical comedy isn’t exactly memorable, and its lukewarm critical reception saw it fade from the spotlight fast. But at present it’s the only Brad Pitt movie available on Netflix, so it wins the spot in this roundup by default. </p><p>Based on Michael Hastings’ non-fiction book, “The Operators,” the movie tells the fictional story of a decorated U.S. military general, Glen McMahon (Pitt), who is dispatched to Afghanistan to “clean up” the situation, eight years into the war effort. Once on the ground, he faces resistance from beleaguered soldiers, stuffy bureaucrats, and a cynical journalist (Scoot McNairy), who is planning a no-holds-barred exposé that could bring McMahon down.</p><p><em><strong>Watch </strong></em><a href="https://www.netflix.com/title/80068327" target="_blank" rel="nofollow"><em><strong>"War Machine" on Netflix</strong></em></a><em><strong> now</strong></em></p><h3 class="article-body__section" id="section-best-brad-pitt-movie-on-prime-video"><span>Best Brad Pitt movie on Prime Video</span></h3><h2 id="once-upon-a-time-in-hollywood-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>Quentin Tarantino’s latest feature, “Once Upon a Time… in Hollywood,” isn’t my favorite movie of his acclaimed filmography, but it might just be his most entertaining. Plus, now is a great time to watch, as Pitt’s character, Cliff Booth, is set to return later this year in a spinoff sequel, “The Further Mis-Adventures of Cliff Booth,” which debuts on Netflix this December. “Hollywood” is Tarantino’s tribute to classic cinema and the era of larger-than-life movie stars. Pitt also won his first Best Supporting Actor Oscar for his performance as Booth.</p><p>Opening in the 1960s, Rick Dalton (Leonardo DiCaprio), a former Western TV star who made the jump to the silver screen, struggles to cope with his fading career as the Los Angeles landscape shifts around him. But at his side is his stunt double and close friend, Cliff Booth (Pitt). The two navigate shifting studio dynamics and A-list egos, while also encountering the infamous Charles Mason (Damon Herriman) and his devoted followers. </p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/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><h3 class="article-body__section" id="section-best-brad-pitt-movie-on-apple-tv"><span>Best Brad Pitt movie on Apple TV</span></h3><h2 id="f1-2025">‘F1’ (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/69ffwl-8pCU" allowfullscreen></iframe></div></div><p>Director Joseph Kosinski proved his ability to capture fast-moving vehicular spectacle with “Top Gun: Maverick,” and the filmmaker followed it up with “F1,” a breakneck sports drama made in collaboration with Formula One. This gives the movie an impressive sense of authenticity, and also a whole truckload of unsubtle product placement. But still, if you want to see Pitt drive some very fast cars, it offers some of the best racing sequences around.</p><p>Pitt plays Sonny Hayes, a washed-up racer who is a whizz behind the wheel but who never lived up to his true potential. He’s given an unexpected shot at the big time when the struggling APXGP team recruits him as their new driver for the upcoming F1 season. Paired with an ambitious but arrogant rookie (Damon Herriman), “F1” is a basic underdog story that follows all the conventions of the sports drama genre but looks darn good doing it.</p><p><em><strong>Watch </strong></em><a href="https://tv.apple.com/us/movie/f1-the-movie/umc.cmc.3t6dvnnr87zwd4wmvpdx5came" target="_blank" rel="nofollow"><em><strong>"F1" on Apple TV</strong></em></a><em><strong> now</strong></em></p><h3 class="article-body__section" id="section-best-brad-pitt-movie-on-hulu"><span>Best Brad Pitt movie on Hulu</span></h3><h2 id="inglourious-basterds-2009">‘Inglourious Basterds’ (2009)</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/KnrRy6kSFF0" allowfullscreen></iframe></div></div><p>Pitt’s first collaboration with Quentin Tarantino came in “Inglourious Basterds,” and to borrow a phrase from his character, Lieutenant Aldo Raine, it “might just be [his] masterpiece.” This sprawling WWII movie plays fast-and-loose with historical fact, but Tarantino delivers a movie that is thrilling, funny, compelling and tragic. Plus, while Pitt deserves his flowers for his work here, it’s Christoph Waltz who steals the show, playing a despicable villain. </p><p>The flick tells two intertwining stories: One sees a French cinema owner, Shosanna (Mélanie Laurent), seek revenge after her Jewish family is murdered by SS officer Hans Landa (Waltz), while the other centers on Lt. Aldo Raine (Pitt), who leads a band of American soldiers behind enemy lines to seek retribution for the German army's war crimes. These two plotlines eventually converge as a daring plot to bring down the Third Reich is sprung. Earlier this year, <a href="https://variety.com/2025/film/news/quentin-tarantino-inglourious-basterds-masterpiece-favorite-1236491539/" target="_blank">Quentin Tarantino labeled</a> “Inglourious Basterds” his “masterpiece,” and I certainly don’t disagree with the celebrated director. </p><p><em><strong>Watch </strong></em><a href="https://www.hulu.com/movie/inglourious-basterds-54da4af5-9c47-48d1-91bf-d05e27024b94" target="_blank" rel="nofollow"><em><strong>“Inglourious Basterds” on Hulu</strong></em></a><em><strong> now</strong></em></p><h3 class="article-body__section" id="section-best-brad-pitt-movie-on-paramount"><span>Best Brad Pitt movie on Paramount+</span></h3><h2 id="seven-1995">‘Seven’ (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/znmZoVkCjpI" allowfullscreen></iframe></div></div><p>Paramount+ is the current streaming home of my personal favorite Brad Pitt movie. In fact, “Seven” is my favorite crime thriller of all time, which is saying something, as I’m a thriller fanatic. Directed by David Fincher (also my favorite director — yes, I’ve used the word favorite a lot!), It’s a dark mystery flick that brings together Fincher’s trademark style with a twisting plot and one of the most shocking (and unsettling) endings in movie history.</p><p>Set in an oppressive city, detective William Somerset (Morgan Freeman) is just a week from retirement when he’s paired with the younger and overly-confident David Mills (Pitt). The two are assigned to investigate a gruesome murder, which quickly spirals into a manhunt for a serial killer who is committing crimes based on the seven deadly sins. If you somehow don’t know how this one ends, then stop reading this article and stream it ASAP.</p><p><em><strong>Watch </strong></em><a href="https://www.paramountplus.com/movies/video/ALVE01KWJ2FGZTEG7AX7Y9D7TNTKC2/" target="_blank" rel="nofollow"><em><strong>"Seven" on Paramount+</strong></em></a><em><strong> now</strong></em></p><h3 class="article-body__section" id="section-best-brad-pitt-movie-on-hbo-max"><span>Best Brad Pitt movie on HBO Max</span></h3><h2 id="interview-with-the-vampire-1994">‘Interview with the Vampire’ (1994)</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/sCmYN6TLd8A" allowfullscreen></iframe></div></div><p>Before the successful TV series on AMC, there was 1996’s “Interview with the Vampire,” a ‘90s gothic horror movie and one of Pitt’s earlier celebrated roles. Based on Anne Rice’s 1976 novel and also starring Tom Cruise, Antonio Banderas, Christian Slater and Kristen Dunst (talk about an impressive cast!), it’s an intriguing tale set over multiple decades that explores what it means to be a creature of the night when morals conflict with a monstrous nature.</p><p>Louis de Pointe du Lac (Pitt) is an 18th-century lord whose encounter with a vampire named Lestat (Cruise) changes his life. At his lowest, Louis accepts Lestat’s offer of being turned into a bloodsucker, but quickly comes to regret the decision. He attempts to forgo giving in to his violent impulses and plans to abandon his creator. But when Lestat turns a young girl (Dunst), Louis feels compelled to stay and serve as her protector. The story unfolds via flashbacks, as Louis is interviewed by a journalist (Slater), hence the title!</p><p><em><strong>Watch </strong></em><a href="https://www.hbomax.com/sg/en/movie/a2eb98ac-9c42-4a95-b9d2-ef07b2d73f27" target="_blank" rel="nofollow"><em><strong>"Interview with the Vampire" on HBO Max</strong></em></a><em><strong> now</strong></em></p><h3 class="article-body__section" id="section-best-brad-pitt-movie-on-disney"><span>Best Brad Pitt movie on Disney+</span></h3><h2 id="deadpool-2-2018">‘Deadpool 2’ (2018)</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/D86RtevtfrA" allowfullscreen></iframe></div></div><p>“Deadpool 2” qualifies for this list on something of a technicality. Yes, Pitt does appear in his superhero sequel, but he plays an invisible character. His actual on-screen time can be measured in mere seconds. But hey, even if Pitt’s appearance is minimal, “Deadpool 2” is still a movie worth watching. And fun fact: Pitt was originally considered for the much larger role of Cable, but scheduling conflicts got in the way. Josh Brolin took on the part instead.</p><p>Released when Deadpool was still part of the Fox Marvel Universe, the sequel sees Wade Wilson (Ryan Reynolds) become the reluctant protector of a young mutant, Russell (Julian Dennison), who is being hunted by a time-travelling mercenary who believes that killing the youngster will change the future and therefore save his wife and daughter. It’s a quippy, action-packed follow-up, with the larger budget over its predecessor put to good use.</p><p><em><strong>Watch </strong></em><a href="https://www.disneyplus.com/browse/entity-27e84e56-31d3-4813-91ba-602cb52890f1" target="_blank" rel="nofollow"><em><strong>"Deadpool 2" on Disney+</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/netflix/new-on-netflix-in-september-2026-5-best-movies-and-shows-to-stream-plus-full-release-list">New on Netflix in September 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/movies/how-well-do-you-remember-80s-sci-fi-movies-our-quiz-will-test-you-from-star-wars-to-back-to-the-future">How well do you remember ‘80s sci-fi movies? Take our quiz!</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 3 Apple TV shows that are perfect ‘cozy escapes’ for a rainy weekend ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The end of September's been a soggy one this year, and the weather man says that ain't liable to change anytime soon. If the rain has you stuck inside this weekend, you owe it to yourself to check out some of the best shows on TV right now, the bulk of which are on Apple TV. </p><p>This perfect napping weather has me hitting couch-potato levels of productivity, an  Apple TV is home to many charming TV shows you can binge in a weekend. Whether you're looking for a cozy mystery with some gorgeous Irish scenery (and deliciously messy sibling dynamics) or a heartwarming drama about adult friendships, there's something for everyone's watchlist. </p><p>Ones like "Ted Lasso" get thrown around so much, I thought I'd skip the obvious suggestions you may have already heard about or watched. And keep in mind, a "cozy" show doesn't always mean cozy subject matter. In this age of true crime obsession and insane headlines, even hit spy thrillers like "Slow Horses" can feel like comfort TV. </p><p>So camp out with a mug of hot cocoa, a comfy blanket, and settle in for these cozy Apple TV series that deserve a spot on your watchlist. </p><h2 id="39-bad-sisters-39">'Bad Sisters'</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/IZUrhfCl0Xc" allowfullscreen></iframe></div></div><p>As one of three sisters, “Bad Sisters” was always gonna hit me hard, but my bias aside, it really is the perfect bite-size saga to binge over a weekend. Granted, “murder mystery” might not be the first thing that comes to mind when you think of a cozy watch, but its dreamy coastal Irish setting, gloriously messy family dynamics (siblings, amirite?), and distinct lack of gory bits make it easy to get swept up in. It’s part pitch-black comedy and part mystery thriller, with enough twists and turns to keep you guessing about who, if anyone, is going to make it out of this mess unscathed.</p><p>At the center are the close-knit Garvey sisters — Grace (Anne-Marie Duff), Eva (Sharon Horgan), Ursula (Eva Birthistle), Bibi (Sarah Greene) and Becka (Eve Hewson). When Grace’s husband, John Paul (Claes Bang), proves to be a far cry from the "nice guy" he pretends to be, he earns a place on her sisters' shit list. His fate is sealed from the opening scene, when the sisters gather at his funeral and collectively breathe a sigh of relief. Any one of them could have a motive for wanting him dead, leaving struggling insurance agent Tom Claffin (Brian Gleeson) to figure out what really happened. The suspected murder is problem enough, but there’s another reason he needs answers: paying out John Paul’s life insurance would bankrupt his father’s already struggling agency.</p><p><em><strong>Watch both seasons of </strong></em><a href="https://tv.apple.com/us/show/bad-sisters/umc.cmc.14kr4vv65unannh7doqgvlh20" target="_blank" rel="nofollow"><em><strong>"Bad Sisters" on Apple TV</strong></em></a><em><strong> now</strong></em></p><h2 id="39-platonic-39">'Platonic'</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/Nnn02jJf5ys" allowfullscreen></iframe></div></div><p>There are already plenty of shows out there about how men are lonely and struggle to keep their friendships as they get older, but “Platonic” takes a much funnier approach. Seth Rogen and Rose Byrne have fantastic chemistry as long-estranged best friends Will and Sylvia, who reconnect while both are stumbling through their respective midlife crises. With two comedy heavyweights leading the charge, “Platonic” is easily one of the funniest shows on Apple TV Plus, earning a top spot on our <a href="https://www.tomsguide.com/best-picks/best-apple-tv-plus-shows-and-movies">best Apple TV Plus shows</a> list.</p><p>After Will marries a woman Sylvia can’t stand, their friendship goes on the back burner. Years later, Will is freshly divorced, and the two find themselves back in each other’s orbits. Their reunion is messy from the start, and new relationships threaten to knock them of course once more. In a more conventional rom-com, you’d probably expect these two to eventually fall for each other, but that would completely miss the point of the show’s title. Will and Sylvia are strictly platonic — two codependent idiots trying to rein in their particular brand of chaos, grow up a little, and become better people. </p><p><em><strong>Watch both seasons of </strong></em><a href="https://tv.apple.com/us/show/platonic/umc.cmc.y7bc18x7co813l8i2tlsyb4l" target="_blank" rel="nofollow"><em><strong>"Platonic" on Apple TV</strong></em></a><em><strong> now</strong></em></p><h2 id="39-slow-horses-39">'Slow Horses'</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/xo27sE2fdvs" allowfullscreen></iframe></div></div><p>If there’s one hit show that's really made a name for Apple TV, it's "Slow Horses." The acclaimed spy thriller just launched its sixth season, boasts an impressive 98% critics score on Rotten Tomatoes, and somehow manages to get better with each new installment. Much of that applause goes to Gary Oldman, whose rough-around-the-edges and endlessly watchable performance has further cemented his status as one of the finest actors of his generation.</p><p>“Slow Horses” follows a group of MI5 agents who have been exiled to Slough House, a dumping ground for spies who have botched assignments or screwed up enough to put their careers on ice. Dubbed “slow horses,” they’re stuck handling tedious, thankless work under the watchful eye of the foul-mouthed and perpetually unimpressed Jackson Lamb (Oldman). But despite their reputations as MI5 rejects, the team has a habit of stumbling into dangerous situations, uncovering conspiracies and taking on threats that can rival anything the agency’s elite agents might be up against.</p><p><em><strong>Watch all six seasons of </strong></em><a href="https://tv.apple.com/us/show/slow-horses/umc.cmc.2szz3fdt71tl1ulnbp8utgq5o" target="_blank" rel="nofollow"><em><strong>"Slow Horses" on Apple TV</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/streaming/5-best-new-movies-to-watch-this-weekend-on-netflix-hbo-max-prime-video-and-more-september-26-27">5 best new movies to watch this weekend on Netflix, HBO Max, Prime Video and more (September 26-27)</a></li><li><a href="https://www.tomsguide.com/entertainment/apple-tv/apple-tv-report-card-2026-do-prestige-tv-shows-make-up-for-a-tiny-library">Apple TV Report Card 2026: Do prestige TV shows make up for a tiny library?</a></li><li><a href="https://www.tomsguide.com/news/apple-tv-plus-free-trials">How to get Apple TV for free</a></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> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/streaming/these-3-apple-tv-shows-are-the-ultimate-cozy-escapes-you-need-to-weather-this-rainy-weekend</link>
                                                                            <description>
                            <![CDATA[ September is ending with plenty of showers, and here are some of the best Apple TV shows to get you through. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">WiQoGgSPhuUSxneQbNGoa8</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/6oekf9XrYDbFU33W8nhMfa-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 26 Sep 2026 18:29:00 +0000</pubDate>                                                                                                                                <updated>Sun, 27 Sep 2026 14:56:29 +0000</updated>
                                                                                                                                            <category><![CDATA[Streaming]]></category>
                                                    <category><![CDATA[Entertainment]]></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/6oekf9XrYDbFU33W8nhMfa-1920-80.jpg">
                                                            <media:credit><![CDATA[Apple]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Rose Byrne and Seth Rogen in Platonic]]></media:description>                                                            <media:text><![CDATA[Rose Byrne and Seth Rogen in Platonic]]></media:text>
                                <media:title type="plain"><![CDATA[Rose Byrne and Seth Rogen in Platonic]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/6oekf9XrYDbFU33W8nhMfa-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The end of September's been a soggy one this year, and the weather man says that ain't liable to change anytime soon. If the rain has you stuck inside this weekend, you owe it to yourself to check out some of the best shows on TV right now, the bulk of which are on Apple TV. </p><p>This perfect napping weather has me hitting couch-potato levels of productivity, an  Apple TV is home to many charming TV shows you can binge in a weekend. Whether you're looking for a cozy mystery with some gorgeous Irish scenery (and deliciously messy sibling dynamics) or a heartwarming drama about adult friendships, there's something for everyone's watchlist. </p><p>Ones like "Ted Lasso" get thrown around so much, I thought I'd skip the obvious suggestions you may have already heard about or watched. And keep in mind, a "cozy" show doesn't always mean cozy subject matter. In this age of true crime obsession and insane headlines, even hit spy thrillers like "Slow Horses" can feel like comfort TV. </p><p>So camp out with a mug of hot cocoa, a comfy blanket, and settle in for these cozy Apple TV series that deserve a spot on your watchlist. </p><h2 id="39-bad-sisters-39">'Bad Sisters'</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/IZUrhfCl0Xc" allowfullscreen></iframe></div></div><p>As one of three sisters, “Bad Sisters” was always gonna hit me hard, but my bias aside, it really is the perfect bite-size saga to binge over a weekend. Granted, “murder mystery” might not be the first thing that comes to mind when you think of a cozy watch, but its dreamy coastal Irish setting, gloriously messy family dynamics (siblings, amirite?), and distinct lack of gory bits make it easy to get swept up in. It’s part pitch-black comedy and part mystery thriller, with enough twists and turns to keep you guessing about who, if anyone, is going to make it out of this mess unscathed.</p><p>At the center are the close-knit Garvey sisters — Grace (Anne-Marie Duff), Eva (Sharon Horgan), Ursula (Eva Birthistle), Bibi (Sarah Greene) and Becka (Eve Hewson). When Grace’s husband, John Paul (Claes Bang), proves to be a far cry from the "nice guy" he pretends to be, he earns a place on her sisters' shit list. His fate is sealed from the opening scene, when the sisters gather at his funeral and collectively breathe a sigh of relief. Any one of them could have a motive for wanting him dead, leaving struggling insurance agent Tom Claffin (Brian Gleeson) to figure out what really happened. The suspected murder is problem enough, but there’s another reason he needs answers: paying out John Paul’s life insurance would bankrupt his father’s already struggling agency.</p><p><em><strong>Watch both seasons of </strong></em><a href="https://tv.apple.com/us/show/bad-sisters/umc.cmc.14kr4vv65unannh7doqgvlh20" target="_blank" rel="nofollow"><em><strong>"Bad Sisters" on Apple TV</strong></em></a><em><strong> now</strong></em></p><h2 id="39-platonic-39">'Platonic'</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/Nnn02jJf5ys" allowfullscreen></iframe></div></div><p>There are already plenty of shows out there about how men are lonely and struggle to keep their friendships as they get older, but “Platonic” takes a much funnier approach. Seth Rogen and Rose Byrne have fantastic chemistry as long-estranged best friends Will and Sylvia, who reconnect while both are stumbling through their respective midlife crises. With two comedy heavyweights leading the charge, “Platonic” is easily one of the funniest shows on Apple TV Plus, earning a top spot on our <a href="https://www.tomsguide.com/best-picks/best-apple-tv-plus-shows-and-movies">best Apple TV Plus shows</a> list.</p><p>After Will marries a woman Sylvia can’t stand, their friendship goes on the back burner. Years later, Will is freshly divorced, and the two find themselves back in each other’s orbits. Their reunion is messy from the start, and new relationships threaten to knock them of course once more. In a more conventional rom-com, you’d probably expect these two to eventually fall for each other, but that would completely miss the point of the show’s title. Will and Sylvia are strictly platonic — two codependent idiots trying to rein in their particular brand of chaos, grow up a little, and become better people. </p><p><em><strong>Watch both seasons of </strong></em><a href="https://tv.apple.com/us/show/platonic/umc.cmc.y7bc18x7co813l8i2tlsyb4l" target="_blank" rel="nofollow"><em><strong>"Platonic" on Apple TV</strong></em></a><em><strong> now</strong></em></p><h2 id="39-slow-horses-39">'Slow Horses'</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/xo27sE2fdvs" allowfullscreen></iframe></div></div><p>If there’s one hit show that's really made a name for Apple TV, it's "Slow Horses." The acclaimed spy thriller just launched its sixth season, boasts an impressive 98% critics score on Rotten Tomatoes, and somehow manages to get better with each new installment. Much of that applause goes to Gary Oldman, whose rough-around-the-edges and endlessly watchable performance has further cemented his status as one of the finest actors of his generation.</p><p>“Slow Horses” follows a group of MI5 agents who have been exiled to Slough House, a dumping ground for spies who have botched assignments or screwed up enough to put their careers on ice. Dubbed “slow horses,” they’re stuck handling tedious, thankless work under the watchful eye of the foul-mouthed and perpetually unimpressed Jackson Lamb (Oldman). But despite their reputations as MI5 rejects, the team has a habit of stumbling into dangerous situations, uncovering conspiracies and taking on threats that can rival anything the agency’s elite agents might be up against.</p><p><em><strong>Watch all six seasons of </strong></em><a href="https://tv.apple.com/us/show/slow-horses/umc.cmc.2szz3fdt71tl1ulnbp8utgq5o" target="_blank" rel="nofollow"><em><strong>"Slow Horses" on Apple TV</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/streaming/5-best-new-movies-to-watch-this-weekend-on-netflix-hbo-max-prime-video-and-more-september-26-27">5 best new movies to watch this weekend on Netflix, HBO Max, Prime Video and more (September 26-27)</a></li><li><a href="https://www.tomsguide.com/entertainment/apple-tv/apple-tv-report-card-2026-do-prestige-tv-shows-make-up-for-a-tiny-library">Apple TV Report Card 2026: Do prestige TV shows make up for a tiny library?</a></li><li><a href="https://www.tomsguide.com/news/apple-tv-plus-free-trials">How to get Apple TV for free</a></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>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Fortune's Weave is the best Fire Emblem yet — but not for the reasons you might expect ]]></title>
                                                                                                <dc:content><![CDATA[ <p>I’ve been playing Fire Emblem since I was about 12 — a terrifying 19 years ago. Over that time, I’ve gone back to play the old games alongside the new releases (I daren’t think about how many hours I’ve spent staring at grids). I was a loud voice of request during the series dry spell, and I’ve eaten <em>very </em>well as it has found a new audience in the 3DS, Switch and Switch 2 generations.</p><p>So you can imagine how excited I was to get my mittens on Fire Emblem: Fortune's Weave, the latest <a href="https://www.tomsguide.com/gaming/nintendo/nintendo-switch-2-console-review">Nintendo Switch 2</a> title in the series. The extra power of the system would give Nintendo more space to innovate in a series that’s rarely seen any new features, I thought. The reveal trailer looked promising. The character reveals were tempting. </p><p>And then it arrived in my hands. I’ve now played more hours than I care to admit, and I’ve got an idea of how the game fares compared to its older siblings. </p><p>In a few words — very well. In a few more, Fire Emblem Fortune’s Weave does a great job of bringing loads of cool new stuff to the table. But the best parts are the solidification and perfection of features we’ve been playing for a long time. And that’s pretty cool.</p><div class="product"><a data-dimension112="75c367b4-b83b-11f1-ac58-4b4572b74266" data-action="Deal Block" data-label="Fortune's Weave (Switch 2)" data-dimension48="Fortune's Weave (Switch 2)" data-dimension25="$79" href="https://www.amazon.com/Fire-EmblemTM-Fortunes-Weave-Nintendo-Switch/dp/B0H4NV2MVN/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:926px;"><p class="vanilla-image-block" style="padding-top:161.99%;"><img id="3F8jgKTXSCXaM5v9KoSH4o" name="fire-emblem-fortunes-weave-switchj-2-box" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/3F8jgKTXSCXaM5v9KoSH4o-1920-80.jpg" mos="" align="middle" fullscreen="" width="926" height="1500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/Fire-EmblemTM-Fortunes-Weave-Nintendo-Switch/dp/B0H4NV2MVN/" target="_blank" rel="nofollow" data-dimension112="75c367b4-b83b-11f1-ac58-4b4572b74266" data-action="Deal Block" data-label="Fortune's Weave (Switch 2)" data-dimension48="Fortune's Weave (Switch 2)" data-dimension25="$79">Fortune's Weave (Switch 2): $79</a></strong><br>Fortune's Weave is the latest game in the Fire Emblem series. You play four heroes competing in the Heroic Games, with the fate of the world hanging in the balance. Train your heroes, recruit allies, build bonds, and battle in strategic skirmishes. It's the biggest Fire Emblem yet.<a class="view-deal button" href="https://www.amazon.com/Fire-EmblemTM-Fortunes-Weave-Nintendo-Switch/dp/B0H4NV2MVN/" target="_blank" rel="nofollow" data-dimension112="75c367b4-b83b-11f1-ac58-4b4572b74266" data-action="Deal Block" data-label="Fortune's Weave (Switch 2)" data-dimension48="Fortune's Weave (Switch 2)" data-dimension25="$79">View Deal</a></p></div><h2 id="the-biggest-world-map-so-far">The biggest world map so far</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/L1gvaBYKFy8" allowfullscreen></iframe></div></div><p>Fire Emblem has had some form of map for a long time, and each title has treated it slightly differently, for better or worse. Some have made the map a path your party automatically follows, never allowing you to strengthen your forces beyond the main story missions. Some have given you too much in the world map, allowing you to make your army as overpowered as possible, trivialising the main battles. I’d argue that no game has ever gotten the balance <em>perfect.</em></p><p>Fortune's Weave gets closer than ever. The refresh to the turn system means you need to make more decisions about how far to go around the map, adding an extra layer of thought to proceedings. The time you don’t spend in battles is now more tactical 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.25%;"><img id="NUk6WZkuwHExZRuNbgVNJf" name="fire-emblem-fortunes-weave-switch-2-01" alt="Fire Emblem: Fortune's Weave screenshot taken on Nintendo Switch 2" src="https://cdn.mos.cms.futurecdn.net/NUk6WZkuwHExZRuNbgVNJf-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: Nintendo)</span></figcaption></figure><p>Rather than the free battles seen in <a href="https://www.tomsguide.com/opinion/fire-emblem-three-houses-dialogue-choices">Fire Emblem: Three Houses</a> and Engage, you have to think about how to strengthen your forces. Do you do battle, or use the new “auto free time” feature to gain those precious levels? After all, you could be using those turns for vital exploration, or finding items that might be useful down the line.</p><p>But that takes turns — and turns are money. Watching that timer go down before the next mission, knowing you’ve side quests to do and stuff to find for your soldiers, makes it a whole lot more engaging than it has been before.</p><p>It’s not perfect. Sometimes you feel like you want more turns, and sometimes you want fewer. And remembering to go to the spot where your next mission takes place is irritating — especially when letting those turns run out before the mission time means you have to start a section all over again. But it's the best world map I've experienced in a Fire Emblem game for some time.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-exgM4X"></div>                            </div>                            <script src="https://kwizly.com/embed/exgM4X.js" async></script><h2 id="the-best-those-battles-have-looked">The best those battles have looked</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="XfpfFAvJnXtWPuQX3RnYFf" name="fire-emblem-fortunes-weave-switch-2-02" alt="Fire Emblem: Fortune's Weave screenshot taken on Nintendo Switch 2" src="https://cdn.mos.cms.futurecdn.net/XfpfFAvJnXtWPuQX3RnYFf-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: Nintendo)</span></figcaption></figure><p>Everything feels better balanced this time around. While enemy unit placement still isn’t perfect (no Fire Emblem ever is), which can make for comical conical feeding of sword-based opponents coming up against a one-shot from your perfectly placed armored spearman (called a “guardian” this time around), the battles are more engaging than ever.</p><p>Everything looks slicker and smoother than previous titles. The information you’re given is not only easier to read than in the smaller boxes from old games, but also useful in working out how your tactics are going to play out. </p><p>There’s only so much you can do with a grid, but this is the best that Fire Emblem has ever played or looked. Small things, like improved unit movement prediction, make playing the game more fun than frustrating.</p><h2 id="the-routes-work-better-than-ever">The routes work better than ever</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="3ddiwXHwLSfsXYNKSMCz9f" name="fire-emblem-fortunes-weave-switch-2-03" alt="Fire Emblem: Fortune's Weave screenshot taken on Nintendo Switch 2" src="https://cdn.mos.cms.futurecdn.net/3ddiwXHwLSfsXYNKSMCz9f-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: Nintendo)</span></figcaption></figure><p>Fire Emblem has long flirted with routes that tell different stories with the same characters. There were the Fates games, which let you play different routes depending on the version of the game you bought. It was fine — but it wasn’t perfect. Then Three Houses launched, a fan favorite. As much as I adore that game, the routes system still wasn’t the best; character arcs felt rushed at times, and playing through all of them took <em>ages. </em></p><p>Fortune's Weave trims down the length of each route by quite a margin, and then brings everything together towards the end of the game. There are four routes this time, each with their own main characters and story beats, even though they occur in the same place. You can even recruit characters from one route while you play another — it’s pretty cool.</p><p>It’s also well worth playing through each one. Their unique stories are engaging and interesting, and watching everything fit together as you play feels great. </p><h2 id="it-s-not-all-good-news">It’s not all good news</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="ULktZ5tNHLEDcGtQ5icAze" name="fire-emblem-fortunes-weave-switch-2-04" alt="Fire Emblem: Fortune's Weave screenshot taken on Nintendo Switch 2" src="https://cdn.mos.cms.futurecdn.net/ULktZ5tNHLEDcGtQ5icAze-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: Nintendo)</span></figcaption></figure><p>Some things are missing here. As much as the new dungeon-crawling sections are fun, they are extremely simple and a bit of a drag after a while. There are far fewer support conversations between characters, meaning fewer combat bonuses and less story content. </p><p>The graphics are good, but I don’t feel like I’m playing the Fire Emblem game of the future. The system feels like it's got more to give. The different classes your characters can be feel more restrictive than before, which is annoying.</p><p>But those are minor frustrations in what is otherwise a great game. I’ve already put too many hours in — I can’t wait to add even more.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/gaming/nintendo/best-nintendo-switch-2-games">Best Nintendo Switch 2 games in 2026</a></li><li><a href="https://www.tomsguide.com/gaming/nintendo/i-just-played-elden-ring-on-nintendo-switch-2-and-ill-never-touch-the-steam-deck-oled-version-again">I just played Elden Ring on Nintendo Switch 2 — it was worth the wait</a></li><li><a href="https://www.tomsguide.com/gaming/nintendo/zelda-ocarina-of-time-remake-is-usd10-off-at-amazon-and-walmart-score-a-rare-pre-order-discount-on-the-biggest-switch-2-game-of-2026">Zelda: Ocarina of Time remake is $10 off at Amazon and Walmart</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/gaming/nintendo/fortunes-weave-is-the-best-fire-emblem-yet-but-not-for-the-reasons-you-might-expect</link>
                                                                            <description>
                            <![CDATA[ Fire Emblem: Fortune's Weaves' greatest strength isn't what's new — it's how it improves on mechanics we’ve played for nearly 30 years. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">yw39HMU5S8gz67V2Pw9AZX</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/jNkcGwF5LqtDe7JT3XsVef-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 26 Sep 2026 14:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Nintendo]]></category>
                                                    <category><![CDATA[Gaming]]></category>
                                                                                                                    <dc:creator><![CDATA[ Tammy Rogers ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/n8MswK9ZvXC9mSb5incU44-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Tammy&#039;s reviews and buying guide expertise have more focus than ever on Tom&#039;s Guide, helping buyers find the audio gear that works best for them. Tammy has worked with some of the most desirable audio brands on the planet in her time writing about headphones, speakers, and more, bringing a consumer focussed approach to critique and buying advice. Away from her desk, you&#039;ll probably find her in the countryside writing (extremely bad) poetry, or putting her screenwriting Masters to good use creating screenplays that&#039;ll never see the light of day.&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/jNkcGwF5LqtDe7JT3XsVef-1920-80.jpg">
                                                            <media:credit><![CDATA[Nintendo]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Fire Emblem: Fortune&#039;s Weave screenshot on Switch 2]]></media:description>                                                            <media:text><![CDATA[Fire Emblem: Fortune&#039;s Weave screenshot on Switch 2]]></media:text>
                                <media:title type="plain"><![CDATA[Fire Emblem: Fortune&#039;s Weave screenshot on Switch 2]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/jNkcGwF5LqtDe7JT3XsVef-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I’ve been playing Fire Emblem since I was about 12 — a terrifying 19 years ago. Over that time, I’ve gone back to play the old games alongside the new releases (I daren’t think about how many hours I’ve spent staring at grids). I was a loud voice of request during the series dry spell, and I’ve eaten <em>very </em>well as it has found a new audience in the 3DS, Switch and Switch 2 generations.</p><p>So you can imagine how excited I was to get my mittens on Fire Emblem: Fortune's Weave, the latest <a href="https://www.tomsguide.com/gaming/nintendo/nintendo-switch-2-console-review">Nintendo Switch 2</a> title in the series. The extra power of the system would give Nintendo more space to innovate in a series that’s rarely seen any new features, I thought. The reveal trailer looked promising. The character reveals were tempting. </p><p>And then it arrived in my hands. I’ve now played more hours than I care to admit, and I’ve got an idea of how the game fares compared to its older siblings. </p><p>In a few words — very well. In a few more, Fire Emblem Fortune’s Weave does a great job of bringing loads of cool new stuff to the table. But the best parts are the solidification and perfection of features we’ve been playing for a long time. And that’s pretty cool.</p><div class="product"><a data-dimension112="75c367b4-b83b-11f1-ac58-4b4572b74266" data-action="Deal Block" data-label="Fortune's Weave (Switch 2)" data-dimension48="Fortune's Weave (Switch 2)" data-dimension25="$79" href="https://www.amazon.com/Fire-EmblemTM-Fortunes-Weave-Nintendo-Switch/dp/B0H4NV2MVN/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:926px;"><p class="vanilla-image-block" style="padding-top:161.99%;"><img id="3F8jgKTXSCXaM5v9KoSH4o" name="fire-emblem-fortunes-weave-switchj-2-box" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/3F8jgKTXSCXaM5v9KoSH4o-1920-80.jpg" mos="" align="middle" fullscreen="" width="926" height="1500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/Fire-EmblemTM-Fortunes-Weave-Nintendo-Switch/dp/B0H4NV2MVN/" target="_blank" rel="nofollow" data-dimension112="75c367b4-b83b-11f1-ac58-4b4572b74266" data-action="Deal Block" data-label="Fortune's Weave (Switch 2)" data-dimension48="Fortune's Weave (Switch 2)" data-dimension25="$79">Fortune's Weave (Switch 2): $79</a></strong><br>Fortune's Weave is the latest game in the Fire Emblem series. You play four heroes competing in the Heroic Games, with the fate of the world hanging in the balance. Train your heroes, recruit allies, build bonds, and battle in strategic skirmishes. It's the biggest Fire Emblem yet.<a class="view-deal button" href="https://www.amazon.com/Fire-EmblemTM-Fortunes-Weave-Nintendo-Switch/dp/B0H4NV2MVN/" target="_blank" rel="nofollow" data-dimension112="75c367b4-b83b-11f1-ac58-4b4572b74266" data-action="Deal Block" data-label="Fortune's Weave (Switch 2)" data-dimension48="Fortune's Weave (Switch 2)" data-dimension25="$79">View Deal</a></p></div><h2 id="the-biggest-world-map-so-far">The biggest world map so far</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/L1gvaBYKFy8" allowfullscreen></iframe></div></div><p>Fire Emblem has had some form of map for a long time, and each title has treated it slightly differently, for better or worse. Some have made the map a path your party automatically follows, never allowing you to strengthen your forces beyond the main story missions. Some have given you too much in the world map, allowing you to make your army as overpowered as possible, trivialising the main battles. I’d argue that no game has ever gotten the balance <em>perfect.</em></p><p>Fortune's Weave gets closer than ever. The refresh to the turn system means you need to make more decisions about how far to go around the map, adding an extra layer of thought to proceedings. The time you don’t spend in battles is now more tactical 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.25%;"><img id="NUk6WZkuwHExZRuNbgVNJf" name="fire-emblem-fortunes-weave-switch-2-01" alt="Fire Emblem: Fortune's Weave screenshot taken on Nintendo Switch 2" src="https://cdn.mos.cms.futurecdn.net/NUk6WZkuwHExZRuNbgVNJf-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: Nintendo)</span></figcaption></figure><p>Rather than the free battles seen in <a href="https://www.tomsguide.com/opinion/fire-emblem-three-houses-dialogue-choices">Fire Emblem: Three Houses</a> and Engage, you have to think about how to strengthen your forces. Do you do battle, or use the new “auto free time” feature to gain those precious levels? After all, you could be using those turns for vital exploration, or finding items that might be useful down the line.</p><p>But that takes turns — and turns are money. Watching that timer go down before the next mission, knowing you’ve side quests to do and stuff to find for your soldiers, makes it a whole lot more engaging than it has been before.</p><p>It’s not perfect. Sometimes you feel like you want more turns, and sometimes you want fewer. And remembering to go to the spot where your next mission takes place is irritating — especially when letting those turns run out before the mission time means you have to start a section all over again. But it's the best world map I've experienced in a Fire Emblem game for some time.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-exgM4X"></div>                            </div>                            <script src="https://kwizly.com/embed/exgM4X.js" async></script><h2 id="the-best-those-battles-have-looked">The best those battles have looked</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="XfpfFAvJnXtWPuQX3RnYFf" name="fire-emblem-fortunes-weave-switch-2-02" alt="Fire Emblem: Fortune's Weave screenshot taken on Nintendo Switch 2" src="https://cdn.mos.cms.futurecdn.net/XfpfFAvJnXtWPuQX3RnYFf-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: Nintendo)</span></figcaption></figure><p>Everything feels better balanced this time around. While enemy unit placement still isn’t perfect (no Fire Emblem ever is), which can make for comical conical feeding of sword-based opponents coming up against a one-shot from your perfectly placed armored spearman (called a “guardian” this time around), the battles are more engaging than ever.</p><p>Everything looks slicker and smoother than previous titles. The information you’re given is not only easier to read than in the smaller boxes from old games, but also useful in working out how your tactics are going to play out. </p><p>There’s only so much you can do with a grid, but this is the best that Fire Emblem has ever played or looked. Small things, like improved unit movement prediction, make playing the game more fun than frustrating.</p><h2 id="the-routes-work-better-than-ever">The routes work better than ever</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="3ddiwXHwLSfsXYNKSMCz9f" name="fire-emblem-fortunes-weave-switch-2-03" alt="Fire Emblem: Fortune's Weave screenshot taken on Nintendo Switch 2" src="https://cdn.mos.cms.futurecdn.net/3ddiwXHwLSfsXYNKSMCz9f-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: Nintendo)</span></figcaption></figure><p>Fire Emblem has long flirted with routes that tell different stories with the same characters. There were the Fates games, which let you play different routes depending on the version of the game you bought. It was fine — but it wasn’t perfect. Then Three Houses launched, a fan favorite. As much as I adore that game, the routes system still wasn’t the best; character arcs felt rushed at times, and playing through all of them took <em>ages. </em></p><p>Fortune's Weave trims down the length of each route by quite a margin, and then brings everything together towards the end of the game. There are four routes this time, each with their own main characters and story beats, even though they occur in the same place. You can even recruit characters from one route while you play another — it’s pretty cool.</p><p>It’s also well worth playing through each one. Their unique stories are engaging and interesting, and watching everything fit together as you play feels great. </p><h2 id="it-s-not-all-good-news">It’s not all good news</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="ULktZ5tNHLEDcGtQ5icAze" name="fire-emblem-fortunes-weave-switch-2-04" alt="Fire Emblem: Fortune's Weave screenshot taken on Nintendo Switch 2" src="https://cdn.mos.cms.futurecdn.net/ULktZ5tNHLEDcGtQ5icAze-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: Nintendo)</span></figcaption></figure><p>Some things are missing here. As much as the new dungeon-crawling sections are fun, they are extremely simple and a bit of a drag after a while. There are far fewer support conversations between characters, meaning fewer combat bonuses and less story content. </p><p>The graphics are good, but I don’t feel like I’m playing the Fire Emblem game of the future. The system feels like it's got more to give. The different classes your characters can be feel more restrictive than before, which is annoying.</p><p>But those are minor frustrations in what is otherwise a great game. I’ve already put too many hours in — I can’t wait to add even more.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/gaming/nintendo/best-nintendo-switch-2-games">Best Nintendo Switch 2 games in 2026</a></li><li><a href="https://www.tomsguide.com/gaming/nintendo/i-just-played-elden-ring-on-nintendo-switch-2-and-ill-never-touch-the-steam-deck-oled-version-again">I just played Elden Ring on Nintendo Switch 2 — it was worth the wait</a></li><li><a href="https://www.tomsguide.com/gaming/nintendo/zelda-ocarina-of-time-remake-is-usd10-off-at-amazon-and-walmart-score-a-rare-pre-order-discount-on-the-biggest-switch-2-game-of-2026">Zelda: Ocarina of Time remake is $10 off at Amazon and Walmart</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Denzel Washington and Gary Oldman's post-apocalyptic neo-Western movie is a flawed but worthwhile re-watch 16 years later ]]></title>
                                                                                                <dc:content><![CDATA[ <div  class="fancy-box"><div class="fancy_box-title">The Tom's Guide verdict: 'The Book of Eli' (2010)</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>Rating: 3/5 stars</strong></p><p class="fancy-box__body-text"><strong>Verdict:</strong> Three stars might be generous, but the potential of this movie and the world it builds has me grading it on a slight curve. It's flawed; the dated action cinematography and a poor performance from Mila Kunis prevent this film from rising to the next step. But Denzel's combat moves presage his later performances in "The Equalizer" franchise, while Gary Oldman's vintage villain performances remind us of some of his greatest hits.</p><p class="fancy-box__body-text"><strong>Where to watch: </strong><a data-analytics-id="inline-link" href="https://www.amazon.com/gp/video/detail/B00BWUI6R6" target="_blank" rel="nofollow">Buy or rent "The Book of Eli" on Amazon</a></p></div></div><p>"<strong>The Book of Eli</strong>" was a movie I was really looking forward to in my <a href="https://www.tomsguide.com/tag/denzelwatchathon"><strong>Denzel Watchathon</strong></a>. Not because I think it's one of his seminal works; the movie was poorly reviewed at the time, and I don't recall leaving the theater stunned by anything other than the movie's final twist. I was looking forward to it because I wondered if maybe this post-apocalyptic neo-Western was better than I remember.</p><p>After all, while this movie isn't considered by most (if any) to be one of the best movies Denzel ever starred in, it probably is considered an iconic role. If you looked at the image at the top of this article, you likely recognized the movie it came from. This is also, notably, the first role where he goes full Liam Neeson: acclaimed actor turned combat-focused action star. If it had been his last, then perhaps it wouldn't be noteworthy, but given he did three "Equalizer" movies since this movie, it's an important flashpoint in his career.</p><p>Plus, Denzel's supporting cast and crew, on paper, hint at this movie having serious potential. It's directed by the Hughes brothers, who had already directed "Menace II Society." It's written by Gary Whitta, who would go on to co-write "Rogue One." And alongside Denzel, it stars <em>Sir </em>Gary Oldman and Mila Kunis, who are normally impressive actors.</p><p>I say normally because, while Sir Gary knocks it out of the park, putting on a vintage performance, Ms. Kunis's efforts are less successful. I'm not sure she's necessarily helped by the script or directing, but to me she was a clear weak link in the movie. And it's not a movie without its weaknesses. But despite that, I found it worth rewatching, if for no other reason than to see Denzel and Gary Oldman go head-to-head.</p><p><em>If you want to watch this movie before you read on, you can </em><a href="https://www.amazon.com/gp/video/detail/B00BWUI6R6" target="_blank" rel="nofollow"><em>buy or rent it on Amazon</em></a><em>. Unfortunately, it's not currently available on the </em><a href="https://www.tomsguide.com/us/best-streaming-video-services,review-2625.html"><em>best streaming services</em></a><em> or the </em><a href="https://www.tomsguide.com/best-picks/best-free-streaming-services"><em>best free streaming services</em></a><em>, nor is it available to watch on-demand on any of the </em><a href="https://www.tomsguide.com/us/best-cable-replacements,review-4387.html"><em>best live TV streaming services</em></a><em>.</em></p><h2 id="a-tale-of-two-performances">A tale of two performances</h2><p>I was serious when I said "The Book of Eli" had potential. It's set in a post-nuclear-war apocalyptic wasteland. It stars Denzel as Eli, a man wandering the wilderness, intent on heading west as if he were on a mission from God.</p><p>It turns out he might actually be on a mission from God. As we follow his journey, it's revealed that every Bible in the world has (likely) been destroyed in response to the war that destroyed the world (or at least the U.S.). We then learn that Eli has a Bible in his possession, and that a local warlord, Carnegie (Oldman), desires a copy more than anything in the world.</p><div  class="fancy-box"><div class="fancy_box-title">Read more Denzel Watchathon</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>Here are some of the other Denzel Washington movies I've covered to date in my Denzel Watchathon:</strong></p><p class="fancy-box__body-text"><ul><li><a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/movies/i-just-watched-denzel-washingtons-controversial-first-movie-and-you-can-stream-it-free-right-now">"Carbon Copy" (1981)</a></li><li><a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/movies/this-denzel-washington-political-biopic-is-a-must-watch-in-2026-and-its-an-oscar-worthy-performance">"Cry Freedom" (1987)</a></li><li><a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/movies/denzels-first-oscar-winner-still-holds-up-36-years-later-and-you-can-stream-it-on-netflix-now">"Glory" (1989)</a></li><li><a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/movies/denzel-was-robbed-of-an-oscar-in-this-1992-biopic-stream-it-and-see-for-yourself">"Malcolm X" (1992)</a></li><li><a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/movies/i-just-watched-philadelphia-and-i-cant-believe-this-was-the-only-time-tom-hanks-and-denzel-teamed-up-for-a-movie">"Philadelphia" (1993)</a></li><li><a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/movies/over-30-years-later-this-denzel-washington-and-gene-hackman-action-thriller-is-still-one-of-my-favorite-movies">"Crimson Tide" (1995)</a></li><li><a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/movies/i-just-rewatched-remember-the-titans-and-ironically-i-forgot-how-good-denzel-washington-is-in-this-sports-movie">"Remember the Titans" (2000)</a></li><li><a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/movies/nearly-25-years-later-training-day-remains-denzel-washingtons-greatest-performance-ever">"Training Day" (2001)</a></li><li><a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/movies/this-denzel-washington-action-thriller-was-savaged-by-critics-in-2004-but-over-20-years-later-its-an-undeniable-must-watch">"Man on Fire" (2004)</a></li><li><a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/movies/denzel-still-shines-in-this-2004-psychological-thriller-but-i-think-meryl-streep-steals-the-spotlight">"The Manchurian Candidate" (2004)</a></li><li>"<a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/movies/this-denzel-washington-and-russell-crowe-crime-drama-is-still-great-19-years-later-and-you-can-stream-it-for-free">American Gangster" (2007)</a></li><li><a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/movies/i-just-watched-denzel-washington-and-john-travoltas-action-thriller-remake-and-it-really-goes-off-the-rails">"The Taking of Pelham 123" (2009)</a></li></ul></p><p class="fancy-box__body-text"><strong>Read more: </strong><a data-analytics-id="inline-link" href="https://www.tomsguide.com/tag/denzelwatchathon"><strong>Every Denzel Watchathon movie so far</strong></a><strong></strong></p></div></div><p>I remembered this as a shocking reveal: that Eli had a Bible. But rewatching the movie, I was surprised to find that the film doesn't really hide this fact. It also drops plenty of hints at another key fact about Eli: that he's blind.</p><p>Apologies if that seems like a massive spoiler, but in all honesty, once you know this fact about Eli, it's impossible to miss the little hints the movie drops along the way. The best one is when Eli and Solara, a slave of Carnegie's who runs off with Eli on his westward journey, come across an older couple at the couple's home. They ask Eli, "Didn't you see the No Trespassing sign?" and he responds, truthfully, that he didn't see it. Because it turns out he actually didn't see it.</p><p>Another way that Eli's blindness is obvious in retrospect is his hypersensitivity as a fighter. His reactions seem almost superhuman, and it's clear that the movie is playing on the trope of the blind martial arts master who has turned his disability into an advantage by heightening his other senses. It's Denzel's first real showcase as a martial arts action star, and it's an archetype he'd dip into a few more times after this movie, most notably in the "Equalizer" trilogy.</p><p>But if this was the first of many such performances from Denzel, Oldman's portrayal of Carnegie felt like a throwback. The British icon has portrayed villains to great effect on more than a few occasions, but perhaps my favorite is his performance as DEA agent Norman Stansfield in "Léon: The Professional." It's a truly unhinged portrayal of a truly unhinged man, most well-known today for providing the source material for a meme where Oldman yells "Everyone!" in a deranged fashion. Watching his portrayal of the warlord Carnegie, you can see him slip into that same unhinged mannerism on a few occasions, and you can't help but be reminded of Stansfield.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OoNVoW"></div>                            </div>                            <script src="https://kwizly.com/embed/OoNVoW.js" async></script><h2 id="verdict-i-don-39-t-regret-watching-39-the-book-of-eli-39-even-if-it-let-me-down">Verdict: I don't regret watching 'The Book of Eli,' even if it let me down</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/zSMHmtaoXtI" allowfullscreen></iframe></div></div><p>Unfortunately, not everyone's performances are as good as Denzel's and Oldman's. As I already mentioned, Mila Kunis didn't work for me in this movie, which is a shame. I generally like her, and literally a few months after this movie, she put on an <em>incredible</em> performance in "Black Swan," proving that acting talent or a lack thereof isn't her issue.</p><p>I'd say the rest of the cast falls largely into the category of generic or forgettable. That includes an Anthony Hopkins appearance in the final scenes of the movie that I completely forgot existed.</p><p>Despite these flaws, as well as the dated, Zack Snyderesque dark color palette of the film and the equally dated use of "Bullet time" slow-motion, I am still glad I rewatched this movie. It was incredible from an academic standpoint, seeing how Denzel would launch a new phase of his career from this performance and seeing Gary Oldman reach into his villainous past to play an excellent foil to Denzel's Eli. It's also not like I had a bad time — I just know this movie could be so much better.</p><p><a href="https://www.amazon.com/gp/video/detail/B00BWUI6R6" target="_blank" rel="nofollow"><em>Buy or rent "The Book of Eli" on Amazon now</em></a></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/movies/the-weight-pits-ethan-hawke-against-russell-crowe-in-a-dark-heist-movie-thats-a-must-watch-this-weekend">'The Weight' pits Ethan Hawke against Russell Crowe in a dark heist movie that's a must-watch this weekend</a></li><li><a href="https://www.tomsguide.com/us/get-sunday-ticket-without-directv,review-3811.html">How to get NFL Sunday Ticket for 2026-2027 season — Pricing, where to watch and more</a></li><li><a href="https://www.tomsguide.com/entertainment/movies/resident-evil-2026-review">'Resident Evil' review: Officially the best video game movie of all time, but also Zach Cregger's worst</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/movies/denzel-washington-and-gary-oldmans-post-apocalyptic-neo-western-movie-is-a-flawed-but-worthwhile-re-watch-16-years-later</link>
                                                                            <description>
                            <![CDATA[ "The Book of Eli" is a flawed neo-Western. But on occasion, it lives up to its potential, largely thanks to a pair of performances that make it worth a rewatch 16 years later. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">aPWGFQ4mhs7YiGryLtb9tZ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/XAtGDap2AHvpG2hFnRjH3B-1920-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Sat, 26 Sep 2026 12:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Movies]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                                                                <author><![CDATA[ malcolm.mcmillan@futurenet.com (Malcolm McMillan) ]]></author>                    <dc:creator><![CDATA[ Malcolm McMillan ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/sSDLEbNEgBXf86HpujaWZ6-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Malcolm McMillan is a Streaming Editor for Tom&#039;s Guide, covering all the latest in streaming TV shows and movies. That means news, analysis, recommendations, reviews and more for just about anything you can watch, including sports! If it can be seen on a screen, he can write about it. &lt;/p&gt;&lt;p&gt;Malcolm has been with Tom&#039;s Guide since June 2022, starting as a staff writer covering breaking news. Since then, he&#039;s transitioned to cover artificial intelligence (AI), A/V tech and VR headsets. Since late 2023 he has almost exclusively covered streaming and entertainment for Tom&#039;s Guide.&lt;/p&gt;&lt;p&gt;Before writing for Tom&#039;s Guide, Malcolm worked as a fantasy football analyst writing for several sites and also had a brief stint working for Microsoft selling laptops, Xbox products and even the ill-fated Windows phone. He is passionate about video games and sports, though both cause him to yell at the TV frequently. He proudly sports many tattoos, including an Arsenal tattoo, in honor of the team that causes him to yell at the TV the most.&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/XAtGDap2AHvpG2hFnRjH3B-1920-80.png">
                                                            <media:credit><![CDATA[Alamy]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Denzel Washington in &quot;The Book of Eli&quot; (2010)]]></media:description>                                                            <media:text><![CDATA[Denzel Washington in &quot;The Book of Eli&quot; (2010)]]></media:text>
                                <media:title type="plain"><![CDATA[Denzel Washington in &quot;The Book of Eli&quot; (2010)]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/XAtGDap2AHvpG2hFnRjH3B-1920-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div  class="fancy-box"><div class="fancy_box-title">The Tom's Guide verdict: 'The Book of Eli' (2010)</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>Rating: 3/5 stars</strong></p><p class="fancy-box__body-text"><strong>Verdict:</strong> Three stars might be generous, but the potential of this movie and the world it builds has me grading it on a slight curve. It's flawed; the dated action cinematography and a poor performance from Mila Kunis prevent this film from rising to the next step. But Denzel's combat moves presage his later performances in "The Equalizer" franchise, while Gary Oldman's vintage villain performances remind us of some of his greatest hits.</p><p class="fancy-box__body-text"><strong>Where to watch: </strong><a data-analytics-id="inline-link" href="https://www.amazon.com/gp/video/detail/B00BWUI6R6" target="_blank" rel="nofollow">Buy or rent "The Book of Eli" on Amazon</a></p></div></div><p>"<strong>The Book of Eli</strong>" was a movie I was really looking forward to in my <a href="https://www.tomsguide.com/tag/denzelwatchathon"><strong>Denzel Watchathon</strong></a>. Not because I think it's one of his seminal works; the movie was poorly reviewed at the time, and I don't recall leaving the theater stunned by anything other than the movie's final twist. I was looking forward to it because I wondered if maybe this post-apocalyptic neo-Western was better than I remember.</p><p>After all, while this movie isn't considered by most (if any) to be one of the best movies Denzel ever starred in, it probably is considered an iconic role. If you looked at the image at the top of this article, you likely recognized the movie it came from. This is also, notably, the first role where he goes full Liam Neeson: acclaimed actor turned combat-focused action star. If it had been his last, then perhaps it wouldn't be noteworthy, but given he did three "Equalizer" movies since this movie, it's an important flashpoint in his career.</p><p>Plus, Denzel's supporting cast and crew, on paper, hint at this movie having serious potential. It's directed by the Hughes brothers, who had already directed "Menace II Society." It's written by Gary Whitta, who would go on to co-write "Rogue One." And alongside Denzel, it stars <em>Sir </em>Gary Oldman and Mila Kunis, who are normally impressive actors.</p><p>I say normally because, while Sir Gary knocks it out of the park, putting on a vintage performance, Ms. Kunis's efforts are less successful. I'm not sure she's necessarily helped by the script or directing, but to me she was a clear weak link in the movie. And it's not a movie without its weaknesses. But despite that, I found it worth rewatching, if for no other reason than to see Denzel and Gary Oldman go head-to-head.</p><p><em>If you want to watch this movie before you read on, you can </em><a href="https://www.amazon.com/gp/video/detail/B00BWUI6R6" target="_blank" rel="nofollow"><em>buy or rent it on Amazon</em></a><em>. Unfortunately, it's not currently available on the </em><a href="https://www.tomsguide.com/us/best-streaming-video-services,review-2625.html"><em>best streaming services</em></a><em> or the </em><a href="https://www.tomsguide.com/best-picks/best-free-streaming-services"><em>best free streaming services</em></a><em>, nor is it available to watch on-demand on any of the </em><a href="https://www.tomsguide.com/us/best-cable-replacements,review-4387.html"><em>best live TV streaming services</em></a><em>.</em></p><h2 id="a-tale-of-two-performances">A tale of two performances</h2><p>I was serious when I said "The Book of Eli" had potential. It's set in a post-nuclear-war apocalyptic wasteland. It stars Denzel as Eli, a man wandering the wilderness, intent on heading west as if he were on a mission from God.</p><p>It turns out he might actually be on a mission from God. As we follow his journey, it's revealed that every Bible in the world has (likely) been destroyed in response to the war that destroyed the world (or at least the U.S.). We then learn that Eli has a Bible in his possession, and that a local warlord, Carnegie (Oldman), desires a copy more than anything in the world.</p><div  class="fancy-box"><div class="fancy_box-title">Read more Denzel Watchathon</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>Here are some of the other Denzel Washington movies I've covered to date in my Denzel Watchathon:</strong></p><p class="fancy-box__body-text"><ul><li><a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/movies/i-just-watched-denzel-washingtons-controversial-first-movie-and-you-can-stream-it-free-right-now">"Carbon Copy" (1981)</a></li><li><a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/movies/this-denzel-washington-political-biopic-is-a-must-watch-in-2026-and-its-an-oscar-worthy-performance">"Cry Freedom" (1987)</a></li><li><a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/movies/denzels-first-oscar-winner-still-holds-up-36-years-later-and-you-can-stream-it-on-netflix-now">"Glory" (1989)</a></li><li><a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/movies/denzel-was-robbed-of-an-oscar-in-this-1992-biopic-stream-it-and-see-for-yourself">"Malcolm X" (1992)</a></li><li><a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/movies/i-just-watched-philadelphia-and-i-cant-believe-this-was-the-only-time-tom-hanks-and-denzel-teamed-up-for-a-movie">"Philadelphia" (1993)</a></li><li><a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/movies/over-30-years-later-this-denzel-washington-and-gene-hackman-action-thriller-is-still-one-of-my-favorite-movies">"Crimson Tide" (1995)</a></li><li><a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/movies/i-just-rewatched-remember-the-titans-and-ironically-i-forgot-how-good-denzel-washington-is-in-this-sports-movie">"Remember the Titans" (2000)</a></li><li><a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/movies/nearly-25-years-later-training-day-remains-denzel-washingtons-greatest-performance-ever">"Training Day" (2001)</a></li><li><a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/movies/this-denzel-washington-action-thriller-was-savaged-by-critics-in-2004-but-over-20-years-later-its-an-undeniable-must-watch">"Man on Fire" (2004)</a></li><li><a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/movies/denzel-still-shines-in-this-2004-psychological-thriller-but-i-think-meryl-streep-steals-the-spotlight">"The Manchurian Candidate" (2004)</a></li><li>"<a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/movies/this-denzel-washington-and-russell-crowe-crime-drama-is-still-great-19-years-later-and-you-can-stream-it-for-free">American Gangster" (2007)</a></li><li><a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/movies/i-just-watched-denzel-washington-and-john-travoltas-action-thriller-remake-and-it-really-goes-off-the-rails">"The Taking of Pelham 123" (2009)</a></li></ul></p><p class="fancy-box__body-text"><strong>Read more: </strong><a data-analytics-id="inline-link" href="https://www.tomsguide.com/tag/denzelwatchathon"><strong>Every Denzel Watchathon movie so far</strong></a><strong></strong></p></div></div><p>I remembered this as a shocking reveal: that Eli had a Bible. But rewatching the movie, I was surprised to find that the film doesn't really hide this fact. It also drops plenty of hints at another key fact about Eli: that he's blind.</p><p>Apologies if that seems like a massive spoiler, but in all honesty, once you know this fact about Eli, it's impossible to miss the little hints the movie drops along the way. The best one is when Eli and Solara, a slave of Carnegie's who runs off with Eli on his westward journey, come across an older couple at the couple's home. They ask Eli, "Didn't you see the No Trespassing sign?" and he responds, truthfully, that he didn't see it. Because it turns out he actually didn't see it.</p><p>Another way that Eli's blindness is obvious in retrospect is his hypersensitivity as a fighter. His reactions seem almost superhuman, and it's clear that the movie is playing on the trope of the blind martial arts master who has turned his disability into an advantage by heightening his other senses. It's Denzel's first real showcase as a martial arts action star, and it's an archetype he'd dip into a few more times after this movie, most notably in the "Equalizer" trilogy.</p><p>But if this was the first of many such performances from Denzel, Oldman's portrayal of Carnegie felt like a throwback. The British icon has portrayed villains to great effect on more than a few occasions, but perhaps my favorite is his performance as DEA agent Norman Stansfield in "Léon: The Professional." It's a truly unhinged portrayal of a truly unhinged man, most well-known today for providing the source material for a meme where Oldman yells "Everyone!" in a deranged fashion. Watching his portrayal of the warlord Carnegie, you can see him slip into that same unhinged mannerism on a few occasions, and you can't help but be reminded of Stansfield.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OoNVoW"></div>                            </div>                            <script src="https://kwizly.com/embed/OoNVoW.js" async></script><h2 id="verdict-i-don-39-t-regret-watching-39-the-book-of-eli-39-even-if-it-let-me-down">Verdict: I don't regret watching 'The Book of Eli,' even if it let me down</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/zSMHmtaoXtI" allowfullscreen></iframe></div></div><p>Unfortunately, not everyone's performances are as good as Denzel's and Oldman's. As I already mentioned, Mila Kunis didn't work for me in this movie, which is a shame. I generally like her, and literally a few months after this movie, she put on an <em>incredible</em> performance in "Black Swan," proving that acting talent or a lack thereof isn't her issue.</p><p>I'd say the rest of the cast falls largely into the category of generic or forgettable. That includes an Anthony Hopkins appearance in the final scenes of the movie that I completely forgot existed.</p><p>Despite these flaws, as well as the dated, Zack Snyderesque dark color palette of the film and the equally dated use of "Bullet time" slow-motion, I am still glad I rewatched this movie. It was incredible from an academic standpoint, seeing how Denzel would launch a new phase of his career from this performance and seeing Gary Oldman reach into his villainous past to play an excellent foil to Denzel's Eli. It's also not like I had a bad time — I just know this movie could be so much better.</p><p><a href="https://www.amazon.com/gp/video/detail/B00BWUI6R6" target="_blank" rel="nofollow"><em>Buy or rent "The Book of Eli" on Amazon now</em></a></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/movies/the-weight-pits-ethan-hawke-against-russell-crowe-in-a-dark-heist-movie-thats-a-must-watch-this-weekend">'The Weight' pits Ethan Hawke against Russell Crowe in a dark heist movie that's a must-watch this weekend</a></li><li><a href="https://www.tomsguide.com/us/get-sunday-ticket-without-directv,review-3811.html">How to get NFL Sunday Ticket for 2026-2027 season — Pricing, where to watch and more</a></li><li><a href="https://www.tomsguide.com/entertainment/movies/resident-evil-2026-review">'Resident Evil' review: Officially the best video game movie of all time, but also Zach Cregger's worst</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 'Ha-Chan, Shake Your Booty!' review: This Sundance award-winning drama movie is a must-watch that will leave you stunned ]]></title>
                                                                                                <dc:content><![CDATA[ <div  class="fancy-box"><div class="fancy_box-title">Tom's Guide Verdict: 'Ha-Chan, Shake Your Booty!' (2026)</div><div class="fancy_box_body"><p class="fancy-box__body-text"><ul><li><strong>Rating:</strong> <strong>3.5/5 stars</strong></li><li><strong>Verdict: </strong>If you've ever seen "Tokyo Vice," you've come to expect dark, gritty and violent from director Josef Kubota Wladyka. But while this movie about love and loss delves into some dark places, "Ha-Chan, Shake Your Booty!" is also a moving, intimate, surprisingly funny fever dream. It's the furthest thing from what you expect from Kubota Wladyka, and while his script doesn't always hit the mark, his direction in this drama is excellent. As is Rinko Kikuchi as the titular Ha-Chan.</li><li><strong>Where to watch:</strong> <a data-analytics-id="inline-link" href="https://www.fandango.com/ha-chan-shake-your-booty-2026-247055/movie-overview" target="_blank">See "Ha-Chan, Shake Your Booty!" (2026) in theaters now</a></li></ul></p></div></div><p><strong>"Ha-Chan, Shake Your Booty" </strong>is the first movie I've seen from writer/director Josef Kubota Wladyka. To be fair, it's not a long list of films to choose from; this Sundance competitor is just the third feature from the Polish-Japanese American auteur and only the second one he's made this decade. </p><p>But I had seen some of his prior television work, and it's a long list of dark, gritty episodes. I'm most familiar with the eight episodes of "Tokyo Vice" he directed, but he's also done work on "The Terror," "Narcos," "Fear the Walking Dead" and "Animal Kingdom." Taking a look at his two other movies, they too seem to fall under the "dark and gritty" description.</p><p>So I was floored that he was able to put together a film like this. It's not a question of talent, but simply a matter of range. I'm not shocked when Zach Cregger makes "<a href="">Resident Evil</a>." I'd be surprised if he suddenly made "All of Us Strangers." This film is moving. It's sad. It's a very intimate project centered on an excellent performance from  Rinko Kikuchi, who will likely be a familiar face if not a familiar name, and who worked with Kubota Wladyka on "Tokyo Vice." But it's also surprisingly funny and, at times, an absolute trip of a fever dream.</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="this-dance-filled-drama-is-an-incredible-portrait-of-grief">This dance-filled drama is an incredible portrait of grief</h2><p>"Ha-Chan, Shake Your Booty!" stars Kikuchi as the titular Ha-Chan, whose given name is Haru Kubota. She's an amateur tango dancer, set to compete in the Tokyo Dance Classic with her loving husband, Luis (Alejandro Edda). That is, until Luis drops dead in the middle of a dance.</p><p>This dance is one of several dream sequences, where Haru goes into the depths of her mind and envisions a fantastical scene. These are never too far from reality (well, mostly), and the audience knows when to expect them as the movie goes on, as they're often accompanied by a musical cue of some kind. </p><p>In this instance, she's just imagining that she's having the dance of her life, only to be brought crashing back down to Earth when she sees Luis dead on the floor. Things take a further turn for the worse when Luis's father (Damián Alcázar) and sister (Charley Flyte) arrive. They've come to return Luis to Mexico, while Haru wants Luis's cremated in accordance with Japanese tradition, which is explained to Haru and Luis's family using illustrated instructions that come off as only slightly absurd.</p><p>Haru ultimately relents, but she's convinced that Luis's spirit won't be able to rest if he's buried the way his father intends. Her concerns are seemingly confirmed when a somewhat kawaii black bird mascot appears before her and then slow dances with Haru. Several months pass and we finally see that the bird is none other than Luis.</p><p>This is where the movie really kicks off, because it's at this chapter in the story that we're introduced to Fedir (Alberto Guerra). He's a new instructor at the dance studio and, as Haru's sisters point out, <em>very</em> attractive. It's not lost on Haru, either, and thus begins her attempt at a rebound that turns into a love triangle in more ways than one.</p><h2 id="verdict-39-ha-chan-shake-your-booty-39-is-a-must-watch">Verdict: 'Ha-Chan, Shake Your Booty!' is a must-watch</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/Ik4lJmXgR6U" allowfullscreen></iframe></div></div><p>Haru's journey of grief is intense at times, and stunning at others. Her relationship with the bird mascot version of Luis is trippy and the way it intersects with her burgeoning relationship with Fedir is one you won't see coming. Frankly, there are quite a few moments in her relationship with Fedir that you won't see coming, and it's probably the movie's strongest aspect.</p><p>This isn't a flawless movie. The first act is a bit of a ... slog; it's probably too harsh a word, but it's what comes to mind. The arrival of Bird Luis at least gets you to raise an eyebrow, but things don't really kick off until Fedir is introduced to the story.</p><p>But once he arrives, Haru and he combine for some incredible scenes, including a fight with a drunken elderly businessman that transforms into a "West Side Story" dance fight before transitioning into a choreographed dance number out of "La La Land," which admittedly is itself derivative of Stephen Sondheim's classic. </p><p>So, despite its flaws and its somewhat niche format as a dance-laden drama that's distinctly <em>not</em> a musical, I implore you to give this movie a chance. The directing is impressive, and it's unlike anything you'll have seen at the cinema this year. Don't just take my word for it, either. Kubota Wladyka's direction earned the Directing Award in the Dramatic category at Sundance, and it has rave reviews from most who have seen it. This weekend, add yourself to that number.</p><p><a href="https://www.fandango.com/ha-chan-shake-your-booty-2026-247055/movie-overview" target="_blank" rel="nofollow"><em>"Ha-Chan, Shake Your Booty!" is in theaters now</em></a></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ORVgVO"></div>                            </div>                            <script src="https://kwizly.com/embed/ORVgVO.js" async></script><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/entertainment/movies/the-weight-pits-ethan-hawke-against-russell-crowe-in-a-dark-heist-movie-thats-a-must-watch-this-weekend">'The Weight' pits Ethan Hawke against Russell Crowe in a dark heist movie that's a must-watch this weekend</a></li><li><a href="https://www.tomsguide.com/entertainment/netflix/5-best-new-netflix-movies-and-shows-to-stream-this-week-sept-21-27">5 best new Netflix movies and shows to stream this week (Sept. 21-27)</a></li><li><a href="https://www.tomsguide.com/entertainment/movies/the-history-of-concrete-review-john-wilsons-documentary-is-probably-unlike-anything-youve-ever-seen">‘The History of Concrete’ review: John Wilson’s documentary is probably unlike anything you’ve ever seen</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/movies/ha-chan-shake-your-booty-review</link>
                                                                            <description>
                            <![CDATA[ "Ha-Chan, Shake Your Booty!" starts slow but ultimately delivers a trippy, moving dance-filled drama that is undeniably a must-watch movie. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">BENfcRZZcGxSEKk9ahz2hU</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/3zhpwX6iouiARFCKEkFVrX-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 26 Sep 2026 10:15:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Movies]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                                                                <author><![CDATA[ malcolm.mcmillan@futurenet.com (Malcolm McMillan) ]]></author>                    <dc:creator><![CDATA[ Malcolm McMillan ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/sSDLEbNEgBXf86HpujaWZ6-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Malcolm McMillan is a Streaming Editor for Tom&#039;s Guide, covering all the latest in streaming TV shows and movies. That means news, analysis, recommendations, reviews and more for just about anything you can watch, including sports! If it can be seen on a screen, he can write about it. &lt;/p&gt;&lt;p&gt;Malcolm has been with Tom&#039;s Guide since June 2022, starting as a staff writer covering breaking news. Since then, he&#039;s transitioned to cover artificial intelligence (AI), A/V tech and VR headsets. Since late 2023 he has almost exclusively covered streaming and entertainment for Tom&#039;s Guide.&lt;/p&gt;&lt;p&gt;Before writing for Tom&#039;s Guide, Malcolm worked as a fantasy football analyst writing for several sites and also had a brief stint working for Microsoft selling laptops, Xbox products and even the ill-fated Windows phone. He is passionate about video games and sports, though both cause him to yell at the TV frequently. He proudly sports many tattoos, including an Arsenal tattoo, in honor of the team that causes him to yell at the TV the most.&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/3zhpwX6iouiARFCKEkFVrX-1920-80.jpg">
                                                            <media:credit><![CDATA[Sony Pictures Classics]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[(L-R) Alberto Guerra as Fedir, Rinko Kikuchi as Haru and Alejandro Edda as Luis in &quot;Ha-Chan, Shake Your Booty&quot; (2026)]]></media:description>                                                            <media:text><![CDATA[(L-R) Alberto Guerra as Fedir, Rinko Kikuchi as Haru and Alejandro Edda as Luis in &quot;Ha-Chan, Shake Your Booty&quot; (2026)]]></media:text>
                                <media:title type="plain"><![CDATA[(L-R) Alberto Guerra as Fedir, Rinko Kikuchi as Haru and Alejandro Edda as Luis in &quot;Ha-Chan, Shake Your Booty&quot; (2026)]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/3zhpwX6iouiARFCKEkFVrX-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div  class="fancy-box"><div class="fancy_box-title">Tom's Guide Verdict: 'Ha-Chan, Shake Your Booty!' (2026)</div><div class="fancy_box_body"><p class="fancy-box__body-text"><ul><li><strong>Rating:</strong> <strong>3.5/5 stars</strong></li><li><strong>Verdict: </strong>If you've ever seen "Tokyo Vice," you've come to expect dark, gritty and violent from director Josef Kubota Wladyka. But while this movie about love and loss delves into some dark places, "Ha-Chan, Shake Your Booty!" is also a moving, intimate, surprisingly funny fever dream. It's the furthest thing from what you expect from Kubota Wladyka, and while his script doesn't always hit the mark, his direction in this drama is excellent. As is Rinko Kikuchi as the titular Ha-Chan.</li><li><strong>Where to watch:</strong> <a data-analytics-id="inline-link" href="https://www.fandango.com/ha-chan-shake-your-booty-2026-247055/movie-overview" target="_blank">See "Ha-Chan, Shake Your Booty!" (2026) in theaters now</a></li></ul></p></div></div><p><strong>"Ha-Chan, Shake Your Booty" </strong>is the first movie I've seen from writer/director Josef Kubota Wladyka. To be fair, it's not a long list of films to choose from; this Sundance competitor is just the third feature from the Polish-Japanese American auteur and only the second one he's made this decade. </p><p>But I had seen some of his prior television work, and it's a long list of dark, gritty episodes. I'm most familiar with the eight episodes of "Tokyo Vice" he directed, but he's also done work on "The Terror," "Narcos," "Fear the Walking Dead" and "Animal Kingdom." Taking a look at his two other movies, they too seem to fall under the "dark and gritty" description.</p><p>So I was floored that he was able to put together a film like this. It's not a question of talent, but simply a matter of range. I'm not shocked when Zach Cregger makes "<a href="">Resident Evil</a>." I'd be surprised if he suddenly made "All of Us Strangers." This film is moving. It's sad. It's a very intimate project centered on an excellent performance from  Rinko Kikuchi, who will likely be a familiar face if not a familiar name, and who worked with Kubota Wladyka on "Tokyo Vice." But it's also surprisingly funny and, at times, an absolute trip of a fever dream.</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="this-dance-filled-drama-is-an-incredible-portrait-of-grief">This dance-filled drama is an incredible portrait of grief</h2><p>"Ha-Chan, Shake Your Booty!" stars Kikuchi as the titular Ha-Chan, whose given name is Haru Kubota. She's an amateur tango dancer, set to compete in the Tokyo Dance Classic with her loving husband, Luis (Alejandro Edda). That is, until Luis drops dead in the middle of a dance.</p><p>This dance is one of several dream sequences, where Haru goes into the depths of her mind and envisions a fantastical scene. These are never too far from reality (well, mostly), and the audience knows when to expect them as the movie goes on, as they're often accompanied by a musical cue of some kind. </p><p>In this instance, she's just imagining that she's having the dance of her life, only to be brought crashing back down to Earth when she sees Luis dead on the floor. Things take a further turn for the worse when Luis's father (Damián Alcázar) and sister (Charley Flyte) arrive. They've come to return Luis to Mexico, while Haru wants Luis's cremated in accordance with Japanese tradition, which is explained to Haru and Luis's family using illustrated instructions that come off as only slightly absurd.</p><p>Haru ultimately relents, but she's convinced that Luis's spirit won't be able to rest if he's buried the way his father intends. Her concerns are seemingly confirmed when a somewhat kawaii black bird mascot appears before her and then slow dances with Haru. Several months pass and we finally see that the bird is none other than Luis.</p><p>This is where the movie really kicks off, because it's at this chapter in the story that we're introduced to Fedir (Alberto Guerra). He's a new instructor at the dance studio and, as Haru's sisters point out, <em>very</em> attractive. It's not lost on Haru, either, and thus begins her attempt at a rebound that turns into a love triangle in more ways than one.</p><h2 id="verdict-39-ha-chan-shake-your-booty-39-is-a-must-watch">Verdict: 'Ha-Chan, Shake Your Booty!' is a must-watch</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/Ik4lJmXgR6U" allowfullscreen></iframe></div></div><p>Haru's journey of grief is intense at times, and stunning at others. Her relationship with the bird mascot version of Luis is trippy and the way it intersects with her burgeoning relationship with Fedir is one you won't see coming. Frankly, there are quite a few moments in her relationship with Fedir that you won't see coming, and it's probably the movie's strongest aspect.</p><p>This isn't a flawless movie. The first act is a bit of a ... slog; it's probably too harsh a word, but it's what comes to mind. The arrival of Bird Luis at least gets you to raise an eyebrow, but things don't really kick off until Fedir is introduced to the story.</p><p>But once he arrives, Haru and he combine for some incredible scenes, including a fight with a drunken elderly businessman that transforms into a "West Side Story" dance fight before transitioning into a choreographed dance number out of "La La Land," which admittedly is itself derivative of Stephen Sondheim's classic. </p><p>So, despite its flaws and its somewhat niche format as a dance-laden drama that's distinctly <em>not</em> a musical, I implore you to give this movie a chance. The directing is impressive, and it's unlike anything you'll have seen at the cinema this year. Don't just take my word for it, either. Kubota Wladyka's direction earned the Directing Award in the Dramatic category at Sundance, and it has rave reviews from most who have seen it. This weekend, add yourself to that number.</p><p><a href="https://www.fandango.com/ha-chan-shake-your-booty-2026-247055/movie-overview" target="_blank" rel="nofollow"><em>"Ha-Chan, Shake Your Booty!" is in theaters now</em></a></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ORVgVO"></div>                            </div>                            <script src="https://kwizly.com/embed/ORVgVO.js" async></script><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/entertainment/movies/the-weight-pits-ethan-hawke-against-russell-crowe-in-a-dark-heist-movie-thats-a-must-watch-this-weekend">'The Weight' pits Ethan Hawke against Russell Crowe in a dark heist movie that's a must-watch this weekend</a></li><li><a href="https://www.tomsguide.com/entertainment/netflix/5-best-new-netflix-movies-and-shows-to-stream-this-week-sept-21-27">5 best new Netflix movies and shows to stream this week (Sept. 21-27)</a></li><li><a href="https://www.tomsguide.com/entertainment/movies/the-history-of-concrete-review-john-wilsons-documentary-is-probably-unlike-anything-youve-ever-seen">‘The History of Concrete’ review: John Wilson’s documentary is probably unlike anything you’ve ever seen</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 3 new Netflix shows you should binge-watch this weekend (September 25-27) ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The weather's finally cooling down, and there's nothing better than cozying up on the couch to watch a new show over the weekend. With how much new content <a href="https://www.tomsguide.com/entertainment/streaming/netflix">Netflix</a> shuffles throughout it's library, there's always something fresh to watch.</p><p>This weekend, that includes Netflix's rebooted "A Different World" about a new generation of Hillman's finest, a psychological horror drama series about a doctor who can speak to the dead, and a Spanish murder mystery where a fading actor known for his portrayal of Sherlock Holmes has to solve an actual murder. If you’re on the hunt for something new to settle down with this weekend, these three Netflix shows are worth checking out.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ODmDlX"></div>                            </div>                            <script src="https://kwizly.com/embed/ODmDlX.js" async></script><h2 id="a-different-world-39">‘A Different World'</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/W8jMEXwErvk" allowfullscreen></iframe></div></div><p>Class is back in session at Hillman! The fictional HBCU comes to live once more in the "A Different World" series that debuted on Netflix this week. This follow-up to the iconic ’90s coming-of-age sitcom centers on a new generation of students led by Deborah Wayne (Maleah Joi Moon), the youngest daughter of Hillman legends Dwayne Wayne (Kadeem Hardison) and Whitley Gilbert (Jasmine Guy). Across 10 episodes, the series explores the growing pains of Hillman’s fumbling newest class, with cameos from cast members throughout the years returning as well. </p><p>Deborah's at Hillman under duress after her original college plans fall through, putting her at odds with her rule-following friends Rashida (Alijah Kai) and Hazel (Kennedi Reece). Meanwhile, her "situationship" and longtime childhood friend Shaquille Johnson (Cornell Young IV) is turning heads as a new recruit on the football team. Just as with the original, its characters feel like believable college students you could meet on any campus today, making this a much-watch for both fans of "A Different World" and anyone trying to navigate that awkward but exciting stage of life. </p><p><em><strong>Watch </strong></em><a href="https://www.netflix.com/title/81747525" target="_blank" rel="nofollow"><em><strong>"A Different World" on Netflix</strong></em></a><em><strong> now</strong></em></p><h2 id="39-my-sad-dead-39">'My Sad Dead'</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/nhw3KbYH0N4" allowfullscreen></iframe></div></div><p>Netflix's latest psychological horror drama miniseries is built around a simple premise: Ema (Mercedes Morán), a recently retired 60-year-old doctor, can speak to and see the dead — including her own mother, who died three weeks before the story begins. All the hauntings take place in Piedrabuena, a once charming old neighborhood in Buenos Aires that's now prone to crime after the development of a vast housing project. </p><p>Ema's troubled niece Julie (Carolina Sánchez Álvarez), shares the same gift, but when she comes to visit, her abilities end up getting transferred to the entire neighborhood. Meanwhile, a triple homicide forces Ema to step into the spotlight after a lifetime spent trying to help ghosts without attracting the attention of the living. As far as horror stories go, it leans more atmospheric and unsettling than the jump scares you might expect.</p><p><em><strong>Watch </strong></em><a href="https://www.netflix.com/title/81776737" target="_blank" rel="nofollow"><em><strong>"My Sad Dead" on Netflix</strong></em></a><em><strong> now</strong></em></p><h2 id="39-the-final-problem-39">'The Final Problem'</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/yLeja7kWgmU" allowfullscreen></iframe></div></div><p>I love a classic whodunnit, and "The Final Problem" seems just the thing to watch this weekend if you're looking for short, twisty fun time. This 4-episode miniseries out of Spain follows 13 strangers trapped on a small island off the coast of Mallorca when a storm rolls out, including Basil (José Coronado) a faded actor once famous for playing Sherlock Holmes on screen.</p><p>His sleuthing skills are put to the test when an English tourist is found dead, and everyone stranded in the hotel becomes a potential suspect. After all, who better to read a room full of liars than a man who's spent his life lying professionally for the camera? At only four episodes, "The Final Problem" feels more like a long movie than a series, and that lean runtime is perfect for a weekend binge watch. </p><p><em><strong>Watch </strong></em><a href="https://www.netflix.com/title/81731510" target="_blank" rel="nofollow"><em><strong>"The Final Problem" on Netflix</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/netflix/3-best-new-to-netflix-movies-you-should-stream-this-weekend-september-25-27">3 best new to Netflix movies you should stream this weekend (September 25-27)</a></li><li><a href="https://www.tomsguide.com/entertainment/netflix/netflix-just-added-an-intense-psychological-thriller-movie-with-an-apocalyptic-twist-and-its-an-unpredictable-nightmare">Netflix just added an intense psychological thriller movie with an apocalyptic twist — and it’s an unpredictable nightmare</a></li><li><a href="https://www.tomsguide.com/entertainment/streaming/9-new-movies-and-shows-to-stream-this-weekend-on-netflix-prime-video-and-more-sept-25-27">9 new movies and shows to stream this weekend on Netflix, Prime Video and more (Sept. 25-27)</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/netflix/3-new-netflix-shows-you-should-binge-watch-this-weekend-september-25-27</link>
                                                                            <description>
                            <![CDATA[ Looking for something new to watch this weekend? Netflix has just added a batch of fresh shows to your watchlist. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">BSwkXD79Pt5VumMnct4iRc</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/JupY3RjqEiXEMuMqXno2pK-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 25 Sep 2026 16:05:02 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Netflix]]></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/JupY3RjqEiXEMuMqXno2pK-1920-80.jpg">
                                                            <media:credit><![CDATA[Alamy]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Netflix logo on orange striped background]]></media:description>                                                            <media:text><![CDATA[Netflix logo on orange striped background]]></media:text>
                                <media:title type="plain"><![CDATA[Netflix logo on orange striped background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/JupY3RjqEiXEMuMqXno2pK-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The weather's finally cooling down, and there's nothing better than cozying up on the couch to watch a new show over the weekend. With how much new content <a href="https://www.tomsguide.com/entertainment/streaming/netflix">Netflix</a> shuffles throughout it's library, there's always something fresh to watch.</p><p>This weekend, that includes Netflix's rebooted "A Different World" about a new generation of Hillman's finest, a psychological horror drama series about a doctor who can speak to the dead, and a Spanish murder mystery where a fading actor known for his portrayal of Sherlock Holmes has to solve an actual murder. If you’re on the hunt for something new to settle down with this weekend, these three Netflix shows are worth checking out.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ODmDlX"></div>                            </div>                            <script src="https://kwizly.com/embed/ODmDlX.js" async></script><h2 id="a-different-world-39">‘A Different World'</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/W8jMEXwErvk" allowfullscreen></iframe></div></div><p>Class is back in session at Hillman! The fictional HBCU comes to live once more in the "A Different World" series that debuted on Netflix this week. This follow-up to the iconic ’90s coming-of-age sitcom centers on a new generation of students led by Deborah Wayne (Maleah Joi Moon), the youngest daughter of Hillman legends Dwayne Wayne (Kadeem Hardison) and Whitley Gilbert (Jasmine Guy). Across 10 episodes, the series explores the growing pains of Hillman’s fumbling newest class, with cameos from cast members throughout the years returning as well. </p><p>Deborah's at Hillman under duress after her original college plans fall through, putting her at odds with her rule-following friends Rashida (Alijah Kai) and Hazel (Kennedi Reece). Meanwhile, her "situationship" and longtime childhood friend Shaquille Johnson (Cornell Young IV) is turning heads as a new recruit on the football team. Just as with the original, its characters feel like believable college students you could meet on any campus today, making this a much-watch for both fans of "A Different World" and anyone trying to navigate that awkward but exciting stage of life. </p><p><em><strong>Watch </strong></em><a href="https://www.netflix.com/title/81747525" target="_blank" rel="nofollow"><em><strong>"A Different World" on Netflix</strong></em></a><em><strong> now</strong></em></p><h2 id="39-my-sad-dead-39">'My Sad Dead'</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/nhw3KbYH0N4" allowfullscreen></iframe></div></div><p>Netflix's latest psychological horror drama miniseries is built around a simple premise: Ema (Mercedes Morán), a recently retired 60-year-old doctor, can speak to and see the dead — including her own mother, who died three weeks before the story begins. All the hauntings take place in Piedrabuena, a once charming old neighborhood in Buenos Aires that's now prone to crime after the development of a vast housing project. </p><p>Ema's troubled niece Julie (Carolina Sánchez Álvarez), shares the same gift, but when she comes to visit, her abilities end up getting transferred to the entire neighborhood. Meanwhile, a triple homicide forces Ema to step into the spotlight after a lifetime spent trying to help ghosts without attracting the attention of the living. As far as horror stories go, it leans more atmospheric and unsettling than the jump scares you might expect.</p><p><em><strong>Watch </strong></em><a href="https://www.netflix.com/title/81776737" target="_blank" rel="nofollow"><em><strong>"My Sad Dead" on Netflix</strong></em></a><em><strong> now</strong></em></p><h2 id="39-the-final-problem-39">'The Final Problem'</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/yLeja7kWgmU" allowfullscreen></iframe></div></div><p>I love a classic whodunnit, and "The Final Problem" seems just the thing to watch this weekend if you're looking for short, twisty fun time. This 4-episode miniseries out of Spain follows 13 strangers trapped on a small island off the coast of Mallorca when a storm rolls out, including Basil (José Coronado) a faded actor once famous for playing Sherlock Holmes on screen.</p><p>His sleuthing skills are put to the test when an English tourist is found dead, and everyone stranded in the hotel becomes a potential suspect. After all, who better to read a room full of liars than a man who's spent his life lying professionally for the camera? At only four episodes, "The Final Problem" feels more like a long movie than a series, and that lean runtime is perfect for a weekend binge watch. </p><p><em><strong>Watch </strong></em><a href="https://www.netflix.com/title/81731510" target="_blank" rel="nofollow"><em><strong>"The Final Problem" on Netflix</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/netflix/3-best-new-to-netflix-movies-you-should-stream-this-weekend-september-25-27">3 best new to Netflix movies you should stream this weekend (September 25-27)</a></li><li><a href="https://www.tomsguide.com/entertainment/netflix/netflix-just-added-an-intense-psychological-thriller-movie-with-an-apocalyptic-twist-and-its-an-unpredictable-nightmare">Netflix just added an intense psychological thriller movie with an apocalyptic twist — and it’s an unpredictable nightmare</a></li><li><a href="https://www.tomsguide.com/entertainment/streaming/9-new-movies-and-shows-to-stream-this-weekend-on-netflix-prime-video-and-more-sept-25-27">9 new movies and shows to stream this weekend on Netflix, Prime Video and more (Sept. 25-27)</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 3 new to Prime Video movies to watch this weekend — including a masterful Tarantino movie starring Leonardo DiCaprio and Brad Pitt (Sept. 25-27) ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The weekend is here, and there’s no better way to spend the next couple of days than watching some great movies. Fortunately, Prime Video’s library has just been updated, and this week’s crop of new arrivals is very strong. </p><p>For starters, there’s a new Prime Video original rom-com, based on a best-selling book; it’s already drawing plenty of attention. Or how about a true modern classic from peerless filmmaker Quentin Tarantino? Alternatively, I’ve found an emotionally charged sports drama that chronicles the life and career of a hugely inspirational female boxer, Claressa Shields.</p><p>Don’t waste your weekend scrolling the Prime Video library; I’ve found the three new arrivals that need to be on your watchlist to save you the hassle. These are the new to Prime Video movies you need to watch this weekend.</p><h2 id="killer-klowns-from-outer-space-39-1988">‘Killer Klowns From Outer Space' (1988)</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/ETiSMS4i1as" allowfullscreen></iframe></div></div><p>Prime Video’s latest romantic comedy has found a winning formula. It’s gone straight to No. 1 in the platform’s top 10 most-watched list, and is likely to retain that position through the weekend. It’s been warmly embraced by viewers, and even the critics have been charmed by this glossy rom-com (<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" target="_blank">including TG’s own Alix Blackburn</a>). Fun fact: It’s based on the novel by Ali Hazelwood, which actually started life as “Star Wars” fan-fiction. </p><p>Olive (Lili Reinhart) is a gifted PhD student who impulsively kisses a professor, Adam (Tom Bateman), to prove to her best friend (Rachel Marsh) that her life isn’t a total trainwreck. 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><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-O6PlRe"></div>                            </div>                            <script src="https://kwizly.com/embed/O6PlRe.js" async></script><h2 id="wuthering-heights-2026">Wuthering Heights’ (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/3fLCdIYShEQ" allowfullscreen></iframe></div></div><p>Arguably director Quentin Tarantino’s most entertaining movie. “Once Upon a Time… in Hollywood” is the filmmaker's fond tribute to classic cinema, exploring the era of movie star dominance. And Tarantino has assembled quite the cast of his own, including Leonardo DiCaprio, Brad Pitt, Margot Robbie and Timothy Olyphant. It’s easily the Tarantino movie I’ve rewatched the most, and has already built a legacy, thanks to several iconic scenes.</p><p>Set in the late 1960s, the film follows Rick Dalton (DiCaprio), a former TV actor turned movie star, as he grapples with his declining career and waning fame. Alongside his loyal stunt double/best friend, Cliff Booth (Pitt), he navigates a rapidly changing Los Angeles. At the same time, the Charles Manson murders loom, with Sharon Tate (Robbie) a target. Now’s a great time to watch, as Cliff Booth is set to return in a new semi-sequel, debuting on Netflix this December.</p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B07VF3YX41" 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="the-fire-inside-2024">‘The Fire Inside’ (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/KFyNvUmJzmE" allowfullscreen></iframe></div></div><p>Looking to be inspired this weekend? Then you’ll want to watch “The Fire Inside.” This sports biopic has an impressive 93% on review site <a href="https://www.rottentomatoes.com/m/the_fire_inside" target="_blank">Rotten Tomatoes</a>, with both critics and viewers awarding it the same high marks. It doesn’t reinvent the sports drama genre. Still, it chronicles the career of a driven athlete, Claressa “T-Rex” Shields, who refuses to be defined by her circumstances and instead gives everything in pursuit of excellence.</p><p>Starring Ryan Destiny as Claressa and Brian Tyree Henry as her coach Jason Crutchfield, “The Fire Inside” opens in Flint, Michigan, as the determined Claressa walks into an all-men boxing gym and demands a chance to prove herself. Despite the hurdles in her path, she makes the U.S. Olympic team for the 2012 London Games. Her goal is to become the first American woman to win an Olympic gold medal. “The Fire Inside” is acclaimed for its inspirational subject matter, but also for its enraging examination of systemic issues. </p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B0DTTMYXQ2" target="_blank" rel="nofollow"><em><strong>"The Fire Inside" 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-september-2026-top-picks-and-all-the-new-movies-and-shows-to-watch">New on Prime Video in September 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/streaming/9-new-movies-and-shows-to-stream-this-weekend-on-netflix-prime-video-and-more-sept-25-27">9 new movies and shows to stream this weekend</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-masterful-tarantino-movie-starring-leonardo-dicaprio-and-brad-pitt-sept-25-27</link>
                                                                            <description>
                            <![CDATA[ If you want great movies to watch on Prime Video this weekend, look no further. I've found 3 recently added picks worthy of your watchlist. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">hTRZfQb9yeidRXFZvVBaiH</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/EuSJxVT8M9g4CuaEmFrUtn-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 25 Sep 2026 13:30:00 +0000</pubDate>                                                                                                                                <updated>Wed, 30 Sep 2026 17:44:16 +0000</updated>
                                                                                                                                            <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/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>The weekend is here, and there’s no better way to spend the next couple of days than watching some great movies. Fortunately, Prime Video’s library has just been updated, and this week’s crop of new arrivals is very strong. </p><p>For starters, there’s a new Prime Video original rom-com, based on a best-selling book; it’s already drawing plenty of attention. Or how about a true modern classic from peerless filmmaker Quentin Tarantino? Alternatively, I’ve found an emotionally charged sports drama that chronicles the life and career of a hugely inspirational female boxer, Claressa Shields.</p><p>Don’t waste your weekend scrolling the Prime Video library; I’ve found the three new arrivals that need to be on your watchlist to save you the hassle. These are the new to Prime Video movies you need to watch this weekend.</p><h2 id="killer-klowns-from-outer-space-39-1988">‘Killer Klowns From Outer Space' (1988)</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/ETiSMS4i1as" allowfullscreen></iframe></div></div><p>Prime Video’s latest romantic comedy has found a winning formula. It’s gone straight to No. 1 in the platform’s top 10 most-watched list, and is likely to retain that position through the weekend. It’s been warmly embraced by viewers, and even the critics have been charmed by this glossy rom-com (<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" target="_blank">including TG’s own Alix Blackburn</a>). Fun fact: It’s based on the novel by Ali Hazelwood, which actually started life as “Star Wars” fan-fiction. </p><p>Olive (Lili Reinhart) is a gifted PhD student who impulsively kisses a professor, Adam (Tom Bateman), to prove to her best friend (Rachel Marsh) that her life isn’t a total trainwreck. 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><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-O6PlRe"></div>                            </div>                            <script src="https://kwizly.com/embed/O6PlRe.js" async></script><h2 id="wuthering-heights-2026">Wuthering Heights’ (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/3fLCdIYShEQ" allowfullscreen></iframe></div></div><p>Arguably director Quentin Tarantino’s most entertaining movie. “Once Upon a Time… in Hollywood” is the filmmaker's fond tribute to classic cinema, exploring the era of movie star dominance. And Tarantino has assembled quite the cast of his own, including Leonardo DiCaprio, Brad Pitt, Margot Robbie and Timothy Olyphant. It’s easily the Tarantino movie I’ve rewatched the most, and has already built a legacy, thanks to several iconic scenes.</p><p>Set in the late 1960s, the film follows Rick Dalton (DiCaprio), a former TV actor turned movie star, as he grapples with his declining career and waning fame. Alongside his loyal stunt double/best friend, Cliff Booth (Pitt), he navigates a rapidly changing Los Angeles. At the same time, the Charles Manson murders loom, with Sharon Tate (Robbie) a target. Now’s a great time to watch, as Cliff Booth is set to return in a new semi-sequel, debuting on Netflix this December.</p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B07VF3YX41" 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="the-fire-inside-2024">‘The Fire Inside’ (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/KFyNvUmJzmE" allowfullscreen></iframe></div></div><p>Looking to be inspired this weekend? Then you’ll want to watch “The Fire Inside.” This sports biopic has an impressive 93% on review site <a href="https://www.rottentomatoes.com/m/the_fire_inside" target="_blank">Rotten Tomatoes</a>, with both critics and viewers awarding it the same high marks. It doesn’t reinvent the sports drama genre. Still, it chronicles the career of a driven athlete, Claressa “T-Rex” Shields, who refuses to be defined by her circumstances and instead gives everything in pursuit of excellence.</p><p>Starring Ryan Destiny as Claressa and Brian Tyree Henry as her coach Jason Crutchfield, “The Fire Inside” opens in Flint, Michigan, as the determined Claressa walks into an all-men boxing gym and demands a chance to prove herself. Despite the hurdles in her path, she makes the U.S. Olympic team for the 2012 London Games. Her goal is to become the first American woman to win an Olympic gold medal. “The Fire Inside” is acclaimed for its inspirational subject matter, but also for its enraging examination of systemic issues. </p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B0DTTMYXQ2" target="_blank" rel="nofollow"><em><strong>"The Fire Inside" 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-september-2026-top-picks-and-all-the-new-movies-and-shows-to-watch">New on Prime Video in September 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/streaming/9-new-movies-and-shows-to-stream-this-weekend-on-netflix-prime-video-and-more-sept-25-27">9 new movies and shows to stream this weekend</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I'm a personal trainer — I replace standard planks with this gymnastics exercise for clients over 50, here's why ]]></title>
                                                                                                <dc:content><![CDATA[ <p>The<a href="https://www.tomsguide.com/round-up/11-best-plank-variations-to-build-core-strength-and-muscle"> best plank variations </a>depend on you and your body, but of all the ones I've tried over the years, the gymnastics plank is still my favorite for building stability, endurance, and strength. It doesn’t<em> just</em> strengthen your core; it also works your shoulders, arms, wrists, quads, hips and glutes.</p><p>I've been including them in place of standard planks for a few months now, especially for my clients over 50 who want to build a strong core and reduce back pain. Here's how to do it, and why I recommend giving it a shot next time you hit the gym.</p><h2 class="article-body__section" id="section-how-to-do-gymnastics-planks"><span>How to do gymnastics planks</span></h2><p>One of the <a href="https://www.tomsguide.com/best-picks/best-yoga-mats">best yoga mats</a> is handy but not essential. Follow these steps:</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/DdtYofkItJq/" target="_blank">A post shared by Tom's Guide Fitness (@tomsguidefitness)</a></p><p>A photo posted by </p></blockquote></div><ul><li>Start in a high plank position with your shoulders stacked over your wrists, hips aligned with your shoulders and a straight line from heels to head</li><li>Brace your core, glutes and quads, creating as much tension through your body as possible while breathing toward your stomach</li><li>Push your hands into the mat to broaden your upper back and create a soft hollow through your torso</li><li>Roll forward over your wrists, keeping your arms straight, onto the tops of your feet. Your shoulders should pass in front of your fingertips</li><li>Avoid dropping your hips, arching your back, or pushing your butt up to the sky</li><li>Hold. Continue breathing.</li></ul><p>I recommend trying for a 20-second hold and building from there. Slightly tucking your hips and pushing through your upper back will help you create the hollow shape through your upper body. </p><p>You’ll feel your forearms and wrists working a lot harder; if this causes pain, drop to your elbows or stop completely. It may feel uncomfortable and challenging, but it shouldn't be painful.</p><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="vGnNDN" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><h3 class="article-body__section" id="section-gymnastic-planks-benefits-3-reasons-why-i-use-them-with-clients"><span>Gymnastic planks benefits: 3 reasons why I use them with clients</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:1000px;"><p class="vanilla-image-block" style="padding-top:56.20%;"><img id="z5kfeXDL8KP7wgA7dB2dHL" name="plank jacks.jpg" alt="a photo of a woman doing a plank" src="https://cdn.mos.cms.futurecdn.net/z5kfeXDL8KP7wgA7dB2dHL-1920-80.jpg" mos="" align="middle" fullscreen="" width="1000" height="562" 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><strong>Gymnastics exercises focus on building functional strength</strong> and require a strong and stable core. They also <strong>build </strong><a href="https://www.tomsguide.com/wellness/fitness/relative-strength-vs-absolute-strength-which-is-better"><strong>relative strength</strong></a><strong> and power</strong>, and many "holding" exercises like planks, hollow holds, or handstands <strong>require endurance, stability and balance using </strong><a href="https://www.tomsguide.com/face-off/isometric-vs-isotonic-exercise-which-is-better-for-building-strength-and-muscle"><strong>isometric contraction</strong>,</a> meaning your muscles are neither shortening nor lengthening.</p><p>Reasons enough right there. </p><p>Like a regular plank, the exercise is a full-body one, but for this variation in particular, focus on consciously contracting as many muscles as you can, especially the three Bs: belly, butt, back.</p><div><blockquote><p>Gymnastics exercises focus on building functional strength and require a strong and stable core.</p></blockquote></div><p>Your shoulders, arms, forearms, wrists, core, hips, quads, lower back, glutes, and ankles will get stronger, but shifting forward with your body places emphasis on the upper body, namely the shoulders, arms, and wrists. Rolling further onto the tops of your feet will activate more of your front body, like the hips and quads, rather than backloading the glutes and hamstrings.</p><p><a href="https://www.tomsguide.com/wellness/workouts/forget-cardio-improving-your-grip-strength-is-a-must-have-for-longevity-try-these-3-essential-dumbbell-exercises">Grip strength</a>, which comes from your hands, forearms and wrists, has been shown to be a <a href="https://www.tomsguide.com/wellness/workouts/i-asked-a-longevity-doctor-for-the-5-bodyweight-exercises-everyone-should-be-doing-after-50-heres-what-he-said">key factor for longevity</a>, which is why everyone should include wrist-strengthening exercises in their routines as they get older, especially when muscle and strength begin declining, which accelerates in your 50s.</p><p>Yes, planking strengthens superficial muscles like the rectus abdominis (the six-pack), but also the deeper transverse abdominis (a stabilizing belt of core muscle), hip flexors and the obliques. These muscles support your spine and pelvis, so keeping them strong can protect you from injury.</p><p>The next time you decide to level up your planks, why not make it this one?</p><p><em><strong>Follow </strong></em><a href="https://www.instagram.com/tomsguidefitness/" target="_blank"><em><strong>Tom's Guide fitness</strong></em></a><em><strong> on Instagram for more workouts, routines, tips, and tricks.</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><strong></strong><a href="https://www.tomsguide.com/wellness/fitness/you-cant-tone-muscle-you-havent-built-im-a-personal-trainer-and-heres-why-i-choose-weightlifting-before-pilates" target="_blank"><strong>I'm a personal trainer, and here's why I choose weightlifting before Pilates</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/wellness/fitness/forget-crunches-a-pilates-instructor-shares-9-exercises-to-target-your-deep-core" target="_blank"><strong>Forget crunches — a Pilates instructor shares 9 exercises to target your deep core</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/wellness/smart-rings/i-ditched-alcohol-for-30-days-and-my-oura-ring-5-showed-one-surprising-change" target="_blank"><strong>I ditched alcohol for 30 days — and my Oura Ring 5 showed one surprising change</strong></a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/wellness/workouts/im-a-personal-trainer-i-replaced-standard-planks-with-this-gymnastics-exercise-for-clients-over-50-for-3-reasons</link>
                                                                            <description>
                            <![CDATA[ I've been teaching weightlifting for years, and this is one of the most effective plank variations you can do for strength. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">P2v4bQp6cdD2mjxkw3tEFK</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/8GBMfpYQDUVcu8cRvJEXwR-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 25 Sep 2026 10:00:00 +0000</pubDate>                                                                                                                                <updated>Fri, 25 Sep 2026 11:52:52 +0000</updated>
                                                                                                                                            <category><![CDATA[Workouts]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                    <category><![CDATA[Fitness]]></category>
                                                                                                <author><![CDATA[ sam.hopes@futurenet.com (Sam Hopes) ]]></author>                    <dc:creator><![CDATA[ Sam Hopes ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/jZ88qJqvjWaCXXv3qvUQPA-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Sam Hopes is a level 3 qualified trainer, a level 2 Reiki practitioner and a fitness editor at Tom&#039;s Guide. She is also currently undertaking her Yoga For Athletes training course. Sam has written for various fitness brands and websites over the years and has experience across brands at Future, such as &lt;a href=&quot;https://www.livescience.com/author/sam-hopes&quot;&gt;Live Science&lt;/a&gt;,&lt;a href=&quot;https://www.fitandwell.com/author/sam-hopes&quot;&gt; Fit&amp;amp;Well&lt;/a&gt;,&lt;a href=&quot;https://www.coachweb.com/author/sam-hopes&quot;&gt; Coach&lt;/a&gt;, and T3. &lt;/p&gt;&lt;p&gt;Having worked with fitness studios like F45 and Virgin Active and trained both group and 1:1, Sam now primarily teaches outdoor bootcamps, bodyweight, and kettlebells. She also coaches mobility and flexibility classes several times a week and believes that true strength comes from a holistic approach to training your body. &lt;/p&gt;&lt;p&gt;Sam has completed two mixed doubles Hyrox competitions in London and the Netherlands and finished her first doubles attempt in 1:11.&lt;/p&gt;&lt;p&gt;In her spare time, she enjoys CrossFit, hot yoga, Pilates and running and can be found perfecting her handstand walks and handstand push-ups in the gym whenever she has the chance to be upside down. At work, she can be found testing the latest in fitness technology and wearables, anything yoga and CrossFit-related and has a keen interest in nutrition, mindfulness, sleep and recovery.&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/8GBMfpYQDUVcu8cRvJEXwR-1920-80.jpg">
                                                            <media:credit><![CDATA[Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[a woman&#039;s abs]]></media:description>                                                            <media:text><![CDATA[a woman&#039;s abs]]></media:text>
                                <media:title type="plain"><![CDATA[a woman&#039;s abs]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/8GBMfpYQDUVcu8cRvJEXwR-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The<a href="https://www.tomsguide.com/round-up/11-best-plank-variations-to-build-core-strength-and-muscle"> best plank variations </a>depend on you and your body, but of all the ones I've tried over the years, the gymnastics plank is still my favorite for building stability, endurance, and strength. It doesn’t<em> just</em> strengthen your core; it also works your shoulders, arms, wrists, quads, hips and glutes.</p><p>I've been including them in place of standard planks for a few months now, especially for my clients over 50 who want to build a strong core and reduce back pain. Here's how to do it, and why I recommend giving it a shot next time you hit the gym.</p><h2 class="article-body__section" id="section-how-to-do-gymnastics-planks"><span>How to do gymnastics planks</span></h2><p>One of the <a href="https://www.tomsguide.com/best-picks/best-yoga-mats">best yoga mats</a> is handy but not essential. Follow these steps:</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/DdtYofkItJq/" target="_blank">A post shared by Tom's Guide Fitness (@tomsguidefitness)</a></p><p>A photo posted by </p></blockquote></div><ul><li>Start in a high plank position with your shoulders stacked over your wrists, hips aligned with your shoulders and a straight line from heels to head</li><li>Brace your core, glutes and quads, creating as much tension through your body as possible while breathing toward your stomach</li><li>Push your hands into the mat to broaden your upper back and create a soft hollow through your torso</li><li>Roll forward over your wrists, keeping your arms straight, onto the tops of your feet. Your shoulders should pass in front of your fingertips</li><li>Avoid dropping your hips, arching your back, or pushing your butt up to the sky</li><li>Hold. Continue breathing.</li></ul><p>I recommend trying for a 20-second hold and building from there. Slightly tucking your hips and pushing through your upper back will help you create the hollow shape through your upper body. </p><p>You’ll feel your forearms and wrists working a lot harder; if this causes pain, drop to your elbows or stop completely. It may feel uncomfortable and challenging, but it shouldn't be painful.</p><figure class="inline-layout"><div style="min-height: 400px;"><fw-embed-feed channel="toms_guide" playlist="vGnNDN" mode="row" player_placement="bottom-right"></fw-embed-feed></div></figure><h3 class="article-body__section" id="section-gymnastic-planks-benefits-3-reasons-why-i-use-them-with-clients"><span>Gymnastic planks benefits: 3 reasons why I use them with clients</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:1000px;"><p class="vanilla-image-block" style="padding-top:56.20%;"><img id="z5kfeXDL8KP7wgA7dB2dHL" name="plank jacks.jpg" alt="a photo of a woman doing a plank" src="https://cdn.mos.cms.futurecdn.net/z5kfeXDL8KP7wgA7dB2dHL-1920-80.jpg" mos="" align="middle" fullscreen="" width="1000" height="562" 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><strong>Gymnastics exercises focus on building functional strength</strong> and require a strong and stable core. They also <strong>build </strong><a href="https://www.tomsguide.com/wellness/fitness/relative-strength-vs-absolute-strength-which-is-better"><strong>relative strength</strong></a><strong> and power</strong>, and many "holding" exercises like planks, hollow holds, or handstands <strong>require endurance, stability and balance using </strong><a href="https://www.tomsguide.com/face-off/isometric-vs-isotonic-exercise-which-is-better-for-building-strength-and-muscle"><strong>isometric contraction</strong>,</a> meaning your muscles are neither shortening nor lengthening.</p><p>Reasons enough right there. </p><p>Like a regular plank, the exercise is a full-body one, but for this variation in particular, focus on consciously contracting as many muscles as you can, especially the three Bs: belly, butt, back.</p><div><blockquote><p>Gymnastics exercises focus on building functional strength and require a strong and stable core.</p></blockquote></div><p>Your shoulders, arms, forearms, wrists, core, hips, quads, lower back, glutes, and ankles will get stronger, but shifting forward with your body places emphasis on the upper body, namely the shoulders, arms, and wrists. Rolling further onto the tops of your feet will activate more of your front body, like the hips and quads, rather than backloading the glutes and hamstrings.</p><p><a href="https://www.tomsguide.com/wellness/workouts/forget-cardio-improving-your-grip-strength-is-a-must-have-for-longevity-try-these-3-essential-dumbbell-exercises">Grip strength</a>, which comes from your hands, forearms and wrists, has been shown to be a <a href="https://www.tomsguide.com/wellness/workouts/i-asked-a-longevity-doctor-for-the-5-bodyweight-exercises-everyone-should-be-doing-after-50-heres-what-he-said">key factor for longevity</a>, which is why everyone should include wrist-strengthening exercises in their routines as they get older, especially when muscle and strength begin declining, which accelerates in your 50s.</p><p>Yes, planking strengthens superficial muscles like the rectus abdominis (the six-pack), but also the deeper transverse abdominis (a stabilizing belt of core muscle), hip flexors and the obliques. These muscles support your spine and pelvis, so keeping them strong can protect you from injury.</p><p>The next time you decide to level up your planks, why not make it this one?</p><p><em><strong>Follow </strong></em><a href="https://www.instagram.com/tomsguidefitness/" target="_blank"><em><strong>Tom's Guide fitness</strong></em></a><em><strong> on Instagram for more workouts, routines, tips, and tricks.</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><strong></strong><a href="https://www.tomsguide.com/wellness/fitness/you-cant-tone-muscle-you-havent-built-im-a-personal-trainer-and-heres-why-i-choose-weightlifting-before-pilates" target="_blank"><strong>I'm a personal trainer, and here's why I choose weightlifting before Pilates</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/wellness/fitness/forget-crunches-a-pilates-instructor-shares-9-exercises-to-target-your-deep-core" target="_blank"><strong>Forget crunches — a Pilates instructor shares 9 exercises to target your deep core</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/wellness/smart-rings/i-ditched-alcohol-for-30-days-and-my-oura-ring-5-showed-one-surprising-change" target="_blank"><strong>I ditched alcohol for 30 days — and my Oura Ring 5 showed one surprising change</strong></a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 3 best new to Netflix movies you should stream this weekend (September 25-27) ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Looking for something new to watch on <a href="https://www.tomsguide.com/entertainment/streaming/netflix">Netflix </a>this weekend? You’ve come to the right place. The streaming service is constantly adding movies to its library, which is great when you want something fresh to watch but can also make it surprisingly difficult to decide what’s actually worth your time.</p><p>I’ve picked out three new movies that have recently landed on Netflix and are worth adding to your weekend watchlist. There’s a little bit of everything here, from a true-story drama following the rise of one of America’s most notorious criminals, to a high-stakes cyber-heist thriller about a group of young hackers. And for horror fans, there’s also a supernatural psychological horror movie about a brother and sister investigating an antique mirror.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ODmDlX"></div>                            </div>                            <script src="https://kwizly.com/embed/ODmDlX.js" async></script><h2 id="unabomber-2026">‘Unabomber’ (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/B3tR6qQjbgI" allowfullscreen></iframe></div></div><p>One of Netflix’s biggest new releases this week is “Unabomber,” a biographical psychological drama inspired by the real-life story of Ted Kaczynski and the FBI investigation that eventually led to his capture. Rather than simply focusing on Kaczynski’s years living in isolation or the manifesto that made him infamous, the movie explores a lesser-known part of his early life, including psychological experiments he took part in while studying at Harvard in the late 1950s and early 1960s. If you’re a fan of true-story dramas, this is definitely one to add to your watchlist.</p><p>“Unabomber” follows Kaczynski (Jacob Tremblay) as a 16-year-old mathematics prodigy at Harvard, where he becomes involved in controversial psychological experiments conducted by Professor Henry Murray (Russell Crowe). The story then jumps forward decades, as FBI agent Joanne Miller (Shailene Woodley) leads the investigation into the Unabomber, who has carried out a series of deadly mail bombings. Told across two timelines, the film follows Kaczynski’s transformation and the FBI’s lengthy pursuit to identify and capture him.</p><p><em><strong>Watch "Unabomber" on </strong></em><a href="https://www.netflix.com/title/82010386" target="_blank" rel="nofollow"><em><strong>Netflix</strong></em></a></p><h2 id="lifehack-2025">‘Lifehack’ (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/QHy4ZMbz4FU" allowfullscreen></iframe></div></div><p>Screenlife thrillers don’t always get the attention they deserve, but the new addition “Lifehack” could be one to keep an eye on. Directed by Ronan Corrigan in his feature directorial debut, the cyber-thriller tells its entire story through computer screens, phone displays, social media feeds, surveillance footage and Discord calls. If you enjoyed movies like “Searching” and “Missing,” you’ll probably know what to expect from the format, but “Lifehack” puts its own spin on it with a story about how quickly things can go wrong when too much of your life is shared online.</p><p>Kyle (Georgie Farmer) and his three friends, a group of tech-savvy teenagers, spend their time hacking online scammers for fun. Looking for a bigger challenge, Kyle convinces the group to target billionaire crypto mogul Don Heard (Charlie Creed-Miles) by gathering information from his daughter Lindsey (Jessica Reynolds). The friends manage to infiltrate Don’s cryptocurrency wallet and steal millions, believing they have pulled off the perfect heist. However, Lindsey soon discovers what they have done and gives Kyle an ultimatum: help her take everything from her father or face the consequences. </p><p><em><strong>Watch "Lifehack" on </strong></em><a href="https://www.netflix.com/title/82871752" target="_blank" rel="nofollow"><em><strong>Netflix</strong></em></a></p><h2 id="oculus-2013">‘Oculus’ (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/66RBsIsWJBQ" allowfullscreen></iframe></div></div><p>October is just around the corner, which means there’s no better time to start building your spooky watchlist and get into the Halloween spirit. Netflix is getting in on the action too, with several scary movies being added to the service, including “Oculus.” This supernatural psychological horror movie was one of the films that helped put Mike Flanagan on the map, and it’s easy to see why. The movie plays with your perception in some seriously unsettling ways, making it difficult to know what’s real and what isn’t. It’s a pretty intense watch, and if you finish “Oculus” feeling like you’ve just woken up from a bizarre fever dream, I wouldn’t blame you.</p><p>Siblings Kaylie (Karen Gillan) and Tim Russell reunite after Tim (Brenton Thwaites) is released from psychiatric care 11 years after their parents’ deaths. Tim was convicted of killing their father, but Kaylie believes an antique mirror called the Lasser Glass was actually responsible. She tracks down the mirror and brings it back to their childhood home, setting up cameras and a mechanism designed to destroy it while documenting its effects. As the siblings investigate its history, strange events begin happening around them, while flashbacks reveal what happened to their family years earlier. </p><p><em><strong>Watch "Oculus" on </strong></em><a href="https://www.netflix.com/title/70293316" target="_blank" rel="nofollow"><em><strong>Netflix</strong></em></a><em><strong> </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/netflix/new-on-netflix-in-september-2026-5-best-movies-and-shows-to-stream-plus-full-release-list">Everything new on Netflix in September 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/netflix/netflix-just-added-an-intense-psychological-thriller-movie-with-an-apocalyptic-twist-and-its-an-unpredictable-nightmare">Netflix just added an intense psychological thriller movie</a></li><li><a href="https://www.tomsguide.com/entertainment/netflix/netflix-is-about-to-remove-77-movies-heres-the-5-to-watch-before-its-too-late">Netflix is about to remove 77 movies</a></li></ul><div data-model-name="Disney Plus,Hulu,Max,Paramount Plus,Peacock TV" data-widget-type="multimodelreview" data-widget-title="Streaming service deals not to miss"></div> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/netflix/3-best-new-to-netflix-movies-you-should-stream-this-weekend-september-25-27</link>
                                                                            <description>
                            <![CDATA[ Looking for something new to watch this weekend? These 3 Netflix movies are well worth adding to your list. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">zmqcYwEq3NhWFWBA2C2mxh</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/VWRSnN2XgiPsCEcNqT9WYM-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 25 Sep 2026 09:35:28 +0000</pubDate>                                                                                                                                <updated>Fri, 25 Sep 2026 18:04:11 +0000</updated>
                                                                                                                                            <category><![CDATA[Netflix]]></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/VWRSnN2XgiPsCEcNqT9WYM-1920-80.jpg">
                                                            <media:credit><![CDATA[Imago / Alamy]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Netflix logo on blue neon striped background]]></media:description>                                                            <media:text><![CDATA[Netflix logo on blue neon striped background]]></media:text>
                                <media:title type="plain"><![CDATA[Netflix logo on blue neon striped background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/VWRSnN2XgiPsCEcNqT9WYM-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Looking for something new to watch on <a href="https://www.tomsguide.com/entertainment/streaming/netflix">Netflix </a>this weekend? You’ve come to the right place. The streaming service is constantly adding movies to its library, which is great when you want something fresh to watch but can also make it surprisingly difficult to decide what’s actually worth your time.</p><p>I’ve picked out three new movies that have recently landed on Netflix and are worth adding to your weekend watchlist. There’s a little bit of everything here, from a true-story drama following the rise of one of America’s most notorious criminals, to a high-stakes cyber-heist thriller about a group of young hackers. And for horror fans, there’s also a supernatural psychological horror movie about a brother and sister investigating an antique mirror.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ODmDlX"></div>                            </div>                            <script src="https://kwizly.com/embed/ODmDlX.js" async></script><h2 id="unabomber-2026">‘Unabomber’ (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/B3tR6qQjbgI" allowfullscreen></iframe></div></div><p>One of Netflix’s biggest new releases this week is “Unabomber,” a biographical psychological drama inspired by the real-life story of Ted Kaczynski and the FBI investigation that eventually led to his capture. Rather than simply focusing on Kaczynski’s years living in isolation or the manifesto that made him infamous, the movie explores a lesser-known part of his early life, including psychological experiments he took part in while studying at Harvard in the late 1950s and early 1960s. If you’re a fan of true-story dramas, this is definitely one to add to your watchlist.</p><p>“Unabomber” follows Kaczynski (Jacob Tremblay) as a 16-year-old mathematics prodigy at Harvard, where he becomes involved in controversial psychological experiments conducted by Professor Henry Murray (Russell Crowe). The story then jumps forward decades, as FBI agent Joanne Miller (Shailene Woodley) leads the investigation into the Unabomber, who has carried out a series of deadly mail bombings. Told across two timelines, the film follows Kaczynski’s transformation and the FBI’s lengthy pursuit to identify and capture him.</p><p><em><strong>Watch "Unabomber" on </strong></em><a href="https://www.netflix.com/title/82010386" target="_blank" rel="nofollow"><em><strong>Netflix</strong></em></a></p><h2 id="lifehack-2025">‘Lifehack’ (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/QHy4ZMbz4FU" allowfullscreen></iframe></div></div><p>Screenlife thrillers don’t always get the attention they deserve, but the new addition “Lifehack” could be one to keep an eye on. Directed by Ronan Corrigan in his feature directorial debut, the cyber-thriller tells its entire story through computer screens, phone displays, social media feeds, surveillance footage and Discord calls. If you enjoyed movies like “Searching” and “Missing,” you’ll probably know what to expect from the format, but “Lifehack” puts its own spin on it with a story about how quickly things can go wrong when too much of your life is shared online.</p><p>Kyle (Georgie Farmer) and his three friends, a group of tech-savvy teenagers, spend their time hacking online scammers for fun. Looking for a bigger challenge, Kyle convinces the group to target billionaire crypto mogul Don Heard (Charlie Creed-Miles) by gathering information from his daughter Lindsey (Jessica Reynolds). The friends manage to infiltrate Don’s cryptocurrency wallet and steal millions, believing they have pulled off the perfect heist. However, Lindsey soon discovers what they have done and gives Kyle an ultimatum: help her take everything from her father or face the consequences. </p><p><em><strong>Watch "Lifehack" on </strong></em><a href="https://www.netflix.com/title/82871752" target="_blank" rel="nofollow"><em><strong>Netflix</strong></em></a></p><h2 id="oculus-2013">‘Oculus’ (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/66RBsIsWJBQ" allowfullscreen></iframe></div></div><p>October is just around the corner, which means there’s no better time to start building your spooky watchlist and get into the Halloween spirit. Netflix is getting in on the action too, with several scary movies being added to the service, including “Oculus.” This supernatural psychological horror movie was one of the films that helped put Mike Flanagan on the map, and it’s easy to see why. The movie plays with your perception in some seriously unsettling ways, making it difficult to know what’s real and what isn’t. It’s a pretty intense watch, and if you finish “Oculus” feeling like you’ve just woken up from a bizarre fever dream, I wouldn’t blame you.</p><p>Siblings Kaylie (Karen Gillan) and Tim Russell reunite after Tim (Brenton Thwaites) is released from psychiatric care 11 years after their parents’ deaths. Tim was convicted of killing their father, but Kaylie believes an antique mirror called the Lasser Glass was actually responsible. She tracks down the mirror and brings it back to their childhood home, setting up cameras and a mechanism designed to destroy it while documenting its effects. As the siblings investigate its history, strange events begin happening around them, while flashbacks reveal what happened to their family years earlier. </p><p><em><strong>Watch "Oculus" on </strong></em><a href="https://www.netflix.com/title/70293316" target="_blank" rel="nofollow"><em><strong>Netflix</strong></em></a><em><strong> </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/netflix/new-on-netflix-in-september-2026-5-best-movies-and-shows-to-stream-plus-full-release-list">Everything new on Netflix in September 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/netflix/netflix-just-added-an-intense-psychological-thriller-movie-with-an-apocalyptic-twist-and-its-an-unpredictable-nightmare">Netflix just added an intense psychological thriller movie</a></li><li><a href="https://www.tomsguide.com/entertainment/netflix/netflix-is-about-to-remove-77-movies-heres-the-5-to-watch-before-its-too-late">Netflix is about to remove 77 movies</a></li></ul><div data-model-name="Disney Plus,Hulu,Max,Paramount Plus,Peacock TV" data-widget-type="multimodelreview" data-widget-title="Streaming service deals not to miss"></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 'Heart of the Beast' review: I wanted to love Brad Pitt's new survival thriller. Then it got really cheesy ]]></title>
                                                                                                <dc:content><![CDATA[ <p>I’m not a dog person, but I understand the reluctance of some animal lovers to watch a movie with a pet in peril, and clearly the filmmakers behind <strong>“Heart of the Beast”</strong> do, too. They know their audience, and they make sure to open the movie with a flash-forward featuring military-trained German Shepherd Odin emerging from the Alaskan wilderness to encounter a friendly driver (Anna Lambe). Thus, when the story flashes back to a week earlier and Odin and his owner, James Belmont (<a href="https://www.tomsguide.com/entertainment/movies/best-brad-pitt-movies-ranked"><strong>Brad Pitt</strong></a>), face grave danger, viewers can rest easy knowing that the loyal dog will make it out alive.</p><div  class="fancy-box"><div class="fancy_box-title">Tom's Guide Verdict: “Heart of the Beast”</div><div class="fancy_box_body"><p class="fancy-box__body-text"><ul><li><strong>Rating: 2.5/5 Stars</strong></li><li><strong>Verdict: </strong>Although it features some tense moments and strong performances from both Brad Pitt and Odin the dog, this survival drama about a military veteran and his canine companion stranded in the wilderness is cheesy and unconvincing, and disingenuous in its messaging.</li><li><strong>Where to watch:</strong> <a data-analytics-id="inline-link" href="https://www.fandango.com/heart-of-the-beast-2026-246224/movie-overview" target="_blank" rel="nofollow">Opens in theaters Sept. 25</a></li></ul></p></div></div><p>That’s considerate of the sensitive dog owners in the audience, but it’s also indicative of the safe, obvious and frequently hokey tone of director David Ayer’s survival drama. There are moments when “Heart of the Beast” is stark and tense, even with the knowledge of Odin’s survival, but far too much of it is predictable and borderline sappy, especially when it veers uncomfortably close to military propaganda territory at the end. </p><p>There’s nothing here as offensively manipulative as garbage like “A Dog’s Purpose” or “A Dog’s Way Home,” but “Heart of the Beast” also pales in comparison to gripping stories of lone men against the elements, like “All Is Lost” or “127 Hours.”</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="heart-of-the-beast-is-best-when-it-keeps-things-simple">‘Heart of the Beast’ is best when it keeps things simple</h2><p>There’s no need for an elaborate backstory in order to understand the stakes for James and Odin, and “Heart of the Beast” doesn’t bother with lengthy setup. The movie opens with the pair gliding above the open expanse of nature in James’ small two-seater plane, which he lands on the water next to a lovely, isolated spot. The dialogue is minimal, and there’s only one brief stretch of the movie in which James interacts with another human.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/bfCgu83suHs" allowfullscreen></iframe></div></div><p>At first, James’ camping trip is idyllic, as he goes fishing and birdwatching and cooks for himself and his dog. He’s wary when he comes across a grizzled retired miner played by J.K. Simmons, but he eventually lets his guard down enough for the two men to share a beer and some conversation. James is an Army Special Forces veteran, and so is Odin, and both of them carry physical and emotional scars. It’s a bit silly when Odin has his own PTSD episode, complete with wartime sound effects, but Ayer and the animal trainers imbue the dog with its own soulful presence.</p><p>The miner warns James about an impending storm, but it’s not the weather that causes problems on the flight home. After navigating through the clouds, James has a heart attack and passes out, and the plane goes down, 50-plus miles from the nearest road. No extra challenges are needed in order to make the trek to safety suspenseful and thrilling, and Ayer and screenwriter Cameron Alexander resist sensationalizing the story, at least for a little while.</p><h2 id="heart-of-the-beast-gets-cheesier-as-it-goes-along">‘Heart of the Beast’ gets cheesier as it goes along</h2><p>There’s plenty of tension in just watching James dive to the bottom of a lake to retrieve his supplies from the submerged plane, and one of the most exciting sequences involves an attempt to cross a ravine over a surging river via a pair of fallen logs. Eventually, though, Ayer throws in some poorly rendered CGI predators, which are more distracting than menacing, especially in a clumsy scene in which James and Odin are attacked by a pack of wolves.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="fyUx6ZEHMmipX9PEpT8xDU" name="heartofthebeast-pitt-dog" alt="Brad Pitt and dog in Heart of the Beast" src="https://cdn.mos.cms.futurecdn.net/fyUx6ZEHMmipX9PEpT8xDU-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: Paramount Pictures)</span></figcaption></figure><p>Heart attack aside, James persists through an absurd amount of injury and fatigue, and Odin is equally hardy, despite his use of a prosthetic leg. That’s standard for this kind of survival story, but it stretches credibility over time, and Ayer tugs on the audience’s heartstrings further via sepia-toned flashbacks to James and Odin’s service in an unnamed foreign country. </p><p>It’s the kind of heavy-handed pseudo-patriotic sentimentality one might expect from a Peter Berg/Mark Wahlberg movie, and Ayer isn’t any better at making it convincing.</p><h2 id="verdict-heart-of-the-beast-is-more-corny-than-rousing">Verdict: ‘Heart of the Beast’ is more corny than rousing</h2><p>Ayer’s films are often full of macho bluster, from the urban crime of “Street Kings” and “Sabotage” to the Jason Statham action of <a href="https://www.tomsguide.com/entertainment/prime-video/new-no-1-prime-video-movie-is-my-biggest-surprise-of-the-year-and-viewers-score-it-92-on-rotten-tomatoes">“The Beekeeper”</a> and <a href="https://www.tomsguide.com/entertainment/prime-video/prime-video-just-added-a-new-action-thriller-movie-with-jason-statham-and-its-perfect-for-fans-of-no-1-hit-the-beekeeper">“A Working Man”</a> to his previous Pitt collaboration, the World War II drama “Fury.” “Heart of the Beast” is gentler, but it’s still aimed squarely at the middle-aged dad demographic (it’s no mistake that James spends time wearing a Bass Pro Shops T-shirt). </p><p>Pitt is appropriately gritty as James, and he’s allowed himself to age more naturally than his peer and one-time co-star Tom Cruise, but this is still a simplistic fantasy. That wouldn’t be such a bad thing if it weren’t for the movie’s final moments, which might as well be a military recruitment PSA. </p><p>Over the lovely Alaskan vistas (actually New Zealand) and Jared Michael Fry’s treacly score, “Heart of the Beast” offers a final disingenuous message of sacrifice. Even dog lovers who are shedding a tear over Odin’s bravery may find it distasteful.</p><p><em><strong>“Heart of the Beast” opens Sept. 25 in theaters</strong></em></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xk31gX"></div>                            </div>                            <script src="https://kwizly.com/embed/Xk31gX.js" async></script> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/movies/heart-of-the-beast-review-i-wanted-to-love-brad-pitts-new-survival-thriller-then-it-got-really-cheesy</link>
                                                                            <description>
                            <![CDATA[ A military veteran is stranded in the wilderness alongside his dog, but the story of their journey barely tugs at the heartstrings. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">KRGMAzAhn6qcighV2BWLAS</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/ABiD4nLCamQFBnNWEWb9m9-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 25 Sep 2026 06:30:00 +0000</pubDate>                                                                                                                                <updated>Fri, 25 Sep 2026 08:37:14 +0000</updated>
                                                                                                                                            <category><![CDATA[Movies]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                                                                                    <dc:creator><![CDATA[ Josh Bell ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/7YJDqbzv55AwNVnwqDfBK9-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/ABiD4nLCamQFBnNWEWb9m9-1920-80.jpg">
                                                            <media:credit><![CDATA[Paramount Pictures]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Brad Pitt and dog in Heart of the Beast]]></media:description>                                                            <media:text><![CDATA[Brad Pitt and dog in Heart of the Beast]]></media:text>
                                <media:title type="plain"><![CDATA[Brad Pitt and dog in Heart of the Beast]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/ABiD4nLCamQFBnNWEWb9m9-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I’m not a dog person, but I understand the reluctance of some animal lovers to watch a movie with a pet in peril, and clearly the filmmakers behind <strong>“Heart of the Beast”</strong> do, too. They know their audience, and they make sure to open the movie with a flash-forward featuring military-trained German Shepherd Odin emerging from the Alaskan wilderness to encounter a friendly driver (Anna Lambe). Thus, when the story flashes back to a week earlier and Odin and his owner, James Belmont (<a href="https://www.tomsguide.com/entertainment/movies/best-brad-pitt-movies-ranked"><strong>Brad Pitt</strong></a>), face grave danger, viewers can rest easy knowing that the loyal dog will make it out alive.</p><div  class="fancy-box"><div class="fancy_box-title">Tom's Guide Verdict: “Heart of the Beast”</div><div class="fancy_box_body"><p class="fancy-box__body-text"><ul><li><strong>Rating: 2.5/5 Stars</strong></li><li><strong>Verdict: </strong>Although it features some tense moments and strong performances from both Brad Pitt and Odin the dog, this survival drama about a military veteran and his canine companion stranded in the wilderness is cheesy and unconvincing, and disingenuous in its messaging.</li><li><strong>Where to watch:</strong> <a data-analytics-id="inline-link" href="https://www.fandango.com/heart-of-the-beast-2026-246224/movie-overview" target="_blank" rel="nofollow">Opens in theaters Sept. 25</a></li></ul></p></div></div><p>That’s considerate of the sensitive dog owners in the audience, but it’s also indicative of the safe, obvious and frequently hokey tone of director David Ayer’s survival drama. There are moments when “Heart of the Beast” is stark and tense, even with the knowledge of Odin’s survival, but far too much of it is predictable and borderline sappy, especially when it veers uncomfortably close to military propaganda territory at the end. </p><p>There’s nothing here as offensively manipulative as garbage like “A Dog’s Purpose” or “A Dog’s Way Home,” but “Heart of the Beast” also pales in comparison to gripping stories of lone men against the elements, like “All Is Lost” or “127 Hours.”</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="heart-of-the-beast-is-best-when-it-keeps-things-simple">‘Heart of the Beast’ is best when it keeps things simple</h2><p>There’s no need for an elaborate backstory in order to understand the stakes for James and Odin, and “Heart of the Beast” doesn’t bother with lengthy setup. The movie opens with the pair gliding above the open expanse of nature in James’ small two-seater plane, which he lands on the water next to a lovely, isolated spot. The dialogue is minimal, and there’s only one brief stretch of the movie in which James interacts with another human.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/bfCgu83suHs" allowfullscreen></iframe></div></div><p>At first, James’ camping trip is idyllic, as he goes fishing and birdwatching and cooks for himself and his dog. He’s wary when he comes across a grizzled retired miner played by J.K. Simmons, but he eventually lets his guard down enough for the two men to share a beer and some conversation. James is an Army Special Forces veteran, and so is Odin, and both of them carry physical and emotional scars. It’s a bit silly when Odin has his own PTSD episode, complete with wartime sound effects, but Ayer and the animal trainers imbue the dog with its own soulful presence.</p><p>The miner warns James about an impending storm, but it’s not the weather that causes problems on the flight home. After navigating through the clouds, James has a heart attack and passes out, and the plane goes down, 50-plus miles from the nearest road. No extra challenges are needed in order to make the trek to safety suspenseful and thrilling, and Ayer and screenwriter Cameron Alexander resist sensationalizing the story, at least for a little while.</p><h2 id="heart-of-the-beast-gets-cheesier-as-it-goes-along">‘Heart of the Beast’ gets cheesier as it goes along</h2><p>There’s plenty of tension in just watching James dive to the bottom of a lake to retrieve his supplies from the submerged plane, and one of the most exciting sequences involves an attempt to cross a ravine over a surging river via a pair of fallen logs. Eventually, though, Ayer throws in some poorly rendered CGI predators, which are more distracting than menacing, especially in a clumsy scene in which James and Odin are attacked by a pack of wolves.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="fyUx6ZEHMmipX9PEpT8xDU" name="heartofthebeast-pitt-dog" alt="Brad Pitt and dog in Heart of the Beast" src="https://cdn.mos.cms.futurecdn.net/fyUx6ZEHMmipX9PEpT8xDU-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: Paramount Pictures)</span></figcaption></figure><p>Heart attack aside, James persists through an absurd amount of injury and fatigue, and Odin is equally hardy, despite his use of a prosthetic leg. That’s standard for this kind of survival story, but it stretches credibility over time, and Ayer tugs on the audience’s heartstrings further via sepia-toned flashbacks to James and Odin’s service in an unnamed foreign country. </p><p>It’s the kind of heavy-handed pseudo-patriotic sentimentality one might expect from a Peter Berg/Mark Wahlberg movie, and Ayer isn’t any better at making it convincing.</p><h2 id="verdict-heart-of-the-beast-is-more-corny-than-rousing">Verdict: ‘Heart of the Beast’ is more corny than rousing</h2><p>Ayer’s films are often full of macho bluster, from the urban crime of “Street Kings” and “Sabotage” to the Jason Statham action of <a href="https://www.tomsguide.com/entertainment/prime-video/new-no-1-prime-video-movie-is-my-biggest-surprise-of-the-year-and-viewers-score-it-92-on-rotten-tomatoes">“The Beekeeper”</a> and <a href="https://www.tomsguide.com/entertainment/prime-video/prime-video-just-added-a-new-action-thriller-movie-with-jason-statham-and-its-perfect-for-fans-of-no-1-hit-the-beekeeper">“A Working Man”</a> to his previous Pitt collaboration, the World War II drama “Fury.” “Heart of the Beast” is gentler, but it’s still aimed squarely at the middle-aged dad demographic (it’s no mistake that James spends time wearing a Bass Pro Shops T-shirt). </p><p>Pitt is appropriately gritty as James, and he’s allowed himself to age more naturally than his peer and one-time co-star Tom Cruise, but this is still a simplistic fantasy. That wouldn’t be such a bad thing if it weren’t for the movie’s final moments, which might as well be a military recruitment PSA. </p><p>Over the lovely Alaskan vistas (actually New Zealand) and Jared Michael Fry’s treacly score, “Heart of the Beast” offers a final disingenuous message of sacrifice. Even dog lovers who are shedding a tear over Odin’s bravery may find it distasteful.</p><p><em><strong>“Heart of the Beast” opens Sept. 25 in theaters</strong></em></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xk31gX"></div>                            </div>                            <script src="https://kwizly.com/embed/Xk31gX.js" async></script>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ What was missing from Meta Connect 2026? An apology ]]></title>
                                                                                                <dc:content><![CDATA[ <p>At the <a href="https://www.tomsguide.com/news/live/meta-connect-2026-live">Meta Connect 2026</a> keynote, Mark Zuckerberg announced a raft of new devices: VR glasses that could rival the Apple Vision Pro, audio-only smart glasses, and even a clever-looking pendant to house its new Muse AI. However, there was one thing that I was waiting to hear, which never came.</p><p>An apology.</p><p>This entire year, there have been dozens upon dozens of reports of smart glasses being used to record and harass individuals (many of them women), with those recordings appearing on Instagram and other social media platforms, where they’ve been amplified.</p><p>There was an entire cottage industry of people who you could pay to remove or disable the recording light in Meta smart glasses, so others wouldn’t know if you were filming them.</p><p>Over the summer, the backlash against “pervert glasses” grew so strong that DuckDuckGo, the privacy browser, cheekily released its own “<a href="https://duckduckgo.com/collaborations"><u>smart glasses</u></a>” — just regular sunglasses, no tech whatsoever.</p>                    <div class= "tiktok-wrapper" style="min-height: 750px;"><blockquote class="tiktok-embed" cite="https://www.tiktok.com/@tomsguide/video/7688894980143795470" data-video-id="7688894980143795470" style="max-width: 605px; min-width: 325px;">                        <section>                            <a target="_blank" title="@tomsguide" href="https://www.tiktok.com/@tomsguide">@tomsguide</a>                            <p></p><a target="_blank" title="♬ original sound - Tom’s Guide" href="https://www.tiktok.com/music/original-sound-7688894923122264846">♬ original sound - Tom’s Guide</a></section>                    </blockquote></div>                <p>A <a href="https://www.sydney.edu.au/news-opinion/news/2026/08/11/smart-glasses-pose-new-harassment-risks-for-women-research-meta.html"><u>research paper published in August</u></a> from the University of Sydney highlighted how Instagram influencers regularly used Meta smart glasses to harass women in public or semi-public settings.</p><p>Yes, Meta did update the firmware in its glasses to prevent them from recording video if the light was blocked or disabled, and it did ban a number of Instagram accounts. But you would think that a company whose reputation was so damaged that its products were now called “pervert glasses” would do a little more in the way of damage control when it had the spotlight all to itself.</p><p>The backlash against smart glasses is only growing stronger. Last week, <a href="https://www.techradar.com/computing/virtual-reality-augmented-reality/we-dont-want-whats-happening-in-the-us-to-happen-here-australias-smart-glasses-ban-extends-to-even-more-public-areas"><u>several local governments in Australia voted to ban them</u></a> from even more public spaces while <a href="https://www.cnn.com/2026/09/22/tech/london-privacy-pushback-meta-smart-glasses"><u>restaurants, pubs and theaters in London are also considering similar bans</u></a>. </p><p>Meta’s new audio-only smart glasses can be seen as a response to this backlash, but it’s not enough. And, as Zuckerberg himself said in an interview with Joanna Stern, it’s not even that. “We didn’t decide to design this because people had some questions two months ago,” he said. </p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/2cg56uF4hlc?start=1039" allowfullscreen></iframe></div></div><p>In the same interview, Zuckerberg said that Meta has added privacy features to its glasses over time, but should have also done a better job in advertising them. </p><p>Of course, as Stern noted, it took her reporting to alert Meta to the fact that people were modifying its glasses. Zuckerberg noted that the number of glasses that were bricked as a result of their recording lights being tampered with amounted to “less than one tenth of a percent,” which would amount to several thousand glasses. </p><p>During the keynote, Zuckerberg merely reiterated the protections already in place. “We built several leading privacy features for glasses from the beginning as well, including the light that turns on any time you take and save a photo or video,” he said, “and it disables capturing images and videos if that light gets tampered with.”</p><p>Meta's CEO then went on to talk about privacy protections as it relates to Meta being able to see how you interact with its Muse AI, but nothing more about preventing bad behavior of those using those devices.</p><h2 id="smart-glasses-are-still-growing">Smart glasses are still growing </h2><p>Maybe Zuckerberg doesn’t feel he needs to apologize for anything. After all, smart glasses sales are booming. Counterpoint Research released a report that said <a href="https://counterpointresearch.com/en/insights/global-ai-glasses-shipments-surge-263-percent-yoy-with-display-less-ai-glasses"><u>shipments in the first half of 2016 grew 263% year over year</u></a>, and that Meta accounted for 94% of it. That’s a lot — in 2025, EssilorLuxottica, the company that actually makes Meta’s glasses, <a href="https://www.cnbc.com/2026/02/11/ray-ban-maker-essilorluxottica-triples-sales-of-meta-ai-glasses.html"><u>said that it sold 7 million pairs</u></a>, up from 2 million in 2023 and 2024 combined.  </p><p>An IDC report predicts that smart glasses will grow 35% to 13 million this year, and nearly double  to 25 million by 2030."</p><p>But, when even <a href="https://www.nytimes.com/2026/08/18/technology/ice-meta-smart-glasses.html"><u>ICE bans its officers from using smart glasses</u></a>, there’s more than an idle concern over the intrusiveness of these wearables.</p><p>It’s a shame. Smart glasses with cameras do have some real benefits, from helping know what’s around you, to aiding those with vision problems. But having something with a camera that’s constantly recording — or is capable of doing so — introduces a host of privacy issues that Meta didn’t consider, and even now, only seems to be paying lip service to. </p><p>When a very unfinished Apple Maps launched, <a href="https://www.theguardian.com/technology/2012/sep/28/apple-maps-tim-cook-apology"><u>Tim Cook issued an apology</u></a>. This past summer, when it was revealed that law enforcement officials were abusing its technology, <a href="https://www.cbsnews.com/news/flock-ceo-apologizes-surveillance-technology-abused-company-changes/"><u>Flock’s CEO apologized</u></a>. Even Mark Zuckerberg once <a href="https://www.cbsnews.com/news/mark-zuckerberg-apologizes-parents-victims-online-exploitation-senate-hearing/"><u>apologized to the parents of children who were victims of online abuse</u></a>, though it took a senate hearing to do so.  </p><p>Even an acknowledgement that Meta's glasses were being used for ill intent, and some note of sympathy for the victims, would have been at least something.</p><p>Short of being called up to Capitol Hill, what’s it going to take for Meta to show any sort of contrition? Yes, the company itself wasn’t the one harassing women, but its tools and technology enabled the behavior, and it didn’t do enough to stop it sooner. </p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/smart-glasses/im-worried-smart-glasses-might-ruin-wearable-displays-and-of-course-its-the-cameras">I'm worried 'pervert glasses' are going to ruin all smart glasses</a></li><li><a href="https://www.tomsguide.com/ai/less-pervert-y-meta-ai-glasses-will-now-stop-recording-if-you-cover-the-warning-light">Less pervy? Meta AI glasses will now stop recording if you cover the warning light</a></li><li><a href="https://www.tomsguide.com/computing/smart-glasses/i-just-went-hands-on-with-the-new-samsung-smart-glasses-heres-why-id-pick-them-over-meta">I just went hands-on with the new Samsung smart glasses</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/smart-glasses/what-was-missing-from-meta-connect-2026-an-apology</link>
                                                                            <description>
                            <![CDATA[ At Meta Connect 2026, Mark Zuckerberg said little to address or dispel the perception of his company's devices as "pervert glasses" ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">My2HuZaCT2UbhA3wvca6wK</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/nuZDq8eyQSzQXqAFhWk2C8-1920-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Thu, 24 Sep 2026 17:43:28 +0000</pubDate>                                                                                                                                <updated>Thu, 24 Sep 2026 17:45:43 +0000</updated>
                                                                                                                                            <category><![CDATA[Smart Glasses]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[VR & AR]]></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/png" url="https://cdn.mos.cms.futurecdn.net/nuZDq8eyQSzQXqAFhWk2C8-1920-80.png">
                                                            <media:credit><![CDATA[Meta]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Zuckerberg entrance at Meta Connect 2026]]></media:description>                                                            <media:text><![CDATA[Zuckerberg entrance at Meta Connect 2026]]></media:text>
                                <media:title type="plain"><![CDATA[Zuckerberg entrance at Meta Connect 2026]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/nuZDq8eyQSzQXqAFhWk2C8-1920-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>At the <a href="https://www.tomsguide.com/news/live/meta-connect-2026-live">Meta Connect 2026</a> keynote, Mark Zuckerberg announced a raft of new devices: VR glasses that could rival the Apple Vision Pro, audio-only smart glasses, and even a clever-looking pendant to house its new Muse AI. However, there was one thing that I was waiting to hear, which never came.</p><p>An apology.</p><p>This entire year, there have been dozens upon dozens of reports of smart glasses being used to record and harass individuals (many of them women), with those recordings appearing on Instagram and other social media platforms, where they’ve been amplified.</p><p>There was an entire cottage industry of people who you could pay to remove or disable the recording light in Meta smart glasses, so others wouldn’t know if you were filming them.</p><p>Over the summer, the backlash against “pervert glasses” grew so strong that DuckDuckGo, the privacy browser, cheekily released its own “<a href="https://duckduckgo.com/collaborations"><u>smart glasses</u></a>” — just regular sunglasses, no tech whatsoever.</p>                    <div class= "tiktok-wrapper" style="min-height: 750px;"><blockquote class="tiktok-embed" cite="https://www.tiktok.com/@tomsguide/video/7688894980143795470" data-video-id="7688894980143795470" style="max-width: 605px; min-width: 325px;">                        <section>                            <a target="_blank" title="@tomsguide" href="https://www.tiktok.com/@tomsguide">@tomsguide</a>                            <p></p><a target="_blank" title="♬ original sound - Tom’s Guide" href="https://www.tiktok.com/music/original-sound-7688894923122264846">♬ original sound - Tom’s Guide</a></section>                    </blockquote></div>                <p>A <a href="https://www.sydney.edu.au/news-opinion/news/2026/08/11/smart-glasses-pose-new-harassment-risks-for-women-research-meta.html"><u>research paper published in August</u></a> from the University of Sydney highlighted how Instagram influencers regularly used Meta smart glasses to harass women in public or semi-public settings.</p><p>Yes, Meta did update the firmware in its glasses to prevent them from recording video if the light was blocked or disabled, and it did ban a number of Instagram accounts. But you would think that a company whose reputation was so damaged that its products were now called “pervert glasses” would do a little more in the way of damage control when it had the spotlight all to itself.</p><p>The backlash against smart glasses is only growing stronger. Last week, <a href="https://www.techradar.com/computing/virtual-reality-augmented-reality/we-dont-want-whats-happening-in-the-us-to-happen-here-australias-smart-glasses-ban-extends-to-even-more-public-areas"><u>several local governments in Australia voted to ban them</u></a> from even more public spaces while <a href="https://www.cnn.com/2026/09/22/tech/london-privacy-pushback-meta-smart-glasses"><u>restaurants, pubs and theaters in London are also considering similar bans</u></a>. </p><p>Meta’s new audio-only smart glasses can be seen as a response to this backlash, but it’s not enough. And, as Zuckerberg himself said in an interview with Joanna Stern, it’s not even that. “We didn’t decide to design this because people had some questions two months ago,” he said. </p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/2cg56uF4hlc?start=1039" allowfullscreen></iframe></div></div><p>In the same interview, Zuckerberg said that Meta has added privacy features to its glasses over time, but should have also done a better job in advertising them. </p><p>Of course, as Stern noted, it took her reporting to alert Meta to the fact that people were modifying its glasses. Zuckerberg noted that the number of glasses that were bricked as a result of their recording lights being tampered with amounted to “less than one tenth of a percent,” which would amount to several thousand glasses. </p><p>During the keynote, Zuckerberg merely reiterated the protections already in place. “We built several leading privacy features for glasses from the beginning as well, including the light that turns on any time you take and save a photo or video,” he said, “and it disables capturing images and videos if that light gets tampered with.”</p><p>Meta's CEO then went on to talk about privacy protections as it relates to Meta being able to see how you interact with its Muse AI, but nothing more about preventing bad behavior of those using those devices.</p><h2 id="smart-glasses-are-still-growing">Smart glasses are still growing </h2><p>Maybe Zuckerberg doesn’t feel he needs to apologize for anything. After all, smart glasses sales are booming. Counterpoint Research released a report that said <a href="https://counterpointresearch.com/en/insights/global-ai-glasses-shipments-surge-263-percent-yoy-with-display-less-ai-glasses"><u>shipments in the first half of 2016 grew 263% year over year</u></a>, and that Meta accounted for 94% of it. That’s a lot — in 2025, EssilorLuxottica, the company that actually makes Meta’s glasses, <a href="https://www.cnbc.com/2026/02/11/ray-ban-maker-essilorluxottica-triples-sales-of-meta-ai-glasses.html"><u>said that it sold 7 million pairs</u></a>, up from 2 million in 2023 and 2024 combined.  </p><p>An IDC report predicts that smart glasses will grow 35% to 13 million this year, and nearly double  to 25 million by 2030."</p><p>But, when even <a href="https://www.nytimes.com/2026/08/18/technology/ice-meta-smart-glasses.html"><u>ICE bans its officers from using smart glasses</u></a>, there’s more than an idle concern over the intrusiveness of these wearables.</p><p>It’s a shame. Smart glasses with cameras do have some real benefits, from helping know what’s around you, to aiding those with vision problems. But having something with a camera that’s constantly recording — or is capable of doing so — introduces a host of privacy issues that Meta didn’t consider, and even now, only seems to be paying lip service to. </p><p>When a very unfinished Apple Maps launched, <a href="https://www.theguardian.com/technology/2012/sep/28/apple-maps-tim-cook-apology"><u>Tim Cook issued an apology</u></a>. This past summer, when it was revealed that law enforcement officials were abusing its technology, <a href="https://www.cbsnews.com/news/flock-ceo-apologizes-surveillance-technology-abused-company-changes/"><u>Flock’s CEO apologized</u></a>. Even Mark Zuckerberg once <a href="https://www.cbsnews.com/news/mark-zuckerberg-apologizes-parents-victims-online-exploitation-senate-hearing/"><u>apologized to the parents of children who were victims of online abuse</u></a>, though it took a senate hearing to do so.  </p><p>Even an acknowledgement that Meta's glasses were being used for ill intent, and some note of sympathy for the victims, would have been at least something.</p><p>Short of being called up to Capitol Hill, what’s it going to take for Meta to show any sort of contrition? Yes, the company itself wasn’t the one harassing women, but its tools and technology enabled the behavior, and it didn’t do enough to stop it sooner. </p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/smart-glasses/im-worried-smart-glasses-might-ruin-wearable-displays-and-of-course-its-the-cameras">I'm worried 'pervert glasses' are going to ruin all smart glasses</a></li><li><a href="https://www.tomsguide.com/ai/less-pervert-y-meta-ai-glasses-will-now-stop-recording-if-you-cover-the-warning-light">Less pervy? Meta AI glasses will now stop recording if you cover the warning light</a></li><li><a href="https://www.tomsguide.com/computing/smart-glasses/i-just-went-hands-on-with-the-new-samsung-smart-glasses-heres-why-id-pick-them-over-meta">I just went hands-on with the new Samsung smart glasses</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 3 new to Hulu movies you need to stream this weekend —including a Tarantino classic (Sept. 25-27) ]]></title>
                                                                                                <dc:content><![CDATA[ <p><strong>Hulu</strong> has spent the whole of September stocking up on movies worth clearing an evening for, and this weekend is your opportunity to check some of the best new additions out. All of them are new to the service, though not necessarily new to you -- though if you haven't seen some of these, it's time to rectify that. </p><p>First up is <strong>"Inglourious Basterds,"</strong> which arrived on September 1. It may be older, but it's still one of Quentin Tarantino's most rewatchable and quotable films. Brad Pitt leads a squad of Nazi-hunting soldiers through occupied France, though the movie mostly belongs to Christoph Waltz, whose turn as Col. Hans Landa won him an Oscar. </p><p><strong>"ParaNorman" </strong>showed up the same day, and it's a great early pre-Halloween pick. It's also something the whole house can watch. This stop-motion follow-up to "Coraline" follows a kid who can see ghosts as he tries to stop a centuries-old witch's curse from swallowing his town, with an ending that goes somewhere darker. </p><p>Then on September 27, it's time to get into <strong>"A Complete Unknown."</strong> Timothée Chalamet plays Bob Dylan across the four years between his arrival in Greenwich Village and the night he went electric at Newport, with Edward Norton as Pete Seeger and Monica Barbaro as Joan Baez. Chalamet even did his own singing, so that's a fun treat. </p><p>That gives you a war movie, a spooky season warm-up, and a music biopic that'll still be new when Monday comes around. Hulu's full September slate has tons more to check out, but you should be good with these early picks. You can browse the rest in our roundup of <a href="https://www.tomsguide.com/entertainment/hulu/new-on-hulu-and-disney-in-september-2026-all-the-new-shows-and-movies-to-watch"><strong>everything new to Hulu and Disney+ this month</strong></a>. </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-inglorious-basterds-39-2009">'Inglorious Basterds' (2009)</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/uSEDz-my7XQ" allowfullscreen></iframe></div></div><p><strong>Genre: </strong>War/Drama</p><p><strong>What's it about? </strong>Quentin Tarantino rewrites the end of World War II with a bit of a comedic lens here and there. Brad Pitt's Lt. Aldo Raine leads a squad of Jewish-American soldiers through occupied France collecting Nazi scalps, while Mélanie Laurent's Shosanna, a cinema owner who escaped a massacre years earlier, plots to burn down her own theater with the German high command inside. Both plans converge on the same premiere night, and Christoph Waltz's Col. Hans Landa is on the trail of everyone involved.</p><p><strong>Why you need to watch it: </strong>Waltz won the Oscar for this one, and the opening scene at a French dairy farm shows why within about 20 minutes. Plus, any excuse to see Nazis meet their downfall makes for a good bit of entertainment, if you ask me. </p><p><em>Watch </em><a href="https://www.hulu.com/movie/inglourious-basterds-54da4af5-9c47-48d1-91bf-d05e27024b94" target="_blank" rel="nofollow"><em>"Inglourious Basterds" on Hulu</em></a><em> now </em></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W2d5vX"></div>                            </div>                            <script src="https://kwizly.com/embed/W2d5vX.js" async></script><h2 id="39-paranorman-39-2012">'ParaNorman' (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/hgwSpajMw3s" allowfullscreen></iframe></div></div><p><strong>Genre: </strong>Horror/Comedy</p><p><strong>What's it about? </strong>Norman Babcock is an 11-year-old who can see and talk to ghosts, which makes him a super weird kid in Blithe Hollow, a Massachusetts town that has turned its 300-year-old witch trial into a tourist trap. When the witch's curse activates and the judges who condemned her rise from their graves, Norman is the only one who can make things right, with help from his best friend Neil, his older sister, and the school bully.</p><p><strong>Why you should watch it:</strong> Laika made this between "Coraline" and "The Boxtrolls," and it's the studio's most underrated film. The stop-motion zombies are funny rather than scary, which keeps it safe for younger viewers, though the third act pivots into something a little darker -- it's a fantastic early Halloween pick, though. </p><p><em>Watch </em><a href="https://www.hulu.com/movie/paranorman-bf7f7c76-b1e1-4c1b-9aaf-6b9043341d1c" target="_blank" rel="nofollow"><em>"ParaNorman" on Hulu</em></a><em> now</em></p><h2 id="39-a-complete-unknown-39-2025">'A Complete Unknown' (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/FdV-Cs5o8mc" allowfullscreen></iframe></div></div><p><strong>Genre: </strong>Music/Biopic</p><p><strong>What's it about? J</strong>ames Mangold's film follows Bob Dylan across four years, from the day he shows up in Greenwich Village in 1961 to visit a hospitalized Woody Guthrie through his electric set at the 1965 Newport Folk Festival. Timothée Chalamet plays Dylan, with Edward Norton as Pete Seeger, Monica Barbaro as Joan Baez, Elle Fanning as girlfriend Sylvie Russo and Boyd Holbrook as Johnny Cash -- yes, THE Johnny Cash. </p><p><strong>Why you need to watch it: </strong>Chalamet sang and played guitar himself for every performance in the movie, and the concert sequences are excellent. Plus, the film earned eight Oscar nominations,</p><p><em>Watch </em><a href="https://www.hulu.com/movie/a-complete-unknown-2430ff55-a563-4adf-bc42-79c117e1907c" target="_blank" rel="nofollow"><em>"A Complete Unknown" on Hulu</em></a><em> on Sept. 27</em></p><div data-model-name="Hulu,Hulu + Live TV,Hulu Free Trial,Disney Plus Hulu Max bundle,Disney Plus Hulu ESPN Plus bundle" data-widget-type="multimodelreview"></div> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/hulu/3-new-to-hulu-movies-you-need-to-stream-this-weekend-including-a-tarantino-classic-sept-25-27</link>
                                                                            <description>
                            <![CDATA[ Hulu has tons of must-watch movies worth watching this weekend. Here are 3 you should check out. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">67Mr5rB9kWuT5WK5EckwtA</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/MxrT4PgovwwNJ4Ns5njWoV-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 24 Sep 2026 14:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Hulu]]></category>
                                                    <category><![CDATA[Movies]]></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/MxrT4PgovwwNJ4Ns5njWoV-1920-80.jpg">
                                                            <media:credit><![CDATA[Hulu; Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Hulu logo on popcorn background]]></media:description>                                                            <media:text><![CDATA[Hulu logo on popcorn background]]></media:text>
                                <media:title type="plain"><![CDATA[Hulu logo on popcorn background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/MxrT4PgovwwNJ4Ns5njWoV-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p><strong>Hulu</strong> has spent the whole of September stocking up on movies worth clearing an evening for, and this weekend is your opportunity to check some of the best new additions out. All of them are new to the service, though not necessarily new to you -- though if you haven't seen some of these, it's time to rectify that. </p><p>First up is <strong>"Inglourious Basterds,"</strong> which arrived on September 1. It may be older, but it's still one of Quentin Tarantino's most rewatchable and quotable films. Brad Pitt leads a squad of Nazi-hunting soldiers through occupied France, though the movie mostly belongs to Christoph Waltz, whose turn as Col. Hans Landa won him an Oscar. </p><p><strong>"ParaNorman" </strong>showed up the same day, and it's a great early pre-Halloween pick. It's also something the whole house can watch. This stop-motion follow-up to "Coraline" follows a kid who can see ghosts as he tries to stop a centuries-old witch's curse from swallowing his town, with an ending that goes somewhere darker. </p><p>Then on September 27, it's time to get into <strong>"A Complete Unknown."</strong> Timothée Chalamet plays Bob Dylan across the four years between his arrival in Greenwich Village and the night he went electric at Newport, with Edward Norton as Pete Seeger and Monica Barbaro as Joan Baez. Chalamet even did his own singing, so that's a fun treat. </p><p>That gives you a war movie, a spooky season warm-up, and a music biopic that'll still be new when Monday comes around. Hulu's full September slate has tons more to check out, but you should be good with these early picks. You can browse the rest in our roundup of <a href="https://www.tomsguide.com/entertainment/hulu/new-on-hulu-and-disney-in-september-2026-all-the-new-shows-and-movies-to-watch"><strong>everything new to Hulu and Disney+ this month</strong></a>. </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-inglorious-basterds-39-2009">'Inglorious Basterds' (2009)</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/uSEDz-my7XQ" allowfullscreen></iframe></div></div><p><strong>Genre: </strong>War/Drama</p><p><strong>What's it about? </strong>Quentin Tarantino rewrites the end of World War II with a bit of a comedic lens here and there. Brad Pitt's Lt. Aldo Raine leads a squad of Jewish-American soldiers through occupied France collecting Nazi scalps, while Mélanie Laurent's Shosanna, a cinema owner who escaped a massacre years earlier, plots to burn down her own theater with the German high command inside. Both plans converge on the same premiere night, and Christoph Waltz's Col. Hans Landa is on the trail of everyone involved.</p><p><strong>Why you need to watch it: </strong>Waltz won the Oscar for this one, and the opening scene at a French dairy farm shows why within about 20 minutes. Plus, any excuse to see Nazis meet their downfall makes for a good bit of entertainment, if you ask me. </p><p><em>Watch </em><a href="https://www.hulu.com/movie/inglourious-basterds-54da4af5-9c47-48d1-91bf-d05e27024b94" target="_blank" rel="nofollow"><em>"Inglourious Basterds" on Hulu</em></a><em> now </em></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W2d5vX"></div>                            </div>                            <script src="https://kwizly.com/embed/W2d5vX.js" async></script><h2 id="39-paranorman-39-2012">'ParaNorman' (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/hgwSpajMw3s" allowfullscreen></iframe></div></div><p><strong>Genre: </strong>Horror/Comedy</p><p><strong>What's it about? </strong>Norman Babcock is an 11-year-old who can see and talk to ghosts, which makes him a super weird kid in Blithe Hollow, a Massachusetts town that has turned its 300-year-old witch trial into a tourist trap. When the witch's curse activates and the judges who condemned her rise from their graves, Norman is the only one who can make things right, with help from his best friend Neil, his older sister, and the school bully.</p><p><strong>Why you should watch it:</strong> Laika made this between "Coraline" and "The Boxtrolls," and it's the studio's most underrated film. The stop-motion zombies are funny rather than scary, which keeps it safe for younger viewers, though the third act pivots into something a little darker -- it's a fantastic early Halloween pick, though. </p><p><em>Watch </em><a href="https://www.hulu.com/movie/paranorman-bf7f7c76-b1e1-4c1b-9aaf-6b9043341d1c" target="_blank" rel="nofollow"><em>"ParaNorman" on Hulu</em></a><em> now</em></p><h2 id="39-a-complete-unknown-39-2025">'A Complete Unknown' (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/FdV-Cs5o8mc" allowfullscreen></iframe></div></div><p><strong>Genre: </strong>Music/Biopic</p><p><strong>What's it about? J</strong>ames Mangold's film follows Bob Dylan across four years, from the day he shows up in Greenwich Village in 1961 to visit a hospitalized Woody Guthrie through his electric set at the 1965 Newport Folk Festival. Timothée Chalamet plays Dylan, with Edward Norton as Pete Seeger, Monica Barbaro as Joan Baez, Elle Fanning as girlfriend Sylvie Russo and Boyd Holbrook as Johnny Cash -- yes, THE Johnny Cash. </p><p><strong>Why you need to watch it: </strong>Chalamet sang and played guitar himself for every performance in the movie, and the concert sequences are excellent. Plus, the film earned eight Oscar nominations,</p><p><em>Watch </em><a href="https://www.hulu.com/movie/a-complete-unknown-2430ff55-a563-4adf-bc42-79c117e1907c" target="_blank" rel="nofollow"><em>"A Complete Unknown" on Hulu</em></a><em> on Sept. 27</em></p><div data-model-name="Hulu,Hulu + Live TV,Hulu Free Trial,Disney Plus Hulu Max bundle,Disney Plus Hulu ESPN Plus bundle" data-widget-type="multimodelreview"></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 3 new to Netflix thriller movies to watch this week — including a Russell Crowe drama based on a shocking true story (Sept. 24-30) ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Every week, I comb through the latest arrivals on Netflix hunting for great thriller movies. I'm a huge fan of the genre, and clearly I'm not alone. Thrillers are persistently popular with viewers, too.</p><p>Below I've rounded up three recently added thriller movies on Netflix, and this week's option includes a new streaming original which tells the story of one of the most infamous domestic terrorists in United States history. I suspect this movie is going to draw plenty of attention and score a No. 1 ranking before long. </p><p>So, without further introduction, let's dive into the new to Netflix thriller movies you need to have on your radar this week. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ODmDlX"></div>                            </div>                            <script src="https://kwizly.com/embed/ODmDlX.js" async></script><h3 class="article-body__section" id="section-3-new-to-netflix-thrillers-to-watch-this-week"><span>3 new to Netflix thrillers to watch this week</span></h3><h2 id="lifehack-2026">‘Lifehack’ (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/QHy4ZMbz4FU" allowfullscreen></iframe></div></div><p>If you enjoyed cult-favorite genre hits like "Missing" and "Searching," then you'll probably love "Lifehack." This heist thriller is also part of the screenlife subgenre, which, if you don't know, means the whole movie is presented within a computer screen. It also scores 95% on <a href="https://www.rottentomatoes.com/m/lifehack" target="_blank">Rotten Tomatoes</a>, making it a bit of a hidden gem, considering it flew under the radar when it initially released back in the spring.</p><p>“Lifehack” sees a foursome of tech-savvy hackers attempt to steal cryptocurrency from a billionaire (Charlie Creed-Miles). When the mogul’s daughter (Jessica Reynolds) catches them in the act, it seems they've been rumbled. However, she instead blackmails them into assisting in an even larger heist to steal her father’s entire fortune. It’s a tech-focused thriller with a social message exploring the class divide and “eat the rich” movement. </p><p><em><strong>Watch </strong></em><a href="https://www.netflix.com/browse" target="_blank" rel="nofollow"><em><strong>"Lifehack" on Netflix</strong></em></a><em><strong> now</strong></em></p><h2 id="cruel-intentions-1999">‘Cruel Intentions’ (1999)</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/UzlKsS-IhEo" allowfullscreen></iframe></div></div><p>“Cruel Intentions" is a frothy teen thriller that centers on a group of unlikeable leads, who you definitely wouldn't want to be friends with in real life. However, while much of its cast is morally bankrupt, there's trashy fun to be had in watching them attempt to one-up each other. Just be warned, while "Cruel Intentions" packs plenty of melodrama, some of its content hasn't aged well.</p><p>The movie begins with a bet between step-siblings Kathryn (Sarah Michelle Gellar) and Sebastian (Ryan Phillippe), two ultra-wealthy teens running amok in New York’s upper social circles. Sebastian agrees to a wager with Kathryn that he can seduce the "innocent" Annette (Reese Witherspoon), with his treasured Jaguar XK140 as the prize. But Annette’s honest nature soon wins the playboy’s heart, complicating matters. It's a darkly comedic thriller.</p><p><em><strong>Watch </strong></em><a href="https://www.netflix.com/title/18962136" target="_blank" rel="nofollow"><em><strong>"Cruel Intentions" on Netflix</strong></em></a><em><strong> now</strong></em></p><h2 id="unabomber-2026-2">‘Unabomber’ (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/B3tR6qQjbgI" allowfullscreen></iframe></div></div><p>Thrillers always hit that little bit harder when they're based on true events, and in the case of "Unabomber," you probably know the source material from the name alone. This new Netflix original is based on the actions of Ted Kaczynski, an infamous domestic terrorist and claimed revolutionary whose actions sparked a national manhunt and lasted for nearly two decades. </p><p>Starring Russell Crowe, Jacob Tremblay, Annabelle Wallis, and Shailene Woodley, "Unabomber" chronicles Kaczynski's life across two periods: his time attending Harvard University in the 1960s, and the lengthy manhunt that followed decades later. The jury's still out on this one; reviews haven't dropped yet, but I have little doubt it's going to rocket up the Netflix top 10.</p><p><em><strong>Watch </strong></em><a href="https://www.netflix.com/title/82010386" target="_blank" rel="nofollow"><em><strong>"Unabomber" on Netflix</strong></em></a><em><strong> starting September 25</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/netflix/new-on-netflix-in-september-2026-5-best-movies-and-shows-to-stream-plus-full-release-list">New on Netflix in September 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/movies/how-well-do-you-really-know-80s-action-movies-this-quiz-will-put-your-memory-to-the-test-from-terminator-to-die-hard">How well do you really know 80s action movies?</a></li><li><a href="https://www.tomsguide.com/us/best-streaming-video-services,review-2625.html">Best streaming services to subscribe to right now</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/netflix/3-new-to-netflix-thriller-movies-to-watch-this-week-including-a-russell-crowe-drama-based-on-a-shocking-true-story-sept-24-30</link>
                                                                            <description>
                            <![CDATA[ I've combed through the latest movies added to Netflix's library and found three exciting thriller picks worth adding to your watchlist. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">fyaZJK65dbc4Dg6DHrboKS</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/5QJ8qFZBkJjQs8B7tcWSsJ-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 24 Sep 2026 10:46:56 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Netflix]]></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/5QJ8qFZBkJjQs8B7tcWSsJ-1920-80.jpg">
                                                            <media:credit><![CDATA[Alamy]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Netflix-logo-purple-background]]></media:description>                                                            <media:text><![CDATA[Netflix-logo-purple-background]]></media:text>
                                <media:title type="plain"><![CDATA[Netflix-logo-purple-background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/5QJ8qFZBkJjQs8B7tcWSsJ-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Every week, I comb through the latest arrivals on Netflix hunting for great thriller movies. I'm a huge fan of the genre, and clearly I'm not alone. Thrillers are persistently popular with viewers, too.</p><p>Below I've rounded up three recently added thriller movies on Netflix, and this week's option includes a new streaming original which tells the story of one of the most infamous domestic terrorists in United States history. I suspect this movie is going to draw plenty of attention and score a No. 1 ranking before long. </p><p>So, without further introduction, let's dive into the new to Netflix thriller movies you need to have on your radar this week. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ODmDlX"></div>                            </div>                            <script src="https://kwizly.com/embed/ODmDlX.js" async></script><h3 class="article-body__section" id="section-3-new-to-netflix-thrillers-to-watch-this-week"><span>3 new to Netflix thrillers to watch this week</span></h3><h2 id="lifehack-2026">‘Lifehack’ (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/QHy4ZMbz4FU" allowfullscreen></iframe></div></div><p>If you enjoyed cult-favorite genre hits like "Missing" and "Searching," then you'll probably love "Lifehack." This heist thriller is also part of the screenlife subgenre, which, if you don't know, means the whole movie is presented within a computer screen. It also scores 95% on <a href="https://www.rottentomatoes.com/m/lifehack" target="_blank">Rotten Tomatoes</a>, making it a bit of a hidden gem, considering it flew under the radar when it initially released back in the spring.</p><p>“Lifehack” sees a foursome of tech-savvy hackers attempt to steal cryptocurrency from a billionaire (Charlie Creed-Miles). When the mogul’s daughter (Jessica Reynolds) catches them in the act, it seems they've been rumbled. However, she instead blackmails them into assisting in an even larger heist to steal her father’s entire fortune. It’s a tech-focused thriller with a social message exploring the class divide and “eat the rich” movement. </p><p><em><strong>Watch </strong></em><a href="https://www.netflix.com/browse" target="_blank" rel="nofollow"><em><strong>"Lifehack" on Netflix</strong></em></a><em><strong> now</strong></em></p><h2 id="cruel-intentions-1999">‘Cruel Intentions’ (1999)</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/UzlKsS-IhEo" allowfullscreen></iframe></div></div><p>“Cruel Intentions" is a frothy teen thriller that centers on a group of unlikeable leads, who you definitely wouldn't want to be friends with in real life. However, while much of its cast is morally bankrupt, there's trashy fun to be had in watching them attempt to one-up each other. Just be warned, while "Cruel Intentions" packs plenty of melodrama, some of its content hasn't aged well.</p><p>The movie begins with a bet between step-siblings Kathryn (Sarah Michelle Gellar) and Sebastian (Ryan Phillippe), two ultra-wealthy teens running amok in New York’s upper social circles. Sebastian agrees to a wager with Kathryn that he can seduce the "innocent" Annette (Reese Witherspoon), with his treasured Jaguar XK140 as the prize. But Annette’s honest nature soon wins the playboy’s heart, complicating matters. It's a darkly comedic thriller.</p><p><em><strong>Watch </strong></em><a href="https://www.netflix.com/title/18962136" target="_blank" rel="nofollow"><em><strong>"Cruel Intentions" on Netflix</strong></em></a><em><strong> now</strong></em></p><h2 id="unabomber-2026-2">‘Unabomber’ (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/B3tR6qQjbgI" allowfullscreen></iframe></div></div><p>Thrillers always hit that little bit harder when they're based on true events, and in the case of "Unabomber," you probably know the source material from the name alone. This new Netflix original is based on the actions of Ted Kaczynski, an infamous domestic terrorist and claimed revolutionary whose actions sparked a national manhunt and lasted for nearly two decades. </p><p>Starring Russell Crowe, Jacob Tremblay, Annabelle Wallis, and Shailene Woodley, "Unabomber" chronicles Kaczynski's life across two periods: his time attending Harvard University in the 1960s, and the lengthy manhunt that followed decades later. The jury's still out on this one; reviews haven't dropped yet, but I have little doubt it's going to rocket up the Netflix top 10.</p><p><em><strong>Watch </strong></em><a href="https://www.netflix.com/title/82010386" target="_blank" rel="nofollow"><em><strong>"Unabomber" on Netflix</strong></em></a><em><strong> starting September 25</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/netflix/new-on-netflix-in-september-2026-5-best-movies-and-shows-to-stream-plus-full-release-list">New on Netflix in September 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/movies/how-well-do-you-really-know-80s-action-movies-this-quiz-will-put-your-memory-to-the-test-from-terminator-to-die-hard">How well do you really know 80s action movies?</a></li><li><a href="https://www.tomsguide.com/us/best-streaming-video-services,review-2625.html">Best streaming services to subscribe to right now</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I checked out the new Googlebooks — 3 reasons I'd buy one, and 3 reasons I'd skip ]]></title>
                                                                                                <dc:content><![CDATA[ <p><a href="https://www.tomsguide.com/computing/laptops/googlebook-pre-orders-go-live-with-5-new-laptops-from-usd899-to-usd1-299-heres-what-theyre-like-to-use">Googlebooks</a> have arrived to shake up the computing world. Billed as laptops for Android users, these machines run on the brand-new Googlebook OS, which combines Android OS and ChromeOS and is designed for Gemini Intelligence. This gives users Apple-like interoperability with their phone and laptop, along with on-device AI tools and features.</p><p>Google is launching these new laptops in a crowded field that includes the <a href="https://www.tomsguide.com/best-picks/best-macbook">best MacBooks</a>, the <a href="https://www.tomsguide.com/computing/laptops/best-windows-laptops">best Windows laptops</a>, and even the company’s own <a href="https://www.tomsguide.com/best-picks/best-chromebooks">best Chromebooks</a>. If you already own or are hunting for one of the <a href="https://www.tomsguide.com/computing/laptops/best-laptops">best laptops</a>, it might be difficult to see why you would want or need a Googlebook.</p><p>To that end, here are four reasons to buy a Googlebook, along with three reasons you might want to skip them.</p><div class="product"><a data-dimension112="cf284c12-b772-11f1-a699-91fb48c31705" data-action="Deal Block" data-label="Googlebook 14" data-dimension48="Googlebook 14" data-dimension25="$1299" href="https://www.bestbuy.com/product/asus-googlebook-14-3k-oled-touchscreen-laptop-w-gemini-intelligence-intel-core-ultra-5-325-2026-16gb-ram-512gb-ssd-dusk-ash/JJGHGST42S" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:900px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="6KofWCQ5gAHhEWJmxck4ym" name="Asus Googlebook 14" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6KofWCQ5gAHhEWJmxck4ym-1920-80.jpg" mos="" align="middle" fullscreen="" width="900" height="900" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The Asus Googlebook 14 is arguably the most impressive of the new laptop line since it's so darn thin and light, weighing just 2.2 pounds! It also has a 14-inch OLED 3K touchscreen, a sturdy Nano Ceramic magnesium-aluminum chassis, and an Intel Core Ultra 5 Panther Lake CPU, 16GB of RAM, and 256GB of SSD storage. You can pre-order it now at Best Buy starting at $1,299.<a class="view-deal button" href="https://www.bestbuy.com/product/asus-googlebook-14-3k-oled-touchscreen-laptop-w-gemini-intelligence-intel-core-ultra-5-325-2026-16gb-ram-512gb-ssd-dusk-ash/JJGHGST42S" target="_blank" rel="nofollow" data-dimension112="cf284c12-b772-11f1-a699-91fb48c31705" data-action="Deal Block" data-label="Googlebook 14" data-dimension48="Googlebook 14" data-dimension25="$1299">View Deal</a></p></div><h3 class="article-body__section" id="section-googlebooks-reasons-to-buy"><span>Googlebooks: Reasons to buy</span></h3><h2 id="android-interoperability">Android interoperability</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="JBoCY7ggo6tTCdRtsqF7Hj" name="Googlebook-hands-on-4" alt="Googlebook" src="https://cdn.mos.cms.futurecdn.net/JBoCY7ggo6tTCdRtsqF7Hj-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 main reason you’d want to buy a Googlebook is if you’re an Android phone user who wants near-seamless integration with your laptop. This is something Apple users have enjoyed for years, and both Google and Windows have tried and largely failed to deliver. Now, Android users can switch between tasks on their phones and these new laptops.</p><p>In the past, if you started writing a document or working on a project on your phone, you’d have to manually move it to your laptop. Thanks to Googlebook’s Continue On feature, you can pick up right where you left off from the desktop taskbar. This also applies to pictures you snap or videos you record, thanks to the updated Files app. All of your photos and downloads appear right in your laptop’s file menu.</p><p>When you first sign in to your Google account on a Googlebook, all of your phone’s settings, saved passwords, Wi-Fi networks, and messages are automatically transferred to the laptop over end-to-end encryption. Cast My Apps allow you to stream and interact with your phone’s apps in a desktop window, which makes it simple to (for example) order food from a delivery app</p><p>None of this is groundbreaking stuff for Apple users who’ve enjoyed seamless interoperability between the company’s devices. But for Android users, Googlebooks could be a huge game-changer.</p><h2 id="googlebook-os-features">Googlebook OS features</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:480px;"><p class="vanilla-image-block" style="padding-top:62.50%;"><img id="KzCLyEDUFKHB2eJnwCGU3J" name="Googlebook" alt="Googlebook" src="https://cdn.mos.cms.futurecdn.net/KzCLyEDUFKHB2eJnwCGU3J-1920-80.gif" mos="" align="middle" fullscreen="" width="480" height="300" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Google)</span></figcaption></figure><p>It shouldn’t be surprising that Google has baked its Gemini AI right into Googlebook OS. While you can certainly use the company’s LLM for the basics, such as asking it for travel advice or brainstorming, some nifty Googlebook-specific features sound very useful.</p><p>The most unique feature is Magic Pointer. Shaking or wiggling the mouse cursor while hovering over content on your screen brings up Gemini. From there, you can ask the AI to summarize text, translate languages, or help you organize your calendar.</p><p>There’s also <a href="https://www.tomsguide.com/phones/google-pixel-phones/i-wrote-and-edited-this-article-with-pixel-11s-rambler-dictation-feature-and-things-did-not-go-according-to-plan">Rambler</a>, an enhanced speech-to-text tool that lets you (as the name suggests) ramble stream-of-consciousness thoughts and then have them converted into neat headers, checklists, and takeaways.</p><p>For aspiring vibe coders, Create My Widget lets you describe what you need in plain language to generate custom interactive desktop widgets. Basically, you can create your own Android apps in a few minutes.</p><h2 id="design-and-specs">Design and specs</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="zLtLvTaq84rR2LYDf4o5cY" name="Googlebook" alt="Googlebook" src="https://cdn.mos.cms.futurecdn.net/zLtLvTaq84rR2LYDf4o5cY-1920-80.png" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Google)</span></figcaption></figure><p>At launch, there will be five Googlebooks from Acer, Asus, Dell, HP, and Lenovo. While each laptop has its own unique design elements, they also share core design elements that identify them as Googlebooks.</p><p>All Googlebooks are built with high-end materials like aluminum, magnesium alloy, and carbon fiber. While not every Googlebook will have OLED panels, they all have touchscreen displays — which makes sense if you’re using an Android app on the laptop. Other features include ultraportable designs, large trackpads, and backlit keyboards.</p><p>Googlebooks will also have a <a href="https://www.tomsguide.com/computing/laptops/inside-the-googlebook-i-asked-the-head-of-android-why-people-will-pay-a-premium-for-its-new-macbook-alternative">Glowbar</a> positioned on the exterior lid. This light bar sweeps across in bright colors to indicate battery levels, lights up on startup, and shows fun animations whenever you’re using Gemini.</p><p>Under their ultraportable hoods, Googlebooks feature high-end processors from Intel, Qualcomm, and MediaTek, with NPUs capable of over 45 TOPS for AI workloads. The laptops also start with at least 16GB of RAM and 256GB of SSD storage. Google also claims you’ll get up to 14 hours of battery life.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Wn4ZGX"></div>                            </div>                            <script src="https://kwizly.com/embed/Wn4ZGX.js" async></script><h3 class="article-body__section" id="section-googlebooks-reasons-to-skip"><span>Googlebooks: Reasons to skip</span></h3><h2 id="platform-migration">Platform migration</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="BxCVaPENtK2UJubBVSQd3Q" name="Dell-Googlebook-hands-on-4" alt="Dell Googlebook" src="https://cdn.mos.cms.futurecdn.net/BxCVaPENtK2UJubBVSQd3Q-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>Even if you mostly work in Google apps, you’ll still be effectively starting over, especially since you’ll need an Android phone to get the most from Google’s new laptops. You’ll also lose Apple features like AirDrop, iMessage, and FaceTime, and Mac-exclusive Pro software like Final Cut Pro and Logic Pro.</p><p>Googlebooks would have made more sense for me back when I was an Android phone user. But now that I’ve owned an iPhone for four years and enjoy seamless integration between my phone, MacBook, and iPad Pro, I don’t relish the thought of starting over on a new platform. If you’re firmly entrenched in the Apple ecosystem, then a Googlebook will be a tough sell.</p><h2 id="compatibility">Compatibility</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="JWpYyot6GZZ5VrAidKThLj" name="Googlebook-hands-on-8" alt="Googlebook" src="https://cdn.mos.cms.futurecdn.net/JWpYyot6GZZ5VrAidKThLj-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>Googlebook OS relies heavily on web apps, native Android software, and Linux tools. As such, it can’t run native legacy Windows desktop apps, and it certainly won’t run macOS-exclusive software. Due to that, you’ll effectively be in a walled garden like with the Apple ecosystem, only for Android.</p><p>Similarly, since this is a brand-new platform that combines Android and ChromeOS, developer optimization for desktop windowing in certain third-party Android apps is still evolving. In other words, early adopters should expect some hiccups along the way, as some of the features I outline above may not work as well as you’d expect.</p><h2 id="price">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="DAr4txDLk8gorbrWhwkRTc" name="HP-Googlebook-hands-on-1-LEDE" alt="HP Googlebook" src="https://cdn.mos.cms.futurecdn.net/DAr4txDLk8gorbrWhwkRTc-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>Googlebooks aren’t outrageously expensive, but as premium flagship laptops, they’re not cheap. Prices range from $899 for the Acer Googlebook 14 to $1,299 for the Asus Googlebook 14 and HP Googlebook 14. That’s pricey on its own, but if you’re also buying a new Android phone and don’t already own one, that’s an even bigger hit to your bank account.</p><p>If compatibility with your phone isn’t important and you only need a dependable laptop for basic web browsing or word document editing, then a Chromebook, which can start between $179 and $369, is the more affordable alternative. If you want something higher-end but still affordable, the $699 MacBook Neo and $799 Dell XPS 13 are also brilliant choices.</p><h3 class="article-body__section" id="section-outlook"><span>Outlook</span></h3><p>We'll get a true measure of what Googlebooks can do once we've put them through our lab and real-world tests, but for now, they seem like they could be perfect laptops for Android phone users. But as I said, they might be tough sells for Apple users.</p><p>The first Googlebooks are expected on October 4, so stay tuned for more 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/laptops/inside-the-googlebook-i-asked-the-head-of-android-why-people-will-pay-a-premium-for-its-new-macbook-alternative"><strong>Google's head of Android defends the Googlebook's higher prices</strong></a></li><li><a href="https://www.tomsguide.com/computing/laptops/googlebooks-vs-chromebooks-here-are-the-actual-differences"><strong>Googlebooks vs Chromebooks — here are the actual differences</strong></a></li><li><a href="https://www.tomsguide.com/computing/apple-desktops/mac-mini-m6-reasons-to-buy-and-skip"><strong>5 reasons to buy and 2 reasons to skip the Apple mini M6</strong></a></li></ul><div class="vizualizer-embed"><div class="tg-df-widget-host" data-widget-config="?search=laptops&min_discount_ratio=0.95&widget_title=Top+Deals+Handpicked+by+Our+Editors&widget_subtitle=Discover+the+best+discounts+currently+available%2C+curated+daily+by+the+Tom%27s+Guide+Savings+Squad.&bg_color=transparent" data-vizualizer-embed="true"></div>    <script>    /**     * Tom's Guide Deals Finder - Vanilla JS Encapsulated Engine     */    (function() {      // --- Freyr Analytics Adapter ---      function initAnalytics() {        window.dataLayer = window.dataLayer || [];        window.googletag = window.googletag || {};        window.googletag.cmd = window.googletag.cmd || [];        window.hawk = window.hawk || { analytics: { freyr: [] } };        window.hawk.analytics = window.hawk.analytics || { freyr: [] };        window.hawk.analytics.freyr = window.hawk.analytics.freyr || [];        window.freyr = window.freyr || { cmd: [] };        const scriptSrc = 'https://freyr.futurecdn.net/freyr.js';        const hostname = typeof window !== 'undefined' ? window.location.hostname : '';        const isTestEnv = typeof window.navigator !== 'undefined' && (window.navigator.webdriver || window.navigator.userAgent.includes('Headless'));        const shouldSendRealAnalytics = !isTestEnv && hostname && hostname !== 'localhost' && hostname !== '127.0.0.1' && !hostname.includes('run.app');        if (shouldSendRealAnalytics && !document.querySelector(`script[src="${scriptSrc}"]`)) {          const script = document.createElement('script');          script.src = scriptSrc;          script.async = true;          document.head.appendChild(script);        }      }      function storeEventForDebug(name, data) {        if (!window.hawk || !window.hawk.analytics || !window.hawk.analytics.freyr) return;        window.hawk.analytics.freyr.push({ name, data });        try {          if (typeof window !== 'undefined' && window.localStorage) {            window.localStorage.setItem("hawk", JSON.stringify(window.hawk));          }        } catch (e) {          // Ignore storage issues        }        try {          window.dispatchEvent(new CustomEvent("hawk-analytics-update"));        } catch (e) {}      }      function sendToFreyr(eventName, data) {        if (typeof window === 'undefined') return;        window.freyr = window.freyr || { cmd: [] };        window.freyr.cmd.push(() => {          if (window.freyr && window.freyr.pushAndUpdate) {            window.freyr.pushAndUpdate(eventName, data);          }        });      }      function sendEvent(event, skip = false) {        try {          storeEventForDebug(event.name, event.data);          if (!skip) {            sendToFreyr(event.name, event.data);          }        } catch (e) {          // Ensure tracking errors don't surface to the user        }      }      function getCookie(name) {        try {          const match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));          return match ? match[2] : null;        } catch (e) {          return null;        }      }      function normalizeCurrency(symbol) {        const map = {          '£': 'GBP',          '$': 'USD',          'A$': 'AUD',          'CA$': 'CAD',          '€': 'EUR'        };        return map[symbol] || symbol;      }      function trackElementInteraction(props) {        sendEvent({          name: 'elementInteraction',          data: {            element: {              action: props.action || "click",              id: props.id || undefined,              class: props.class || undefined,              name: props.name || undefined,              text: props.text || undefined,              label: props.label || undefined,              container: props.container || undefined,              url: props.url || undefined,              articleId: props.articleId || undefined            }          }        });      }      function generateRevenueId(url, productName, merchantName, modelId) {        const str = `${window.location.href}|${productName}|${merchantName}|${modelId || ''}|${new Date().toDateString()}|tomsguide`;        let hash = 0;        for (let i = 0; i < str.length; i++) {          const char = str.charCodeAt(i);          hash = ((hash << 5) - hash) + char;          hash = hash & hash;        }        let numericStr = Math.abs(hash).toString();        while (numericStr.length < 19) {          numericStr += Math.floor(Math.random() * 10).toString();        }        return numericStr.substring(0, 19);      }      function rewriteAffiliateLink(url, territory, revenueId) {        if (!url) return url;        const t = (territory || 'gb').toLowerCase();        return url.replace(/hawk-custom-tracking/g, `tomsguide-${t}-${revenueId}`);      }      function trackHawkEvent(params) {        const { clickType, widgetId, productCategoryName, product, productsArray, zeroBasedProductIndexOrNull, totalDealsOrProducts, areaClicked, merchant, revenueId, isoCurrencyCode, queryName, widgetTypeName } = params;        const data = {          event: "hawkEvent",          category: "Affiliates",          affiliate: {            action: {              type: clickType,              id: widgetId,              event: clickType === "appeared" ? "viewed" : "Click from",              timestamp: Date.now()            },            component: {              flag: "Editor",              product: productCategoryName || "deals",              category: `Signal Deal Finder ${widgetTypeName || "Carousel"} widget`,              type: clickType === "appeared" ? "review" : "signal product",              label: queryName || (product ? (product.name || "") : ""),              index: zeroBasedProductIndexOrNull === null || zeroBasedProductIndexOrNull === undefined ? -1 : zeroBasedProductIndexOrNull,              linkCount: totalDealsOrProducts || 0,              blockLayout: "",              areaClicked: areaClicked || ""            }          },          products: productsArray || (product && merchant ? [            {              product: {                primary: {                  id: product.id || product.matchId || null,                  name: product.name,                  type: "deal",                  price: product.price,                  previousPrice: product.previousPrice || null,                  currency: isoCurrencyCode || "USD",                  preorder: false,                  labels: [],                  link: product.link,                  originalLink: product.originalLink || null,                  revenueId: revenueId || null,                  startTime: null,                  endTime: null,                  voucherCode: null,                  voucherAudience: null,                  voucherPercentageSaving: null,                  voucherMoneySaving: null,                  voucherType: null,                  offerExclusive: false,                  offerScope: null,                  globalId: product.globalId || null,                  inStock: product.inStock !== false,                  contractProvider: null,                  contractMinutes: null,                  contractTexts: null,                  contractData: null,                  contractLength: null,                  contractMonthlyPrice: null,                  contractCurrency: isoCurrencyCode || "USD"                }              },              merchant: {                id: merchant.id || null,                name: merchant.name,                url: merchant.url || null,                network: merchant.network || null              },              model: {                id: product.modelId || null,                brand: product.brand || null,                name: product.name,                parent: product.parent || null              }            }          ] : []),          reviews: [],          _clear: true,          "gtm.uniqueEventId": Date.now() % 10000        };        sendEvent({ name: 'hawkEvent', data });      }      function trackDealClick(params) {        trackHawkEvent({ ...params, clickType: "retailer", areaClicked: "Signal Product Card" });      }      function trackViewSimilarClick(params) {        trackHawkEvent({ ...params, clickType: "retailer", areaClicked: "Signal Product Card View Similar" });      }      function trackPriceComparisonClick(params) {        trackHawkEvent({ ...params, clickType: "retailer", areaClicked: "Signal Price Comparison" });      }      function trackReviewClick(params) {        trackHawkEvent({ ...params, clickType: "review", areaClicked: "Signal Product Card Review Link" });      }      function trackShare(params) {        trackHawkEvent({ ...params, clickType: "share", areaClicked: "Signal Product Card Share" });      }      function trackDealsAppeared(widgetId, deals, revenueId, currency, queryName, widgetTypeName) {         if (!deals || deals.length === 0) return;                  const productsArray = deals.slice(0, 50).map((deal) => {            let voucherPct = null;            let rawPrice = parseFloat(deal.rawPrice) || parseFloat(deal.price) || null;            let rawMsrp = parseFloat(deal.rawMsrp) || parseFloat(deal.msrp) || null;            if (rawMsrp > rawPrice && rawPrice > 0) {              voucherPct = Math.round((1 - (rawPrice / rawMsrp)) * 100);            }            let numId = null;            if (deal.externalProductId && !isNaN(parseInt(deal.externalProductId))) {              numId = parseInt(deal.externalProductId);            } else if (deal.id && !isNaN(parseInt(deal.id))) {              numId = parseInt(deal.id);            } else {              numId = deal.matchId || null;            }            return {              product: {                primary: {                  id: numId,                  name: deal.productName || deal.title || "",                  type: "deal",                  price: rawPrice,                  previousPrice: rawMsrp,                  currency: currency || 'USD',                  preorder: false,                  labels: deal.modelBrand || deal.brand ? [                     { type: "brand", value: deal.modelBrand || deal.brand }                  ] : [],                  link: deal.url,                  originalLink: deal.url,                  revenueId: revenueId || null,                  startTime: null,                  endTime: null,                  voucherCode: null,                  voucherAudience: null,                  voucherPercentageSaving: voucherPct,                  voucherMoneySaving: null,                  voucherType: null,                  offerExclusive: false,                  offerScope: null,                  globalId: deal.productKey || null,                  inStock: deal.inStock !== false,                  contractProvider: null,                  contractMinutes: null,                  contractTexts: null,                  contractData: null,                  contractLength: null,                  contractMonthlyPrice: null,                  contractCurrency: currency || 'USD'                }              },              merchant: {                id: deal.merchantId ? parseInt(deal.merchantId) : null,                name: deal.merchant || "Retailer",                url: deal.merchantUrl || null,                network: deal.merchantNetwork || null              },              model: {                id: deal.modelId ? parseInt(deal.modelId) : null,                brand: deal.modelBrand || deal.brand || null,                name: deal.productName || deal.title || "",                parent: deal.modelParent || null              }            };         });                  trackHawkEvent({             clickType: "appeared",             widgetId: widgetId,             productCategoryName: "deals",             zeroBasedProductIndexOrNull: null,             totalDealsOrProducts: deals.length,             productsArray: productsArray,             queryName: queryName,             widgetTypeName: widgetTypeName         });      }      // 1. Setup Shadow DOM Sandbox      const currentScript = document.currentScript;      let hostContainer = null;      let template = null;            if (currentScript) {        let prev = currentScript.previousElementSibling;        while (prev) {          if (prev.tagName === 'TEMPLATE' && prev.classList.contains('tg-df-widget-template')) {            template = prev;          } else if (prev.tagName === 'DIV' && prev.classList.contains('tg-df-widget-host') && !prev.hasAttribute('data-initialized')) {            hostContainer = prev;            break;          }          prev = prev.previousElementSibling;        }      }            // Fallbacks in case script is deferred      if (!hostContainer) {        const hosts = document.querySelectorAll('.tg-df-widget-host:not([data-initialized])');        if (hosts.length > 0) hostContainer = hosts[0];      }            // Safely embedded template for CMS environments      const rawTemplate = `  \x3Cstyle>    /* --- Shadow DOM Base Reset --- */    *, *::before, *::after {      box-sizing: border-box;    }    img, picture, svg, video {      max-width: 100%;      height: auto;      display: block;    }    /*       1. Scoped CSS for Tom's Guide Deals Widget       All classes are prefixed with \`tg-df-\` to prevent CMS style leakage.    */    .tg-df-container {      container-type: inline-size;      container-name: tg-df;      --tg-df-blue: #1F69FF;      --tg-df-blue-hover: #004d8c;      --tg-df-text: #222222;      --tg-df-text-muted: #555555;      --tg-df-bg: #ffffff;      --tg-df-bg-secondary: #f4f4f4;      --tg-df-border: #e2e8f0;      font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;      color: var(--tg-df-text);      background-color: transparent;       width: 100%;      max-width: 1200px;      margin: 0 auto;      padding-bottom: 24px;    }    .tg-df-container *, .tg-df-container *::before, .tg-df-container *::after {      margin: 0;      padding: 0;      box-sizing: border-box;    }    .tg-df-container img {      border: none;      margin: 0;      padding: 0;    }    .tg-df-container a {      text-decoration: none;      color: inherit;    }    /*       2. Search & Filter Bar    */    .tg-df-controls {      display: flex;      flex-direction: column;      align-items: center;      gap: 20px;      margin-bottom: 32px;      width: 100%;    }    .tg-df-top-bar {      display: flex;      width: 100%;      max-width: 760px;      gap: 12px;      align-items: center;    }    .tg-df-search-wrapper {      position: relative;      flex: 1;      width: 100%;      box-shadow: 0 8px 24px rgba(0,0,0,0.06);      border-radius: 40px;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      z-index: 100;    }    .tg-df-autocomplete-dropdown {      position: absolute;      top: calc(100% + 4px);      left: 0;      right: 0;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 12px;      box-shadow: 0 8px 32px rgba(0,0,0,0.12);      max-height: 300px;      overflow-y: auto;      z-index: 200;      display: none;    }    .tg-df-autocomplete-dropdown.active {      display: block;    }    .tg-df-autocomplete-item {      padding: 12px 24px;      cursor: pointer;      font-size: 14px;      color: var(--tg-df-text);      transition: background 0.1s ease;    }    .tg-df-autocomplete-item:hover {      background: var(--tg-df-bg-secondary);    }    .tg-df-search-input {      width: 100%;      padding: 16px 64px 16px 24px;      font-size: 16px;      border: 2px solid transparent;      border-radius: 40px;      outline: none;      transition: border-color 0.2s ease, box-shadow 0.2s ease;      color: var(--tg-df-text);      background: transparent;    }    .tg-df-search-input:focus {      border-color: transparent;      box-shadow: 0 0 0 3px rgba(0, 108, 196, 0.15);    }    .tg-df-search-input::placeholder {      color: #999999;    }        .tg-df-search-btn {      position: absolute;      right: 8px;      top: 50%;      transform: translateY(-50%);      width: 40px;      height: 40px;      border-radius: 50%;      background: #222;      border: none;      display: flex;      align-items: center;      justify-content: center;      cursor: pointer;      transition: background 0.2s ease;    }        .tg-df-search-btn:hover {      background: #000;    }    .tg-df-search-icon {      width: 16px;      height: 16px;      fill: #fff;    }    .tg-df-settings-wrapper {      position: relative;    }        .tg-df-settings-btn {      width: 48px;      height: 48px;      border-radius: 50%;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      box-shadow: 0 4px 12px rgba(0,0,0,0.04);      display: flex;      align-items: center;      justify-content: center;      cursor: pointer;      transition: all 0.2s ease;      color: var(--tg-df-text-muted);      flex-shrink: 0;    }    .tg-df-settings-btn:hover {      background: var(--tg-df-bg-secondary);      border-color: #0000ff;      color: var(--tg-df-text);    }    .tg-df-settings-btn svg {      width: 24px;      height: 24px;      fill: currentColor;    }    .tg-df-settings-dropdown {      position: absolute;      top: calc(100% + 8px);      right: 0;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 12px;      box-shadow: 0 8px 32px rgba(0,0,0,0.12);      width: 280px;      padding: 20px;      display: none;      z-index: 100;      flex-direction: column;      gap: 20px;    }    .tg-df-settings-dropdown.active {      display: flex;    }        .tg-df-settings-dropdown-backdrop {      display: none;      position: fixed;      inset: 0;      z-index: 99;    }        .tg-df-settings-dropdown-backdrop.active {      display: block;    }    .tg-df-setting-item {      display: flex;      flex-direction: column;      gap: 10px;    }    .tg-df-setting-label {      font-size: 11px;      font-weight: 700;      color: var(--tg-df-text-muted);      text-transform: uppercase;      letter-spacing: 0.5px;    }        .tg-df-region-select {        padding: 10px 12px;        border-radius: 8px;        border: 1px solid var(--tg-df-border);        font-size: 15px;        outline: none;        background: var(--tg-df-bg-secondary);        color: var(--tg-df-text);        cursor: pointer;        width: 100%;    }    .tg-df-toggle {        position: relative;        display: inline-block;        width: 44px;        height: 24px;        flex-shrink: 0;    }    .tg-df-toggle input {        opacity: 0;        width: 0;        height: 0;    }    .tg-df-slider {        position: absolute;        cursor: pointer;        top: 0; left: 0; right: 0; bottom: 0;        background-color: #ccc;        transition: .2s;        border-radius: 24px;    }    .tg-df-slider:before {        position: absolute;        content: "";        height: 18px;        width: 18px;        left: 3px;        bottom: 3px;        background-color: white;        transition: .2s;        border-radius: 50%;    }    .tg-df-toggle input:checked + .tg-df-slider {        background-color: #1F69FF;    }    .tg-df-toggle input:checked + .tg-df-slider:before {        transform: translateX(20px);    }    .tg-df-dl-row {        flex-direction: row;        align-items: center;        justify-content: space-between;    }    .tg-df-dl-row-text {        font-size: 14px;        font-weight: 600;        color: var(--tg-df-text);    }    .tg-df-dl-row-subtext {        font-size: 12px;        font-weight: 400;        line-height: 1.3;        color: var(--tg-df-text-muted);        margin-top: 4px;        display: block;    }    .tg-df-filters {      display: flex;      gap: 12px;      justify-content: center;      flex-wrap: wrap;    }    .tg-df-sort-wrapper {      position: relative;      display: flex;      align-items: center;    }        .tg-df-sort-icon {      position: absolute;      left: 14px;      width: 14px;      height: 14px;      fill: var(--tg-df-text-muted);      pointer-events: none;    }    .tg-df-sort-select, .tg-df-filter-select {      padding: 10px 36px 10px 38px;      font-size: 14px;      border: 1px solid var(--tg-df-border);      border-radius: 100px;      outline: none;      appearance: none;      background-color: var(--tg-df-bg-secondary);      background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 12 12'%3E%3Cpath fill='%23555555' d='M6 8L1 3h10z'/%3E%3C/svg%3E");      background-repeat: no-repeat;      background-position: right 14px center;      color: var(--tg-df-text);      cursor: pointer;      font-weight: 500;      transition: all 0.2s ease;    }        .tg-df-price-input::-webkit-outer-spin-button,    .tg-df-price-input::-webkit-inner-spin-button {      -webkit-appearance: none;      margin: 0;    }    .tg-df-price-input {      -moz-appearance: textfield;    }    .tg-df-sort-select:hover, .tg-df-filter-select:hover {      background-color: #e2e8f0;    }    .tg-df-multiselect-container {      position: relative;    }        .tg-df-multiselect-trigger {      display: block;      background: #fff;      user-select: none;      width: 100%;      overflow: hidden;      white-space: nowrap;      text-overflow: ellipsis;    }        .tg-df-multiselect-dropdown {      display: none;      position: absolute;      top: calc(100% + 4px);      left: 0;      width: 100%;      min-width: 220px;      max-height: 300px;      overflow-y: auto;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 8px;      box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);      z-index: 100;      padding: 8px 0;    }    .tg-df-multiselect-dropdown.active {      display: block;    }    .tg-df-ms-option {      padding: 8px 16px;      display: flex;      align-items: center;      gap: 8px;      cursor: pointer;      font-size: 14px;    }    .tg-df-ms-option:hover {      background-color: var(--tg-df-bg-secondary);    }        .tg-df-ms-option input {      cursor: pointer;      accent-color: #1f69ff;    }    .tg-df-sort-select:focus, .tg-df-filter-select:focus {      border-color: #0000ff;      box-shadow: 0 0 0 3px rgba(0, 0, 255, 0.2);      background-color: var(--tg-df-bg);    }    /*       3. Deal Grid Layout    */    .tg-df-grid.tg-df-grid-auto {      padding-top: 24px;    }    .tg-df-grid, .tg-df-grid.layout-grid {      display: grid;      grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));      gap: 10px;    }    .tg-df-grid.layout-row {      grid-template-columns: 1fr;      gap: 16px;    }        .tg-df-grid.layout-row .tg-df-card {      flex-direction: row;      align-items: stretch;      height: auto;      box-shadow: none;      border-bottom: 1px solid var(--tg-df-border);    }    .tg-df-grid.layout-row .tg-df-card:hover {      box-shadow: none;    }    .tg-df-grid.layout-row .tg-df-card-image-box {      width: 140px;      min-width: 140px;      aspect-ratio: 3/4;      border-right: none;      padding: 16px 16px 16px 32px;    }    .tg-df-grid.layout-row .tg-df-card-body {      padding: 16px;      justify-content: space-between;    }    .tg-df-grid.layout-row .tg-df-card-title {      font-size: 15px;      margin-bottom: 16px;    }    .tg-df-grid.layout-row .tg-df-card-stars { margin-bottom: 8px; }    .tg-df-grid.layout-row .tg-df-card-footer {      flex-direction: column;      align-items: flex-start;      gap: 0;    }    .tg-df-grid.layout-row .tg-df-card-merchant-pill {      margin-bottom: 4px;    }    .tg-df-grid.layout-row .tg-df-card-price-group {      margin-bottom: 8px;    }    .tg-df-grid.layout-row .tg-df-price-group {      width: auto;    }    .tg-df-grid.layout-row .tg-df-card-cta {      width: 100%;      max-width: 200px;      padding: 10px 24px;      font-size: 13px;      flex-shrink: 0;      text-align: center;      justify-content: center;    }    /*       4. Deal Card Design    */    .tg-df-card {      position: relative;      display: flex;      flex-direction: column;      background-color: #ffffff;      border-radius: 0;      overflow: hidden;      transition: transform 0.2s ease, box-shadow 0.2s ease;      text-decoration: none;      color: inherit;      height: 100%;      box-shadow: 0 0 16px rgba(0, 0, 0, 0.08);      border: 1px solid var(--tg-df-border);    }    .tg-df-card:hover {      box-shadow: 0 0 24px rgba(0, 0, 0, 0.12);    }    .tg-df-card-image-box {      width: 100%;      aspect-ratio: 3/4;      background-color: #f8f8f8;      display: flex;      align-items: center;      justify-content: center;      position: relative;      overflow: hidden;      padding: 32px;      flex: 0 0 auto;    }    .tg-df-card-image {      max-width: 100%;      max-height: 100%;      width: auto;      height: auto;      object-fit: contain;      mix-blend-mode: multiply; /* Helps white background images blend into secondary bg */      transition: transform 0.3s ease;    }    .tg-df-card:hover .tg-df-card-image {      transform: scale(1.05); /* Zoom in on hover */    }    .tg-df-card-discount-badge {      position: absolute;      top: 12px;      left: 12px;      background: #dc2626; /* Red */      color: #ffffff;      padding: 6px 8px;      font-size: 11px;      font-weight: 500;      text-transform: uppercase;      letter-spacing: 0.5px;      border-radius: 0;      z-index: 10;    }        .tg-df-card-merchant-pill {      display: block;      padding: 0;      font-size: 11px;      font-weight: 600;      text-transform: uppercase;      letter-spacing: 0.5px;      border-radius: 0;      color: var(--tg-df-text-muted);      margin-bottom: 8px;      white-space: nowrap;      overflow: hidden;      text-overflow: ellipsis;    }    .tg-df-card-body {      padding: 16px;      display: flex;      flex-direction: column;      flex-grow: 1;      min-width: 0;    }    .tg-df-card-badges {      display: flex;      flex-wrap: wrap;      gap: 6px;      margin-bottom: 8px;    }    .tg-df-tag {      display: inline-flex;      align-items: center;      padding: 4px 6px;      font-size: 11px;      font-weight: 700;      text-transform: uppercase;      border-radius: 4px;      gap: 4px;    }    .tg-df-tag-prime {      background-color: #00A8E1;      color: #fff;    }    .tg-df-tag-coupons {      background-color: #f1f5f9;      color: #334155;      border: 1px solid #cbd5e1;      cursor: pointer;      transition: background-color 0.2s;    }    .tg-df-tag-coupons:hover {      background-color: #e2e8f0;    }        .tg-df-tag-outline {      background-color: #f1f5f9;      color: #334155;      border: 1px solid #cbd5e1;      cursor: pointer;      transition: background-color 0.2s;    }    .tg-df-tag-outline:hover {      background-color: #e2e8f0;    }        @keyframes tg-df-spin {      0% { transform: rotate(0deg); }      100% { transform: rotate(360deg); }    }    .tg-df-coupon-spinner {      border: 2px solid #e2e8f0;      border-top: 2px solid #3b82f6;      border-radius: 50%;      width: 14px;      height: 14px;      animation: tg-df-spin 1s linear infinite;      margin: 4px 8px;      display: inline-block;    }        /* Vouchers Modal */    .tg-df-modal-backdrop {      position: fixed;      top: 0; left: 0; right: 0; bottom: 0;      background: rgba(0,0,0,0.5);      z-index: 10000;      display: flex;      align-items: center;      justify-content: center;      opacity: 0;      pointer-events: none;      transition: opacity 0.3s;    }    .tg-df-modal-backdrop.active {      opacity: 1;      pointer-events: auto;    }    .tg-df-modal {      background: #fff;      border-radius: 12px;      width: 90%;      max-width: 400px;      max-height: 80vh;      display: flex;      flex-direction: column;      box-shadow: 0 10px 40px rgba(0,0,0,0.2);      transform: translateY(20px);      transition: transform 0.3s;    }    .tg-df-modal-backdrop.active .tg-df-modal {      transform: translateY(0);    }    .tg-df-modal-header {      padding: 16px;      border-bottom: 1px solid #e2e8f0;      display: flex;      align-items: center;      justify-content: space-between;    }    .tg-df-modal-title {      font-size: 16px;      font-weight: 600;      margin: 0;    }    .tg-df-modal-close {      background: none;      border: none;      cursor: pointer;      padding: 4px;      color: #64748b;    }    .tg-df-modal-body {      padding: 16px;      overflow-y: auto;    }    .tg-df-voucher-item {      padding: 12px;      border: 1px dashed #cbd5e1;      border-radius: 8px;      margin-bottom: 10px;      background: #f8fafc;      display: flex;      align-items: center;      gap: 12px;      text-decoration: none;      color: inherit;      transition: background-color 0.2s, border-color 0.2s;    }    .tg-df-voucher-item:hover {      background: #f1f5f9;      border-color: #94a3b8;    }    .tg-df-voucher-item:last-child {      margin-bottom: 0;    }    .tg-df-voucher-logo {      width: 48px;      height: 48px;      object-fit: contain;      border-radius: 4px;      background: #fff;      border: 1px solid #e2e8f0;      flex-shrink: 0;    }    .tg-df-voucher-content {      flex: 1;      min-width: 0;    }    .tg-df-voucher-title {      font-size: 14px;      font-weight: 600;      margin: 0 0 4px 0;      line-height: 1.3;      color: #0f172a;    }    .tg-df-voucher-expiry {      font-size: 12px;      color: #64748b;      display: flex;      align-items: center;      gap: 4px;      margin-top: 6px;    }    .tg-df-voucher-code {      display: inline-flex;      align-items: center;      background: #f1f5f9;      border: 1px dashed #cbd5e1;      padding: 6px 10px;      font-family: monospace;      font-weight: 700;      font-size: 14px;      color: #0f172a;      border-radius: 4px;      margin-top: 8px;      cursor: pointer;      transition: all 0.2s ease;    }    .tg-df-voucher-code:hover {      background: #e2e8f0;      border-color: #94a3b8;    }    .tg-df-voucher-code.copied {      background: #ecfdf5;      border-color: #10b981;      color: #10b981;    }    .tg-df-voucher-cta {      display: inline-block;      margin-top: 8px;      font-size: 13px;      font-weight: 600;      color: #2563eb;      text-decoration: none;    }    .tg-df-card-title {      font-size: 15px;      font-weight: 400;      line-height: 1.4;      margin: 0 0 12px 0;      color: var(--tg-df-text);      display: -webkit-box;      -webkit-line-clamp: 2;      -webkit-box-orient: vertical;      overflow: hidden;    }    .tg-df-card-footer {      margin-top: auto;      display: flex;      flex-direction: column;      width: 100%;    }    .tg-df-card-price-group {      display: flex;      flex-direction: row;      align-items: center;      gap: 8px;      margin-bottom: 12px;    }    .tg-df-card-price {      font-size: 16px;      font-weight: 700;      color: #dc2626; /* Red price */      line-height: 1;    }        .tg-df-card-msrp {      font-size: 13px;      color: var(--tg-df-text-muted);      text-decoration: line-through;    }    .tg-df-container .tg-df-card-cta {      display: flex;      align-items: center;      justify-content: center;      width: 100%;      box-sizing: border-box;      background-color: #1f69ff;      color: #ffffff;      font-size: 12px;      font-weight: 700;      text-transform: uppercase;      letter-spacing: 0.5px;      padding: 12px 16px;      border-radius: 0;      border: none;      cursor: pointer;      transition: background-color 0.2s ease;    }    .tg-df-card:hover .tg-df-card-cta,    .tg-df-card-cta:hover {      background-color: #1555cc;    }    .tg-df-container .tg-df-card-cta.tg-df-cta-savings-squad {      background-color: #3c8d0d;    }    .tg-df-card:hover .tg-df-card-cta.tg-df-cta-savings-squad,    .tg-df-card-cta.tg-df-cta-savings-squad:hover {      background-color: #2b6509;    }    /*       5. State & Skeleton Styles    */    .tg-df-message {      grid-column: 1 / -1;      text-align: center;      padding: 48px 24px;      color: var(--tg-df-text-muted);      font-size: 16px;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 8px;    }    @keyframes tg-df-shimmer {      0% { background-position: -200% 0; }      100% { background-position: 200% 0; }    }    .tg-df-skeleton {      background: linear-gradient(90deg, var(--tg-df-bg-secondary) 25%, #e2e8f0 50%, var(--tg-df-bg-secondary) 75%);      background-size: 200% 100%;      animation: tg-df-shimmer 1.5s infinite;      border-radius: 4px;    }    .tg-df-skeleton-img {      width: 100%;      height: 100%;      position: absolute;      top: 0; left: 0;    }        .tg-df-skeleton-text {      height: 16px;      margin-bottom: 8px;      width: 100%;    }    .tg-df-skeleton-text.short { width: 40%; }    .tg-df-skeleton-text.title { height: 20px; margin-bottom: 16px; }    /* Editor Floating Bar & Elements */    .tg-df-editor-bar {      position: sticky;      top: 0;      z-index: 1000;      background: #111827;      color: #fff;      padding: 12px 16px;      border-radius: 8px;      margin-bottom: 16px;      display: flex;      align-items: center;      justify-content: space-between;      box-shadow: 0 4px 12px rgba(0,0,0,0.15);    }    .tg-df-editor-bar-text {      font-weight: 600;      font-size: 14px;    }    .tg-df-editor-copy-btn {      background: #10b981;      color: #fff;      padding: 6px 16px;      border: none;      border-radius: 4px;      font-weight: 600;      cursor: pointer;      display: flex;      align-items: center;      font-size: 13px;    }    .tg-df-editor-copy-btn:hover { background: #059669; }        .tg-df-deal-checkbox {      position: absolute;      top: 12px;      right: 12px;      z-index: 10;      width: 20px;      height: 20px;      cursor: pointer;      pointer-events: auto;    }    /*       6. Mobile List View (Stacks into a cleaner horizontal row/list)    */    @container tg-df (max-width: 599px) {      .tg-df-controls {        padding: 0 16px;      }            .tg-df-top-bar {        width: 100%;      }            .tg-df-settings-dropdown {        position: fixed;        top: auto;        bottom: 0;        left: 0;        right: 0;        width: 100%;        border-radius: 20px 20px 0 0;        padding: 24px;        box-shadow: 0 -8px 32px rgba(0,0,0,0.15);        z-index: 1000;        border: none;        border-top: 1px solid var(--tg-df-border);      }            .tg-df-settings-dropdown-backdrop.active {        background: rgba(0,0,0,0.4);      }            .tg-df-search-wrapper {        box-shadow: 0 0 16px rgba(0,0,0,0.08);      }            .tg-df-filters {        width: calc(100% + 32px);        margin: 0 -16px;        padding: 0 16px 4px 16px;        display: flex;        justify-content: flex-start;        gap: 8px;        flex-wrap: nowrap;        overflow-x: auto;        -webkit-overflow-scrolling: touch;        scrollbar-width: none;      }      .tg-df-filters::after {        content: "";        display: block;        flex: 0 0 8px;      }      .tg-df-filters::-webkit-scrollbar {        display: none;      }            .tg-df-sort-wrapper {        flex: 0 0 max(42%, 130px);        min-width: 0;      }      .tg-df-sort-wrapper.tg-df-price-range-wrapper {        flex: 0 0 auto;        min-width: max-content;      }            .tg-df-sort-select, .tg-df-filter-select {        width: 100%;        text-align: left;        padding: 10px 24px 10px 32px;        background-position: right 8px center;        text-overflow: ellipsis;        white-space: nowrap;        overflow: hidden;      }      .tg-df-sort-icon {        left: 10px;      }      .tg-df-grid:not(.layout-grid):not(.layout-row),      .tg-df-grid.layout-row {        grid-template-columns: 1fr;        gap: 16px;      }            .tg-df-grid.tg-df-grid-auto {        padding-top: 24px;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card,      .tg-df-grid.layout-row .tg-df-card {        flex-direction: row;        align-items: stretch;        height: auto;        box-shadow: none; /* simple line on mobile if preferred, or keep */        border-bottom: 1px solid var(--tg-df-border);      }      .tg-df-grid.tg-df-grid-auto .tg-df-card:hover,      .tg-df-grid.layout-row .tg-df-card:hover {        box-shadow: none;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card-image-box,      .tg-df-grid.layout-row .tg-df-card-image-box {        width: 120px;        min-width: 120px;        aspect-ratio: 3/4;        border-right: none;        padding: 12px;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card-body,      .tg-df-grid.layout-row .tg-df-card-body {        padding: 12px;        justify-content: space-between;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card-title,      .tg-df-grid.layout-row .tg-df-card-title {        font-size: 14px;        margin-bottom: 12px;        -webkit-line-clamp: 3;      }      /* Single column mobile grid override */      .tg-df-grid.layout-grid {        grid-template-columns: 1fr;        gap: 16px;      }      .tg-df-grid.layout-grid .tg-df-card-image-box {        padding: 12px;      }      .tg-df-grid.layout-grid .tg-df-card-body {        padding: 10px;      }      .tg-df-grid.layout-grid .tg-df-card-title {        font-size: 13px;        -webkit-line-clamp: 3;        margin-bottom: 8px;      }      .tg-df-grid.layout-grid .tg-df-card-price {        font-size: 14px;      }            .tg-df-card-footer {        flex-direction: column;        align-items: stretch;        gap: 0;        width: 100%;        min-width: 0;      }      .tg-df-card-merchant-pill {        margin-bottom: 4px;      }      .tg-df-card-price-group {        flex: 1 1 auto;        margin-bottom: 8px;      }      .tg-df-card-price {        font-size: 16px;      }      .tg-df-card-msrp {        display: block;       }      .tg-df-grid.layout-row .tg-df-card-cta,      .tg-df-container .tg-df-card-cta {        width: 100%;        max-width: none;        min-width: 0;        box-sizing: border-box;        padding: 8px 16px;        font-size: 12px;        flex: 0 0 auto;        text-align: center;        white-space: normal;        line-height: 1.2;      }    }    .tg-df-container.is-carousel {      min-height: 760px;      background-color: #E7F0FF;      padding: 0 0 24px 0;      border-radius: 24px;    }    .tg-df-container.is-carousel.hide-header-details {      min-height: 480px;    }    /*       7. Carousel View Mode    */    .tg-df-container .tg-df-carousel-host {      /* Layout is now handled by container wrapper */    }    .tg-df-container .tg-df-carousel-eyebrow {      color: #1F69FF;      font-weight: 700;      font-size: 14px;      text-transform: uppercase;      letter-spacing: 1px;      padding: 24px 16px 0 16px;      display: none;    }    .tg-df-container .tg-df-carousel-query-title {      color: #011535;      font-size: 28px;      font-weight: 600;      padding: 0 16px 24px 16px;      line-height: 1.2;      display: none;    }    .tg-df-container .tg-df-carousel-blue-box {      background-color: transparent;      border-radius: 0;      padding: 24px 24px 0 24px;      margin: 0;      color: #1F69FF;          position: relative;      overflow: hidden;    }    .tg-df-container .tg-df-carousel-bg-circle-1 {      display: none;    }    .tg-df-container .tg-df-carousel-bg-circle-2 {      display: none;    }    .tg-df-container .tg-df-carousel-bg-circle-3 {      display: none;    }    .tg-df-container .tg-df-carousel-box-content {      position: relative;      z-index: 10;    }    .tg-df-container .tg-df-carousel-box-eyebrow {      background-color: transparent;      color: #1F69FF;      font-weight: 700;      font-size: 14px;      text-transform: uppercase;      letter-spacing: 1px;      display: inline-block;      padding: 0;      border-radius: 0;    }    .tg-df-container .tg-df-carousel-box-title {      font-size: 28px;      font-weight: 600;      line-height: 1.2;      margin-top: 8px;      color: #1e293b;    }    .tg-df-container .tg-df-countdown-wrapper {      position: absolute;      top: 0;      right: 0;      display: flex;      flex-direction: column;      align-items: flex-end;      gap: 12px;      transform: scale(0.67);      transform-origin: top right;    }    .tg-df-container .tg-df-countdown-title {      font-size: 16px;      text-align: center;      width: 100%;      font-weight: 600;      color: #011535;      margin: 0;    }    .tg-df-container .tg-df-countdown-blocks {      display: flex;      gap: 16px;    }    .tg-df-container .tg-df-countdown-item {      display: flex;      flex-direction: column;      align-items: center;      gap: 4px;    }    .tg-df-container .tg-df-countdown-box {      width: 59px;      height: 59px;      background: #03FE9E;      border-radius: 15px;      display: flex;      align-items: center;      justify-content: center;    }    .tg-df-container .tg-df-countdown-num {      font-family: 'Inter', sans-serif;      font-weight: 700;      font-size: 20px;      line-height: normal;      color: #011535;    }    .tg-df-container .tg-df-countdown-label {      font-family: 'Inter', sans-serif;      font-weight: 500;      font-size: 16px;      line-height: normal;      color: #1e293b;      text-transform: uppercase;    }    .tg-df-container .tg-df-carousel-box-subtitle {      font-size: 16px;      margin-top: 8px;      font-weight: 300;      color: #1e293b;      line-height: 24px;    }    .tg-df-container .tg-df-carousel-roundels-wrapper {      position: relative;      margin-top: 24px;      margin-left: -24px;      margin-right: -24px;    }    .tg-df-container .tg-df-carousel-roundels {      display: flex;      gap: 16px;      overflow-x: auto;            scrollbar-width: none;      padding-top: 12px;      padding-bottom: 24px;      padding-left: 24px;      padding-right: 24px;      margin-left: 0;      margin-right: 0;    }        .tg-df-container .tg-df-carousel-scroll-left,    .tg-df-container .tg-df-carousel-scroll-right {      position: absolute;      top: 50%;      transform: translateY(-50%);      height: 36px;      width: 36px;      display: flex;      align-items: center;      justify-content: center;      border-radius: 50%;      background-color: #ffffff;      border: 1px solid #e2e8f0;      box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);      color: #1F69FF;      cursor: pointer;      transition: all 0.2s;      margin-top: -4px;      z-index: 20;    }    .tg-df-container .tg-df-carousel-scroll-left { left: 8px; }    .tg-df-container .tg-df-carousel-scroll-right { right: 8px; }    .tg-df-carousel-filters-outer .tg-df-carousel-scroll-left { left: 0px; }    .tg-df-carousel-filters-outer .tg-df-carousel-scroll-right { right: 0px; }    .tg-df-carousel-filters-outer { margin-left: -24px; margin-right: -24px; padding-left: 24px; padding-right: 24px; }    @container tg-df (max-width: 599px) { .tg-df-carousel-filters-outer { margin-left: -16px; margin-right: -16px; padding-left: 16px; padding-right: 16px; } }        .tg-df-container .tg-df-carousel-scroll-left:hover,    .tg-df-container .tg-df-carousel-scroll-right:hover {      background-color: #f8fafc;      border-color: #cbd5e1;    }        .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-left,    .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-right,    .tg-df-carousel-filters-outer .tg-df-carousel-scroll-left,    .tg-df-carousel-filters-outer .tg-df-carousel-scroll-right {      background-color: rgba(255, 255, 255, 0.4);      border: none;      box-shadow: none;      backdrop-filter: blur(4px);      -webkit-backdrop-filter: blur(4px);    }    .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-left { left: 0; }    .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-right { right: 0; }    .tg-df-grid-wrapper .tg-df-carousel-scroll-left { left: 0; }    .tg-df-grid-wrapper .tg-df-carousel-scroll-right { right: 0; }        .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-left:hover,    .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-right:hover {      background-color: rgba(255, 255, 255, 0.6);      border: none;    }    .tg-df-container .tg-df-carousel-roundels::-webkit-scrollbar {      display: none;    }    .tg-df-container .tg-df-carousel-roundels::after {      content: "";      flex: 0 0 32px;    }    .tg-df-container .tg-df-roundel {      display: flex;      flex-direction: column;      align-items: center;      gap: 8px;      cursor: pointer;      min-width: 120px;      flex-shrink: 0;    }    .tg-df-container .tg-df-roundel-img-box {      width: 120px;      height: 120px;      border-radius: 50%;      background: white;      display: flex;      align-items: center;      justify-content: center;      overflow: hidden;      box-shadow: 0px 3px 14px 0px rgba(30, 41, 59, 0.08);      transition: box-shadow 0.2s;    }    .tg-df-container .tg-df-roundel:hover .tg-df-roundel-img-box {      box-shadow: 0 0 0 2px #E7F0FF, 0 0 0 4px #1F69FF;    }    .tg-df-container .tg-df-roundel.active .tg-df-roundel-img-box {      box-shadow: 0 0 0 2px #E7F0FF, 0 0 0 4px #1F69FF;    }    .tg-df-container .tg-df-roundel:hover .tg-df-roundel-img-box img {      transform: scale(1.08);    }    .tg-df-container .tg-df-roundel-img-box img {      width: 100%;      height: 100%;      object-fit: contain;      padding: 10px;      box-sizing: border-box;      transition: transform 0.3s ease;    }    .tg-df-container .tg-df-roundel-label {      font-size: 13px;      font-weight: 400;      color: #1e293b;      text-align: center;      transition: font-weight 0.2s;    }    .tg-df-container .tg-df-roundel.active .tg-df-roundel-label {      font-weight: 700;    }    .tg-df-container .tg-df-carousel-filters-label {      font-size: 16px;      font-weight: 400;      color: #1e293b;      white-space: nowrap;      margin-right: 4px;    }    .tg-df-container .tg-df-carousel-filters-wrap {      display: flex;      align-items: center;      flex-wrap: nowrap;      gap: 8px;      margin-top: 8px;      overflow-x: auto;      scrollbar-width: none;      -webkit-overflow-scrolling: touch;      padding-bottom: 8px;      margin-left: -24px;      margin-right: -24px;      padding-left: 24px;      padding-right: 24px;    }    .tg-df-container .tg-df-carousel-filters-wrap::-webkit-scrollbar {      display: none;    }        .tg-df-container .tg-df-carousel-filter-btn img,    .tg-df-container .tg-df-carousel-filter-btn picture {      height: 20px;      width: 20px;      object-fit: contain;      object-position: center;      display: inline-flex;      align-items: center;      justify-content: center;      margin-right: 6px;    }    .tg-df-container .tg-df-carousel-filter-btn picture img {      margin-right: 0;      height: 100%;      width: 100%;    }    .tg-df-container .tg-df-carousel-filter-btn img.active-img,    .tg-df-container .tg-df-carousel-filter-btn picture:has(.active-img) {      display: none;    }    .tg-df-container .tg-df-carousel-filter-btn:hover img.inactive-img,    .tg-df-container .tg-df-carousel-filter-btn.active img.inactive-img,    .tg-df-container .tg-df-carousel-filter-btn:hover picture:has(.inactive-img),    .tg-df-container .tg-df-carousel-filter-btn.active picture:has(.inactive-img) {      display: none;    }    .tg-df-container .tg-df-carousel-filter-btn:hover img.active-img,    .tg-df-container .tg-df-carousel-filter-btn.active img.active-img,    .tg-df-container .tg-df-carousel-filter-btn:hover picture:has(.active-img),    .tg-df-container .tg-df-carousel-filter-btn.active picture:has(.active-img) {      display: inline-flex;    }    .tg-df-container .tg-df-carousel-filter-btn {      background: #ffffff;      border: 2px solid #1e293b;      color: #1e293b;      border-radius: 24px;      padding: 6px 16px;      font-size: 14px;      font-weight: 600;      cursor: pointer;      transition: all 0.2s;      flex-shrink: 0;      white-space: nowrap;      display: inline-flex;      align-items: center;      justify-content: center;      min-height: 36px;      box-sizing: border-box;    }    .tg-df-container .tg-df-carousel-filter-btn svg {      margin-right: 6px;    }    .tg-df-container .tg-df-carousel-filter-btn:hover {      background: #1e293b;      color: white;      border-color: #1e293b;    }    .tg-df-container .tg-df-carousel-filter-btn.active {      background: #1e293b;      color: white;      border-color: #1e293b;    }        .tg-df-grid.carousel-compact {      display: flex;      flex-wrap: nowrap;      overflow-x: auto;      gap: 16px;      padding: 16px 24px;      align-items: stretch;      scrollbar-width: none;    }    .tg-df-grid.carousel-compact::after {      content: "";      flex: 0 0 32px;    }    .tg-df-grid-wrapper {      position: relative;    }    .tg-df-grid.carousel-compact::-webkit-scrollbar {      display: none;    }    .tg-df-grid.carousel-compact .tg-df-load-more-card {      flex: 0 0 auto;      width: 100px;      border-radius: 15px;      box-shadow: 0 0 16px rgba(0,0,0,0.08);      border: 2px solid #1e293b;      background: white;      color: #1e293b;      display: flex;      flex-direction: column;      justify-content: center;      align-items: center;      font-weight: 600;      font-size: 14px;      cursor: pointer;      padding: 16px;      text-align: center;      transition: all 0.2s;    }    .tg-df-grid.carousel-compact .tg-df-load-more-card:hover {      background: #1e293b;      color: white;    }    .tg-df-grid.carousel-compact .tg-df-card {      flex: 0 0 auto;      width: 200px;      min-height: auto;      height: auto;      display: flex;      flex-direction: column;      border-radius: 15px;      border: none;      box-shadow: 0 0 16px rgba(0,0,0,0.08);      overflow: visible;    }    .tg-df-grid.carousel-compact .tg-df-card-image-box {      padding: 12px;      background-color: transparent;      border-radius: 15px 15px 0 0;      height: 130px;    }    .tg-df-grid.carousel-compact .tg-df-card-image {      mix-blend-mode: normal;    }    .tg-df-grid.carousel-compact .tg-df-card-discount-badge {      border-radius: 0;      top: 0px;      left: 0px;      padding: 4px 8px;      font-size: 11px;    }    .tg-df-grid.carousel-compact .tg-df-card-body {      padding: 8px 12px 12px 12px;    }    .tg-df-grid.carousel-compact .tg-df-card-title {      font-size: 14px;      font-weight: 400;      -webkit-line-clamp: 2;      margin-bottom: 8px;      color: #011535;    }    .tg-df-grid.carousel-compact .tg-df-card-body:not(:has(.tg-df-card-stars)):not(:has(.tg-df-tag-prime)):not(:has(.tg-df-coupon-wrapper:not([style*="none"]))) > .tg-df-card-title,    .tg-df-grid.carousel-compact .tg-df-card-body:not(:has(.tg-df-card-stars)):has(> .tg-df-card-title:first-child) > .tg-df-card-title {      -webkit-line-clamp: 3;    }    .tg-df-grid.carousel-compact .tg-df-card-cta {      border-radius: 5px;      padding: 8px 10px;      margin-top: 4px;      background-color: #1F69FF;    }    .tg-df-grid.carousel-compact .tg-df-card-price-group {      margin-bottom: 2px;    }    .tg-df-grid.carousel-compact .tg-df-card-merchant-pill {      margin-bottom: 2px;    }    @container tg-df (max-width: 599px) {      .tg-df-container .tg-df-carousel-blue-box-title {        font-size: 24px;      }      .tg-df-container .tg-df-countdown-title {        display: none;      }      .tg-df-container .tg-df-countdown-wrapper {        position: absolute;        top: 0;        right: 0;        align-items: flex-end;        transform: scale(0.45);        transform-origin: top right;      }      .tg-df-container .tg-df-roundel {        min-width: 88px;      }      .tg-df-container .tg-df-roundel-img-box {        width: 88px;        height: 88px;      }    }    /* REPLICA BLOCK STYLES */    .tg-df-grid.layout-replica-2 { grid-template-columns: repeat(2, 1fr) !important; gap: 20px; }    .tg-df-grid.layout-replica-1 { grid-template-columns: 1fr !important; gap: 20px; }        .tg-df-container .hawk-deal-widget-container { border-bottom: 1px solid #e5e7eb; display: flex; flex-direction: column; margin: 0; padding: 20px 0; box-sizing: border-box; font-family: inherit; }    .tg-df-container .hawk-deal-widget-wrap { display: flex; flex-direction: row; align-items: flex-start; width: 100%; gap: 24px; }    .tg-df-container .hawk-deal-widget-image-container { display: flex; flex-shrink: 0; justify-content: center; width: 160px; height: 160px; align-items: center; background: white; margin-bottom: 0px; }    .tg-df-container .hawk-deal-widget-title-product-title { color: #111827; font-size: 18px; font-weight: 700; line-height: 1.4; display: inline; }    .tg-df-container .hawk-deal-widget-title-price { font-size: 18px; font-weight: 700; line-height: 1.4; white-space: nowrap; color: #2563eb; }    .tg-df-container .hawk-deal-widget-title-price-now { font-weight: 700; }    .tg-df-container .hawk-deal-widget-title-retailer-price:hover { text-decoration: underline; }    .tg-df-container .hawk-deal-widget-title-retailer { font-size: 18px; font-weight: 700; line-height: 1.4; color: #2563eb; }    .tg-df-container .hawk-deal-widget-title-was-price { color: #dc2626; font-size: 16px; font-weight: 500; line-height: 1.4; text-decoration: line-through; white-space: nowrap; margin-left: 8px; margin-right: 8px; }    .tg-df-container .hawk-deal-widget-text-body-container { position: relative; width: 100%; box-sizing: border-box; }    .tg-df-container .hawk-deal-widget-text-body-main { font-size: 16px; width: 100%; margin-bottom: 12px; }    .tg-df-container .hawk-deal-widget-text-body-description { display: block; font-size: 15px; margin-top: 12px; color: #4b5563; line-height: 1.6; }    .tg-df-container .hawk-deal-widget-text-body-description p { margin: 0; line-height: 1.6; }    .tg-df-container .hawk-deal-widget-text-cta-container { display: flex; flex-direction: column; gap: 12px; width: 100%; flex: 1; min-width: 0; box-sizing: border-box; }    .tg-df-container .hawk-deal-widget-footer { display: flex; justify-content: flex-end; width: 100%; margin-top: auto; }    .tg-df-container .hawk-deal-widget-button-wrapper { display: flex; flex-direction: column; align-items: flex-end; justify-content: flex-end; width: 100%; }    .tg-df-container .hawk-deal-widget-preferred-partner-wrapper { display: flex; flex-direction: row; }        @container tg-df (min-width: 600px) {      .tg-df-mobile-only { display: none !important; }    }    @container tg-df (max-width: 599px) {      .tg-df-desktop-only { display: none !important; }      .tg-df-grid.layout-replica-2 { grid-template-columns: 1fr !important; }      .tg-df-grid.savings-squad-cards { grid-template-columns: 1fr !important; display: flex; flex-direction: column; }    }    .tg-df-grid.savings-squad-cards .tg-df-card-title {      -webkit-line-clamp: unset !important;      display: block !important;      overflow: visible !important;    }    @container tg-df (max-width: 500px) {      .tg-df-container .hawk-deal-widget-wrap { display: block; }      .tg-df-container .hawk-deal-widget-image-container { display: block; float: left; margin: 0 16px 8px 0; width: 120px; max-width: 120px; height: auto; align-items: normal; justify-content: normal; }      .tg-df-container .hawk-deal-widget-text-cta-container { display: block; text-align: left; }      .tg-df-container .hawk-deal-widget-footer { display: block; margin-top: 16px; clear: both; width: 100%; }      .tg-df-container .hawk-deal-widget-button-wrapper { display: block; width: 100%; }      .tg-df-container .hawk-deal-widget-button-wrapper .hawk-deal-widget-preferred-partner-wrapper { display: block; width: 100%; }      .tg-df-container .hawk-affiliate-link-deal-button { box-sizing: border-box !important; display: flex !important; max-width: none !important; width: 100% !important; margin: 0 !important; }    }        .tg-df-container .hawk-affiliate-link-deal-button {       align-items: center; background-color: #5aaf0b; box-sizing: border-box; color: #ffffff !important; display: flex; font-size: 14px; font-weight: 700; justify-content: center; letter-spacing: 0.5px; line-height: 1; min-width: 160px; padding: 14px 24px; text-align: center; text-decoration: none; text-transform: uppercase; width: 100%; word-break: normal; border-radius: 4px; border: 0; transition: background-color 0.2s;     }    .tg-df-container .hawk-affiliate-link-deal-button:hover { background-color: #4a9109; text-decoration: none; }    .tg-df-container .hawk-lazy-image-deal-widget { display: block; height: auto; margin: auto; max-height: 160px; max-width: 100%; mix-blend-mode: multiply; object-fit: contain; }    .tg-df-container .hawk-deal-widget-text-cta-container a { color: #2563eb; text-decoration: none; display: inline; }    .tg-df-container .hawk-deal-widget-text-cta-container a:hover { text-decoration: underline; }    .tg-df-container .hawk-deal-widget-text-cta-container a:has(.hawk-deal-widget-title-product-title) { color: #111827; }    .tg-df-container .hawk-deal-widget-text-cta-container a:hover .hawk-deal-widget-title-product-title,    .tg-df-container .hawk-deal-widget-text-cta-container a:hover .hawk-deal-widget-title-retailer-price { text-decoration: underline; }  \x3C/style>  \x3C!-- Widget Container --\x3E  \x3Cdiv class="tg-df-container" id="signal-deals-finder-root">    \x3C!-- Editor Floating Bar --\x3E    \x3Cdiv class="tg-df-editor-bar" id="tg-df-editor-bar" style="display:none;">      \x3Cdiv class="tg-df-editor-bar-text" style="display: flex; align-items: center;">        \x3Cspan id="tg-df-selected-count">0\x3C/span>\x26nbsp;Deals Selected        \x3Cbutton class="tg-df-editor-clear-btn" id="tg-df-editor-clear" type="button" style="margin-left: 12px; font-size: 13px; color: #9ca3af; background: none; border: none; cursor: pointer; text-decoration: underline;">Clear All\x3C/button>      \x3C/div>      \x3Cbutton class="tg-df-editor-copy-btn" id="tg-df-editor-copy" type="button">        \x3Csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-right: 6px;">\x3Crect x="9" y="9" width="13" height="13" rx="2" ry="2">\x3C/rect>\x3Cpath d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1">\x3C/path>\x3C/svg>        Copy to CMS      \x3C/button>    \x3C/div>    \x3Cdiv class="tg-df-carousel-host" id="tg-df-carousel-host" style="display: none;">      \x3Cdiv class="tg-df-carousel-eyebrow">DEAL FINDER\x3C/div>      \x3Cdiv class="tg-df-carousel-query-title" id="tg-df-carousel-title-label">Best Deals\x3C/div>            \x3Cdiv class="tg-df-carousel-blue-box">        \x3Cdiv class="tg-df-carousel-bg-circle-1" aria-hidden="true">\x26nbsp;\x3C/div>        \x3Cdiv class="tg-df-carousel-bg-circle-2" aria-hidden="true">\x26nbsp;\x3C/div>        \x3Cdiv class="tg-df-carousel-bg-circle-3" aria-hidden="true">\x26nbsp;\x3C/div>        \x3Cdiv class="tg-df-carousel-box-content">          \x3Cdiv class="tg-df-countdown-wrapper" id="tg-df-countdown-wrapper" style="display:none;">            \x3Cdiv class="tg-df-countdown-title" id="tg-df-countdown-title">Prime Day starts in\x3C/div>            \x3Cdiv class="tg-df-countdown-blocks">              \x3Cdiv class="tg-df-countdown-item">\x3Cdiv class="tg-df-countdown-box">\x3Cdiv class="tg-df-countdown-num" id="tg-df-cd-days">0\x3C/div>\x3C/div>\x3Cdiv class="tg-df-countdown-label">DAYS\x3C/div>\x3C/div>              \x3Cdiv class="tg-df-countdown-item">\x3Cdiv class="tg-df-countdown-box">\x3Cdiv class="tg-df-countdown-num" id="tg-df-cd-hrs">0\x3C/div>\x3C/div>\x3Cdiv class="tg-df-countdown-label">HRS\x3C/div>\x3C/div>              \x3Cdiv class="tg-df-countdown-item">\x3Cdiv class="tg-df-countdown-box">\x3Cdiv class="tg-df-countdown-num" id="tg-df-cd-min">0\x3C/div>\x3C/div>\x3Cdiv class="tg-df-countdown-label">MIN\x3C/div>\x3C/div>              \x3Cdiv class="tg-df-countdown-item">\x3Cdiv class="tg-df-countdown-box">\x3Cdiv class="tg-df-countdown-num" id="tg-df-cd-sec">0\x3C/div>\x3C/div>\x3Cdiv class="tg-df-countdown-label">SEC\x3C/div>\x3C/div>            \x3C/div>          \x3C/div>          \x3Cdiv class="tg-df-carousel-box-eyebrow">DEAL FINDER\x3C/div>          \x3Cdiv class="tg-df-carousel-box-title">Find Deals Fast\x3C/div>          \x3Cdiv class="tg-df-carousel-box-subtitle">The latest deals from the biggest retailers, all in one place\x3C/div>                    \x3Cdiv class="tg-df-carousel-roundels-wrapper">          \x3Cbutton class="tg-df-carousel-scroll-left" type="button" aria-label="Scroll left" style="display:none;" onclick="this.parentElement.querySelector('.tg-df-carousel-roundels').scrollBy({left: -200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m15 18-6-6 6-6">\x3C/path>\x3C/svg>\x3C/button>          \x3Cdiv class="tg-df-carousel-roundels">            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>          \x3C/div>          \x3Cbutton class="tg-df-carousel-scroll-right" type="button" aria-label="Scroll right" onclick="this.parentElement.querySelector('.tg-df-carousel-roundels').scrollBy({left: 200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m9 18 6-6-6-6">\x3C/path>\x3C/svg>\x3C/button>        \x3C/div>        \x3Cdiv class="tg-df-carousel-filters-outer" style="position: relative;">          \x3Cbutton class="tg-df-carousel-scroll-left" type="button" aria-label="Scroll left" style="display:none;" onclick="this.parentElement.querySelector('.tg-df-carousel-filters-wrap').scrollBy({left: -200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m15 18-6-6 6-6">\x3C/path>\x3C/svg>\x3C/button>          \x3Cdiv class="tg-df-carousel-filters-wrap">                      \x3Cbutton class="tg-df-carousel-filter-btn" data-d="0">All\x3C/button>                      \x3Cbutton class="tg-df-carousel-filter-btn" data-ot="amazon_lightning">              \x3Cimg src="https://cdn.mos.cms.futurecdn.net/HqAui7w97ft2NPqBtQ5r38-600-100.png" class="inactive-img" alt="" />\x3Cimg src="https://cdn.mos.cms.futurecdn.net/yWPQ5yyQRhUwVKzGwYbh38-600-100.png" class="active-img" alt="" /> Lightning deals\x3C/button>            \x3Cbutton class="tg-df-carousel-filter-btn" data-ot="amazon_prime">              \x3Cimg src="https://cdn.mos.cms.futurecdn.net/fwoVXvL79turN3Ph535m38-600-100.png" class="inactive-img" alt="" />\x3Cimg src="https://cdn.mos.cms.futurecdn.net/u75QjVpt3w2EsMimJiRo38-600-100.png" class="active-img" alt="" /> Prime deals\x3C/button>            \x3Cbutton class="tg-df-carousel-filter-btn" data-d="10">              \x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tag">\x3Cpath d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z">\x3C/path>\x3Ccircle cx="7.5" cy="7.5" r=".5" fill="currentColor">\x3C/circle>\x3C/svg>            Min 10% off\x3C/button>                      \x3Cbutton class="tg-df-carousel-filter-btn" data-d="15">              \x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tag">\x3Cpath d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z">\x3C/path>\x3Ccircle cx="7.5" cy="7.5" r=".5" fill="currentColor">\x3C/circle>\x3C/svg>            Min 15% off\x3C/button>                      \x3Cbutton class="tg-df-carousel-filter-btn" data-d="25">              \x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tag">\x3Cpath d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z">\x3C/path>\x3Ccircle cx="7.5" cy="7.5" r=".5" fill="currentColor">\x3C/circle>\x3C/svg>            Min 25% off\x3C/button>                      \x3Cbutton class="tg-df-carousel-filter-btn" data-pr="under50">              \x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-dollar-sign">\x3Cpath d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z">\x3C/path>\x3Cpath d="M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8">\x3C/path>\x3Cpath d="M12 18V6">\x3C/path>\x3C/svg>            Under $50\x3C/button>        \x3C/div>        \x3Cbutton class="tg-df-carousel-scroll-right" type="button" aria-label="Scroll right" style="display:none;" onclick="this.parentElement.querySelector('.tg-df-carousel-filters-wrap').scrollBy({left: 200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m9 18 6-6-6-6">\x3C/path>\x3C/svg>\x3C/button>      \x3C/div>    \x3C/div>    \x3C/div>      \x3C!-- Search & Filter Controls --\x3E    \x3Cdiv class="tg-df-controls" id="tg-df-controls" style="display:flex;">      \x3Cdiv class="tg-df-top-bar">        \x3Cdiv class="tg-df-search-wrapper">          \x3Cinput type="text" class="tg-df-search-input" placeholder="Search for deals, products, or brands...">          \x3Cbutton type="button" class="tg-df-search-btn" aria-label="Search">              \x3Csvg class="tg-df-search-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">                \x3Cpath d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"/>              \x3C/svg>          \x3C/button>          \x3Cdiv class="tg-df-autocomplete-dropdown" id="tg-df-autocomplete">\x3C/div>        \x3C/div>                \x3Cdiv class="tg-df-settings-wrapper">          \x3Cbutton type="button" class="tg-df-settings-btn" aria-label="Settings" id="tg-df-settings-toggle">            \x3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="20" height="20">                \x3Cpath d="M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.06-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.73 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.06.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .43-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.49-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z"/>            \x3C/svg>          \x3C/button>          \x3Cdiv class="tg-df-settings-dropdown-backdrop" id="tg-df-settings-backdrop">\x3C/div>          \x3Cdiv class="tg-df-settings-dropdown" id="tg-df-settings-panel">            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">Search Region\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-region-select">                \x3Coption value="auto">🌍 Auto-detect\x3C/option>                \x3Coption value="US">🇺🇸 United States (US)\x3C/option>                \x3Coption value="GB">🇬🇧 United Kingdom (UK)\x3C/option>                \x3Coption value="CA">🇨🇦 Canada (CA)\x3C/option>                \x3Coption value="AU">🇦🇺 Australia (AU)\x3C/option>                \x3Coption value="DE">🇩🇪 Germany (DE)\x3C/option>                \x3Coption value="FR">🇫🇷 France (FR)\x3C/option>                \x3Coption value="IT">🇮🇹 Italy (IT)\x3C/option>              \x3C/select>            \x3C/div>            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">Retailer\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-retailer-select">                \x3Coption value="">All Retailers\x3C/option>                \x3Coption value="Amazon">Amazon\x3C/option>                \x3Coption value="Walmart">Walmart\x3C/option>                \x3Coption value="Best Buy">Best Buy\x3C/option>                \x3Coption value="Target">Target\x3C/option>                \x3Coption value="John Lewis">John Lewis\x3C/option>                \x3Coption value="Currys">Currys\x3C/option>                \x3Coption value="Argos">Argos\x3C/option>              \x3C/select>            \x3C/div>            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">Offer Type\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-offer-type-select">                \x3Coption value="">All Offers\x3C/option>                \x3Coption value="amazon_prime">Amazon Prime\x3C/option>                \x3Coption value="recommended_promo">Recommended Promo\x3C/option>                \x3Coption value="amazon_lightning">Amazon Lightning Deal\x3C/option>              \x3C/select>            \x3C/div>            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">Result Count\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-rows-select">                \x3Coption value="3">3 Items\x3C/option>                \x3Coption value="4">4 Items\x3C/option>                \x3Coption value="6">6 Items\x3C/option>                \x3Coption value="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/laptops/i-checked-out-the-new-googlebooks-3-reasons-id-buy-one-and-3-reasons-id-skip</link>
                                                                            <description>
                            <![CDATA[ Googlebooks is a new class of laptop designed to work seamlessly with Android phones. Are they right for you? We detail the pros and cons to help you decide. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">RZ2Td6R7dQiXippJHR9N4e</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/uFu2fjzef4sCpGXcR49nfj-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 24 Sep 2026 09:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Laptops]]></category>
                                                    <category><![CDATA[Chromebooks]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                                                                <author><![CDATA[ tony.polanco@futurenet.com (Tony Polanco) ]]></author>                    <dc:creator><![CDATA[ Tony Polanco ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/atzRNqFt5wYgEUPBDahWsD-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/uFu2fjzef4sCpGXcR49nfj-1920-80.jpg">
                                                            <media:credit><![CDATA[Tom&amp;#39;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Asus Googlebook Pros and Cons]]></media:description>                                                            <media:text><![CDATA[Asus Googlebook Pros and Cons]]></media:text>
                                <media:title type="plain"><![CDATA[Asus Googlebook Pros and Cons]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/uFu2fjzef4sCpGXcR49nfj-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p><a href="https://www.tomsguide.com/computing/laptops/googlebook-pre-orders-go-live-with-5-new-laptops-from-usd899-to-usd1-299-heres-what-theyre-like-to-use">Googlebooks</a> have arrived to shake up the computing world. Billed as laptops for Android users, these machines run on the brand-new Googlebook OS, which combines Android OS and ChromeOS and is designed for Gemini Intelligence. This gives users Apple-like interoperability with their phone and laptop, along with on-device AI tools and features.</p><p>Google is launching these new laptops in a crowded field that includes the <a href="https://www.tomsguide.com/best-picks/best-macbook">best MacBooks</a>, the <a href="https://www.tomsguide.com/computing/laptops/best-windows-laptops">best Windows laptops</a>, and even the company’s own <a href="https://www.tomsguide.com/best-picks/best-chromebooks">best Chromebooks</a>. If you already own or are hunting for one of the <a href="https://www.tomsguide.com/computing/laptops/best-laptops">best laptops</a>, it might be difficult to see why you would want or need a Googlebook.</p><p>To that end, here are four reasons to buy a Googlebook, along with three reasons you might want to skip them.</p><div class="product"><a data-dimension112="cf284c12-b772-11f1-a699-91fb48c31705" data-action="Deal Block" data-label="Googlebook 14" data-dimension48="Googlebook 14" data-dimension25="$1299" href="https://www.bestbuy.com/product/asus-googlebook-14-3k-oled-touchscreen-laptop-w-gemini-intelligence-intel-core-ultra-5-325-2026-16gb-ram-512gb-ssd-dusk-ash/JJGHGST42S" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:900px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="6KofWCQ5gAHhEWJmxck4ym" name="Asus Googlebook 14" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/6KofWCQ5gAHhEWJmxck4ym-1920-80.jpg" mos="" align="middle" fullscreen="" width="900" height="900" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The Asus Googlebook 14 is arguably the most impressive of the new laptop line since it's so darn thin and light, weighing just 2.2 pounds! It also has a 14-inch OLED 3K touchscreen, a sturdy Nano Ceramic magnesium-aluminum chassis, and an Intel Core Ultra 5 Panther Lake CPU, 16GB of RAM, and 256GB of SSD storage. You can pre-order it now at Best Buy starting at $1,299.<a class="view-deal button" href="https://www.bestbuy.com/product/asus-googlebook-14-3k-oled-touchscreen-laptop-w-gemini-intelligence-intel-core-ultra-5-325-2026-16gb-ram-512gb-ssd-dusk-ash/JJGHGST42S" target="_blank" rel="nofollow" data-dimension112="cf284c12-b772-11f1-a699-91fb48c31705" data-action="Deal Block" data-label="Googlebook 14" data-dimension48="Googlebook 14" data-dimension25="$1299">View Deal</a></p></div><h3 class="article-body__section" id="section-googlebooks-reasons-to-buy"><span>Googlebooks: Reasons to buy</span></h3><h2 id="android-interoperability">Android interoperability</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="JBoCY7ggo6tTCdRtsqF7Hj" name="Googlebook-hands-on-4" alt="Googlebook" src="https://cdn.mos.cms.futurecdn.net/JBoCY7ggo6tTCdRtsqF7Hj-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 main reason you’d want to buy a Googlebook is if you’re an Android phone user who wants near-seamless integration with your laptop. This is something Apple users have enjoyed for years, and both Google and Windows have tried and largely failed to deliver. Now, Android users can switch between tasks on their phones and these new laptops.</p><p>In the past, if you started writing a document or working on a project on your phone, you’d have to manually move it to your laptop. Thanks to Googlebook’s Continue On feature, you can pick up right where you left off from the desktop taskbar. This also applies to pictures you snap or videos you record, thanks to the updated Files app. All of your photos and downloads appear right in your laptop’s file menu.</p><p>When you first sign in to your Google account on a Googlebook, all of your phone’s settings, saved passwords, Wi-Fi networks, and messages are automatically transferred to the laptop over end-to-end encryption. Cast My Apps allow you to stream and interact with your phone’s apps in a desktop window, which makes it simple to (for example) order food from a delivery app</p><p>None of this is groundbreaking stuff for Apple users who’ve enjoyed seamless interoperability between the company’s devices. But for Android users, Googlebooks could be a huge game-changer.</p><h2 id="googlebook-os-features">Googlebook OS features</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:480px;"><p class="vanilla-image-block" style="padding-top:62.50%;"><img id="KzCLyEDUFKHB2eJnwCGU3J" name="Googlebook" alt="Googlebook" src="https://cdn.mos.cms.futurecdn.net/KzCLyEDUFKHB2eJnwCGU3J-1920-80.gif" mos="" align="middle" fullscreen="" width="480" height="300" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Google)</span></figcaption></figure><p>It shouldn’t be surprising that Google has baked its Gemini AI right into Googlebook OS. While you can certainly use the company’s LLM for the basics, such as asking it for travel advice or brainstorming, some nifty Googlebook-specific features sound very useful.</p><p>The most unique feature is Magic Pointer. Shaking or wiggling the mouse cursor while hovering over content on your screen brings up Gemini. From there, you can ask the AI to summarize text, translate languages, or help you organize your calendar.</p><p>There’s also <a href="https://www.tomsguide.com/phones/google-pixel-phones/i-wrote-and-edited-this-article-with-pixel-11s-rambler-dictation-feature-and-things-did-not-go-according-to-plan">Rambler</a>, an enhanced speech-to-text tool that lets you (as the name suggests) ramble stream-of-consciousness thoughts and then have them converted into neat headers, checklists, and takeaways.</p><p>For aspiring vibe coders, Create My Widget lets you describe what you need in plain language to generate custom interactive desktop widgets. Basically, you can create your own Android apps in a few minutes.</p><h2 id="design-and-specs">Design and specs</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="zLtLvTaq84rR2LYDf4o5cY" name="Googlebook" alt="Googlebook" src="https://cdn.mos.cms.futurecdn.net/zLtLvTaq84rR2LYDf4o5cY-1920-80.png" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Google)</span></figcaption></figure><p>At launch, there will be five Googlebooks from Acer, Asus, Dell, HP, and Lenovo. While each laptop has its own unique design elements, they also share core design elements that identify them as Googlebooks.</p><p>All Googlebooks are built with high-end materials like aluminum, magnesium alloy, and carbon fiber. While not every Googlebook will have OLED panels, they all have touchscreen displays — which makes sense if you’re using an Android app on the laptop. Other features include ultraportable designs, large trackpads, and backlit keyboards.</p><p>Googlebooks will also have a <a href="https://www.tomsguide.com/computing/laptops/inside-the-googlebook-i-asked-the-head-of-android-why-people-will-pay-a-premium-for-its-new-macbook-alternative">Glowbar</a> positioned on the exterior lid. This light bar sweeps across in bright colors to indicate battery levels, lights up on startup, and shows fun animations whenever you’re using Gemini.</p><p>Under their ultraportable hoods, Googlebooks feature high-end processors from Intel, Qualcomm, and MediaTek, with NPUs capable of over 45 TOPS for AI workloads. The laptops also start with at least 16GB of RAM and 256GB of SSD storage. Google also claims you’ll get up to 14 hours of battery life.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Wn4ZGX"></div>                            </div>                            <script src="https://kwizly.com/embed/Wn4ZGX.js" async></script><h3 class="article-body__section" id="section-googlebooks-reasons-to-skip"><span>Googlebooks: Reasons to skip</span></h3><h2 id="platform-migration">Platform migration</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="BxCVaPENtK2UJubBVSQd3Q" name="Dell-Googlebook-hands-on-4" alt="Dell Googlebook" src="https://cdn.mos.cms.futurecdn.net/BxCVaPENtK2UJubBVSQd3Q-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>Even if you mostly work in Google apps, you’ll still be effectively starting over, especially since you’ll need an Android phone to get the most from Google’s new laptops. You’ll also lose Apple features like AirDrop, iMessage, and FaceTime, and Mac-exclusive Pro software like Final Cut Pro and Logic Pro.</p><p>Googlebooks would have made more sense for me back when I was an Android phone user. But now that I’ve owned an iPhone for four years and enjoy seamless integration between my phone, MacBook, and iPad Pro, I don’t relish the thought of starting over on a new platform. If you’re firmly entrenched in the Apple ecosystem, then a Googlebook will be a tough sell.</p><h2 id="compatibility">Compatibility</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="JWpYyot6GZZ5VrAidKThLj" name="Googlebook-hands-on-8" alt="Googlebook" src="https://cdn.mos.cms.futurecdn.net/JWpYyot6GZZ5VrAidKThLj-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>Googlebook OS relies heavily on web apps, native Android software, and Linux tools. As such, it can’t run native legacy Windows desktop apps, and it certainly won’t run macOS-exclusive software. Due to that, you’ll effectively be in a walled garden like with the Apple ecosystem, only for Android.</p><p>Similarly, since this is a brand-new platform that combines Android and ChromeOS, developer optimization for desktop windowing in certain third-party Android apps is still evolving. In other words, early adopters should expect some hiccups along the way, as some of the features I outline above may not work as well as you’d expect.</p><h2 id="price">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="DAr4txDLk8gorbrWhwkRTc" name="HP-Googlebook-hands-on-1-LEDE" alt="HP Googlebook" src="https://cdn.mos.cms.futurecdn.net/DAr4txDLk8gorbrWhwkRTc-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>Googlebooks aren’t outrageously expensive, but as premium flagship laptops, they’re not cheap. Prices range from $899 for the Acer Googlebook 14 to $1,299 for the Asus Googlebook 14 and HP Googlebook 14. That’s pricey on its own, but if you’re also buying a new Android phone and don’t already own one, that’s an even bigger hit to your bank account.</p><p>If compatibility with your phone isn’t important and you only need a dependable laptop for basic web browsing or word document editing, then a Chromebook, which can start between $179 and $369, is the more affordable alternative. If you want something higher-end but still affordable, the $699 MacBook Neo and $799 Dell XPS 13 are also brilliant choices.</p><h3 class="article-body__section" id="section-outlook"><span>Outlook</span></h3><p>We'll get a true measure of what Googlebooks can do once we've put them through our lab and real-world tests, but for now, they seem like they could be perfect laptops for Android phone users. But as I said, they might be tough sells for Apple users.</p><p>The first Googlebooks are expected on October 4, so stay tuned for more 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/laptops/inside-the-googlebook-i-asked-the-head-of-android-why-people-will-pay-a-premium-for-its-new-macbook-alternative"><strong>Google's head of Android defends the Googlebook's higher prices</strong></a></li><li><a href="https://www.tomsguide.com/computing/laptops/googlebooks-vs-chromebooks-here-are-the-actual-differences"><strong>Googlebooks vs Chromebooks — here are the actual differences</strong></a></li><li><a href="https://www.tomsguide.com/computing/apple-desktops/mac-mini-m6-reasons-to-buy-and-skip"><strong>5 reasons to buy and 2 reasons to skip the Apple mini M6</strong></a></li></ul><div class="vizualizer-embed"><div class="tg-df-widget-host" data-widget-config="?search=laptops&min_discount_ratio=0.95&widget_title=Top+Deals+Handpicked+by+Our+Editors&widget_subtitle=Discover+the+best+discounts+currently+available%2C+curated+daily+by+the+Tom%27s+Guide+Savings+Squad.&bg_color=transparent" data-vizualizer-embed="true"></div>    <script>    /**     * Tom's Guide Deals Finder - Vanilla JS Encapsulated Engine     */    (function() {      // --- Freyr Analytics Adapter ---      function initAnalytics() {        window.dataLayer = window.dataLayer || [];        window.googletag = window.googletag || {};        window.googletag.cmd = window.googletag.cmd || [];        window.hawk = window.hawk || { analytics: { freyr: [] } };        window.hawk.analytics = window.hawk.analytics || { freyr: [] };        window.hawk.analytics.freyr = window.hawk.analytics.freyr || [];        window.freyr = window.freyr || { cmd: [] };        const scriptSrc = 'https://freyr.futurecdn.net/freyr.js';        const hostname = typeof window !== 'undefined' ? window.location.hostname : '';        const isTestEnv = typeof window.navigator !== 'undefined' && (window.navigator.webdriver || window.navigator.userAgent.includes('Headless'));        const shouldSendRealAnalytics = !isTestEnv && hostname && hostname !== 'localhost' && hostname !== '127.0.0.1' && !hostname.includes('run.app');        if (shouldSendRealAnalytics && !document.querySelector(`script[src="${scriptSrc}"]`)) {          const script = document.createElement('script');          script.src = scriptSrc;          script.async = true;          document.head.appendChild(script);        }      }      function storeEventForDebug(name, data) {        if (!window.hawk || !window.hawk.analytics || !window.hawk.analytics.freyr) return;        window.hawk.analytics.freyr.push({ name, data });        try {          if (typeof window !== 'undefined' && window.localStorage) {            window.localStorage.setItem("hawk", JSON.stringify(window.hawk));          }        } catch (e) {          // Ignore storage issues        }        try {          window.dispatchEvent(new CustomEvent("hawk-analytics-update"));        } catch (e) {}      }      function sendToFreyr(eventName, data) {        if (typeof window === 'undefined') return;        window.freyr = window.freyr || { cmd: [] };        window.freyr.cmd.push(() => {          if (window.freyr && window.freyr.pushAndUpdate) {            window.freyr.pushAndUpdate(eventName, data);          }        });      }      function sendEvent(event, skip = false) {        try {          storeEventForDebug(event.name, event.data);          if (!skip) {            sendToFreyr(event.name, event.data);          }        } catch (e) {          // Ensure tracking errors don't surface to the user        }      }      function getCookie(name) {        try {          const match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));          return match ? match[2] : null;        } catch (e) {          return null;        }      }      function normalizeCurrency(symbol) {        const map = {          '£': 'GBP',          '$': 'USD',          'A$': 'AUD',          'CA$': 'CAD',          '€': 'EUR'        };        return map[symbol] || symbol;      }      function trackElementInteraction(props) {        sendEvent({          name: 'elementInteraction',          data: {            element: {              action: props.action || "click",              id: props.id || undefined,              class: props.class || undefined,              name: props.name || undefined,              text: props.text || undefined,              label: props.label || undefined,              container: props.container || undefined,              url: props.url || undefined,              articleId: props.articleId || undefined            }          }        });      }      function generateRevenueId(url, productName, merchantName, modelId) {        const str = `${window.location.href}|${productName}|${merchantName}|${modelId || ''}|${new Date().toDateString()}|tomsguide`;        let hash = 0;        for (let i = 0; i < str.length; i++) {          const char = str.charCodeAt(i);          hash = ((hash << 5) - hash) + char;          hash = hash & hash;        }        let numericStr = Math.abs(hash).toString();        while (numericStr.length < 19) {          numericStr += Math.floor(Math.random() * 10).toString();        }        return numericStr.substring(0, 19);      }      function rewriteAffiliateLink(url, territory, revenueId) {        if (!url) return url;        const t = (territory || 'gb').toLowerCase();        return url.replace(/hawk-custom-tracking/g, `tomsguide-${t}-${revenueId}`);      }      function trackHawkEvent(params) {        const { clickType, widgetId, productCategoryName, product, productsArray, zeroBasedProductIndexOrNull, totalDealsOrProducts, areaClicked, merchant, revenueId, isoCurrencyCode, queryName, widgetTypeName } = params;        const data = {          event: "hawkEvent",          category: "Affiliates",          affiliate: {            action: {              type: clickType,              id: widgetId,              event: clickType === "appeared" ? "viewed" : "Click from",              timestamp: Date.now()            },            component: {              flag: "Editor",              product: productCategoryName || "deals",              category: `Signal Deal Finder ${widgetTypeName || "Carousel"} widget`,              type: clickType === "appeared" ? "review" : "signal product",              label: queryName || (product ? (product.name || "") : ""),              index: zeroBasedProductIndexOrNull === null || zeroBasedProductIndexOrNull === undefined ? -1 : zeroBasedProductIndexOrNull,              linkCount: totalDealsOrProducts || 0,              blockLayout: "",              areaClicked: areaClicked || ""            }          },          products: productsArray || (product && merchant ? [            {              product: {                primary: {                  id: product.id || product.matchId || null,                  name: product.name,                  type: "deal",                  price: product.price,                  previousPrice: product.previousPrice || null,                  currency: isoCurrencyCode || "USD",                  preorder: false,                  labels: [],                  link: product.link,                  originalLink: product.originalLink || null,                  revenueId: revenueId || null,                  startTime: null,                  endTime: null,                  voucherCode: null,                  voucherAudience: null,                  voucherPercentageSaving: null,                  voucherMoneySaving: null,                  voucherType: null,                  offerExclusive: false,                  offerScope: null,                  globalId: product.globalId || null,                  inStock: product.inStock !== false,                  contractProvider: null,                  contractMinutes: null,                  contractTexts: null,                  contractData: null,                  contractLength: null,                  contractMonthlyPrice: null,                  contractCurrency: isoCurrencyCode || "USD"                }              },              merchant: {                id: merchant.id || null,                name: merchant.name,                url: merchant.url || null,                network: merchant.network || null              },              model: {                id: product.modelId || null,                brand: product.brand || null,                name: product.name,                parent: product.parent || null              }            }          ] : []),          reviews: [],          _clear: true,          "gtm.uniqueEventId": Date.now() % 10000        };        sendEvent({ name: 'hawkEvent', data });      }      function trackDealClick(params) {        trackHawkEvent({ ...params, clickType: "retailer", areaClicked: "Signal Product Card" });      }      function trackViewSimilarClick(params) {        trackHawkEvent({ ...params, clickType: "retailer", areaClicked: "Signal Product Card View Similar" });      }      function trackPriceComparisonClick(params) {        trackHawkEvent({ ...params, clickType: "retailer", areaClicked: "Signal Price Comparison" });      }      function trackReviewClick(params) {        trackHawkEvent({ ...params, clickType: "review", areaClicked: "Signal Product Card Review Link" });      }      function trackShare(params) {        trackHawkEvent({ ...params, clickType: "share", areaClicked: "Signal Product Card Share" });      }      function trackDealsAppeared(widgetId, deals, revenueId, currency, queryName, widgetTypeName) {         if (!deals || deals.length === 0) return;                  const productsArray = deals.slice(0, 50).map((deal) => {            let voucherPct = null;            let rawPrice = parseFloat(deal.rawPrice) || parseFloat(deal.price) || null;            let rawMsrp = parseFloat(deal.rawMsrp) || parseFloat(deal.msrp) || null;            if (rawMsrp > rawPrice && rawPrice > 0) {              voucherPct = Math.round((1 - (rawPrice / rawMsrp)) * 100);            }            let numId = null;            if (deal.externalProductId && !isNaN(parseInt(deal.externalProductId))) {              numId = parseInt(deal.externalProductId);            } else if (deal.id && !isNaN(parseInt(deal.id))) {              numId = parseInt(deal.id);            } else {              numId = deal.matchId || null;            }            return {              product: {                primary: {                  id: numId,                  name: deal.productName || deal.title || "",                  type: "deal",                  price: rawPrice,                  previousPrice: rawMsrp,                  currency: currency || 'USD',                  preorder: false,                  labels: deal.modelBrand || deal.brand ? [                     { type: "brand", value: deal.modelBrand || deal.brand }                  ] : [],                  link: deal.url,                  originalLink: deal.url,                  revenueId: revenueId || null,                  startTime: null,                  endTime: null,                  voucherCode: null,                  voucherAudience: null,                  voucherPercentageSaving: voucherPct,                  voucherMoneySaving: null,                  voucherType: null,                  offerExclusive: false,                  offerScope: null,                  globalId: deal.productKey || null,                  inStock: deal.inStock !== false,                  contractProvider: null,                  contractMinutes: null,                  contractTexts: null,                  contractData: null,                  contractLength: null,                  contractMonthlyPrice: null,                  contractCurrency: currency || 'USD'                }              },              merchant: {                id: deal.merchantId ? parseInt(deal.merchantId) : null,                name: deal.merchant || "Retailer",                url: deal.merchantUrl || null,                network: deal.merchantNetwork || null              },              model: {                id: deal.modelId ? parseInt(deal.modelId) : null,                brand: deal.modelBrand || deal.brand || null,                name: deal.productName || deal.title || "",                parent: deal.modelParent || null              }            };         });                  trackHawkEvent({             clickType: "appeared",             widgetId: widgetId,             productCategoryName: "deals",             zeroBasedProductIndexOrNull: null,             totalDealsOrProducts: deals.length,             productsArray: productsArray,             queryName: queryName,             widgetTypeName: widgetTypeName         });      }      // 1. Setup Shadow DOM Sandbox      const currentScript = document.currentScript;      let hostContainer = null;      let template = null;            if (currentScript) {        let prev = currentScript.previousElementSibling;        while (prev) {          if (prev.tagName === 'TEMPLATE' && prev.classList.contains('tg-df-widget-template')) {            template = prev;          } else if (prev.tagName === 'DIV' && prev.classList.contains('tg-df-widget-host') && !prev.hasAttribute('data-initialized')) {            hostContainer = prev;            break;          }          prev = prev.previousElementSibling;        }      }            // Fallbacks in case script is deferred      if (!hostContainer) {        const hosts = document.querySelectorAll('.tg-df-widget-host:not([data-initialized])');        if (hosts.length > 0) hostContainer = hosts[0];      }            // Safely embedded template for CMS environments      const rawTemplate = `  \x3Cstyle>    /* --- Shadow DOM Base Reset --- */    *, *::before, *::after {      box-sizing: border-box;    }    img, picture, svg, video {      max-width: 100%;      height: auto;      display: block;    }    /*       1. Scoped CSS for Tom's Guide Deals Widget       All classes are prefixed with \`tg-df-\` to prevent CMS style leakage.    */    .tg-df-container {      container-type: inline-size;      container-name: tg-df;      --tg-df-blue: #1F69FF;      --tg-df-blue-hover: #004d8c;      --tg-df-text: #222222;      --tg-df-text-muted: #555555;      --tg-df-bg: #ffffff;      --tg-df-bg-secondary: #f4f4f4;      --tg-df-border: #e2e8f0;      font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;      color: var(--tg-df-text);      background-color: transparent;       width: 100%;      max-width: 1200px;      margin: 0 auto;      padding-bottom: 24px;    }    .tg-df-container *, .tg-df-container *::before, .tg-df-container *::after {      margin: 0;      padding: 0;      box-sizing: border-box;    }    .tg-df-container img {      border: none;      margin: 0;      padding: 0;    }    .tg-df-container a {      text-decoration: none;      color: inherit;    }    /*       2. Search & Filter Bar    */    .tg-df-controls {      display: flex;      flex-direction: column;      align-items: center;      gap: 20px;      margin-bottom: 32px;      width: 100%;    }    .tg-df-top-bar {      display: flex;      width: 100%;      max-width: 760px;      gap: 12px;      align-items: center;    }    .tg-df-search-wrapper {      position: relative;      flex: 1;      width: 100%;      box-shadow: 0 8px 24px rgba(0,0,0,0.06);      border-radius: 40px;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      z-index: 100;    }    .tg-df-autocomplete-dropdown {      position: absolute;      top: calc(100% + 4px);      left: 0;      right: 0;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 12px;      box-shadow: 0 8px 32px rgba(0,0,0,0.12);      max-height: 300px;      overflow-y: auto;      z-index: 200;      display: none;    }    .tg-df-autocomplete-dropdown.active {      display: block;    }    .tg-df-autocomplete-item {      padding: 12px 24px;      cursor: pointer;      font-size: 14px;      color: var(--tg-df-text);      transition: background 0.1s ease;    }    .tg-df-autocomplete-item:hover {      background: var(--tg-df-bg-secondary);    }    .tg-df-search-input {      width: 100%;      padding: 16px 64px 16px 24px;      font-size: 16px;      border: 2px solid transparent;      border-radius: 40px;      outline: none;      transition: border-color 0.2s ease, box-shadow 0.2s ease;      color: var(--tg-df-text);      background: transparent;    }    .tg-df-search-input:focus {      border-color: transparent;      box-shadow: 0 0 0 3px rgba(0, 108, 196, 0.15);    }    .tg-df-search-input::placeholder {      color: #999999;    }        .tg-df-search-btn {      position: absolute;      right: 8px;      top: 50%;      transform: translateY(-50%);      width: 40px;      height: 40px;      border-radius: 50%;      background: #222;      border: none;      display: flex;      align-items: center;      justify-content: center;      cursor: pointer;      transition: background 0.2s ease;    }        .tg-df-search-btn:hover {      background: #000;    }    .tg-df-search-icon {      width: 16px;      height: 16px;      fill: #fff;    }    .tg-df-settings-wrapper {      position: relative;    }        .tg-df-settings-btn {      width: 48px;      height: 48px;      border-radius: 50%;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      box-shadow: 0 4px 12px rgba(0,0,0,0.04);      display: flex;      align-items: center;      justify-content: center;      cursor: pointer;      transition: all 0.2s ease;      color: var(--tg-df-text-muted);      flex-shrink: 0;    }    .tg-df-settings-btn:hover {      background: var(--tg-df-bg-secondary);      border-color: #0000ff;      color: var(--tg-df-text);    }    .tg-df-settings-btn svg {      width: 24px;      height: 24px;      fill: currentColor;    }    .tg-df-settings-dropdown {      position: absolute;      top: calc(100% + 8px);      right: 0;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 12px;      box-shadow: 0 8px 32px rgba(0,0,0,0.12);      width: 280px;      padding: 20px;      display: none;      z-index: 100;      flex-direction: column;      gap: 20px;    }    .tg-df-settings-dropdown.active {      display: flex;    }        .tg-df-settings-dropdown-backdrop {      display: none;      position: fixed;      inset: 0;      z-index: 99;    }        .tg-df-settings-dropdown-backdrop.active {      display: block;    }    .tg-df-setting-item {      display: flex;      flex-direction: column;      gap: 10px;    }    .tg-df-setting-label {      font-size: 11px;      font-weight: 700;      color: var(--tg-df-text-muted);      text-transform: uppercase;      letter-spacing: 0.5px;    }        .tg-df-region-select {        padding: 10px 12px;        border-radius: 8px;        border: 1px solid var(--tg-df-border);        font-size: 15px;        outline: none;        background: var(--tg-df-bg-secondary);        color: var(--tg-df-text);        cursor: pointer;        width: 100%;    }    .tg-df-toggle {        position: relative;        display: inline-block;        width: 44px;        height: 24px;        flex-shrink: 0;    }    .tg-df-toggle input {        opacity: 0;        width: 0;        height: 0;    }    .tg-df-slider {        position: absolute;        cursor: pointer;        top: 0; left: 0; right: 0; bottom: 0;        background-color: #ccc;        transition: .2s;        border-radius: 24px;    }    .tg-df-slider:before {        position: absolute;        content: "";        height: 18px;        width: 18px;        left: 3px;        bottom: 3px;        background-color: white;        transition: .2s;        border-radius: 50%;    }    .tg-df-toggle input:checked + .tg-df-slider {        background-color: #1F69FF;    }    .tg-df-toggle input:checked + .tg-df-slider:before {        transform: translateX(20px);    }    .tg-df-dl-row {        flex-direction: row;        align-items: center;        justify-content: space-between;    }    .tg-df-dl-row-text {        font-size: 14px;        font-weight: 600;        color: var(--tg-df-text);    }    .tg-df-dl-row-subtext {        font-size: 12px;        font-weight: 400;        line-height: 1.3;        color: var(--tg-df-text-muted);        margin-top: 4px;        display: block;    }    .tg-df-filters {      display: flex;      gap: 12px;      justify-content: center;      flex-wrap: wrap;    }    .tg-df-sort-wrapper {      position: relative;      display: flex;      align-items: center;    }        .tg-df-sort-icon {      position: absolute;      left: 14px;      width: 14px;      height: 14px;      fill: var(--tg-df-text-muted);      pointer-events: none;    }    .tg-df-sort-select, .tg-df-filter-select {      padding: 10px 36px 10px 38px;      font-size: 14px;      border: 1px solid var(--tg-df-border);      border-radius: 100px;      outline: none;      appearance: none;      background-color: var(--tg-df-bg-secondary);      background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 12 12'%3E%3Cpath fill='%23555555' d='M6 8L1 3h10z'/%3E%3C/svg%3E");      background-repeat: no-repeat;      background-position: right 14px center;      color: var(--tg-df-text);      cursor: pointer;      font-weight: 500;      transition: all 0.2s ease;    }        .tg-df-price-input::-webkit-outer-spin-button,    .tg-df-price-input::-webkit-inner-spin-button {      -webkit-appearance: none;      margin: 0;    }    .tg-df-price-input {      -moz-appearance: textfield;    }    .tg-df-sort-select:hover, .tg-df-filter-select:hover {      background-color: #e2e8f0;    }    .tg-df-multiselect-container {      position: relative;    }        .tg-df-multiselect-trigger {      display: block;      background: #fff;      user-select: none;      width: 100%;      overflow: hidden;      white-space: nowrap;      text-overflow: ellipsis;    }        .tg-df-multiselect-dropdown {      display: none;      position: absolute;      top: calc(100% + 4px);      left: 0;      width: 100%;      min-width: 220px;      max-height: 300px;      overflow-y: auto;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 8px;      box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);      z-index: 100;      padding: 8px 0;    }    .tg-df-multiselect-dropdown.active {      display: block;    }    .tg-df-ms-option {      padding: 8px 16px;      display: flex;      align-items: center;      gap: 8px;      cursor: pointer;      font-size: 14px;    }    .tg-df-ms-option:hover {      background-color: var(--tg-df-bg-secondary);    }        .tg-df-ms-option input {      cursor: pointer;      accent-color: #1f69ff;    }    .tg-df-sort-select:focus, .tg-df-filter-select:focus {      border-color: #0000ff;      box-shadow: 0 0 0 3px rgba(0, 0, 255, 0.2);      background-color: var(--tg-df-bg);    }    /*       3. Deal Grid Layout    */    .tg-df-grid.tg-df-grid-auto {      padding-top: 24px;    }    .tg-df-grid, .tg-df-grid.layout-grid {      display: grid;      grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));      gap: 10px;    }    .tg-df-grid.layout-row {      grid-template-columns: 1fr;      gap: 16px;    }        .tg-df-grid.layout-row .tg-df-card {      flex-direction: row;      align-items: stretch;      height: auto;      box-shadow: none;      border-bottom: 1px solid var(--tg-df-border);    }    .tg-df-grid.layout-row .tg-df-card:hover {      box-shadow: none;    }    .tg-df-grid.layout-row .tg-df-card-image-box {      width: 140px;      min-width: 140px;      aspect-ratio: 3/4;      border-right: none;      padding: 16px 16px 16px 32px;    }    .tg-df-grid.layout-row .tg-df-card-body {      padding: 16px;      justify-content: space-between;    }    .tg-df-grid.layout-row .tg-df-card-title {      font-size: 15px;      margin-bottom: 16px;    }    .tg-df-grid.layout-row .tg-df-card-stars { margin-bottom: 8px; }    .tg-df-grid.layout-row .tg-df-card-footer {      flex-direction: column;      align-items: flex-start;      gap: 0;    }    .tg-df-grid.layout-row .tg-df-card-merchant-pill {      margin-bottom: 4px;    }    .tg-df-grid.layout-row .tg-df-card-price-group {      margin-bottom: 8px;    }    .tg-df-grid.layout-row .tg-df-price-group {      width: auto;    }    .tg-df-grid.layout-row .tg-df-card-cta {      width: 100%;      max-width: 200px;      padding: 10px 24px;      font-size: 13px;      flex-shrink: 0;      text-align: center;      justify-content: center;    }    /*       4. Deal Card Design    */    .tg-df-card {      position: relative;      display: flex;      flex-direction: column;      background-color: #ffffff;      border-radius: 0;      overflow: hidden;      transition: transform 0.2s ease, box-shadow 0.2s ease;      text-decoration: none;      color: inherit;      height: 100%;      box-shadow: 0 0 16px rgba(0, 0, 0, 0.08);      border: 1px solid var(--tg-df-border);    }    .tg-df-card:hover {      box-shadow: 0 0 24px rgba(0, 0, 0, 0.12);    }    .tg-df-card-image-box {      width: 100%;      aspect-ratio: 3/4;      background-color: #f8f8f8;      display: flex;      align-items: center;      justify-content: center;      position: relative;      overflow: hidden;      padding: 32px;      flex: 0 0 auto;    }    .tg-df-card-image {      max-width: 100%;      max-height: 100%;      width: auto;      height: auto;      object-fit: contain;      mix-blend-mode: multiply; /* Helps white background images blend into secondary bg */      transition: transform 0.3s ease;    }    .tg-df-card:hover .tg-df-card-image {      transform: scale(1.05); /* Zoom in on hover */    }    .tg-df-card-discount-badge {      position: absolute;      top: 12px;      left: 12px;      background: #dc2626; /* Red */      color: #ffffff;      padding: 6px 8px;      font-size: 11px;      font-weight: 500;      text-transform: uppercase;      letter-spacing: 0.5px;      border-radius: 0;      z-index: 10;    }        .tg-df-card-merchant-pill {      display: block;      padding: 0;      font-size: 11px;      font-weight: 600;      text-transform: uppercase;      letter-spacing: 0.5px;      border-radius: 0;      color: var(--tg-df-text-muted);      margin-bottom: 8px;      white-space: nowrap;      overflow: hidden;      text-overflow: ellipsis;    }    .tg-df-card-body {      padding: 16px;      display: flex;      flex-direction: column;      flex-grow: 1;      min-width: 0;    }    .tg-df-card-badges {      display: flex;      flex-wrap: wrap;      gap: 6px;      margin-bottom: 8px;    }    .tg-df-tag {      display: inline-flex;      align-items: center;      padding: 4px 6px;      font-size: 11px;      font-weight: 700;      text-transform: uppercase;      border-radius: 4px;      gap: 4px;    }    .tg-df-tag-prime {      background-color: #00A8E1;      color: #fff;    }    .tg-df-tag-coupons {      background-color: #f1f5f9;      color: #334155;      border: 1px solid #cbd5e1;      cursor: pointer;      transition: background-color 0.2s;    }    .tg-df-tag-coupons:hover {      background-color: #e2e8f0;    }        .tg-df-tag-outline {      background-color: #f1f5f9;      color: #334155;      border: 1px solid #cbd5e1;      cursor: pointer;      transition: background-color 0.2s;    }    .tg-df-tag-outline:hover {      background-color: #e2e8f0;    }        @keyframes tg-df-spin {      0% { transform: rotate(0deg); }      100% { transform: rotate(360deg); }    }    .tg-df-coupon-spinner {      border: 2px solid #e2e8f0;      border-top: 2px solid #3b82f6;      border-radius: 50%;      width: 14px;      height: 14px;      animation: tg-df-spin 1s linear infinite;      margin: 4px 8px;      display: inline-block;    }        /* Vouchers Modal */    .tg-df-modal-backdrop {      position: fixed;      top: 0; left: 0; right: 0; bottom: 0;      background: rgba(0,0,0,0.5);      z-index: 10000;      display: flex;      align-items: center;      justify-content: center;      opacity: 0;      pointer-events: none;      transition: opacity 0.3s;    }    .tg-df-modal-backdrop.active {      opacity: 1;      pointer-events: auto;    }    .tg-df-modal {      background: #fff;      border-radius: 12px;      width: 90%;      max-width: 400px;      max-height: 80vh;      display: flex;      flex-direction: column;      box-shadow: 0 10px 40px rgba(0,0,0,0.2);      transform: translateY(20px);      transition: transform 0.3s;    }    .tg-df-modal-backdrop.active .tg-df-modal {      transform: translateY(0);    }    .tg-df-modal-header {      padding: 16px;      border-bottom: 1px solid #e2e8f0;      display: flex;      align-items: center;      justify-content: space-between;    }    .tg-df-modal-title {      font-size: 16px;      font-weight: 600;      margin: 0;    }    .tg-df-modal-close {      background: none;      border: none;      cursor: pointer;      padding: 4px;      color: #64748b;    }    .tg-df-modal-body {      padding: 16px;      overflow-y: auto;    }    .tg-df-voucher-item {      padding: 12px;      border: 1px dashed #cbd5e1;      border-radius: 8px;      margin-bottom: 10px;      background: #f8fafc;      display: flex;      align-items: center;      gap: 12px;      text-decoration: none;      color: inherit;      transition: background-color 0.2s, border-color 0.2s;    }    .tg-df-voucher-item:hover {      background: #f1f5f9;      border-color: #94a3b8;    }    .tg-df-voucher-item:last-child {      margin-bottom: 0;    }    .tg-df-voucher-logo {      width: 48px;      height: 48px;      object-fit: contain;      border-radius: 4px;      background: #fff;      border: 1px solid #e2e8f0;      flex-shrink: 0;    }    .tg-df-voucher-content {      flex: 1;      min-width: 0;    }    .tg-df-voucher-title {      font-size: 14px;      font-weight: 600;      margin: 0 0 4px 0;      line-height: 1.3;      color: #0f172a;    }    .tg-df-voucher-expiry {      font-size: 12px;      color: #64748b;      display: flex;      align-items: center;      gap: 4px;      margin-top: 6px;    }    .tg-df-voucher-code {      display: inline-flex;      align-items: center;      background: #f1f5f9;      border: 1px dashed #cbd5e1;      padding: 6px 10px;      font-family: monospace;      font-weight: 700;      font-size: 14px;      color: #0f172a;      border-radius: 4px;      margin-top: 8px;      cursor: pointer;      transition: all 0.2s ease;    }    .tg-df-voucher-code:hover {      background: #e2e8f0;      border-color: #94a3b8;    }    .tg-df-voucher-code.copied {      background: #ecfdf5;      border-color: #10b981;      color: #10b981;    }    .tg-df-voucher-cta {      display: inline-block;      margin-top: 8px;      font-size: 13px;      font-weight: 600;      color: #2563eb;      text-decoration: none;    }    .tg-df-card-title {      font-size: 15px;      font-weight: 400;      line-height: 1.4;      margin: 0 0 12px 0;      color: var(--tg-df-text);      display: -webkit-box;      -webkit-line-clamp: 2;      -webkit-box-orient: vertical;      overflow: hidden;    }    .tg-df-card-footer {      margin-top: auto;      display: flex;      flex-direction: column;      width: 100%;    }    .tg-df-card-price-group {      display: flex;      flex-direction: row;      align-items: center;      gap: 8px;      margin-bottom: 12px;    }    .tg-df-card-price {      font-size: 16px;      font-weight: 700;      color: #dc2626; /* Red price */      line-height: 1;    }        .tg-df-card-msrp {      font-size: 13px;      color: var(--tg-df-text-muted);      text-decoration: line-through;    }    .tg-df-container .tg-df-card-cta {      display: flex;      align-items: center;      justify-content: center;      width: 100%;      box-sizing: border-box;      background-color: #1f69ff;      color: #ffffff;      font-size: 12px;      font-weight: 700;      text-transform: uppercase;      letter-spacing: 0.5px;      padding: 12px 16px;      border-radius: 0;      border: none;      cursor: pointer;      transition: background-color 0.2s ease;    }    .tg-df-card:hover .tg-df-card-cta,    .tg-df-card-cta:hover {      background-color: #1555cc;    }    .tg-df-container .tg-df-card-cta.tg-df-cta-savings-squad {      background-color: #3c8d0d;    }    .tg-df-card:hover .tg-df-card-cta.tg-df-cta-savings-squad,    .tg-df-card-cta.tg-df-cta-savings-squad:hover {      background-color: #2b6509;    }    /*       5. State & Skeleton Styles    */    .tg-df-message {      grid-column: 1 / -1;      text-align: center;      padding: 48px 24px;      color: var(--tg-df-text-muted);      font-size: 16px;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 8px;    }    @keyframes tg-df-shimmer {      0% { background-position: -200% 0; }      100% { background-position: 200% 0; }    }    .tg-df-skeleton {      background: linear-gradient(90deg, var(--tg-df-bg-secondary) 25%, #e2e8f0 50%, var(--tg-df-bg-secondary) 75%);      background-size: 200% 100%;      animation: tg-df-shimmer 1.5s infinite;      border-radius: 4px;    }    .tg-df-skeleton-img {      width: 100%;      height: 100%;      position: absolute;      top: 0; left: 0;    }        .tg-df-skeleton-text {      height: 16px;      margin-bottom: 8px;      width: 100%;    }    .tg-df-skeleton-text.short { width: 40%; }    .tg-df-skeleton-text.title { height: 20px; margin-bottom: 16px; }    /* Editor Floating Bar & Elements */    .tg-df-editor-bar {      position: sticky;      top: 0;      z-index: 1000;      background: #111827;      color: #fff;      padding: 12px 16px;      border-radius: 8px;      margin-bottom: 16px;      display: flex;      align-items: center;      justify-content: space-between;      box-shadow: 0 4px 12px rgba(0,0,0,0.15);    }    .tg-df-editor-bar-text {      font-weight: 600;      font-size: 14px;    }    .tg-df-editor-copy-btn {      background: #10b981;      color: #fff;      padding: 6px 16px;      border: none;      border-radius: 4px;      font-weight: 600;      cursor: pointer;      display: flex;      align-items: center;      font-size: 13px;    }    .tg-df-editor-copy-btn:hover { background: #059669; }        .tg-df-deal-checkbox {      position: absolute;      top: 12px;      right: 12px;      z-index: 10;      width: 20px;      height: 20px;      cursor: pointer;      pointer-events: auto;    }    /*       6. Mobile List View (Stacks into a cleaner horizontal row/list)    */    @container tg-df (max-width: 599px) {      .tg-df-controls {        padding: 0 16px;      }            .tg-df-top-bar {        width: 100%;      }            .tg-df-settings-dropdown {        position: fixed;        top: auto;        bottom: 0;        left: 0;        right: 0;        width: 100%;        border-radius: 20px 20px 0 0;        padding: 24px;        box-shadow: 0 -8px 32px rgba(0,0,0,0.15);        z-index: 1000;        border: none;        border-top: 1px solid var(--tg-df-border);      }            .tg-df-settings-dropdown-backdrop.active {        background: rgba(0,0,0,0.4);      }            .tg-df-search-wrapper {        box-shadow: 0 0 16px rgba(0,0,0,0.08);      }            .tg-df-filters {        width: calc(100% + 32px);        margin: 0 -16px;        padding: 0 16px 4px 16px;        display: flex;        justify-content: flex-start;        gap: 8px;        flex-wrap: nowrap;        overflow-x: auto;        -webkit-overflow-scrolling: touch;        scrollbar-width: none;      }      .tg-df-filters::after {        content: "";        display: block;        flex: 0 0 8px;      }      .tg-df-filters::-webkit-scrollbar {        display: none;      }            .tg-df-sort-wrapper {        flex: 0 0 max(42%, 130px);        min-width: 0;      }      .tg-df-sort-wrapper.tg-df-price-range-wrapper {        flex: 0 0 auto;        min-width: max-content;      }            .tg-df-sort-select, .tg-df-filter-select {        width: 100%;        text-align: left;        padding: 10px 24px 10px 32px;        background-position: right 8px center;        text-overflow: ellipsis;        white-space: nowrap;        overflow: hidden;      }      .tg-df-sort-icon {        left: 10px;      }      .tg-df-grid:not(.layout-grid):not(.layout-row),      .tg-df-grid.layout-row {        grid-template-columns: 1fr;        gap: 16px;      }            .tg-df-grid.tg-df-grid-auto {        padding-top: 24px;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card,      .tg-df-grid.layout-row .tg-df-card {        flex-direction: row;        align-items: stretch;        height: auto;        box-shadow: none; /* simple line on mobile if preferred, or keep */        border-bottom: 1px solid var(--tg-df-border);      }      .tg-df-grid.tg-df-grid-auto .tg-df-card:hover,      .tg-df-grid.layout-row .tg-df-card:hover {        box-shadow: none;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card-image-box,      .tg-df-grid.layout-row .tg-df-card-image-box {        width: 120px;        min-width: 120px;        aspect-ratio: 3/4;        border-right: none;        padding: 12px;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card-body,      .tg-df-grid.layout-row .tg-df-card-body {        padding: 12px;        justify-content: space-between;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card-title,      .tg-df-grid.layout-row .tg-df-card-title {        font-size: 14px;        margin-bottom: 12px;        -webkit-line-clamp: 3;      }      /* Single column mobile grid override */      .tg-df-grid.layout-grid {        grid-template-columns: 1fr;        gap: 16px;      }      .tg-df-grid.layout-grid .tg-df-card-image-box {        padding: 12px;      }      .tg-df-grid.layout-grid .tg-df-card-body {        padding: 10px;      }      .tg-df-grid.layout-grid .tg-df-card-title {        font-size: 13px;        -webkit-line-clamp: 3;        margin-bottom: 8px;      }      .tg-df-grid.layout-grid .tg-df-card-price {        font-size: 14px;      }            .tg-df-card-footer {        flex-direction: column;        align-items: stretch;        gap: 0;        width: 100%;        min-width: 0;      }      .tg-df-card-merchant-pill {        margin-bottom: 4px;      }      .tg-df-card-price-group {        flex: 1 1 auto;        margin-bottom: 8px;      }      .tg-df-card-price {        font-size: 16px;      }      .tg-df-card-msrp {        display: block;       }      .tg-df-grid.layout-row .tg-df-card-cta,      .tg-df-container .tg-df-card-cta {        width: 100%;        max-width: none;        min-width: 0;        box-sizing: border-box;        padding: 8px 16px;        font-size: 12px;        flex: 0 0 auto;        text-align: center;        white-space: normal;        line-height: 1.2;      }    }    .tg-df-container.is-carousel {      min-height: 760px;      background-color: #E7F0FF;      padding: 0 0 24px 0;      border-radius: 24px;    }    .tg-df-container.is-carousel.hide-header-details {      min-height: 480px;    }    /*       7. Carousel View Mode    */    .tg-df-container .tg-df-carousel-host {      /* Layout is now handled by container wrapper */    }    .tg-df-container .tg-df-carousel-eyebrow {      color: #1F69FF;      font-weight: 700;      font-size: 14px;      text-transform: uppercase;      letter-spacing: 1px;      padding: 24px 16px 0 16px;      display: none;    }    .tg-df-container .tg-df-carousel-query-title {      color: #011535;      font-size: 28px;      font-weight: 600;      padding: 0 16px 24px 16px;      line-height: 1.2;      display: none;    }    .tg-df-container .tg-df-carousel-blue-box {      background-color: transparent;      border-radius: 0;      padding: 24px 24px 0 24px;      margin: 0;      color: #1F69FF;          position: relative;      overflow: hidden;    }    .tg-df-container .tg-df-carousel-bg-circle-1 {      display: none;    }    .tg-df-container .tg-df-carousel-bg-circle-2 {      display: none;    }    .tg-df-container .tg-df-carousel-bg-circle-3 {      display: none;    }    .tg-df-container .tg-df-carousel-box-content {      position: relative;      z-index: 10;    }    .tg-df-container .tg-df-carousel-box-eyebrow {      background-color: transparent;      color: #1F69FF;      font-weight: 700;      font-size: 14px;      text-transform: uppercase;      letter-spacing: 1px;      display: inline-block;      padding: 0;      border-radius: 0;    }    .tg-df-container .tg-df-carousel-box-title {      font-size: 28px;      font-weight: 600;      line-height: 1.2;      margin-top: 8px;      color: #1e293b;    }    .tg-df-container .tg-df-countdown-wrapper {      position: absolute;      top: 0;      right: 0;      display: flex;      flex-direction: column;      align-items: flex-end;      gap: 12px;      transform: scale(0.67);      transform-origin: top right;    }    .tg-df-container .tg-df-countdown-title {      font-size: 16px;      text-align: center;      width: 100%;      font-weight: 600;      color: #011535;      margin: 0;    }    .tg-df-container .tg-df-countdown-blocks {      display: flex;      gap: 16px;    }    .tg-df-container .tg-df-countdown-item {      display: flex;      flex-direction: column;      align-items: center;      gap: 4px;    }    .tg-df-container .tg-df-countdown-box {      width: 59px;      height: 59px;      background: #03FE9E;      border-radius: 15px;      display: flex;      align-items: center;      justify-content: center;    }    .tg-df-container .tg-df-countdown-num {      font-family: 'Inter', sans-serif;      font-weight: 700;      font-size: 20px;      line-height: normal;      color: #011535;    }    .tg-df-container .tg-df-countdown-label {      font-family: 'Inter', sans-serif;      font-weight: 500;      font-size: 16px;      line-height: normal;      color: #1e293b;      text-transform: uppercase;    }    .tg-df-container .tg-df-carousel-box-subtitle {      font-size: 16px;      margin-top: 8px;      font-weight: 300;      color: #1e293b;      line-height: 24px;    }    .tg-df-container .tg-df-carousel-roundels-wrapper {      position: relative;      margin-top: 24px;      margin-left: -24px;      margin-right: -24px;    }    .tg-df-container .tg-df-carousel-roundels {      display: flex;      gap: 16px;      overflow-x: auto;            scrollbar-width: none;      padding-top: 12px;      padding-bottom: 24px;      padding-left: 24px;      padding-right: 24px;      margin-left: 0;      margin-right: 0;    }        .tg-df-container .tg-df-carousel-scroll-left,    .tg-df-container .tg-df-carousel-scroll-right {      position: absolute;      top: 50%;      transform: translateY(-50%);      height: 36px;      width: 36px;      display: flex;      align-items: center;      justify-content: center;      border-radius: 50%;      background-color: #ffffff;      border: 1px solid #e2e8f0;      box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);      color: #1F69FF;      cursor: pointer;      transition: all 0.2s;      margin-top: -4px;      z-index: 20;    }    .tg-df-container .tg-df-carousel-scroll-left { left: 8px; }    .tg-df-container .tg-df-carousel-scroll-right { right: 8px; }    .tg-df-carousel-filters-outer .tg-df-carousel-scroll-left { left: 0px; }    .tg-df-carousel-filters-outer .tg-df-carousel-scroll-right { right: 0px; }    .tg-df-carousel-filters-outer { margin-left: -24px; margin-right: -24px; padding-left: 24px; padding-right: 24px; }    @container tg-df (max-width: 599px) { .tg-df-carousel-filters-outer { margin-left: -16px; margin-right: -16px; padding-left: 16px; padding-right: 16px; } }        .tg-df-container .tg-df-carousel-scroll-left:hover,    .tg-df-container .tg-df-carousel-scroll-right:hover {      background-color: #f8fafc;      border-color: #cbd5e1;    }        .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-left,    .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-right,    .tg-df-carousel-filters-outer .tg-df-carousel-scroll-left,    .tg-df-carousel-filters-outer .tg-df-carousel-scroll-right {      background-color: rgba(255, 255, 255, 0.4);      border: none;      box-shadow: none;      backdrop-filter: blur(4px);      -webkit-backdrop-filter: blur(4px);    }    .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-left { left: 0; }    .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-right { right: 0; }    .tg-df-grid-wrapper .tg-df-carousel-scroll-left { left: 0; }    .tg-df-grid-wrapper .tg-df-carousel-scroll-right { right: 0; }        .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-left:hover,    .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-right:hover {      background-color: rgba(255, 255, 255, 0.6);      border: none;    }    .tg-df-container .tg-df-carousel-roundels::-webkit-scrollbar {      display: none;    }    .tg-df-container .tg-df-carousel-roundels::after {      content: "";      flex: 0 0 32px;    }    .tg-df-container .tg-df-roundel {      display: flex;      flex-direction: column;      align-items: center;      gap: 8px;      cursor: pointer;      min-width: 120px;      flex-shrink: 0;    }    .tg-df-container .tg-df-roundel-img-box {      width: 120px;      height: 120px;      border-radius: 50%;      background: white;      display: flex;      align-items: center;      justify-content: center;      overflow: hidden;      box-shadow: 0px 3px 14px 0px rgba(30, 41, 59, 0.08);      transition: box-shadow 0.2s;    }    .tg-df-container .tg-df-roundel:hover .tg-df-roundel-img-box {      box-shadow: 0 0 0 2px #E7F0FF, 0 0 0 4px #1F69FF;    }    .tg-df-container .tg-df-roundel.active .tg-df-roundel-img-box {      box-shadow: 0 0 0 2px #E7F0FF, 0 0 0 4px #1F69FF;    }    .tg-df-container .tg-df-roundel:hover .tg-df-roundel-img-box img {      transform: scale(1.08);    }    .tg-df-container .tg-df-roundel-img-box img {      width: 100%;      height: 100%;      object-fit: contain;      padding: 10px;      box-sizing: border-box;      transition: transform 0.3s ease;    }    .tg-df-container .tg-df-roundel-label {      font-size: 13px;      font-weight: 400;      color: #1e293b;      text-align: center;      transition: font-weight 0.2s;    }    .tg-df-container .tg-df-roundel.active .tg-df-roundel-label {      font-weight: 700;    }    .tg-df-container .tg-df-carousel-filters-label {      font-size: 16px;      font-weight: 400;      color: #1e293b;      white-space: nowrap;      margin-right: 4px;    }    .tg-df-container .tg-df-carousel-filters-wrap {      display: flex;      align-items: center;      flex-wrap: nowrap;      gap: 8px;      margin-top: 8px;      overflow-x: auto;      scrollbar-width: none;      -webkit-overflow-scrolling: touch;      padding-bottom: 8px;      margin-left: -24px;      margin-right: -24px;      padding-left: 24px;      padding-right: 24px;    }    .tg-df-container .tg-df-carousel-filters-wrap::-webkit-scrollbar {      display: none;    }        .tg-df-container .tg-df-carousel-filter-btn img,    .tg-df-container .tg-df-carousel-filter-btn picture {      height: 20px;      width: 20px;      object-fit: contain;      object-position: center;      display: inline-flex;      align-items: center;      justify-content: center;      margin-right: 6px;    }    .tg-df-container .tg-df-carousel-filter-btn picture img {      margin-right: 0;      height: 100%;      width: 100%;    }    .tg-df-container .tg-df-carousel-filter-btn img.active-img,    .tg-df-container .tg-df-carousel-filter-btn picture:has(.active-img) {      display: none;    }    .tg-df-container .tg-df-carousel-filter-btn:hover img.inactive-img,    .tg-df-container .tg-df-carousel-filter-btn.active img.inactive-img,    .tg-df-container .tg-df-carousel-filter-btn:hover picture:has(.inactive-img),    .tg-df-container .tg-df-carousel-filter-btn.active picture:has(.inactive-img) {      display: none;    }    .tg-df-container .tg-df-carousel-filter-btn:hover img.active-img,    .tg-df-container .tg-df-carousel-filter-btn.active img.active-img,    .tg-df-container .tg-df-carousel-filter-btn:hover picture:has(.active-img),    .tg-df-container .tg-df-carousel-filter-btn.active picture:has(.active-img) {      display: inline-flex;    }    .tg-df-container .tg-df-carousel-filter-btn {      background: #ffffff;      border: 2px solid #1e293b;      color: #1e293b;      border-radius: 24px;      padding: 6px 16px;      font-size: 14px;      font-weight: 600;      cursor: pointer;      transition: all 0.2s;      flex-shrink: 0;      white-space: nowrap;      display: inline-flex;      align-items: center;      justify-content: center;      min-height: 36px;      box-sizing: border-box;    }    .tg-df-container .tg-df-carousel-filter-btn svg {      margin-right: 6px;    }    .tg-df-container .tg-df-carousel-filter-btn:hover {      background: #1e293b;      color: white;      border-color: #1e293b;    }    .tg-df-container .tg-df-carousel-filter-btn.active {      background: #1e293b;      color: white;      border-color: #1e293b;    }        .tg-df-grid.carousel-compact {      display: flex;      flex-wrap: nowrap;      overflow-x: auto;      gap: 16px;      padding: 16px 24px;      align-items: stretch;      scrollbar-width: none;    }    .tg-df-grid.carousel-compact::after {      content: "";      flex: 0 0 32px;    }    .tg-df-grid-wrapper {      position: relative;    }    .tg-df-grid.carousel-compact::-webkit-scrollbar {      display: none;    }    .tg-df-grid.carousel-compact .tg-df-load-more-card {      flex: 0 0 auto;      width: 100px;      border-radius: 15px;      box-shadow: 0 0 16px rgba(0,0,0,0.08);      border: 2px solid #1e293b;      background: white;      color: #1e293b;      display: flex;      flex-direction: column;      justify-content: center;      align-items: center;      font-weight: 600;      font-size: 14px;      cursor: pointer;      padding: 16px;      text-align: center;      transition: all 0.2s;    }    .tg-df-grid.carousel-compact .tg-df-load-more-card:hover {      background: #1e293b;      color: white;    }    .tg-df-grid.carousel-compact .tg-df-card {      flex: 0 0 auto;      width: 200px;      min-height: auto;      height: auto;      display: flex;      flex-direction: column;      border-radius: 15px;      border: none;      box-shadow: 0 0 16px rgba(0,0,0,0.08);      overflow: visible;    }    .tg-df-grid.carousel-compact .tg-df-card-image-box {      padding: 12px;      background-color: transparent;      border-radius: 15px 15px 0 0;      height: 130px;    }    .tg-df-grid.carousel-compact .tg-df-card-image {      mix-blend-mode: normal;    }    .tg-df-grid.carousel-compact .tg-df-card-discount-badge {      border-radius: 0;      top: 0px;      left: 0px;      padding: 4px 8px;      font-size: 11px;    }    .tg-df-grid.carousel-compact .tg-df-card-body {      padding: 8px 12px 12px 12px;    }    .tg-df-grid.carousel-compact .tg-df-card-title {      font-size: 14px;      font-weight: 400;      -webkit-line-clamp: 2;      margin-bottom: 8px;      color: #011535;    }    .tg-df-grid.carousel-compact .tg-df-card-body:not(:has(.tg-df-card-stars)):not(:has(.tg-df-tag-prime)):not(:has(.tg-df-coupon-wrapper:not([style*="none"]))) > .tg-df-card-title,    .tg-df-grid.carousel-compact .tg-df-card-body:not(:has(.tg-df-card-stars)):has(> .tg-df-card-title:first-child) > .tg-df-card-title {      -webkit-line-clamp: 3;    }    .tg-df-grid.carousel-compact .tg-df-card-cta {      border-radius: 5px;      padding: 8px 10px;      margin-top: 4px;      background-color: #1F69FF;    }    .tg-df-grid.carousel-compact .tg-df-card-price-group {      margin-bottom: 2px;    }    .tg-df-grid.carousel-compact .tg-df-card-merchant-pill {      margin-bottom: 2px;    }    @container tg-df (max-width: 599px) {      .tg-df-container .tg-df-carousel-blue-box-title {        font-size: 24px;      }      .tg-df-container .tg-df-countdown-title {        display: none;      }      .tg-df-container .tg-df-countdown-wrapper {        position: absolute;        top: 0;        right: 0;        align-items: flex-end;        transform: scale(0.45);        transform-origin: top right;      }      .tg-df-container .tg-df-roundel {        min-width: 88px;      }      .tg-df-container .tg-df-roundel-img-box {        width: 88px;        height: 88px;      }    }    /* REPLICA BLOCK STYLES */    .tg-df-grid.layout-replica-2 { grid-template-columns: repeat(2, 1fr) !important; gap: 20px; }    .tg-df-grid.layout-replica-1 { grid-template-columns: 1fr !important; gap: 20px; }        .tg-df-container .hawk-deal-widget-container { border-bottom: 1px solid #e5e7eb; display: flex; flex-direction: column; margin: 0; padding: 20px 0; box-sizing: border-box; font-family: inherit; }    .tg-df-container .hawk-deal-widget-wrap { display: flex; flex-direction: row; align-items: flex-start; width: 100%; gap: 24px; }    .tg-df-container .hawk-deal-widget-image-container { display: flex; flex-shrink: 0; justify-content: center; width: 160px; height: 160px; align-items: center; background: white; margin-bottom: 0px; }    .tg-df-container .hawk-deal-widget-title-product-title { color: #111827; font-size: 18px; font-weight: 700; line-height: 1.4; display: inline; }    .tg-df-container .hawk-deal-widget-title-price { font-size: 18px; font-weight: 700; line-height: 1.4; white-space: nowrap; color: #2563eb; }    .tg-df-container .hawk-deal-widget-title-price-now { font-weight: 700; }    .tg-df-container .hawk-deal-widget-title-retailer-price:hover { text-decoration: underline; }    .tg-df-container .hawk-deal-widget-title-retailer { font-size: 18px; font-weight: 700; line-height: 1.4; color: #2563eb; }    .tg-df-container .hawk-deal-widget-title-was-price { color: #dc2626; font-size: 16px; font-weight: 500; line-height: 1.4; text-decoration: line-through; white-space: nowrap; margin-left: 8px; margin-right: 8px; }    .tg-df-container .hawk-deal-widget-text-body-container { position: relative; width: 100%; box-sizing: border-box; }    .tg-df-container .hawk-deal-widget-text-body-main { font-size: 16px; width: 100%; margin-bottom: 12px; }    .tg-df-container .hawk-deal-widget-text-body-description { display: block; font-size: 15px; margin-top: 12px; color: #4b5563; line-height: 1.6; }    .tg-df-container .hawk-deal-widget-text-body-description p { margin: 0; line-height: 1.6; }    .tg-df-container .hawk-deal-widget-text-cta-container { display: flex; flex-direction: column; gap: 12px; width: 100%; flex: 1; min-width: 0; box-sizing: border-box; }    .tg-df-container .hawk-deal-widget-footer { display: flex; justify-content: flex-end; width: 100%; margin-top: auto; }    .tg-df-container .hawk-deal-widget-button-wrapper { display: flex; flex-direction: column; align-items: flex-end; justify-content: flex-end; width: 100%; }    .tg-df-container .hawk-deal-widget-preferred-partner-wrapper { display: flex; flex-direction: row; }        @container tg-df (min-width: 600px) {      .tg-df-mobile-only { display: none !important; }    }    @container tg-df (max-width: 599px) {      .tg-df-desktop-only { display: none !important; }      .tg-df-grid.layout-replica-2 { grid-template-columns: 1fr !important; }      .tg-df-grid.savings-squad-cards { grid-template-columns: 1fr !important; display: flex; flex-direction: column; }    }    .tg-df-grid.savings-squad-cards .tg-df-card-title {      -webkit-line-clamp: unset !important;      display: block !important;      overflow: visible !important;    }    @container tg-df (max-width: 500px) {      .tg-df-container .hawk-deal-widget-wrap { display: block; }      .tg-df-container .hawk-deal-widget-image-container { display: block; float: left; margin: 0 16px 8px 0; width: 120px; max-width: 120px; height: auto; align-items: normal; justify-content: normal; }      .tg-df-container .hawk-deal-widget-text-cta-container { display: block; text-align: left; }      .tg-df-container .hawk-deal-widget-footer { display: block; margin-top: 16px; clear: both; width: 100%; }      .tg-df-container .hawk-deal-widget-button-wrapper { display: block; width: 100%; }      .tg-df-container .hawk-deal-widget-button-wrapper .hawk-deal-widget-preferred-partner-wrapper { display: block; width: 100%; }      .tg-df-container .hawk-affiliate-link-deal-button { box-sizing: border-box !important; display: flex !important; max-width: none !important; width: 100% !important; margin: 0 !important; }    }        .tg-df-container .hawk-affiliate-link-deal-button {       align-items: center; background-color: #5aaf0b; box-sizing: border-box; color: #ffffff !important; display: flex; font-size: 14px; font-weight: 700; justify-content: center; letter-spacing: 0.5px; line-height: 1; min-width: 160px; padding: 14px 24px; text-align: center; text-decoration: none; text-transform: uppercase; width: 100%; word-break: normal; border-radius: 4px; border: 0; transition: background-color 0.2s;     }    .tg-df-container .hawk-affiliate-link-deal-button:hover { background-color: #4a9109; text-decoration: none; }    .tg-df-container .hawk-lazy-image-deal-widget { display: block; height: auto; margin: auto; max-height: 160px; max-width: 100%; mix-blend-mode: multiply; object-fit: contain; }    .tg-df-container .hawk-deal-widget-text-cta-container a { color: #2563eb; text-decoration: none; display: inline; }    .tg-df-container .hawk-deal-widget-text-cta-container a:hover { text-decoration: underline; }    .tg-df-container .hawk-deal-widget-text-cta-container a:has(.hawk-deal-widget-title-product-title) { color: #111827; }    .tg-df-container .hawk-deal-widget-text-cta-container a:hover .hawk-deal-widget-title-product-title,    .tg-df-container .hawk-deal-widget-text-cta-container a:hover .hawk-deal-widget-title-retailer-price { text-decoration: underline; }  \x3C/style>  \x3C!-- Widget Container --\x3E  \x3Cdiv class="tg-df-container" id="signal-deals-finder-root">    \x3C!-- Editor Floating Bar --\x3E    \x3Cdiv class="tg-df-editor-bar" id="tg-df-editor-bar" style="display:none;">      \x3Cdiv class="tg-df-editor-bar-text" style="display: flex; align-items: center;">        \x3Cspan id="tg-df-selected-count">0\x3C/span>\x26nbsp;Deals Selected        \x3Cbutton class="tg-df-editor-clear-btn" id="tg-df-editor-clear" type="button" style="margin-left: 12px; font-size: 13px; color: #9ca3af; background: none; border: none; cursor: pointer; text-decoration: underline;">Clear All\x3C/button>      \x3C/div>      \x3Cbutton class="tg-df-editor-copy-btn" id="tg-df-editor-copy" type="button">        \x3Csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-right: 6px;">\x3Crect x="9" y="9" width="13" height="13" rx="2" ry="2">\x3C/rect>\x3Cpath d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1">\x3C/path>\x3C/svg>        Copy to CMS      \x3C/button>    \x3C/div>    \x3Cdiv class="tg-df-carousel-host" id="tg-df-carousel-host" style="display: none;">      \x3Cdiv class="tg-df-carousel-eyebrow">DEAL FINDER\x3C/div>      \x3Cdiv class="tg-df-carousel-query-title" id="tg-df-carousel-title-label">Best Deals\x3C/div>            \x3Cdiv class="tg-df-carousel-blue-box">        \x3Cdiv class="tg-df-carousel-bg-circle-1" aria-hidden="true">\x26nbsp;\x3C/div>        \x3Cdiv class="tg-df-carousel-bg-circle-2" aria-hidden="true">\x26nbsp;\x3C/div>        \x3Cdiv class="tg-df-carousel-bg-circle-3" aria-hidden="true">\x26nbsp;\x3C/div>        \x3Cdiv class="tg-df-carousel-box-content">          \x3Cdiv class="tg-df-countdown-wrapper" id="tg-df-countdown-wrapper" style="display:none;">            \x3Cdiv class="tg-df-countdown-title" id="tg-df-countdown-title">Prime Day starts in\x3C/div>            \x3Cdiv class="tg-df-countdown-blocks">              \x3Cdiv class="tg-df-countdown-item">\x3Cdiv class="tg-df-countdown-box">\x3Cdiv class="tg-df-countdown-num" id="tg-df-cd-days">0\x3C/div>\x3C/div>\x3Cdiv class="tg-df-countdown-label">DAYS\x3C/div>\x3C/div>              \x3Cdiv class="tg-df-countdown-item">\x3Cdiv class="tg-df-countdown-box">\x3Cdiv class="tg-df-countdown-num" id="tg-df-cd-hrs">0\x3C/div>\x3C/div>\x3Cdiv class="tg-df-countdown-label">HRS\x3C/div>\x3C/div>              \x3Cdiv class="tg-df-countdown-item">\x3Cdiv class="tg-df-countdown-box">\x3Cdiv class="tg-df-countdown-num" id="tg-df-cd-min">0\x3C/div>\x3C/div>\x3Cdiv class="tg-df-countdown-label">MIN\x3C/div>\x3C/div>              \x3Cdiv class="tg-df-countdown-item">\x3Cdiv class="tg-df-countdown-box">\x3Cdiv class="tg-df-countdown-num" id="tg-df-cd-sec">0\x3C/div>\x3C/div>\x3Cdiv class="tg-df-countdown-label">SEC\x3C/div>\x3C/div>            \x3C/div>          \x3C/div>          \x3Cdiv class="tg-df-carousel-box-eyebrow">DEAL FINDER\x3C/div>          \x3Cdiv class="tg-df-carousel-box-title">Find Deals Fast\x3C/div>          \x3Cdiv class="tg-df-carousel-box-subtitle">The latest deals from the biggest retailers, all in one place\x3C/div>                    \x3Cdiv class="tg-df-carousel-roundels-wrapper">          \x3Cbutton class="tg-df-carousel-scroll-left" type="button" aria-label="Scroll left" style="display:none;" onclick="this.parentElement.querySelector('.tg-df-carousel-roundels').scrollBy({left: -200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m15 18-6-6 6-6">\x3C/path>\x3C/svg>\x3C/button>          \x3Cdiv class="tg-df-carousel-roundels">            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>          \x3C/div>          \x3Cbutton class="tg-df-carousel-scroll-right" type="button" aria-label="Scroll right" onclick="this.parentElement.querySelector('.tg-df-carousel-roundels').scrollBy({left: 200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m9 18 6-6-6-6">\x3C/path>\x3C/svg>\x3C/button>        \x3C/div>        \x3Cdiv class="tg-df-carousel-filters-outer" style="position: relative;">          \x3Cbutton class="tg-df-carousel-scroll-left" type="button" aria-label="Scroll left" style="display:none;" onclick="this.parentElement.querySelector('.tg-df-carousel-filters-wrap').scrollBy({left: -200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m15 18-6-6 6-6">\x3C/path>\x3C/svg>\x3C/button>          \x3Cdiv class="tg-df-carousel-filters-wrap">                      \x3Cbutton class="tg-df-carousel-filter-btn" data-d="0">All\x3C/button>                      \x3Cbutton class="tg-df-carousel-filter-btn" data-ot="amazon_lightning">              \x3Cimg src="https://cdn.mos.cms.futurecdn.net/HqAui7w97ft2NPqBtQ5r38-600-100.png" class="inactive-img" alt="" />\x3Cimg src="https://cdn.mos.cms.futurecdn.net/yWPQ5yyQRhUwVKzGwYbh38-600-100.png" class="active-img" alt="" /> Lightning deals\x3C/button>            \x3Cbutton class="tg-df-carousel-filter-btn" data-ot="amazon_prime">              \x3Cimg src="https://cdn.mos.cms.futurecdn.net/fwoVXvL79turN3Ph535m38-600-100.png" class="inactive-img" alt="" />\x3Cimg src="https://cdn.mos.cms.futurecdn.net/u75QjVpt3w2EsMimJiRo38-600-100.png" class="active-img" alt="" /> Prime deals\x3C/button>            \x3Cbutton class="tg-df-carousel-filter-btn" data-d="10">              \x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tag">\x3Cpath d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z">\x3C/path>\x3Ccircle cx="7.5" cy="7.5" r=".5" fill="currentColor">\x3C/circle>\x3C/svg>            Min 10% off\x3C/button>                      \x3Cbutton class="tg-df-carousel-filter-btn" data-d="15">              \x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tag">\x3Cpath d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z">\x3C/path>\x3Ccircle cx="7.5" cy="7.5" r=".5" fill="currentColor">\x3C/circle>\x3C/svg>            Min 15% off\x3C/button>                      \x3Cbutton class="tg-df-carousel-filter-btn" data-d="25">              \x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tag">\x3Cpath d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z">\x3C/path>\x3Ccircle cx="7.5" cy="7.5" r=".5" fill="currentColor">\x3C/circle>\x3C/svg>            Min 25% off\x3C/button>                      \x3Cbutton class="tg-df-carousel-filter-btn" data-pr="under50">              \x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-dollar-sign">\x3Cpath d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z">\x3C/path>\x3Cpath d="M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8">\x3C/path>\x3Cpath d="M12 18V6">\x3C/path>\x3C/svg>            Under $50\x3C/button>        \x3C/div>        \x3Cbutton class="tg-df-carousel-scroll-right" type="button" aria-label="Scroll right" style="display:none;" onclick="this.parentElement.querySelector('.tg-df-carousel-filters-wrap').scrollBy({left: 200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m9 18 6-6-6-6">\x3C/path>\x3C/svg>\x3C/button>      \x3C/div>    \x3C/div>    \x3C/div>      \x3C!-- Search & Filter Controls --\x3E    \x3Cdiv class="tg-df-controls" id="tg-df-controls" style="display:flex;">      \x3Cdiv class="tg-df-top-bar">        \x3Cdiv class="tg-df-search-wrapper">          \x3Cinput type="text" class="tg-df-search-input" placeholder="Search for deals, products, or brands...">          \x3Cbutton type="button" class="tg-df-search-btn" aria-label="Search">              \x3Csvg class="tg-df-search-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">                \x3Cpath d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"/>              \x3C/svg>          \x3C/button>          \x3Cdiv class="tg-df-autocomplete-dropdown" id="tg-df-autocomplete">\x3C/div>        \x3C/div>                \x3Cdiv class="tg-df-settings-wrapper">          \x3Cbutton type="button" class="tg-df-settings-btn" aria-label="Settings" id="tg-df-settings-toggle">            \x3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="20" height="20">                \x3Cpath d="M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.06-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.73 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.06.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .43-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.49-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z"/>            \x3C/svg>          \x3C/button>          \x3Cdiv class="tg-df-settings-dropdown-backdrop" id="tg-df-settings-backdrop">\x3C/div>          \x3Cdiv class="tg-df-settings-dropdown" id="tg-df-settings-panel">            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">Search Region\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-region-select">                \x3Coption value="auto">🌍 Auto-detect\x3C/option>                \x3Coption value="US">🇺🇸 United States (US)\x3C/option>                \x3Coption value="GB">🇬🇧 United Kingdom (UK)\x3C/option>                \x3Coption value="CA">🇨🇦 Canada (CA)\x3C/option>                \x3Coption value="AU">🇦🇺 Australia (AU)\x3C/option>                \x3Coption value="DE">🇩🇪 Germany (DE)\x3C/option>                \x3Coption value="FR">🇫🇷 France (FR)\x3C/option>                \x3Coption value="IT">🇮🇹 Italy (IT)\x3C/option>              \x3C/select>            \x3C/div>            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">Retailer\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-retailer-select">                \x3Coption value="">All Retailers\x3C/option>                \x3Coption value="Amazon">Amazon\x3C/option>                \x3Coption value="Walmart">Walmart\x3C/option>                \x3Coption value="Best Buy">Best Buy\x3C/option>                \x3Coption value="Target">Target\x3C/option>                \x3Coption value="John Lewis">John Lewis\x3C/option>                \x3Coption value="Currys">Currys\x3C/option>                \x3Coption value="Argos">Argos\x3C/option>              \x3C/select>            \x3C/div>            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">Offer Type\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-offer-type-select">                \x3Coption value="">All Offers\x3C/option>                \x3Coption value="amazon_prime">Amazon Prime\x3C/option>                \x3Coption value="recommended_promo">Recommended Promo\x3C/option>                \x3Coption value="amazon_lightning">Amazon Lightning Deal\x3C/option>              \x3C/select>            \x3C/div>            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">Result Count\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-rows-select">                \x3Coption value="3">3 Items\x3C/option>                \x3Coption value="4">4 Items\x3C/option>                \x3Coption value="6">6 Items\x3C/option>                \x3Coption value="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[ The greatest Western I've ever seen isn't a movie — and it's streaming free on Tubi ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Ask around for the greatest Western ever made, and you'll hear "The Searchers" or "Unforgiven," but the finest one I've ever seen wasn't a movie at all. It was a four-part miniseries that aired on CBS back in 1989 called <strong>"Lonesome Dove."</strong> Right now you can watch every minute of this classic for <strong>free on Tubi.</strong></p><p>Adapted from Larry McMurtry's Pulitzer Prize-winning novel and directed by Simon Wincer, "Lonesome Dove" was an event when it premiered, pulling a massive audience and going on to win seven Emmy Awards. More than three decades later, it's widely regarded as one of the best Westerns of all time, big screen or small, and it helped kick off a revival of interest in the genre.</p><p>"Lonesome Dove" is headlined by Robert Duvall and Tommy Lee Jones as two aging former Texas Rangers, with a stacked supporting cast that includes Danny Glover, Diane Lane, Anjelica Huston, and Robert Urich. It's about six hours across four parts, so it's a lengthy watch, but well worth every minute. And since you don't have to pay to stream it, I highly recommend you set aside a weekend to do it.</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="what-is-39-lonesome-dove-39-about">What is 'Lonesome Dove' about?</h2><p>Gus McCrae (Robert Duvall) and Woodrow Call (Tommy Lee Jones) are two former Texas Rangers running a business in the border town of Lonesome Dove. Gus is talkative, funny and warm, while Call is silent and all business. They're old friends who live a quiet life. </p><p>But when an old comrade rides back into town with stories of the unspoiled grasslands of Montana, Call decides they should drive a herd of cattle north to build a ranch on the last open frontier. What follows is an epic journey across a brutal, beautiful landscape. Along the way, the two men and their outfit face rustlers, river crossings, punishing weather, and worse. </p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/bK3N5UXv4vY" allowfullscreen></iframe></div></div><p>But when the story widens to add a whole new cast of characters, it gets even better. There's a young woman named Lorena (Diane Lane) dreaming of a better life, Gus's great lost love Clara (Anjelica Huston), and a sheriff chasing after his runaway wife. </p><p>All of these stories and relationships intertwine eventually to make something even bigger, better, and more emotional than you might have guessed at the onset. </p><h2 id="why-i-recommend-streaming-39-lonesome-dove-39">Why I recommend streaming 'Lonesome Dove'</h2><p>Some stories are about plot, and some are about people you'd follow anywhere. "Lonesome Dove" is the second kind. I've watched it three times, and every time it's the friendship between Gus and Call that gets me. I just love the relationship between these two men who love each other deeply and would never once say so out loud. The men in my family are much the same way. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1280px;"><p class="vanilla-image-block" style="padding-top:57.03%;"><img id="4cFYBHbadCjtLTwq2UrKTm" name="Lonesome Dove" alt="Lonesome Dove" src="https://cdn.mos.cms.futurecdn.net/4cFYBHbadCjtLTwq2UrKTm-1920-80.jpg" mos="" align="middle" fullscreen="" width="1280" height="730" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tubi)</span></figcaption></figure><p>Robert Duvall has called Gus McCrae his favorite role of his entire career, and it shows. He's wise and funny but also heartbreaking, often in the same scene. Tommy Lee Jones is his perfect opposite as Cal, and the supporting cast is fantastic all the way through. Beyond that, the show looks gorgeous, too, with sweeping vistas and a beautiful score that make it feel every bit as big as any theatrical epic, even though it aired on TV.</p><p>Yes, six hours is a commitment, but it never drags. By the end you'll wish there were six more. And while there technically is a miniseries continuation in the form of "Return to Lonesome Dove," nothing can top this one. It won seven Emmys and the undying love of everyone who's seen it, and it still doesn't get mentioned alongside the big-screen Western classics nearly as often as it should. </p><p>Don't let it pass you by, especially when it won't cost you a cent right now to stream. </p><p><a href="https://tubitv.com/series/300001070/lonesome-dove" target="_blank" rel="nofollow"><em><strong>Stream "Lonesome Dove" free on Tubi now</strong></em></a></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Wwn3ze"></div>                            </div>                            <script src="https://kwizly.com/embed/Wwn3ze.js" async></script> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/streaming/the-greatest-western-ive-ever-seen-isnt-a-movie-and-its-streaming-free-on-tubi</link>
                                                                            <description>
                            <![CDATA[ Even if you aren't a Western fan, "Lonesome Dove" is essential viewing. It's streaming free on Tubi. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">JmZReJQahu73MxHnw6xKFk</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/oL7YyGUitXWkiTRkNmDbj5-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 24 Sep 2026 08:30:00 +0000</pubDate>                                                                                                                                <updated>Thu, 24 Sep 2026 18:12:25 +0000</updated>
                                                                                                                                            <category><![CDATA[Streaming]]></category>
                                                    <category><![CDATA[Entertainment]]></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/oL7YyGUitXWkiTRkNmDbj5-1920-80.jpg">
                                                            <media:credit><![CDATA[Tubi]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Lonesome Dove]]></media:description>                                                            <media:text><![CDATA[Lonesome Dove]]></media:text>
                                <media:title type="plain"><![CDATA[Lonesome Dove]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/oL7YyGUitXWkiTRkNmDbj5-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Ask around for the greatest Western ever made, and you'll hear "The Searchers" or "Unforgiven," but the finest one I've ever seen wasn't a movie at all. It was a four-part miniseries that aired on CBS back in 1989 called <strong>"Lonesome Dove."</strong> Right now you can watch every minute of this classic for <strong>free on Tubi.</strong></p><p>Adapted from Larry McMurtry's Pulitzer Prize-winning novel and directed by Simon Wincer, "Lonesome Dove" was an event when it premiered, pulling a massive audience and going on to win seven Emmy Awards. More than three decades later, it's widely regarded as one of the best Westerns of all time, big screen or small, and it helped kick off a revival of interest in the genre.</p><p>"Lonesome Dove" is headlined by Robert Duvall and Tommy Lee Jones as two aging former Texas Rangers, with a stacked supporting cast that includes Danny Glover, Diane Lane, Anjelica Huston, and Robert Urich. It's about six hours across four parts, so it's a lengthy watch, but well worth every minute. And since you don't have to pay to stream it, I highly recommend you set aside a weekend to do it.</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="what-is-39-lonesome-dove-39-about">What is 'Lonesome Dove' about?</h2><p>Gus McCrae (Robert Duvall) and Woodrow Call (Tommy Lee Jones) are two former Texas Rangers running a business in the border town of Lonesome Dove. Gus is talkative, funny and warm, while Call is silent and all business. They're old friends who live a quiet life. </p><p>But when an old comrade rides back into town with stories of the unspoiled grasslands of Montana, Call decides they should drive a herd of cattle north to build a ranch on the last open frontier. What follows is an epic journey across a brutal, beautiful landscape. Along the way, the two men and their outfit face rustlers, river crossings, punishing weather, and worse. </p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/bK3N5UXv4vY" allowfullscreen></iframe></div></div><p>But when the story widens to add a whole new cast of characters, it gets even better. There's a young woman named Lorena (Diane Lane) dreaming of a better life, Gus's great lost love Clara (Anjelica Huston), and a sheriff chasing after his runaway wife. </p><p>All of these stories and relationships intertwine eventually to make something even bigger, better, and more emotional than you might have guessed at the onset. </p><h2 id="why-i-recommend-streaming-39-lonesome-dove-39">Why I recommend streaming 'Lonesome Dove'</h2><p>Some stories are about plot, and some are about people you'd follow anywhere. "Lonesome Dove" is the second kind. I've watched it three times, and every time it's the friendship between Gus and Call that gets me. I just love the relationship between these two men who love each other deeply and would never once say so out loud. The men in my family are much the same way. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1280px;"><p class="vanilla-image-block" style="padding-top:57.03%;"><img id="4cFYBHbadCjtLTwq2UrKTm" name="Lonesome Dove" alt="Lonesome Dove" src="https://cdn.mos.cms.futurecdn.net/4cFYBHbadCjtLTwq2UrKTm-1920-80.jpg" mos="" align="middle" fullscreen="" width="1280" height="730" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tubi)</span></figcaption></figure><p>Robert Duvall has called Gus McCrae his favorite role of his entire career, and it shows. He's wise and funny but also heartbreaking, often in the same scene. Tommy Lee Jones is his perfect opposite as Cal, and the supporting cast is fantastic all the way through. Beyond that, the show looks gorgeous, too, with sweeping vistas and a beautiful score that make it feel every bit as big as any theatrical epic, even though it aired on TV.</p><p>Yes, six hours is a commitment, but it never drags. By the end you'll wish there were six more. And while there technically is a miniseries continuation in the form of "Return to Lonesome Dove," nothing can top this one. It won seven Emmys and the undying love of everyone who's seen it, and it still doesn't get mentioned alongside the big-screen Western classics nearly as often as it should. </p><p>Don't let it pass you by, especially when it won't cost you a cent right now to stream. </p><p><a href="https://tubitv.com/series/300001070/lonesome-dove" target="_blank" rel="nofollow"><em><strong>Stream "Lonesome Dove" free on Tubi now</strong></em></a></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Wwn3ze"></div>                            </div>                            <script src="https://kwizly.com/embed/Wwn3ze.js" async></script>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Netflix just added an intense psychological thriller movie with an apocalyptic twist — and it’s an unpredictable nightmare ]]></title>
                                                                                                <dc:content><![CDATA[ <p>It’s that time of year when the <a href="https://www.tomsguide.com/us/best-streaming-video-services,review-2625.html">best streaming services</a> start adding more seasonal content to welcome the fall season, and as a huge lover of this time of year, I’m not mad about it. <a href="https://www.tomsguide.com/entertainment/streaming/netflix">Netflix </a>in particular knows what its subscribers enjoy, and while the service regularly pumps out thriller movies throughout the year, it’s usually toward the end of summer when it puts a much heavier focus on the scarier genres. If you’re looking to get into the spooky mindset by watching something tense, Netflix just added “Knock at the Cabin.”</p><p>Directed by the renowned M. Night Shyamalan and starring Dave Bautista in the lead role, “Knock at the Cabin” is an unsettling psychological thriller that’s very hard to predict. I’m usually one to try and guess how a movie plays out, but this film had me on edge through most of its runtime because I had no idea what the plot had planned. Its 2023 release didn’t actually make much of an impact, which contributed to its low box office numbers, so there’s a strong chance you missed it in theaters, making now the perfect time to stream it on Netflix.</p><p>If you’re a fan of darker thrillers and need something to add to your spooky season watchlist, here’s why you should stream “Knock at the Cabin” now that it’s available on the world’s biggest streaming service.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-X81aVe"></div>                            </div>                            <script src="https://kwizly.com/embed/X81aVe.js" async></script><h2 id="what-is-knock-at-the-cabin-about">What is ‘Knock at the Cabin’ about?</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/0wiBHEACNHs" allowfullscreen></iframe></div></div><p>“Knock at the Cabin” follows Eric (Jonathan Groff) and Andrew (Ben Aldridge), a couple who take their young daughter Wen (Kristen Cui) on a quiet getaway to a remote cabin in the woods. Their peaceful vacation is interrupted when a stranger named Leonard (Dave Bautista) arrives at the door, accompanied by three armed visitors, Sabrina (Nikki Amuka-Bird), Remond (Rupert Grint), and Adriane (Abby Quinn). The group forces their way inside and takes the family hostage, but insists they are not there to hurt them.</p><p>Instead, Leonard delivers a terrifying warning: a series of catastrophic events is about to unfold around the world, and the family has been placed at the center of a decision that could determine what happens next. As the strangers reveal more about why they have come, Eric and Andrew struggle to work out whether their claims are genuine or part of an elaborate plan. The family must find a way to survive while uncovering the truth behind the mysterious visitors and their impossible demand.</p><h2 id="knock-at-the-cabin-keeps-you-questioning-what-s-really-happening">‘Knock at the Cabin’ keeps you questioning what’s really happening</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="5CC9PuLHPxG3CnhKiiuXzm" name="2MKXWYM" alt="Jonathan Groff in "Knock at the Cabin" movie (2023)" src="https://cdn.mos.cms.futurecdn.net/5CC9PuLHPxG3CnhKiiuXzm-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: Universal Pictures / Alamy)</span></figcaption></figure><p>“Knock at the Cabin” is at its strongest when it keeps you in the dark, thanks to its seriously unpredictable story and strong central performances that keep you invested and wanting to know what happens right up until the end. This is a huge part of why I found it to be such an effective thriller. Even though I hadn’t read the source material it’s based on, a book called “The Cabin at the End of the World,” I think going into the movie without knowing what was coming made the experience even more enjoyable. Most of that comes down to the group of invaders who pressure an innocent family into making an impossible choice, leaving you constantly questioning whether these strangers are actually telling the truth.</p><p>What makes “Knock at the Cabin” work so well is the way it turns a contained family drama into something with much bigger consequences. Shyamalan takes his time getting under the skin of Eric and Andrew, allowing us to understand their relationship before the situation at the cabin begins to unravel. The flashbacks are particularly effective here, gradually revealing more about the family and giving the story an emotional weight that goes beyond its thriller premise. At times, it almost feels more like a character study than a conventional thriller.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="pfUZC2EhW9nTVuBmoeasYF" name="2MKXXDW" alt="Dave Bautista, Abby Quinn, and Nikki Amuka-Bird in "Knock at the Cabin" movie (2023)" src="https://cdn.mos.cms.futurecdn.net/pfUZC2EhW9nTVuBmoeasYF-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: Universal Pictures / Alamy)</span></figcaption></figure><p>That slower approach also gives the film plenty of time to play with your expectations. Rather than rushing towards its answers, “Knock at the Cabin” is most impactful in everything that happens along the way, keeping you invested in the characters while constantly making you question what you believe. It’s an intimate and uncomfortable thriller to say the least, and Dave Bautista is a huge part of that, giving one of his best performances to date, and it’s actually more interesting seeing him play someone calmer with a little menace underneath. It’s definitely a more compelling role for him.</p><p>“Knock at the Cabin” initially promises more horror than it ultimately delivers, which might disappoint viewers looking for something spookier. The ending is also a little divisive, and I’m on the side of finding it a little too straightforward once the central mystery becomes clear, so don’t expect a huge Shyamalan twist. But for most of the runtime, it’s a genuinely intense watch. At its heart, “Knock at the Cabin” centers on the conflict between protecting the people you love and making an unimaginable sacrifice for the greater good. When a movie makes you <em>really </em>think, I usually consider that a pretty big win.</p><p><em><strong>Stream "Knock at the Cabin" on </strong></em><a href="https://www.netflix.com/title/81624341" target="_blank" rel="nofollow"><em><strong>Netflix</strong></em></a></p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/entertainment/netflix/netflix-is-about-to-remove-77-movies-heres-the-5-to-watch-before-its-too-late">Netflix is about to remove 77 movies </a></li><li><a href="https://www.tomsguide.com/entertainment/netflix/5-best-new-netflix-movies-and-shows-to-stream-this-week-sept-21-27">5 best new Netflix movies and shows to stream this week</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">I watched Prime Video’s new romantic comedy movie</a></li></ul><div data-model-name="Disney Plus,Hulu,Max,Paramount Plus,Peacock TV" data-widget-type="multimodelreview" data-widget-title="Streaming service deals not to miss"></div> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/netflix/netflix-just-added-an-intense-psychological-thriller-movie-with-an-apocalyptic-twist-and-its-an-unpredictable-nightmare</link>
                                                                            <description>
                            <![CDATA[ Netflix just added “Knock at the Cabin,” a thriller movie about a family whose getaway is interrupted by four armed strangers with a terrifying demand. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">BU2qtVQZdYZFedANQxfGrg</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/d4xsf8UUvTejF4BTDdzkNJ-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 24 Sep 2026 06:00:00 +0000</pubDate>                                                                                                                                <updated>Thu, 24 Sep 2026 07:51:59 +0000</updated>
                                                                                                                                            <category><![CDATA[Netflix]]></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/d4xsf8UUvTejF4BTDdzkNJ-1920-80.jpg">
                                                            <media:credit><![CDATA[Universal Pictures / Alamy]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Abby Quinn, Nikki Amuka-Bird, Dave Bautista and Rupert Grint in &quot;Knock at the Cabin&quot; movie (2023)]]></media:description>                                                            <media:text><![CDATA[Abby Quinn, Nikki Amuka-Bird, Dave Bautista and Rupert Grint in &quot;Knock at the Cabin&quot; movie (2023)]]></media:text>
                                <media:title type="plain"><![CDATA[Abby Quinn, Nikki Amuka-Bird, Dave Bautista and Rupert Grint in &quot;Knock at the Cabin&quot; movie (2023)]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/d4xsf8UUvTejF4BTDdzkNJ-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>It’s that time of year when the <a href="https://www.tomsguide.com/us/best-streaming-video-services,review-2625.html">best streaming services</a> start adding more seasonal content to welcome the fall season, and as a huge lover of this time of year, I’m not mad about it. <a href="https://www.tomsguide.com/entertainment/streaming/netflix">Netflix </a>in particular knows what its subscribers enjoy, and while the service regularly pumps out thriller movies throughout the year, it’s usually toward the end of summer when it puts a much heavier focus on the scarier genres. If you’re looking to get into the spooky mindset by watching something tense, Netflix just added “Knock at the Cabin.”</p><p>Directed by the renowned M. Night Shyamalan and starring Dave Bautista in the lead role, “Knock at the Cabin” is an unsettling psychological thriller that’s very hard to predict. I’m usually one to try and guess how a movie plays out, but this film had me on edge through most of its runtime because I had no idea what the plot had planned. Its 2023 release didn’t actually make much of an impact, which contributed to its low box office numbers, so there’s a strong chance you missed it in theaters, making now the perfect time to stream it on Netflix.</p><p>If you’re a fan of darker thrillers and need something to add to your spooky season watchlist, here’s why you should stream “Knock at the Cabin” now that it’s available on the world’s biggest streaming service.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-X81aVe"></div>                            </div>                            <script src="https://kwizly.com/embed/X81aVe.js" async></script><h2 id="what-is-knock-at-the-cabin-about">What is ‘Knock at the Cabin’ about?</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/0wiBHEACNHs" allowfullscreen></iframe></div></div><p>“Knock at the Cabin” follows Eric (Jonathan Groff) and Andrew (Ben Aldridge), a couple who take their young daughter Wen (Kristen Cui) on a quiet getaway to a remote cabin in the woods. Their peaceful vacation is interrupted when a stranger named Leonard (Dave Bautista) arrives at the door, accompanied by three armed visitors, Sabrina (Nikki Amuka-Bird), Remond (Rupert Grint), and Adriane (Abby Quinn). The group forces their way inside and takes the family hostage, but insists they are not there to hurt them.</p><p>Instead, Leonard delivers a terrifying warning: a series of catastrophic events is about to unfold around the world, and the family has been placed at the center of a decision that could determine what happens next. As the strangers reveal more about why they have come, Eric and Andrew struggle to work out whether their claims are genuine or part of an elaborate plan. The family must find a way to survive while uncovering the truth behind the mysterious visitors and their impossible demand.</p><h2 id="knock-at-the-cabin-keeps-you-questioning-what-s-really-happening">‘Knock at the Cabin’ keeps you questioning what’s really happening</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="5CC9PuLHPxG3CnhKiiuXzm" name="2MKXWYM" alt="Jonathan Groff in "Knock at the Cabin" movie (2023)" src="https://cdn.mos.cms.futurecdn.net/5CC9PuLHPxG3CnhKiiuXzm-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: Universal Pictures / Alamy)</span></figcaption></figure><p>“Knock at the Cabin” is at its strongest when it keeps you in the dark, thanks to its seriously unpredictable story and strong central performances that keep you invested and wanting to know what happens right up until the end. This is a huge part of why I found it to be such an effective thriller. Even though I hadn’t read the source material it’s based on, a book called “The Cabin at the End of the World,” I think going into the movie without knowing what was coming made the experience even more enjoyable. Most of that comes down to the group of invaders who pressure an innocent family into making an impossible choice, leaving you constantly questioning whether these strangers are actually telling the truth.</p><p>What makes “Knock at the Cabin” work so well is the way it turns a contained family drama into something with much bigger consequences. Shyamalan takes his time getting under the skin of Eric and Andrew, allowing us to understand their relationship before the situation at the cabin begins to unravel. The flashbacks are particularly effective here, gradually revealing more about the family and giving the story an emotional weight that goes beyond its thriller premise. At times, it almost feels more like a character study than a conventional thriller.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="pfUZC2EhW9nTVuBmoeasYF" name="2MKXXDW" alt="Dave Bautista, Abby Quinn, and Nikki Amuka-Bird in "Knock at the Cabin" movie (2023)" src="https://cdn.mos.cms.futurecdn.net/pfUZC2EhW9nTVuBmoeasYF-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: Universal Pictures / Alamy)</span></figcaption></figure><p>That slower approach also gives the film plenty of time to play with your expectations. Rather than rushing towards its answers, “Knock at the Cabin” is most impactful in everything that happens along the way, keeping you invested in the characters while constantly making you question what you believe. It’s an intimate and uncomfortable thriller to say the least, and Dave Bautista is a huge part of that, giving one of his best performances to date, and it’s actually more interesting seeing him play someone calmer with a little menace underneath. It’s definitely a more compelling role for him.</p><p>“Knock at the Cabin” initially promises more horror than it ultimately delivers, which might disappoint viewers looking for something spookier. The ending is also a little divisive, and I’m on the side of finding it a little too straightforward once the central mystery becomes clear, so don’t expect a huge Shyamalan twist. But for most of the runtime, it’s a genuinely intense watch. At its heart, “Knock at the Cabin” centers on the conflict between protecting the people you love and making an unimaginable sacrifice for the greater good. When a movie makes you <em>really </em>think, I usually consider that a pretty big win.</p><p><em><strong>Stream "Knock at the Cabin" on </strong></em><a href="https://www.netflix.com/title/81624341" target="_blank" rel="nofollow"><em><strong>Netflix</strong></em></a></p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/entertainment/netflix/netflix-is-about-to-remove-77-movies-heres-the-5-to-watch-before-its-too-late">Netflix is about to remove 77 movies </a></li><li><a href="https://www.tomsguide.com/entertainment/netflix/5-best-new-netflix-movies-and-shows-to-stream-this-week-sept-21-27">5 best new Netflix movies and shows to stream this week</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">I watched Prime Video’s new romantic comedy movie</a></li></ul><div data-model-name="Disney Plus,Hulu,Max,Paramount Plus,Peacock TV" data-widget-type="multimodelreview" data-widget-title="Streaming service deals not to miss"></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ iOS 27 didn't add this anti-snatching feature to iPhone, but that doesn't mean it's been cancelled — here's why it's important ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Back in March we heard rumors that <a href="https://www.tomsguide.com/phones/iphones/the-iphone-could-steal-one-of-the-best-android-features-and-im-all-for-it">Apple could add an important anti-theft feature to iPhones</a>: the ability for iOS to lock everything down in the event your phone is snatched out of your hands. While I had hoped that such a feature could launch with iOS 27, that hasn't happened — but it doesn't mean anti-snatch protection is dead in the water.</p><p>Code discovered in the newly released<a href="https://www.tomsguide.com/phones/iphones/ios-27-2-beta-is-here-5-biggest-upgrades-for-your-iphone-including-a-revamped-health-app"> iOS 27.2 beta</a> reveals that Apple<a href="https://9to5mac.com/2026/09/21/ios-27-2-beta-2-reveals-new-details-about-unnanounced-iphone-anti-snatching-feature/" target="_blank"> could still be working</a> on this feature — as well as what signals could end up triggering it in the real world.</p><p>Google launched something similar last year, <a href="https://www.tomsguide.com/phones/android-phones/android-just-got-a-trio-of-powerful-anti-theft-upgrades-heres-how-they-work">known as Theft Detection Lock</a>, and I'm glad to see that Apple is still powering ahead with its own version. Considering how much we have on our phone, and how easy they are to steal, there's no such thing as having too much protection from thieves and other criminals.</p><h2 id="how-apple-39-s-anti-snatching-feature-might-work">How Apple's anti-snatching feature might work</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="MkwV9aEEchURoBBVdNhcse" name="iPhone 18 Pro and Pro Max-5" alt="Apple iPhone 18 Pro Max" src="https://cdn.mos.cms.futurecdn.net/MkwV9aEEchURoBBVdNhcse-1920-80.jpg" mos="" align="middle" fullscreen="" width="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>Android's Theft Detection Lock works by detecting sudden changes in your device, using the internal sensors. So if it notices your phone suddenly jerks in one direction and takes off at speed, odds are someone has snatched your phone and started running off with it.</p><p>We assumed that Apple's version would work in a similar manner, but the uncovered code offers a little bit of detail about how iOS will register possible thefts.</p><p>Code snippets seen b<a href="https://9to5mac.com/2026/09/21/ios-27-2-beta-2-reveals-new-details-about-unnanounced-iphone-anti-snatching-feature/" target="_blank">y 9to5Mac</a> shows that the theft detection is internally known as "AutoLock," though there's no guarantee that Apple will actually use that name for the public launch. The code also suggests that AutoLock will rely on five key signals to determine whether a phone has been stolen or not.</p><p>The first trigger is the presence of a "sharp acceleration" that is "consistent with a phone being snatched." Or, in other words, the internal sensors detecting your phone moving in a way that is inconsistent with typical use. Connectivity to the Apple Watch is also considered, including a paired watch not being reachable for an extended period, and general loss of connectivity to that watch. Presumably if that loss of contact is very sudden, then the AutoLock feature will realize something is up. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ZhVLRJCFGxVjGeDa3TaWmK" name="iPhone 18 Pro and Pro Max-LIST3" alt="Apple iPhone 18 Pro and Pro Max shown in hand" src="https://cdn.mos.cms.futurecdn.net/ZhVLRJCFGxVjGeDa3TaWmK-1920-80.jpg" mos="" align="middle" fullscreen="" width="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 code also refers to being disconnected from the network for extended periods. This would be consistent with thieves switching a phone into Airplane mode in an attempt to evade Find My Device — either for tracking or remotely locking down the phone.</p><p>Finally it's said that AutoLock could engage when a device has been unlocked beyond a specific time interval. This suggests that there may be circumstances where AutoLock can engage after being snatched, rather than during the process — the way Android's version of the feature does. </p><p>The code also makes reference to safeguards designed to avoid false positives, including location-based systems that would prevent AutoLock engaging in familiar locations like home ort work — similar to how Apple's Stolen Device Protection works. Other safeguards mention a veto system, in which certain features can override a request to AutoLock, biometric authentication, and a "backoff mechanism" that temporarily prevents automatic locks after repeated AutoLock events.</p><p>Naturally, this feature is still a work in progress, and that means things can (and likely will) change between now and the official release. So don't expect the final feature to arrive in this exact form, whenever that day might actually be.</p><h2 id="why-it-39-s-important-to-have">Why it's important to have</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:800px;"><p class="vanilla-image-block" style="padding-top:56.38%;"><img id="VPuL7vHqvy6jxRAx7DGCa5" name="ezgif-3cd59d6018ef1adf" alt="android theft detection lock in action" src="https://cdn.mos.cms.futurecdn.net/VPuL7vHqvy6jxRAx7DGCa5-1920-80.gif" mos="" align="middle" fullscreen="" width="800" height="451" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I doubt there's anyone reading this that hasn't heard about phone snatching, and many of you may have experienced it first hand. It's become quite a problem, especially in big cities and places with lax enforcement of rules regarding ebikes and mopeds.</p><p>It certainly doesn't help that we use our phones so much, and some people tend to wander around with their phones out, oblivious to the fact that they're putting their device at risk. Last time my wife and I both went to London, I repeatedly had to tell her to put her phone away because she has the awful habit of absentmindedly wandering around with her phone by her side. It's a problem made worse by the fact it's so hard to find women's clothing with phone-friendly pockets. </p><p>Really, we should know to keep our phones more secure. Not only are they expensive devices, the amount of data we keep in them is arguably worth more than the hardware itself. Banking apps, social media, personal photos and videos, the list is endless. The last thing you need is for someone to snatch your phone and gain access to all that data, simply because your phone was unlocked at the wrong moment.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="FEW6JLUCgz8R9HCaQNPqoK" name="iPhone 18 Pro and Pro Max-13" alt="Apple iPhone 18 Pro and Pro Max shown in hand" src="https://cdn.mos.cms.futurecdn.net/FEW6JLUCgz8R9HCaQNPqoK-1920-80.jpg" mos="" align="middle" fullscreen="" width="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>Obviously staying vigilant, and ensuring your phone is not exposed unnecessarily is always going to be the best way to avoid drive-by phone snatching. But it's foolish to assume that you can stay safe 100% of the time, and there will be points where you need to use your phone and your guard is down just enough for an opportunistic thief to swoop by and grab it from your hands.</p><p>Having a system that locks your phone down means it's that bit harder for a thief to access your data, or attempt to wipe the phone and sell it on for a profit. Crucially it gives you a little more time to find a way to get into Find My Device and lock the device down — significantly reducing its value to the potential thieves.</p><p>AutoLock wouldn't be the only system helping to safeguard your data. Stolen Device Protection has measures to stop potential thieves from accessing key areas of your device — including Find My settings, your Apple account and factory reset. Most importantly, it also works if the thief knows your PIN, since it relies on biometric security. Apple also forces your iPhone to <a href="https://www.tomsguide.com/phones/iphones/ios-18-will-force-your-iphone-to-reboot-after-3-days-heres-why-that-matters"><u>restart after 72 hours of inactivity</u></a>, which encrypts your device and makes it even harder for thieves to try and break in.</p><p>Replacing a phone sucks, especially if it isn't covered by AppleCare+ or some other form of insurance. But the cost of a new phone pales in comparison to the cost of losing control of your accounts and data.</p><h2 id="bottom-line-2">Bottom line</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3858px;"><p class="vanilla-image-block" style="padding-top:52.57%;"><img id="D8JHojF7g6q5yQJozcyjDN" name="shutterstock_2746260993" alt="iOS 27 features" src="https://cdn.mos.cms.futurecdn.net/D8JHojF7g6q5yQJozcyjDN-1920-80.jpg" mos="" align="middle" fullscreen="" width="3858" height="2028" 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>It's important to keep tabs on your phone, no matter where you are or how secure you might feel in the moment. Constant vigilance is a nice idea in theory, but it's not realistically possible. For that reason, it's great that phone companies are continually adding features to keep your devices secure, and lock everything down in the event that your phone is stolen.</p><p>I'm mainly an Android user, and I've lost track of the number of times I've looked at my phone and been met with a notification telling me the screen has auto-locked because it thought someone was stealing it. Some may find that slightly irritating, but not me. Considering how easy it is to unlock a smartphone with biometrics (be it a fingerprint or Face ID), I'd rather the software be a little more cautious and ask me to unlock my phone again than face the alternative. </p><p>And the sooner Apple implements that feature on iPhones, the better.</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/phones/android-phones/googles-android-president-on-apple-iphone-duo-android-is-usually-where-you-see-the-future-first">Android president on Apple's iPhone Duo: 'I'm glad to see more people joining what is now the obvious party'</a></li><li><a href="https://www.tomsguide.com/phones/iphones/forget-iphone-18-pro-9-reasons-to-wait-for-the-iphone-20">Forget iPhone 18 Pro — 9 reasons to wait for the iPhone 20</a></li><li><a href="https://www.tomsguide.com/phones/i-finally-unlinked-my-iphone-alarm-from-my-ringer-volume-here-is-where-apple-hid-it-in-ios-27">I finally unlinked my iPhone alarm from my ringer volume — here is where Apple hid it in iOS 27</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/phones/iphones/ios-27-didnt-add-this-anti-snatching-feature-to-iphone-but-that-doesnt-mean-its-been-cancelled-heres-why-its-important</link>
                                                                            <description>
                            <![CDATA[ Apple seems to be still working on its own version of Android's anti-snatching feature, and the sooner it launches on iOS, the better. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">CQti3CRxTjVk7rprY2Go64</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/473VNvCMPfhDkYKpe3aJjK-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 24 Sep 2026 05:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[iPhones]]></category>
                                                    <category><![CDATA[Phones]]></category>
                                                                                                <author><![CDATA[ tom.pritchard@futurenet.com (Tom Pritchard) ]]></author>                    <dc:creator><![CDATA[ Tom Pritchard ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/biCewUkKfSA6QnT2HxVc3f-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/473VNvCMPfhDkYKpe3aJjK-1920-80.jpg">
                                                            <media:credit><![CDATA[Tom&amp;#39;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Apple iPhone 18 Pro and Pro Max shown in hand]]></media:description>                                                            <media:text><![CDATA[Apple iPhone 18 Pro and Pro Max shown in hand]]></media:text>
                                <media:title type="plain"><![CDATA[Apple iPhone 18 Pro and Pro Max shown in hand]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/473VNvCMPfhDkYKpe3aJjK-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Back in March we heard rumors that <a href="https://www.tomsguide.com/phones/iphones/the-iphone-could-steal-one-of-the-best-android-features-and-im-all-for-it">Apple could add an important anti-theft feature to iPhones</a>: the ability for iOS to lock everything down in the event your phone is snatched out of your hands. While I had hoped that such a feature could launch with iOS 27, that hasn't happened — but it doesn't mean anti-snatch protection is dead in the water.</p><p>Code discovered in the newly released<a href="https://www.tomsguide.com/phones/iphones/ios-27-2-beta-is-here-5-biggest-upgrades-for-your-iphone-including-a-revamped-health-app"> iOS 27.2 beta</a> reveals that Apple<a href="https://9to5mac.com/2026/09/21/ios-27-2-beta-2-reveals-new-details-about-unnanounced-iphone-anti-snatching-feature/" target="_blank"> could still be working</a> on this feature — as well as what signals could end up triggering it in the real world.</p><p>Google launched something similar last year, <a href="https://www.tomsguide.com/phones/android-phones/android-just-got-a-trio-of-powerful-anti-theft-upgrades-heres-how-they-work">known as Theft Detection Lock</a>, and I'm glad to see that Apple is still powering ahead with its own version. Considering how much we have on our phone, and how easy they are to steal, there's no such thing as having too much protection from thieves and other criminals.</p><h2 id="how-apple-39-s-anti-snatching-feature-might-work">How Apple's anti-snatching feature might work</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="MkwV9aEEchURoBBVdNhcse" name="iPhone 18 Pro and Pro Max-5" alt="Apple iPhone 18 Pro Max" src="https://cdn.mos.cms.futurecdn.net/MkwV9aEEchURoBBVdNhcse-1920-80.jpg" mos="" align="middle" fullscreen="" width="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>Android's Theft Detection Lock works by detecting sudden changes in your device, using the internal sensors. So if it notices your phone suddenly jerks in one direction and takes off at speed, odds are someone has snatched your phone and started running off with it.</p><p>We assumed that Apple's version would work in a similar manner, but the uncovered code offers a little bit of detail about how iOS will register possible thefts.</p><p>Code snippets seen b<a href="https://9to5mac.com/2026/09/21/ios-27-2-beta-2-reveals-new-details-about-unnanounced-iphone-anti-snatching-feature/" target="_blank">y 9to5Mac</a> shows that the theft detection is internally known as "AutoLock," though there's no guarantee that Apple will actually use that name for the public launch. The code also suggests that AutoLock will rely on five key signals to determine whether a phone has been stolen or not.</p><p>The first trigger is the presence of a "sharp acceleration" that is "consistent with a phone being snatched." Or, in other words, the internal sensors detecting your phone moving in a way that is inconsistent with typical use. Connectivity to the Apple Watch is also considered, including a paired watch not being reachable for an extended period, and general loss of connectivity to that watch. Presumably if that loss of contact is very sudden, then the AutoLock feature will realize something is up. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ZhVLRJCFGxVjGeDa3TaWmK" name="iPhone 18 Pro and Pro Max-LIST3" alt="Apple iPhone 18 Pro and Pro Max shown in hand" src="https://cdn.mos.cms.futurecdn.net/ZhVLRJCFGxVjGeDa3TaWmK-1920-80.jpg" mos="" align="middle" fullscreen="" width="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 code also refers to being disconnected from the network for extended periods. This would be consistent with thieves switching a phone into Airplane mode in an attempt to evade Find My Device — either for tracking or remotely locking down the phone.</p><p>Finally it's said that AutoLock could engage when a device has been unlocked beyond a specific time interval. This suggests that there may be circumstances where AutoLock can engage after being snatched, rather than during the process — the way Android's version of the feature does. </p><p>The code also makes reference to safeguards designed to avoid false positives, including location-based systems that would prevent AutoLock engaging in familiar locations like home ort work — similar to how Apple's Stolen Device Protection works. Other safeguards mention a veto system, in which certain features can override a request to AutoLock, biometric authentication, and a "backoff mechanism" that temporarily prevents automatic locks after repeated AutoLock events.</p><p>Naturally, this feature is still a work in progress, and that means things can (and likely will) change between now and the official release. So don't expect the final feature to arrive in this exact form, whenever that day might actually be.</p><h2 id="why-it-39-s-important-to-have">Why it's important to have</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:800px;"><p class="vanilla-image-block" style="padding-top:56.38%;"><img id="VPuL7vHqvy6jxRAx7DGCa5" name="ezgif-3cd59d6018ef1adf" alt="android theft detection lock in action" src="https://cdn.mos.cms.futurecdn.net/VPuL7vHqvy6jxRAx7DGCa5-1920-80.gif" mos="" align="middle" fullscreen="" width="800" height="451" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I doubt there's anyone reading this that hasn't heard about phone snatching, and many of you may have experienced it first hand. It's become quite a problem, especially in big cities and places with lax enforcement of rules regarding ebikes and mopeds.</p><p>It certainly doesn't help that we use our phones so much, and some people tend to wander around with their phones out, oblivious to the fact that they're putting their device at risk. Last time my wife and I both went to London, I repeatedly had to tell her to put her phone away because she has the awful habit of absentmindedly wandering around with her phone by her side. It's a problem made worse by the fact it's so hard to find women's clothing with phone-friendly pockets. </p><p>Really, we should know to keep our phones more secure. Not only are they expensive devices, the amount of data we keep in them is arguably worth more than the hardware itself. Banking apps, social media, personal photos and videos, the list is endless. The last thing you need is for someone to snatch your phone and gain access to all that data, simply because your phone was unlocked at the wrong moment.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="FEW6JLUCgz8R9HCaQNPqoK" name="iPhone 18 Pro and Pro Max-13" alt="Apple iPhone 18 Pro and Pro Max shown in hand" src="https://cdn.mos.cms.futurecdn.net/FEW6JLUCgz8R9HCaQNPqoK-1920-80.jpg" mos="" align="middle" fullscreen="" width="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>Obviously staying vigilant, and ensuring your phone is not exposed unnecessarily is always going to be the best way to avoid drive-by phone snatching. But it's foolish to assume that you can stay safe 100% of the time, and there will be points where you need to use your phone and your guard is down just enough for an opportunistic thief to swoop by and grab it from your hands.</p><p>Having a system that locks your phone down means it's that bit harder for a thief to access your data, or attempt to wipe the phone and sell it on for a profit. Crucially it gives you a little more time to find a way to get into Find My Device and lock the device down — significantly reducing its value to the potential thieves.</p><p>AutoLock wouldn't be the only system helping to safeguard your data. Stolen Device Protection has measures to stop potential thieves from accessing key areas of your device — including Find My settings, your Apple account and factory reset. Most importantly, it also works if the thief knows your PIN, since it relies on biometric security. Apple also forces your iPhone to <a href="https://www.tomsguide.com/phones/iphones/ios-18-will-force-your-iphone-to-reboot-after-3-days-heres-why-that-matters"><u>restart after 72 hours of inactivity</u></a>, which encrypts your device and makes it even harder for thieves to try and break in.</p><p>Replacing a phone sucks, especially if it isn't covered by AppleCare+ or some other form of insurance. But the cost of a new phone pales in comparison to the cost of losing control of your accounts and data.</p><h2 id="bottom-line-2">Bottom line</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3858px;"><p class="vanilla-image-block" style="padding-top:52.57%;"><img id="D8JHojF7g6q5yQJozcyjDN" name="shutterstock_2746260993" alt="iOS 27 features" src="https://cdn.mos.cms.futurecdn.net/D8JHojF7g6q5yQJozcyjDN-1920-80.jpg" mos="" align="middle" fullscreen="" width="3858" height="2028" 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>It's important to keep tabs on your phone, no matter where you are or how secure you might feel in the moment. Constant vigilance is a nice idea in theory, but it's not realistically possible. For that reason, it's great that phone companies are continually adding features to keep your devices secure, and lock everything down in the event that your phone is stolen.</p><p>I'm mainly an Android user, and I've lost track of the number of times I've looked at my phone and been met with a notification telling me the screen has auto-locked because it thought someone was stealing it. Some may find that slightly irritating, but not me. Considering how easy it is to unlock a smartphone with biometrics (be it a fingerprint or Face ID), I'd rather the software be a little more cautious and ask me to unlock my phone again than face the alternative. </p><p>And the sooner Apple implements that feature on iPhones, the better.</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/phones/android-phones/googles-android-president-on-apple-iphone-duo-android-is-usually-where-you-see-the-future-first">Android president on Apple's iPhone Duo: 'I'm glad to see more people joining what is now the obvious party'</a></li><li><a href="https://www.tomsguide.com/phones/iphones/forget-iphone-18-pro-9-reasons-to-wait-for-the-iphone-20">Forget iPhone 18 Pro — 9 reasons to wait for the iPhone 20</a></li><li><a href="https://www.tomsguide.com/phones/i-finally-unlinked-my-iphone-alarm-from-my-ringer-volume-here-is-where-apple-hid-it-in-ios-27">I finally unlinked my iPhone alarm from my ringer volume — here is where Apple hid it in iOS 27</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I’ve seen every “Nightmare on Elm Street” movie and ranked them for Halloween 2026 ]]></title>
                                                                                                <dc:content><![CDATA[ <p>For more than 40 years, Freddy Krueger has been haunting the dreams of Elm Street teens, but some nightmares are worse than others. Across six mainline installments, a spin-off, a crossover and a remake, “A Nightmare on Elm Street” has certainly left its claw marks on the horror genre. </p><p>I’ve seen every installment in the franchise, from the legendary original to the churned-out sequels that saw the once fear-inducing Freddy become more of a comical figure (Krueger even had a brief career as a rap artist in the late ‘80s. Yes, really). Despite its many lows over the years, I still have a fondness for this franchise. After all, it was my gateway into the slasher subgenre.</p><p>With Halloween 2026 approaching, it’s the perfect time to stock your seasonal watchlist with some great horror movies. So if you’re looking to take a trip to Springwood this spooky season, here are all nine “A Nightmare on Elm Street” movies ranked from worst to best.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eAGdqO"></div>                            </div>                            <script src="https://kwizly.com/embed/eAGdqO.js" async></script><h3 class="article-body__section" id="section-every-nightmare-on-elm-street-movie-ranked-from-worst-to-best"><span>Every 'Nightmare on Elm Street' movie ranked, from worst to best</span></h3><h2 id="9-freddy-s-dead-the-final-nightmare-1991">9. ’Freddy’s Dead: The Final Nightmare’ (1991)</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/Vm5PYf1WqMQ" allowfullscreen></iframe></div></div><p>“They saved the best for last,” reads the poster, a statement so patently untrue it's basically false advertising. By the 6th mainline installment in the “Elm Street” franchise, Freddy was running on fumes. Any scariness had long been washed away by campy comedy and a desire to make kills more elaborate to the point of them becoming nonsensical. Freddy was always a cartoonish evil villain, but “The Final Nightmare” plays out like a literal cartoon. </p><p>“Freddy’s Dead: The Final Nightmare” also marked New Line Cinema’s first 3D theatrical release, but this was the ‘90s, so we’re not talking “Avatar” quality 3D; no, Freddy’s finale was presented in the old-school red-and-blue kind. So aside from the pain of paying actual money to watch a truly awful movie, anybody who watched this in theaters had to endure the public shame of looking like a dork in a pair of flimsy cardboard glasses. That’s insult to injury.</p><p><em><strong>Watch on </strong></em><a href="https://www.amazon.com/gp/video/detail/B09KFD59WD" target="_blank" rel="nofollow"><em><strong>Prime Video (buy/rent)</strong></em></a><em><strong> now</strong></em></p><h2 id="8-a-nightmare-on-elm-street-2010">8. ’A Nightmare on Elm Street’ (2010)</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/CIyLNm_-qH4" allowfullscreen></iframe></div></div><p>Horror remakes dominated the genre in the 2000s, and arriving late to the party as the 2010s began was “A Nightmare on Elm Street.” It’s the movie you know (and probably love) but now “darker,” with all the ‘80s slasher fun sucked out of it. None of this is the fault of the cast, and Jackie Earle Haley did a commendable job taking over the role of Freddy from the legendary Robert Englund, but 2010’s “Elm Street” is a prime example of a botched remake.</p><p>I can appreciate the desire to make Freddy scary again. As discussed, by the time the mainline series wrapped up, he had morphed into a quip machine, liable to elicit audience cheers rather than screams. However, this remake veers too far in the other direction. It’s a dour horror effort that too closely walks the narrative path of its predecessor, failing to carve out its own identity. Hopefully <a href="https://www.hollywoodreporter.com/movies/movie-news/nightmare-on-elm-street-movie-paramount-1236646496/" target="_blank">the second stab at a franchise revival</a> is more successful.</p><p><em><strong>Watch on </strong></em><a href="https://www.amazon.com/gp/video/detail/B00BR6B21M" target="_blank" rel="nofollow"><em><strong>Prime Video (buy/rent)</strong></em></a><em><strong> now</strong></em></p><h2 id="7-a-nightmare-on-elm-street-2-freddy-s-revenge-1985">7. ’A Nightmare on Elm Street 2: Freddy’s Revenge’ (1985)</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/9iqNVyjwLFA" allowfullscreen></iframe></div></div><p>“A Nightmare on Elm Street 2: Freddy’s Revenge” is maybe the most fascinating film in the franchise. It was met with poor reviews when released in 1985, but over the years it developed a cult following and has been analyzed for its homoerotic themes, even labeled a “Queer Film.” Many viewers argue that protagonist Jesse’s (Mark Patton) tussle with Freddy is an allegory for his struggles to accept his sexuality. And it’s hard to deny that subtext. </p><p>Much as we needed more queer-focused movies in the 1980s, and still absolutely need more of them today, strong subtext doesn’t automatically make a movie good, and in the case of “Freddy’s Revenge,” it just makes the shlocky slasher more interesting to dissect, but doesn’t erase the numerous flaws that remain, like the in-universe rules being discarded and the oh-so ridiculous pool party scene where Freddy waddles around tossing deck chairs.</p><p><em><strong>Watch on </strong></em><a href="https://www.amazon.com/gp/video/detail/B00CYOYS9E" target="_blank" rel="nofollow"><em><strong>Prime Video (buy/rent)</strong></em></a><em><strong> now</strong></em></p><h2 id="6-freddy-vs-jason-2003">6. ‘Freddy vs. Jason’ (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/ij9c4_yFwks" allowfullscreen></iframe></div></div><p>“A Nightmare on Elm Street” and “Friday the 13th” have always been closely linked. Both debuted in the 1980s, received a slew of sequels (which <em>greatly </em>varied in quality), and the debate over who would win in a fight, Freddy Krueger or Jason Voorhees, raged into the 21st century. “Freddy vs. Jason” was a long time coming. Was it worth the wait? Probably not.</p><p>The movie might be titled “Freddy vs. Jason,” but a disproportionate amount of time is spent with a painfully weak cast of teens, including a feature-film debut for Destiny’s Child singer Kelly Rowland. When the young cast is culled and the headline bout begins, there is cheap fun to be had watching these horror titans clash, but it’s short-lived. The film’s refusal to pick a side, ending on a note of ambiguity, also feels like a cop out. I guess the debate rages on.</p><p><em><strong>Watch on </strong></em><a href="https://www.amazon.com/gp/video/detail/B00BS5B884" target="_blank" rel="nofollow"><em><strong>Prime Video (buy/rent)</strong></em></a><em><strong> now</strong></em></p><h2 id="5-a-nightmare-on-elm-street-5-the-dream-child-1989">5. ‘A Nightmare on Elm Street 5: The Dream Child’ (1989)</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/kBfdv9EWy80" allowfullscreen></iframe></div></div><p>“A Nightmare on Elm Street 5: The Dream Child” had a torturous production, with constant eleventh-hour script changes and difficulty getting some scenes past the MPAA to secure an R-rating. These hurdles show in the final production, which feels messy and unfocused, but at least it has Robert Englund’s Freddy to fall back on, a reliable source of sinister snark.</p><p>To give the movie some credit, I appreciate that the later “Elm Street” sequels went big on the continuity, continuing the stories of the survivors of previous encounters with Freddy rather than constantly wiping the slate clean. It helps to make the human cast more compelling. But overall, “The Dream Child” is maybe the most forgettable film in the franchise. It’s by no means the worst, but it doesn’t enter the discussion for the series best. </p><p><em><strong>Watch on </strong></em><a href="https://www.amazon.com/gp/video/detail/B0G6GBW2J1" target="_blank" rel="nofollow"><em><strong>Prime Video (buy/rent)</strong></em></a><em><strong> now</strong></em></p><h2 id="4-a-nightmare-on-elm-street-4-the-dream-master-1988">4. ‘A Nightmare on Elm Street 4: The Dream Master’ (1988)</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/jc-9vF9F_eg" allowfullscreen></iframe></div></div><p>Picking up where the fan-favorite “Dream Warriors” left off, “The Dream Master” is certainly a step down. However, it’s a respectable sequel with Freddy at his sadistic best, killing teens in brutally creative ways and making dark jokes in the process. It’s also capable of doing something that almost no other movie ever could: Making pizza seem unappealing! </p><p>The strong use of practical effects (a recurring trend in the franchise) deserves praise here. You could accuse “The Dream Master” of spinning its wheels. By the third sequel, the “Elm Street” formula was well established, and there’s little attempt to mix things up this time around. But if you want to watch Freddy Krueger terrorizing some teens, it has its charms.</p><p><em><strong>Watch on </strong></em><a href="https://www.amazon.com/gp/video/detail/B09Q5XC5DZ" target="_blank" rel="nofollow"><em><strong>Prime Video (buy/rent)</strong></em></a><em><strong> now</strong></em></p><h2 id="3-a-nightmare-on-elm-street-3-dream-warriors-1987">3. ‘A Nightmare on Elm Street 3: Dream Warriors’ (1987)</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/oy-hgBu1h0w" allowfullscreen></iframe></div></div><p>Now we’re getting to the good stuff. “A Nightmare on Elm Street 3: Dream Warriors” bounced back from the poor reception to the second movie and delivered a slasher that hits all the right notes. For starters, Patricia Arquette plays the new final girl, Kristen, and if that wasn’t enough, Heather Langenkamp returns as original Freddy survivor Nancy. “Elm Street” was doing returning legacy characters before “legacy sequels” were a thing!</p><p>Franchise creator Wes Craven also returned to co-write the screenplay, and rather than lazily recycling the first movie’s narrative beats, “The Dream Warriors” expands the franchise’s mythos, giving its group of troubled teens a way of fighting back against the villain stalking their sleep. Englund really hits his stride as Freddy, and once again the practical effects are excellent.</p><p><em><strong>Watch on </strong></em><a href="https://www.amazon.com/gp/video/detail/B00D5VOIUY" target="_blank" rel="nofollow"><em><strong>Prime Video (buy/rent)</strong></em></a><em><strong> now</strong></em></p><h2 id="2-wes-craven-s-new-nightmare-1994">2. ‘Wes Craven’s New Nightmare’ (1994)</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/aQw9sjwf0O8" allowfullscreen></iframe></div></div><p>Wes Craven (again) returned to the franchise he started with “New Nightmare” and delivered a movie that is only rivaled by the pretty much untouchable original. It’s a meta horror movie set in the “real world,” exploring many of the themes that Craven would tackle head-on just a couple of years later with “Scream,” a self-referential slasher series still getting sequels. </p><p>Heather Langenkamp is also back, but she’s not playing Nancy; instead, she plays herself. The movie sees Heather stalked by visions of the supposed fictional Freddy Krueger (Robert Englund) after being asked to reprise her iconic role in a new “Elm Street” movie. It’s a clever setup, and Wes Craven uses his meta approach to explore both the horror genre and the "Elm Street" legacy. It also offers a darker take on Freddy, but finds the right balance, avoiding the overly serious tone of the “Nightmare on Elm Street” remake. </p><p><em><strong>Watch on </strong></em><a href="https://www.amazon.com/gp/video/detail/B0CC7XWP7T" target="_blank" rel="nofollow"><em><strong>Prime Video (buy/rent)</strong></em></a><em><strong> now</strong></em></p><h2 id="1-a-nightmare-on-elm-street-1984">1. ‘A Nightmare on Elm Street’ (1984)</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/dCVh4lBfW-c" allowfullscreen></iframe></div></div><p>“A Nightmare on Elm Street” is one of those franchises where there’s just no beating the original. It’s the perfect distillation of everything good about the Freddy Krueger character and his twisted campaign to get revenge against those responsible for his death. Built around a phenomenal idea — what if a horror villain murdered you in your sleep — it might lack the humor and elaborate kills the series became known for, but it’s the most chilling. </p><p>Introducing the world to Robert Englund’s Freddy, and a beloved final girl in Nancy Thompson, not to mention marking the movie debut of one Johnny Depp, “A Nightmare on Elm Street” deserves its lofty position in the horror hall of fame. Though it’s a shame the closing stinger is ruined by one of the most obvious uses of a stunt dummy in movie history. Still, that fear-ruining hilarity aside, this slasher classic brought viewers into a terrifying dream world, and the franchise has been trying to recapture that haunting magic ever since.</p><p><em><strong>Watch on </strong></em><a href="https://www.amazon.com/gp/video/detail/B00BQTHOLW" target="_blank" rel="nofollow"><em><strong>Prime Video (buy/rent)</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/movies/think-youre-a-horror-movie-expert-see-if-you-can-get-100-percent-on-our-quiz-covering-the-classics-from-halloween-to-the-exorcist">Take our classic horror quiz, from ‘Halloween’ to ‘The Exorcist’</a></li><li><a href="https://www.tomsguide.com/entertainment/movies/resident-evil-2026-review">'Resident Evil' review: Officially the best video game movie of all time</a></li><li><a href="https://www.tomsguide.com/entertainment/movies/we-rated-the-scariness-of-the-14-biggest-horror-movies-of-2026-so-far-including-obsession-backrooms-scream-7-and-more">We rated the scariness of the 14 biggest horror movies of 2026 (so far)</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/movies/ive-seen-every-nightmare-on-elm-street-movie-and-ranked-them-for-halloween-2026</link>
                                                                            <description>
                            <![CDATA[ I've watched every "A Nightmare on Elm Street" movie, even the awful ones, and ranked them from best to worst ahead of Halloween season. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">hrofg4Chinr3YNZGu98WMM</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/oP22ViFjXUHCzj7A6DoSdc-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 24 Sep 2026 04:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Movies]]></category>
                                                    <category><![CDATA[Entertainment]]></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/oP22ViFjXUHCzj7A6DoSdc-1920-80.jpg">
                                                            <media:credit><![CDATA[Alamy / New Line Cinema]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Robert Englund as Freddy Krueger in &quot;Freddy vs. Jason&quot;]]></media:description>                                                            <media:text><![CDATA[Robert Englund as Freddy Krueger in &quot;Freddy vs. Jason&quot;]]></media:text>
                                <media:title type="plain"><![CDATA[Robert Englund as Freddy Krueger in &quot;Freddy vs. Jason&quot;]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/oP22ViFjXUHCzj7A6DoSdc-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>For more than 40 years, Freddy Krueger has been haunting the dreams of Elm Street teens, but some nightmares are worse than others. Across six mainline installments, a spin-off, a crossover and a remake, “A Nightmare on Elm Street” has certainly left its claw marks on the horror genre. </p><p>I’ve seen every installment in the franchise, from the legendary original to the churned-out sequels that saw the once fear-inducing Freddy become more of a comical figure (Krueger even had a brief career as a rap artist in the late ‘80s. Yes, really). Despite its many lows over the years, I still have a fondness for this franchise. After all, it was my gateway into the slasher subgenre.</p><p>With Halloween 2026 approaching, it’s the perfect time to stock your seasonal watchlist with some great horror movies. So if you’re looking to take a trip to Springwood this spooky season, here are all nine “A Nightmare on Elm Street” movies ranked from worst to best.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eAGdqO"></div>                            </div>                            <script src="https://kwizly.com/embed/eAGdqO.js" async></script><h3 class="article-body__section" id="section-every-nightmare-on-elm-street-movie-ranked-from-worst-to-best"><span>Every 'Nightmare on Elm Street' movie ranked, from worst to best</span></h3><h2 id="9-freddy-s-dead-the-final-nightmare-1991">9. ’Freddy’s Dead: The Final Nightmare’ (1991)</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/Vm5PYf1WqMQ" allowfullscreen></iframe></div></div><p>“They saved the best for last,” reads the poster, a statement so patently untrue it's basically false advertising. By the 6th mainline installment in the “Elm Street” franchise, Freddy was running on fumes. Any scariness had long been washed away by campy comedy and a desire to make kills more elaborate to the point of them becoming nonsensical. Freddy was always a cartoonish evil villain, but “The Final Nightmare” plays out like a literal cartoon. </p><p>“Freddy’s Dead: The Final Nightmare” also marked New Line Cinema’s first 3D theatrical release, but this was the ‘90s, so we’re not talking “Avatar” quality 3D; no, Freddy’s finale was presented in the old-school red-and-blue kind. So aside from the pain of paying actual money to watch a truly awful movie, anybody who watched this in theaters had to endure the public shame of looking like a dork in a pair of flimsy cardboard glasses. That’s insult to injury.</p><p><em><strong>Watch on </strong></em><a href="https://www.amazon.com/gp/video/detail/B09KFD59WD" target="_blank" rel="nofollow"><em><strong>Prime Video (buy/rent)</strong></em></a><em><strong> now</strong></em></p><h2 id="8-a-nightmare-on-elm-street-2010">8. ’A Nightmare on Elm Street’ (2010)</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/CIyLNm_-qH4" allowfullscreen></iframe></div></div><p>Horror remakes dominated the genre in the 2000s, and arriving late to the party as the 2010s began was “A Nightmare on Elm Street.” It’s the movie you know (and probably love) but now “darker,” with all the ‘80s slasher fun sucked out of it. None of this is the fault of the cast, and Jackie Earle Haley did a commendable job taking over the role of Freddy from the legendary Robert Englund, but 2010’s “Elm Street” is a prime example of a botched remake.</p><p>I can appreciate the desire to make Freddy scary again. As discussed, by the time the mainline series wrapped up, he had morphed into a quip machine, liable to elicit audience cheers rather than screams. However, this remake veers too far in the other direction. It’s a dour horror effort that too closely walks the narrative path of its predecessor, failing to carve out its own identity. Hopefully <a href="https://www.hollywoodreporter.com/movies/movie-news/nightmare-on-elm-street-movie-paramount-1236646496/" target="_blank">the second stab at a franchise revival</a> is more successful.</p><p><em><strong>Watch on </strong></em><a href="https://www.amazon.com/gp/video/detail/B00BR6B21M" target="_blank" rel="nofollow"><em><strong>Prime Video (buy/rent)</strong></em></a><em><strong> now</strong></em></p><h2 id="7-a-nightmare-on-elm-street-2-freddy-s-revenge-1985">7. ’A Nightmare on Elm Street 2: Freddy’s Revenge’ (1985)</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/9iqNVyjwLFA" allowfullscreen></iframe></div></div><p>“A Nightmare on Elm Street 2: Freddy’s Revenge” is maybe the most fascinating film in the franchise. It was met with poor reviews when released in 1985, but over the years it developed a cult following and has been analyzed for its homoerotic themes, even labeled a “Queer Film.” Many viewers argue that protagonist Jesse’s (Mark Patton) tussle with Freddy is an allegory for his struggles to accept his sexuality. And it’s hard to deny that subtext. </p><p>Much as we needed more queer-focused movies in the 1980s, and still absolutely need more of them today, strong subtext doesn’t automatically make a movie good, and in the case of “Freddy’s Revenge,” it just makes the shlocky slasher more interesting to dissect, but doesn’t erase the numerous flaws that remain, like the in-universe rules being discarded and the oh-so ridiculous pool party scene where Freddy waddles around tossing deck chairs.</p><p><em><strong>Watch on </strong></em><a href="https://www.amazon.com/gp/video/detail/B00CYOYS9E" target="_blank" rel="nofollow"><em><strong>Prime Video (buy/rent)</strong></em></a><em><strong> now</strong></em></p><h2 id="6-freddy-vs-jason-2003">6. ‘Freddy vs. Jason’ (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/ij9c4_yFwks" allowfullscreen></iframe></div></div><p>“A Nightmare on Elm Street” and “Friday the 13th” have always been closely linked. Both debuted in the 1980s, received a slew of sequels (which <em>greatly </em>varied in quality), and the debate over who would win in a fight, Freddy Krueger or Jason Voorhees, raged into the 21st century. “Freddy vs. Jason” was a long time coming. Was it worth the wait? Probably not.</p><p>The movie might be titled “Freddy vs. Jason,” but a disproportionate amount of time is spent with a painfully weak cast of teens, including a feature-film debut for Destiny’s Child singer Kelly Rowland. When the young cast is culled and the headline bout begins, there is cheap fun to be had watching these horror titans clash, but it’s short-lived. The film’s refusal to pick a side, ending on a note of ambiguity, also feels like a cop out. I guess the debate rages on.</p><p><em><strong>Watch on </strong></em><a href="https://www.amazon.com/gp/video/detail/B00BS5B884" target="_blank" rel="nofollow"><em><strong>Prime Video (buy/rent)</strong></em></a><em><strong> now</strong></em></p><h2 id="5-a-nightmare-on-elm-street-5-the-dream-child-1989">5. ‘A Nightmare on Elm Street 5: The Dream Child’ (1989)</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/kBfdv9EWy80" allowfullscreen></iframe></div></div><p>“A Nightmare on Elm Street 5: The Dream Child” had a torturous production, with constant eleventh-hour script changes and difficulty getting some scenes past the MPAA to secure an R-rating. These hurdles show in the final production, which feels messy and unfocused, but at least it has Robert Englund’s Freddy to fall back on, a reliable source of sinister snark.</p><p>To give the movie some credit, I appreciate that the later “Elm Street” sequels went big on the continuity, continuing the stories of the survivors of previous encounters with Freddy rather than constantly wiping the slate clean. It helps to make the human cast more compelling. But overall, “The Dream Child” is maybe the most forgettable film in the franchise. It’s by no means the worst, but it doesn’t enter the discussion for the series best. </p><p><em><strong>Watch on </strong></em><a href="https://www.amazon.com/gp/video/detail/B0G6GBW2J1" target="_blank" rel="nofollow"><em><strong>Prime Video (buy/rent)</strong></em></a><em><strong> now</strong></em></p><h2 id="4-a-nightmare-on-elm-street-4-the-dream-master-1988">4. ‘A Nightmare on Elm Street 4: The Dream Master’ (1988)</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/jc-9vF9F_eg" allowfullscreen></iframe></div></div><p>Picking up where the fan-favorite “Dream Warriors” left off, “The Dream Master” is certainly a step down. However, it’s a respectable sequel with Freddy at his sadistic best, killing teens in brutally creative ways and making dark jokes in the process. It’s also capable of doing something that almost no other movie ever could: Making pizza seem unappealing! </p><p>The strong use of practical effects (a recurring trend in the franchise) deserves praise here. You could accuse “The Dream Master” of spinning its wheels. By the third sequel, the “Elm Street” formula was well established, and there’s little attempt to mix things up this time around. But if you want to watch Freddy Krueger terrorizing some teens, it has its charms.</p><p><em><strong>Watch on </strong></em><a href="https://www.amazon.com/gp/video/detail/B09Q5XC5DZ" target="_blank" rel="nofollow"><em><strong>Prime Video (buy/rent)</strong></em></a><em><strong> now</strong></em></p><h2 id="3-a-nightmare-on-elm-street-3-dream-warriors-1987">3. ‘A Nightmare on Elm Street 3: Dream Warriors’ (1987)</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/oy-hgBu1h0w" allowfullscreen></iframe></div></div><p>Now we’re getting to the good stuff. “A Nightmare on Elm Street 3: Dream Warriors” bounced back from the poor reception to the second movie and delivered a slasher that hits all the right notes. For starters, Patricia Arquette plays the new final girl, Kristen, and if that wasn’t enough, Heather Langenkamp returns as original Freddy survivor Nancy. “Elm Street” was doing returning legacy characters before “legacy sequels” were a thing!</p><p>Franchise creator Wes Craven also returned to co-write the screenplay, and rather than lazily recycling the first movie’s narrative beats, “The Dream Warriors” expands the franchise’s mythos, giving its group of troubled teens a way of fighting back against the villain stalking their sleep. Englund really hits his stride as Freddy, and once again the practical effects are excellent.</p><p><em><strong>Watch on </strong></em><a href="https://www.amazon.com/gp/video/detail/B00D5VOIUY" target="_blank" rel="nofollow"><em><strong>Prime Video (buy/rent)</strong></em></a><em><strong> now</strong></em></p><h2 id="2-wes-craven-s-new-nightmare-1994">2. ‘Wes Craven’s New Nightmare’ (1994)</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/aQw9sjwf0O8" allowfullscreen></iframe></div></div><p>Wes Craven (again) returned to the franchise he started with “New Nightmare” and delivered a movie that is only rivaled by the pretty much untouchable original. It’s a meta horror movie set in the “real world,” exploring many of the themes that Craven would tackle head-on just a couple of years later with “Scream,” a self-referential slasher series still getting sequels. </p><p>Heather Langenkamp is also back, but she’s not playing Nancy; instead, she plays herself. The movie sees Heather stalked by visions of the supposed fictional Freddy Krueger (Robert Englund) after being asked to reprise her iconic role in a new “Elm Street” movie. It’s a clever setup, and Wes Craven uses his meta approach to explore both the horror genre and the "Elm Street" legacy. It also offers a darker take on Freddy, but finds the right balance, avoiding the overly serious tone of the “Nightmare on Elm Street” remake. </p><p><em><strong>Watch on </strong></em><a href="https://www.amazon.com/gp/video/detail/B0CC7XWP7T" target="_blank" rel="nofollow"><em><strong>Prime Video (buy/rent)</strong></em></a><em><strong> now</strong></em></p><h2 id="1-a-nightmare-on-elm-street-1984">1. ‘A Nightmare on Elm Street’ (1984)</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/dCVh4lBfW-c" allowfullscreen></iframe></div></div><p>“A Nightmare on Elm Street” is one of those franchises where there’s just no beating the original. It’s the perfect distillation of everything good about the Freddy Krueger character and his twisted campaign to get revenge against those responsible for his death. Built around a phenomenal idea — what if a horror villain murdered you in your sleep — it might lack the humor and elaborate kills the series became known for, but it’s the most chilling. </p><p>Introducing the world to Robert Englund’s Freddy, and a beloved final girl in Nancy Thompson, not to mention marking the movie debut of one Johnny Depp, “A Nightmare on Elm Street” deserves its lofty position in the horror hall of fame. Though it’s a shame the closing stinger is ruined by one of the most obvious uses of a stunt dummy in movie history. Still, that fear-ruining hilarity aside, this slasher classic brought viewers into a terrifying dream world, and the franchise has been trying to recapture that haunting magic ever since.</p><p><em><strong>Watch on </strong></em><a href="https://www.amazon.com/gp/video/detail/B00BQTHOLW" target="_blank" rel="nofollow"><em><strong>Prime Video (buy/rent)</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/movies/think-youre-a-horror-movie-expert-see-if-you-can-get-100-percent-on-our-quiz-covering-the-classics-from-halloween-to-the-exorcist">Take our classic horror quiz, from ‘Halloween’ to ‘The Exorcist’</a></li><li><a href="https://www.tomsguide.com/entertainment/movies/resident-evil-2026-review">'Resident Evil' review: Officially the best video game movie of all time</a></li><li><a href="https://www.tomsguide.com/entertainment/movies/we-rated-the-scariness-of-the-14-biggest-horror-movies-of-2026-so-far-including-obsession-backrooms-scream-7-and-more">We rated the scariness of the 14 biggest horror movies of 2026 (so far)</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I tested Apple’s new Mac mini with M6 — 5 reasons to buy and 2 reasons to skip ]]></title>
                                                                                                <dc:content><![CDATA[ <p>If you’ve been waiting for Apple’s smallest desktop to get a true performance jump, you’re in luck: the new <a href="https://www.tomsguide.com/computing/apple-desktops/mac-mini-m6-review">Mac mini M6</a> is finally here. While it keeps a nearly identical design to its predecessor, this latest model packs major under-the-hood upgrades that make it an even better productivity machine.</p><p>For starters, you get faster single-core and multi-core performance thanks to Apple’s <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>. Built on a more efficient 2nm process, it features a Dual 16-Core Neural Engine for local AI tasks, along with an upgraded 12-core GPU for a dramatically better gaming experience.</p><p>That speed comes with a trade-off, though. At $899, the Mac mini M6 carries a higher starting price, and anyone hoping for a visual redesign or new colorways will find the exterior virtually unchanged.</p><p>Whether you’re upgrading from an older Mac mini or picking up your very first Mac, here is everything you need to know about the Mac mini M6 — along with five reasons to buy and two reasons you might want to skip Apple’s latest mini desktop.</p><div class="product"><a data-dimension112="e9375da0-b6c8-11f1-b160-dffe8a3bb377" data-action="Deal Block" data-label="Mac mini M6" data-dimension48="Mac mini M6" data-dimension25="$899" href="https://www.amazon.com/Apple-2026-mini-Desktop-Computer/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.</p><p><strong>Price check:</strong><a href="https://www.apple.com/us-edu/shop/buy-mac" target="_blank" rel="nofollow" data-dimension112="e9375da0-b6c8-11f1-b160-dffe8a3bb377" data-action="Deal Block" data-label="Mac mini M6" data-dimension48="Mac mini M6" data-dimension25="$899"><strong> $799 @ Apple</strong></a><strong> </strong>(with Education discount)<a class="view-deal button" href="https://www.amazon.com/Apple-2026-mini-Desktop-Computer/dp/B0HGGJZ92H?th=1" target="_blank" rel="nofollow" data-dimension112="e9375da0-b6c8-11f1-b160-dffe8a3bb377" data-action="Deal Block" data-label="Mac mini M6" data-dimension48="Mac mini M6" data-dimension25="$899">View Deal</a></p></div><h3 class="article-body__section" id="section-mac-mini-m6-reasons-to-buy"><span>Mac mini M6: Reasons to buy</span></h3><h2 id="same-tiny-footprint">Same tiny footprint</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="GzR7CHWY6tJNXEG3FM6QiV" name="Mac Mini M6--1-LIST" alt="A person holding a Mac mini with M6 in hand" src="https://cdn.mos.cms.futurecdn.net/GzR7CHWY6tJNXEG3FM6QiV-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 Mac mini M6 isn’t just one of the <a href="https://www.tomsguide.com/us/best-mini-pc.html">best mini PCs</a>; it’s also one of the smallest. At 5 x 5 x 2 inches, it’s tiny and won’t take up much space on your desk. Also, since it has an internal power supply, you don’t have to worry about a bulky power brick. This makes cable management a breeze, and it's easy to move your Mac mini from room to room or even travel with it.</p><p>For an even cleaner desk setup, I’d recommend Bluetooth accessories like Apple’s Magic Keyboard, Magic Mouse, or Magic Trackpad. If you want more customization, though, <a href="https://www.tomsguide.com/computing/i-went-all-in-on-logitechs-mx-master-series-for-my-new-desk-setup-and-this-accessory-was-the-real-game-changer">Logitech’s MX Master Series</a> is also a great fit for Apple’s smallest Mac.</p><h2 id="massive-m6-speed-boost">Massive M6 speed boost</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="GKTvnQnuvZpnmLiVjnrh67" name="Mac Mini M6--7" alt="A desk setup built around the Mac Mini with M6 with an Apple Studio Display XDR monitor" src="https://cdn.mos.cms.futurecdn.net/GKTvnQnuvZpnmLiVjnrh67-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>Don’t get me wrong, the <a href="https://www.tomsguide.com/computing/desktop-computers/mac-mini-m4-review">Mac mini M4</a> was a big step up over the <a href="https://www.tomsguide.com/computing/desktop-computers/i-just-broke-the-first-rule-of-buying-apple-products-i-bought-a-new-mac-mini-ahead-of-the-m4-mac-launch">Mac mini M2</a>. However, with the M6 chip in this new model, our benchmark tests showed results that were closer to the Mac mini M4 Pro. For instance, on the Geekbench 6 CPU benchmark, its single-core score of 4,708 easily beat the Mac mini M4 Pro by nearly a thousand points. The multi-core results were slightly under the M4 Pro’s at 21,405 (versus 22,661) but were 44% faster than the base M4.</p><p>The Mac mini M6 will be a big upgrade for most workflows. However, if you plan to edit video or do more intensive tasks on your Mac mini, budget an extra $200-$400 for extra storage and RAM when configuring your system. Though 16GB of RAM is more than enough for most tasks, choosing a 512GB SSD over the standard 256GB one unlocks full multi-channel PCIe Gen 4 storage bandwidth on Apple Silicon, resulting in faster exports and file transfers.</p><h2 id="faster-wireless-and-wired-downloads">Faster wireless and wired downloads</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-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>Raw processing power may be the biggest upgrade with the Mac mini M6, but you also get a connectivity boost as well thanks to Apple’s custom <a href="https://www.tomsguide.com/computing/routers/apple-could-make-wi-fi-just-work-with-a-new-take-on-airport-and-the-iphone-airs-wireless-chips-might-be-the-key">N1 networking chip</a>. Unlike the previous generation, this new Mac mini supports Wi-Fi 7, Bluetooth 6.0, and Thread networking thanks to the N1 chip housed inside it.</p><p>With <a href="https://www.tomsguide.com/reference/wi-fi-7-explained">Wi-Fi 7</a>, you’ll see faster downloads and uploads, while Bluetooth 6.0 brings Channel Sounding for far more accurate distance tracking, better power efficiency, and lower-latency wireless audio. With native Thread support built in, you can also use the Mac mini M6 as a smart home hub instead of an external bridge.</p><p>Finally, if you prefer a wired internet connection over wireless, you’re in luck. While the previous Mac mini came with a gigabit Ethernet port, this one has a multi-gig 2.5 GbE port. Wi-Fi is convenient, but for large downloads or uploads, you might want to use an Ethernet cable instead to speed things up even further.</p><div class="product"><a data-dimension112="e9376368-b6c8-11f1-a756-e5c38c2ee922" data-action="Deal Block" data-label="Pro 7 (2-pack)" data-dimension48="Pro 7 (2-pack)" data-dimension25="$549" href="https://www.amazon.com/Introducing-Amazon-eero-tri-band-router/dp/B0C6RDKBTG" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:938px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="Tni33BZ37B7kEpUwvo398F" name="Pro 7 (2-pack)" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/Tni33BZ37B7kEpUwvo398F-1920-80.jpg" mos="" align="middle" fullscreen="" width="938" height="938" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/Introducing-Amazon-eero-tri-band-router/dp/B0C6RDKBTG" target="_blank" rel="nofollow" data-dimension112="e9376368-b6c8-11f1-a756-e5c38c2ee922" data-action="Deal Block" data-label="Pro 7 (2-pack)" data-dimension48="Pro 7 (2-pack)" data-dimension25="$549">Pro 7 (2-pack): $549</a></strong><br>The Eero Pro 7 is a Wi-Fi 7-powered mesh kit that’s much more compact than the larger Eero Max 7 and much cheaper, too. Unlike the smaller Eero 7, this tri-band mesh router includes all of Wi-Fi 7’s best features. Each unit can cover up to 2,00 square feet and supports over 200 connected devices. On the back of the Eero Pro 7, you get two high-speed 5 Gbps Ethernet ports. In our <a href="https://www.tomsguide.com/computing/routers/eero-pro-7-review">Eero Pro 7 review</a>, we praised this mesh router’s ability to deliver excellent speeds at mid-range distances.<a class="view-deal button" href="https://www.amazon.com/Introducing-Amazon-eero-tri-band-router/dp/B0C6RDKBTG" target="_blank" rel="nofollow" data-dimension112="e9376368-b6c8-11f1-a756-e5c38c2ee922" data-action="Deal Block" data-label="Pro 7 (2-pack)" data-dimension48="Pro 7 (2-pack)" data-dimension25="$549">View Deal</a></p></div><h2 id="mini-mac-gaming-realized">Mini Mac gaming realized</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-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>Apple’s M-series chips have made great strides in gaming on your Mac. While older titles ran well on the M4, the M6 finally lets you play modern titles right on your Mac mini. This isn’t one of the <a href="https://www.tomsguide.com/us/best-gaming-pc,review-2219.html">best gaming PCs,</a> but if you’re willing to drop the resolution and lower some settings, you can play quite a lot of native Mac games surprisingly well.</p><p>I tested Control on the Mac mini M6, and after lowering the resolution to 1440p, it ran quite well even on Apple’s high-resolution <a href="https://www.tomsguide.com/computing/monitors/apple-studio-display-xdr-review">Studio Display XDR</a>. In our test lab, though, we dropped the resolution down to 1080p and saw framerates well above 60 fps in a number of titles. Using its dedicated “For this Mac” preset, we even managed to play <a href="https://www.tomsguide.com/reviews/cyberpunk-2077-phantom-liberty">Cyberpunk 2077</a> at a stable 56 fps at 1080p. I wouldn’t recommend buying a Mac mini M6 solely for gaming, but it’s nice to know you can play even more demanding games with a few compromises.</p><h2 id="easy-and-cheaper-to-accessorize">Easy (and cheaper) to accessorize</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="DvvrsSUrLnhQR2B6qW3Wc8" name="Ugreen Mac Mini M4 Docking Station-2" alt="A person using the Ugreen Mac Mini M4 Dock & Stand to more easily reach the Mac mini M4's power button" src="https://cdn.mos.cms.futurecdn.net/DvvrsSUrLnhQR2B6qW3Wc8-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>Now you might see the Mac mini M6 sharing an identical design with its predecessor as a bad thing. However, since both mini PCs share the same ports (minus the upgraded Ethernet port) and dimensions, you can use any existing third-party accessories for the Mac mini M4 with this new model.</p><p>I’m particularly fond of the <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">Satechi Mac mini M4 Hub & Stand</a> as well as <a href="https://www.tomsguide.com/computing/apple-desktops/i-thought-i-was-done-customizing-my-mac-mini-m4-until-i-tried-the-last-dock-ill-ever-need">this one from Ugreen</a> for several reasons. They add a ton of extra ports to your Mac mini, including USB-A, plus SD and microSD card readers. The best part, though, is that when you flip either one over, there’s a compartment on the bottom where you can add an SSD to significantly expand your Mac mini’s storage without paying a fortune.</p><div class="product"><a data-dimension112="e93765fc-b6c8-11f1-b3f6-7d1636bc20e2" data-action="Deal Block" data-label="Mac mini Dock & Stand" data-dimension48="Mac mini Dock & Stand" data-dimension25="$54.99" href="https://www.amazon.com/UGREEN-mini-Dock-Stand-Enclosure/dp/B0GQ4DN6MH" 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="btnU7gvC6epL46ZmRw2KpL" name="Mac Mini M4 Dock & Stand" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/btnU7gvC6epL46ZmRw2KpL-1920-80.jpg" mos="" align="middle" fullscreen="" width="1500" height="1500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/UGREEN-mini-Dock-Stand-Enclosure/dp/B0GQ4DN6MH" target="_blank" rel="nofollow" data-dimension112="e93765fc-b6c8-11f1-b3f6-7d1636bc20e2" data-action="Deal Block" data-label="Mac mini Dock & Stand" data-dimension48="Mac mini Dock & Stand" data-dimension25="$54.99">Mac mini Dock & Stand: was $62.99 now $54.99</a></strong><br>This versatile 11-in-1 stand and hub for your Mac mini M4 or Mac mini M4 Pro features a sleek silver finish that blends seamlessly with Apple's desktop. It expands your workstation with plenty of front and rear ports, lets you add up to 8TB of high-speed NVMe storage, and uses a clever built-in mechanical pass-through lever to make accessing your Mac mini M4’s power button a breeze. <a class="view-deal button" href="https://www.amazon.com/UGREEN-mini-Dock-Stand-Enclosure/dp/B0GQ4DN6MH" target="_blank" rel="nofollow" data-dimension112="e93765fc-b6c8-11f1-b3f6-7d1636bc20e2" data-action="Deal Block" data-label="Mac mini Dock & Stand" data-dimension48="Mac mini Dock & Stand" data-dimension25="$54.99">View Deal</a></p></div><h3 class="article-body__section" id="section-mac-mini-m6-reasons-to-skip"><span>Mac mini M6: Reasons to skip</span></h3><h2 id="higher-starting-price">Higher starting 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="dnLdHBPFQEYjfryzZ5bHi" name="Mac Mini M6--6" alt="The Mac Mini with M6 unboxed on a table with its power cord next to it" src="https://cdn.mos.cms.futurecdn.net/dnLdHBPFQEYjfryzZ5bHi-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 $599 (or $499 with an education discount), the Mac mini M4 was an absolute steal. Thanks to <a href="https://www.tomsguide.com/computing/ram-price-crisis-2026-everything-you-need-to-know">RAMaggedon</a> and the ongoing storage and memory crisis, the Mac mini M6 now starts at $899 (or $799 with an education discount). That $300 price hike isn’t insignificant, especially when you factor in the cost of adding extra memory or storage to your new Mac mini directly from Apple.</p><p>The Mac mini M4 is still an excellent choice, and if you can find one used in good condition, that might be a better option depending on your budget. Still, the Mac mini M6 is a much more powerful machine and could be worth the premium, depending on your workflow.</p><h2 id="a-nearly-identical-design">A nearly identical 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="uHgYDjPzGtcnWqxoWbyJpf" name="Mac Mini M6--3" alt="The underside and power button of the Mac Mini with M6" src="https://cdn.mos.cms.futurecdn.net/uHgYDjPzGtcnWqxoWbyJpf-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 Apple introduces a major redesign as it did with the Mac mini M4, the company usually waits a few generations before making any big changes. Since the Mac mini M6 is its direct successor, you won’t find much difference in design. It uses the same case and port layout, and the power button is still on the underside of the device.</p><p>If you already have a Mac mini M4, Apple’s faster M6 chip and the Wi-Fi 7 upgrade, along with the included N1 chip, are the main reasons to upgrade. If you have a perfectly fine Mac mini M4 but want something a bit different, it might be worth holding out for the next generation instead. Even then though, this smaller, squarer Mac mini redesign might be here to stay for a while.</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/apple-desktops/should-you-buy-a-mac-mini-or-a-mac-studio-ill-help-you-decide-which-apple-desktop-to-get">Should you buy a Mac mini or a Mac Studio? I’ll help you decide which Apple desktop to get</a></li><li><a href="https://www.tomsguide.com/computing/if-your-mac-is-suddenly-running-out-of-space-after-macos-27-check-this-one-setting">If your Mac is suddenly running out of space after macOS 27, check this one setting</a></li><li><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">I spent a week with dual Apple Studio Displays and realized I’ve been lying to myself about glossy screens for years</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/apple-desktops/mac-mini-m6-reasons-to-buy-and-skip</link>
                                                                            <description>
                            <![CDATA[ Thinking about picking up the new Mac mini M6? Here’s why you should and shouldn’t buy the latest version of Apple’s smallest Mac. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">7BJ9mdAEQ4aEjFGM2B2XFf</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/UvSBuVjkQEycY6QwFPbX7B-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 23 Sep 2026 09:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Apple Desktops]]></category>
                                                    <category><![CDATA[Mini PCs]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></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/UvSBuVjkQEycY6QwFPbX7B-1920-80.jpg">
                                                            <media:credit><![CDATA[Tom&amp;#39;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A Mac mini M6 on its side with a thumbs up and a thumbs down on either side]]></media:description>                                                            <media:text><![CDATA[A Mac mini M6 on its side with a thumbs up and a thumbs down on either side]]></media:text>
                                <media:title type="plain"><![CDATA[A Mac mini M6 on its side with a thumbs up and a thumbs down on either side]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/UvSBuVjkQEycY6QwFPbX7B-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>If you’ve been waiting for Apple’s smallest desktop to get a true performance jump, you’re in luck: the new <a href="https://www.tomsguide.com/computing/apple-desktops/mac-mini-m6-review">Mac mini M6</a> is finally here. While it keeps a nearly identical design to its predecessor, this latest model packs major under-the-hood upgrades that make it an even better productivity machine.</p><p>For starters, you get faster single-core and multi-core performance thanks to Apple’s <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>. Built on a more efficient 2nm process, it features a Dual 16-Core Neural Engine for local AI tasks, along with an upgraded 12-core GPU for a dramatically better gaming experience.</p><p>That speed comes with a trade-off, though. At $899, the Mac mini M6 carries a higher starting price, and anyone hoping for a visual redesign or new colorways will find the exterior virtually unchanged.</p><p>Whether you’re upgrading from an older Mac mini or picking up your very first Mac, here is everything you need to know about the Mac mini M6 — along with five reasons to buy and two reasons you might want to skip Apple’s latest mini desktop.</p><div class="product"><a data-dimension112="e9375da0-b6c8-11f1-b160-dffe8a3bb377" data-action="Deal Block" data-label="Mac mini M6" data-dimension48="Mac mini M6" data-dimension25="$899" href="https://www.amazon.com/Apple-2026-mini-Desktop-Computer/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.</p><p><strong>Price check:</strong><a href="https://www.apple.com/us-edu/shop/buy-mac" target="_blank" rel="nofollow" data-dimension112="e9375da0-b6c8-11f1-b160-dffe8a3bb377" data-action="Deal Block" data-label="Mac mini M6" data-dimension48="Mac mini M6" data-dimension25="$899"><strong> $799 @ Apple</strong></a><strong> </strong>(with Education discount)<a class="view-deal button" href="https://www.amazon.com/Apple-2026-mini-Desktop-Computer/dp/B0HGGJZ92H?th=1" target="_blank" rel="nofollow" data-dimension112="e9375da0-b6c8-11f1-b160-dffe8a3bb377" data-action="Deal Block" data-label="Mac mini M6" data-dimension48="Mac mini M6" data-dimension25="$899">View Deal</a></p></div><h3 class="article-body__section" id="section-mac-mini-m6-reasons-to-buy"><span>Mac mini M6: Reasons to buy</span></h3><h2 id="same-tiny-footprint">Same tiny footprint</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="GzR7CHWY6tJNXEG3FM6QiV" name="Mac Mini M6--1-LIST" alt="A person holding a Mac mini with M6 in hand" src="https://cdn.mos.cms.futurecdn.net/GzR7CHWY6tJNXEG3FM6QiV-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 Mac mini M6 isn’t just one of the <a href="https://www.tomsguide.com/us/best-mini-pc.html">best mini PCs</a>; it’s also one of the smallest. At 5 x 5 x 2 inches, it’s tiny and won’t take up much space on your desk. Also, since it has an internal power supply, you don’t have to worry about a bulky power brick. This makes cable management a breeze, and it's easy to move your Mac mini from room to room or even travel with it.</p><p>For an even cleaner desk setup, I’d recommend Bluetooth accessories like Apple’s Magic Keyboard, Magic Mouse, or Magic Trackpad. If you want more customization, though, <a href="https://www.tomsguide.com/computing/i-went-all-in-on-logitechs-mx-master-series-for-my-new-desk-setup-and-this-accessory-was-the-real-game-changer">Logitech’s MX Master Series</a> is also a great fit for Apple’s smallest Mac.</p><h2 id="massive-m6-speed-boost">Massive M6 speed boost</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="GKTvnQnuvZpnmLiVjnrh67" name="Mac Mini M6--7" alt="A desk setup built around the Mac Mini with M6 with an Apple Studio Display XDR monitor" src="https://cdn.mos.cms.futurecdn.net/GKTvnQnuvZpnmLiVjnrh67-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>Don’t get me wrong, the <a href="https://www.tomsguide.com/computing/desktop-computers/mac-mini-m4-review">Mac mini M4</a> was a big step up over the <a href="https://www.tomsguide.com/computing/desktop-computers/i-just-broke-the-first-rule-of-buying-apple-products-i-bought-a-new-mac-mini-ahead-of-the-m4-mac-launch">Mac mini M2</a>. However, with the M6 chip in this new model, our benchmark tests showed results that were closer to the Mac mini M4 Pro. For instance, on the Geekbench 6 CPU benchmark, its single-core score of 4,708 easily beat the Mac mini M4 Pro by nearly a thousand points. The multi-core results were slightly under the M4 Pro’s at 21,405 (versus 22,661) but were 44% faster than the base M4.</p><p>The Mac mini M6 will be a big upgrade for most workflows. However, if you plan to edit video or do more intensive tasks on your Mac mini, budget an extra $200-$400 for extra storage and RAM when configuring your system. Though 16GB of RAM is more than enough for most tasks, choosing a 512GB SSD over the standard 256GB one unlocks full multi-channel PCIe Gen 4 storage bandwidth on Apple Silicon, resulting in faster exports and file transfers.</p><h2 id="faster-wireless-and-wired-downloads">Faster wireless and wired downloads</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-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>Raw processing power may be the biggest upgrade with the Mac mini M6, but you also get a connectivity boost as well thanks to Apple’s custom <a href="https://www.tomsguide.com/computing/routers/apple-could-make-wi-fi-just-work-with-a-new-take-on-airport-and-the-iphone-airs-wireless-chips-might-be-the-key">N1 networking chip</a>. Unlike the previous generation, this new Mac mini supports Wi-Fi 7, Bluetooth 6.0, and Thread networking thanks to the N1 chip housed inside it.</p><p>With <a href="https://www.tomsguide.com/reference/wi-fi-7-explained">Wi-Fi 7</a>, you’ll see faster downloads and uploads, while Bluetooth 6.0 brings Channel Sounding for far more accurate distance tracking, better power efficiency, and lower-latency wireless audio. With native Thread support built in, you can also use the Mac mini M6 as a smart home hub instead of an external bridge.</p><p>Finally, if you prefer a wired internet connection over wireless, you’re in luck. While the previous Mac mini came with a gigabit Ethernet port, this one has a multi-gig 2.5 GbE port. Wi-Fi is convenient, but for large downloads or uploads, you might want to use an Ethernet cable instead to speed things up even further.</p><div class="product"><a data-dimension112="e9376368-b6c8-11f1-a756-e5c38c2ee922" data-action="Deal Block" data-label="Pro 7 (2-pack)" data-dimension48="Pro 7 (2-pack)" data-dimension25="$549" href="https://www.amazon.com/Introducing-Amazon-eero-tri-band-router/dp/B0C6RDKBTG" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:938px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="Tni33BZ37B7kEpUwvo398F" name="Pro 7 (2-pack)" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/Tni33BZ37B7kEpUwvo398F-1920-80.jpg" mos="" align="middle" fullscreen="" width="938" height="938" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/Introducing-Amazon-eero-tri-band-router/dp/B0C6RDKBTG" target="_blank" rel="nofollow" data-dimension112="e9376368-b6c8-11f1-a756-e5c38c2ee922" data-action="Deal Block" data-label="Pro 7 (2-pack)" data-dimension48="Pro 7 (2-pack)" data-dimension25="$549">Pro 7 (2-pack): $549</a></strong><br>The Eero Pro 7 is a Wi-Fi 7-powered mesh kit that’s much more compact than the larger Eero Max 7 and much cheaper, too. Unlike the smaller Eero 7, this tri-band mesh router includes all of Wi-Fi 7’s best features. Each unit can cover up to 2,00 square feet and supports over 200 connected devices. On the back of the Eero Pro 7, you get two high-speed 5 Gbps Ethernet ports. In our <a href="https://www.tomsguide.com/computing/routers/eero-pro-7-review">Eero Pro 7 review</a>, we praised this mesh router’s ability to deliver excellent speeds at mid-range distances.<a class="view-deal button" href="https://www.amazon.com/Introducing-Amazon-eero-tri-band-router/dp/B0C6RDKBTG" target="_blank" rel="nofollow" data-dimension112="e9376368-b6c8-11f1-a756-e5c38c2ee922" data-action="Deal Block" data-label="Pro 7 (2-pack)" data-dimension48="Pro 7 (2-pack)" data-dimension25="$549">View Deal</a></p></div><h2 id="mini-mac-gaming-realized">Mini Mac gaming realized</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-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>Apple’s M-series chips have made great strides in gaming on your Mac. While older titles ran well on the M4, the M6 finally lets you play modern titles right on your Mac mini. This isn’t one of the <a href="https://www.tomsguide.com/us/best-gaming-pc,review-2219.html">best gaming PCs,</a> but if you’re willing to drop the resolution and lower some settings, you can play quite a lot of native Mac games surprisingly well.</p><p>I tested Control on the Mac mini M6, and after lowering the resolution to 1440p, it ran quite well even on Apple’s high-resolution <a href="https://www.tomsguide.com/computing/monitors/apple-studio-display-xdr-review">Studio Display XDR</a>. In our test lab, though, we dropped the resolution down to 1080p and saw framerates well above 60 fps in a number of titles. Using its dedicated “For this Mac” preset, we even managed to play <a href="https://www.tomsguide.com/reviews/cyberpunk-2077-phantom-liberty">Cyberpunk 2077</a> at a stable 56 fps at 1080p. I wouldn’t recommend buying a Mac mini M6 solely for gaming, but it’s nice to know you can play even more demanding games with a few compromises.</p><h2 id="easy-and-cheaper-to-accessorize">Easy (and cheaper) to accessorize</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="DvvrsSUrLnhQR2B6qW3Wc8" name="Ugreen Mac Mini M4 Docking Station-2" alt="A person using the Ugreen Mac Mini M4 Dock & Stand to more easily reach the Mac mini M4's power button" src="https://cdn.mos.cms.futurecdn.net/DvvrsSUrLnhQR2B6qW3Wc8-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>Now you might see the Mac mini M6 sharing an identical design with its predecessor as a bad thing. However, since both mini PCs share the same ports (minus the upgraded Ethernet port) and dimensions, you can use any existing third-party accessories for the Mac mini M4 with this new model.</p><p>I’m particularly fond of the <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">Satechi Mac mini M4 Hub & Stand</a> as well as <a href="https://www.tomsguide.com/computing/apple-desktops/i-thought-i-was-done-customizing-my-mac-mini-m4-until-i-tried-the-last-dock-ill-ever-need">this one from Ugreen</a> for several reasons. They add a ton of extra ports to your Mac mini, including USB-A, plus SD and microSD card readers. The best part, though, is that when you flip either one over, there’s a compartment on the bottom where you can add an SSD to significantly expand your Mac mini’s storage without paying a fortune.</p><div class="product"><a data-dimension112="e93765fc-b6c8-11f1-b3f6-7d1636bc20e2" data-action="Deal Block" data-label="Mac mini Dock & Stand" data-dimension48="Mac mini Dock & Stand" data-dimension25="$54.99" href="https://www.amazon.com/UGREEN-mini-Dock-Stand-Enclosure/dp/B0GQ4DN6MH" 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="btnU7gvC6epL46ZmRw2KpL" name="Mac Mini M4 Dock & Stand" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/btnU7gvC6epL46ZmRw2KpL-1920-80.jpg" mos="" align="middle" fullscreen="" width="1500" height="1500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong><a href="https://www.amazon.com/UGREEN-mini-Dock-Stand-Enclosure/dp/B0GQ4DN6MH" target="_blank" rel="nofollow" data-dimension112="e93765fc-b6c8-11f1-b3f6-7d1636bc20e2" data-action="Deal Block" data-label="Mac mini Dock & Stand" data-dimension48="Mac mini Dock & Stand" data-dimension25="$54.99">Mac mini Dock & Stand: was $62.99 now $54.99</a></strong><br>This versatile 11-in-1 stand and hub for your Mac mini M4 or Mac mini M4 Pro features a sleek silver finish that blends seamlessly with Apple's desktop. It expands your workstation with plenty of front and rear ports, lets you add up to 8TB of high-speed NVMe storage, and uses a clever built-in mechanical pass-through lever to make accessing your Mac mini M4’s power button a breeze. <a class="view-deal button" href="https://www.amazon.com/UGREEN-mini-Dock-Stand-Enclosure/dp/B0GQ4DN6MH" target="_blank" rel="nofollow" data-dimension112="e93765fc-b6c8-11f1-b3f6-7d1636bc20e2" data-action="Deal Block" data-label="Mac mini Dock & Stand" data-dimension48="Mac mini Dock & Stand" data-dimension25="$54.99">View Deal</a></p></div><h3 class="article-body__section" id="section-mac-mini-m6-reasons-to-skip"><span>Mac mini M6: Reasons to skip</span></h3><h2 id="higher-starting-price">Higher starting 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="dnLdHBPFQEYjfryzZ5bHi" name="Mac Mini M6--6" alt="The Mac Mini with M6 unboxed on a table with its power cord next to it" src="https://cdn.mos.cms.futurecdn.net/dnLdHBPFQEYjfryzZ5bHi-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 $599 (or $499 with an education discount), the Mac mini M4 was an absolute steal. Thanks to <a href="https://www.tomsguide.com/computing/ram-price-crisis-2026-everything-you-need-to-know">RAMaggedon</a> and the ongoing storage and memory crisis, the Mac mini M6 now starts at $899 (or $799 with an education discount). That $300 price hike isn’t insignificant, especially when you factor in the cost of adding extra memory or storage to your new Mac mini directly from Apple.</p><p>The Mac mini M4 is still an excellent choice, and if you can find one used in good condition, that might be a better option depending on your budget. Still, the Mac mini M6 is a much more powerful machine and could be worth the premium, depending on your workflow.</p><h2 id="a-nearly-identical-design">A nearly identical 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="uHgYDjPzGtcnWqxoWbyJpf" name="Mac Mini M6--3" alt="The underside and power button of the Mac Mini with M6" src="https://cdn.mos.cms.futurecdn.net/uHgYDjPzGtcnWqxoWbyJpf-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 Apple introduces a major redesign as it did with the Mac mini M4, the company usually waits a few generations before making any big changes. Since the Mac mini M6 is its direct successor, you won’t find much difference in design. It uses the same case and port layout, and the power button is still on the underside of the device.</p><p>If you already have a Mac mini M4, Apple’s faster M6 chip and the Wi-Fi 7 upgrade, along with the included N1 chip, are the main reasons to upgrade. If you have a perfectly fine Mac mini M4 but want something a bit different, it might be worth holding out for the next generation instead. Even then though, this smaller, squarer Mac mini redesign might be here to stay for a while.</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/apple-desktops/should-you-buy-a-mac-mini-or-a-mac-studio-ill-help-you-decide-which-apple-desktop-to-get">Should you buy a Mac mini or a Mac Studio? I’ll help you decide which Apple desktop to get</a></li><li><a href="https://www.tomsguide.com/computing/if-your-mac-is-suddenly-running-out-of-space-after-macos-27-check-this-one-setting">If your Mac is suddenly running out of space after macOS 27, check this one setting</a></li><li><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">I spent a week with dual Apple Studio Displays and realized I’ve been lying to myself about glossy screens for years</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Apple TV’s 'Brothers' is a delightful Matthew McConaughey and Woody Harrelson reunion — so why am I disappointed? ]]></title>
                                                                                                <dc:content><![CDATA[ <div  class="fancy-box"><div class="fancy_box-title">Tom's Guide Verdict: 'Brothers'</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>Rating: </strong>3 of 5 stars</p><p class="fancy-box__body-text"><strong>Verdict:</strong> “Brothers” is a breezy, occasionally funny showcase for Matthew McConaughey and Woody Harrelson, whose chemistry is still crackling. But with a thin plot padded out by predictable family drama, this feels like a two-hour movie that somehow became eight episodes.</p><p class="fancy-box__body-text"><strong>Release schedule: </strong>Episodes 1-2 now streaming</p><p class="fancy-box__body-text"><strong>Where to watch: </strong><a data-analytics-id="inline-link" href="https://tv.apple.com/us/show/brothers/umc.cmc.17g1y5mzqp92sc0ge1c0hdorg" target="_blank" rel="nofollow">Apple TV</a></p></div></div><p>There are worse ideas for a TV show than putting <strong>Matthew McConaughey</strong> and <strong>Woody Harrelson</strong> on a Texas ranch and letting them be weird together. In fact, given that the two actors have been friends for decades and have already delivered one of television's great double acts in <strong>“True Detective,”</strong> it sounds almost foolproof. Yet after watching all eight episodes of <strong>“Brothers,”</strong> I feel like it's got "this could've been an email" energy.</p><p>The new <strong>Apple TV</strong> comedy stars McConaughey and Harrelson as fictionalized versions of themselves. When Woody's daughter's wedding falls apart, he packs up the family and heads to Matthew's ranch. There, Matthew's mother, Ma Mac (Holland Taylor), drops a bombshell on Woody: The longtime friends might actually be half-brothers. </p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/fIKFnzIcfcA" allowfullscreen></iframe></div></div><p>McConaughey and Harrelson have publicly discussed the possibility that they could share a biological father, so turning that rumor into a fictional family mystery is a clever bit of self-mythologizing. </p><p>In the show, Woody becomes obsessed with finding out whether it's true, while Matthew has his own big issue to deal with: He's considering running for governor of Texas. Throw in their wives, children, various romantic entanglements, a handful of celebrity cameos and a whole lot of Texas scenery, and you've got the makings of a breezy comedy about friendship, family and two movie stars having an extremely good time.</p><p>And that's pretty much what “Brothers” is. The problem is that having a good time isn't quite the same thing as having enough material for eight episodes.</p><p><em><strong>Warning: Light spoilers ahead for "Brothers" season 1.</strong></em></p><h2 id="matthew-mcconaughey-and-woody-harrelson-are-the-whole-show">Matthew McConaughey and Woody Harrelson are the whole show</h2><p>The good news is that McConaughey and Harrelson are still a blast together. There is an easy, lived-in quality to their chemistry that can't be manufactured, and “Brothers” gets considerably more mileage out of it than a standard buddy comedy could. These aren't polished sitcom performances; they're loose, occasionally goofy and very aware of the fact that we're watching two extremely famous men play exaggerated versions of themselves.</p><p>It's also a very different flavor of their partnership than “True Detective.” That show obviously required the two actors to spend most of their time staring into the abyss, whereas “Brothers” gives them permission to be silly and spaced-out.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eMPv3X"></div>                            </div>                            <script src="https://kwizly.com/embed/eMPv3X.js" async></script><p>The show is at its best when it simply puts these two guys in ridiculous situations and lets their personalities do the heavy lifting. There are bizarre outfits. Strange encounters. Some wink-wink cameos. At one point, a dog enthusiastically licks McConaughey's face in a scene that made me chuckle and smirk. </p><p>Unfortunately, I never really laughed out loud. And the actual story doesn't give them much to work with. The mystery of whether they're brothers is amusing enough as a hook, but it's surprisingly thin as the central engine of an eight-episode series (even when the episodes are half an hour)</p><p>So the show pads things out with the kids, particularly their romantic lives. These storylines aren't terrible, but they're also not super compelling. They're meant to keep the sitcom machinery running: Characters need something to do, so here are some relationships to complicate.</p><p>The governor storyline is similarly useful rather than particularly interesting. Matthew running for governor gives the series some structure and a sense that something is at stake beyond the paternity mystery, but it mostly feels like another excuse to introduce new obstacles and kooky situations.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="EBaS4DEYk5jdci29dq9RQj" name="brothers-mcconaughey-harrelson" alt="Woody Harrelson and Matthew McConaughey in Brothers" src="https://cdn.mos.cms.futurecdn.net/EBaS4DEYk5jdci29dq9RQj-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: Apple TV)</span></figcaption></figure><h2 id="verdict-brothers-is-fun-but-there-s-not-enough-show-here">Verdict: ‘Brothers’ is fun, but there’s not enough show here</h2><p>The central joke of “Brothers” is also its biggest limitation: These guys are famous. They know, you know it, everybody knows it.</p><p>And their celebrity is what makes the premise work. It's fun to watch McConaughey and Harrelson send up their own public images, especially when the show pushes those personas into increasingly absurd territory. I just wish there was more beyond the joke.</p><p>“Brothers” leaves the door open for a second season, and I wouldn't be completely opposed to seeing how it plays out. McConaughey and Harrelson remain an undeniably entertaining pair, and their chemistry is strong enough to make even thin material watchable. But if this really is the beginning of a longer story, the show needs to find a little more actual story to tell.</p><p>For now, “Brothers” is a pleasant enough hang with two movie stars who clearly enjoy hanging out together. It's amusing in spots, ludicrous in others and occasionally charming. But this truly could've been a two-hour movie perfect to stream on a rainy Sunday afternoon.</p><p><a href="https://tv.apple.com/us/show/brothers/umc.cmc.17g1y5mzqp92sc0ge1c0hdorg" target="_blank" rel="nofollow"><em><strong>"Brothers" streams weekly on Apple TV</strong></em></a></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> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/apple-tv/apple-tvs-brothers-is-a-delightful-matthew-mcconaughey-and-woody-harrelson-reunion-so-why-am-i-disappointed</link>
                                                                            <description>
                            <![CDATA[ “Brothers” review: Matthew McConaughey and Woody Harrelson star in Apple TV’s new comedy series. Here’s what I thought after watching all 8 episodes ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">LELauZ9UjP3k9ENmJVuMgF</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/74RZPe8erhV9BYSphgmBPM-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 23 Sep 2026 07:01:00 +0000</pubDate>                                                                                                                                <updated>Wed, 23 Sep 2026 09:20:06 +0000</updated>
                                                                                                                                            <category><![CDATA[Apple TV]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                    <category><![CDATA[Streaming]]></category>
                                                                                                <author><![CDATA[ kelly.woo@futurenet.com (Kelly Woo) ]]></author>                    <dc:creator><![CDATA[ Kelly Woo ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/jpnR8RZd8njtxaHRHimzsi-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Kelly is the managing editor of streaming for Tom’s Guide, so basically, she watches TV for a living. She writes news, features and reviews about the streaming realm — hardware, software and content. In a given week, she might test a new Roku stick, check out an interface update on HBO Max, sound off on the trailer for a new Netflix show and provide info on how to watch a fan-favorite series. &lt;/p&gt;&lt;p&gt;In addition to streaming coverage, she also occasionally contributes to the fitness and home sections.&lt;/p&gt;&lt;p&gt;Before joining Tom&#039;s Guide, she was a freelance entertainment writer for Yahoo, Vulture, TV Guide and other outlets and a content creator for HBO, Apple and DotDash. Prior to that, she was a senior editor at AOL Television and Moviefone. She graduated from Duke University with a degree in English literature.&lt;/p&gt;&lt;p&gt;When she’s not watching TV and movies for work, she’s watching them for fun, plus seeing live music, writing songs, knitting and gardening.&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/74RZPe8erhV9BYSphgmBPM-1920-80.jpg">
                                                            <media:credit><![CDATA[Apple TV]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Matthew McConaughey and Woody Harrelson in Brothers]]></media:description>                                                            <media:text><![CDATA[Matthew McConaughey and Woody Harrelson in Brothers]]></media:text>
                                <media:title type="plain"><![CDATA[Matthew McConaughey and Woody Harrelson in Brothers]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/74RZPe8erhV9BYSphgmBPM-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div  class="fancy-box"><div class="fancy_box-title">Tom's Guide Verdict: 'Brothers'</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>Rating: </strong>3 of 5 stars</p><p class="fancy-box__body-text"><strong>Verdict:</strong> “Brothers” is a breezy, occasionally funny showcase for Matthew McConaughey and Woody Harrelson, whose chemistry is still crackling. But with a thin plot padded out by predictable family drama, this feels like a two-hour movie that somehow became eight episodes.</p><p class="fancy-box__body-text"><strong>Release schedule: </strong>Episodes 1-2 now streaming</p><p class="fancy-box__body-text"><strong>Where to watch: </strong><a data-analytics-id="inline-link" href="https://tv.apple.com/us/show/brothers/umc.cmc.17g1y5mzqp92sc0ge1c0hdorg" target="_blank" rel="nofollow">Apple TV</a></p></div></div><p>There are worse ideas for a TV show than putting <strong>Matthew McConaughey</strong> and <strong>Woody Harrelson</strong> on a Texas ranch and letting them be weird together. In fact, given that the two actors have been friends for decades and have already delivered one of television's great double acts in <strong>“True Detective,”</strong> it sounds almost foolproof. Yet after watching all eight episodes of <strong>“Brothers,”</strong> I feel like it's got "this could've been an email" energy.</p><p>The new <strong>Apple TV</strong> comedy stars McConaughey and Harrelson as fictionalized versions of themselves. When Woody's daughter's wedding falls apart, he packs up the family and heads to Matthew's ranch. There, Matthew's mother, Ma Mac (Holland Taylor), drops a bombshell on Woody: The longtime friends might actually be half-brothers. </p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/fIKFnzIcfcA" allowfullscreen></iframe></div></div><p>McConaughey and Harrelson have publicly discussed the possibility that they could share a biological father, so turning that rumor into a fictional family mystery is a clever bit of self-mythologizing. </p><p>In the show, Woody becomes obsessed with finding out whether it's true, while Matthew has his own big issue to deal with: He's considering running for governor of Texas. Throw in their wives, children, various romantic entanglements, a handful of celebrity cameos and a whole lot of Texas scenery, and you've got the makings of a breezy comedy about friendship, family and two movie stars having an extremely good time.</p><p>And that's pretty much what “Brothers” is. The problem is that having a good time isn't quite the same thing as having enough material for eight episodes.</p><p><em><strong>Warning: Light spoilers ahead for "Brothers" season 1.</strong></em></p><h2 id="matthew-mcconaughey-and-woody-harrelson-are-the-whole-show">Matthew McConaughey and Woody Harrelson are the whole show</h2><p>The good news is that McConaughey and Harrelson are still a blast together. There is an easy, lived-in quality to their chemistry that can't be manufactured, and “Brothers” gets considerably more mileage out of it than a standard buddy comedy could. These aren't polished sitcom performances; they're loose, occasionally goofy and very aware of the fact that we're watching two extremely famous men play exaggerated versions of themselves.</p><p>It's also a very different flavor of their partnership than “True Detective.” That show obviously required the two actors to spend most of their time staring into the abyss, whereas “Brothers” gives them permission to be silly and spaced-out.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eMPv3X"></div>                            </div>                            <script src="https://kwizly.com/embed/eMPv3X.js" async></script><p>The show is at its best when it simply puts these two guys in ridiculous situations and lets their personalities do the heavy lifting. There are bizarre outfits. Strange encounters. Some wink-wink cameos. At one point, a dog enthusiastically licks McConaughey's face in a scene that made me chuckle and smirk. </p><p>Unfortunately, I never really laughed out loud. And the actual story doesn't give them much to work with. The mystery of whether they're brothers is amusing enough as a hook, but it's surprisingly thin as the central engine of an eight-episode series (even when the episodes are half an hour)</p><p>So the show pads things out with the kids, particularly their romantic lives. These storylines aren't terrible, but they're also not super compelling. They're meant to keep the sitcom machinery running: Characters need something to do, so here are some relationships to complicate.</p><p>The governor storyline is similarly useful rather than particularly interesting. Matthew running for governor gives the series some structure and a sense that something is at stake beyond the paternity mystery, but it mostly feels like another excuse to introduce new obstacles and kooky situations.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="EBaS4DEYk5jdci29dq9RQj" name="brothers-mcconaughey-harrelson" alt="Woody Harrelson and Matthew McConaughey in Brothers" src="https://cdn.mos.cms.futurecdn.net/EBaS4DEYk5jdci29dq9RQj-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: Apple TV)</span></figcaption></figure><h2 id="verdict-brothers-is-fun-but-there-s-not-enough-show-here">Verdict: ‘Brothers’ is fun, but there’s not enough show here</h2><p>The central joke of “Brothers” is also its biggest limitation: These guys are famous. They know, you know it, everybody knows it.</p><p>And their celebrity is what makes the premise work. It's fun to watch McConaughey and Harrelson send up their own public images, especially when the show pushes those personas into increasingly absurd territory. I just wish there was more beyond the joke.</p><p>“Brothers” leaves the door open for a second season, and I wouldn't be completely opposed to seeing how it plays out. McConaughey and Harrelson remain an undeniably entertaining pair, and their chemistry is strong enough to make even thin material watchable. But if this really is the beginning of a longer story, the show needs to find a little more actual story to tell.</p><p>For now, “Brothers” is a pleasant enough hang with two movie stars who clearly enjoy hanging out together. It's amusing in spots, ludicrous in others and occasionally charming. But this truly could've been a two-hour movie perfect to stream on a rainy Sunday afternoon.</p><p><a href="https://tv.apple.com/us/show/brothers/umc.cmc.17g1y5mzqp92sc0ge1c0hdorg" target="_blank" rel="nofollow"><em><strong>"Brothers" streams weekly on Apple TV</strong></em></a></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>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I watched Prime Video’s new romantic comedy movie — and I think the logic mostly checks out ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Yearning, fake relationships and getting the gruff, reserved man to finally open up are practically the holy trinity of romance right now. As someone who is an absolute sucker for this type of story, I was naturally drawn to <a href="https://www.tomsguide.com/entertainment/streaming/prime-video"><strong>Prime Video’s</strong></a><strong> new rom-com “The Love Hypothesis.</strong>” Based on Ali Hazelwood’s bestselling novel, the movie has all the ingredients I look for in a good romance, from the forced proximity to the slow-burn tension. The question is whether it actually manages to deliver on all that romantic potential.</p><div  class="fancy-box"><div class="fancy_box-title">Tom's Guide Verdict: 'The Love Hypothesis'</div><div class="fancy_box_body"><p class="fancy-box__body-text"><ul><li><strong>Rating:</strong> 3/5 stars</li><li><strong>Verdict: </strong>“The Love Hypothesis” is a charming, easy-to-watch rom-com with plenty of chemistry and yearning. While the fake dating setup feels forced at times and some of the logic doesn’t quite add up, Lili Reinhart and Tom Bateman make this a fun, feel-good romance.</li><li><strong>Where to watch: </strong>"The Love Hypothesis" is streaming on <a data-analytics-id="inline-link" href="https://www.amazon.com/gp/video/detail/B0H4WHJ9M5" target="_blank" rel="nofollow">Prime Video</a></li></ul></p></div></div><p>“The Love Hypothesis” centers around Olive (Lili Reinhart), a PhD candidate who impulsively kisses intimidating professor Adam Carlsen (Tom Bateman) to convince her best friend she has moved on from her crush. What starts as a fake relationship quickly becomes complicated as their planned arrangement makes it harder to separate what’s pretend from what’s real. As you can tell, it’s a fairly simple premise, but the movie also puts a fair amount of emphasis on friendship and how women are treated in the academic world.</p><p>Prime Video is certainly no stranger to pumping out romance flicks, and I have to admit, I’m pretty much the target audience for a movie built around yearning, fake dating and a slightly different take on love. Throw in a world of science, a grumpy professor who slowly lets his guard down and plenty of romantic tension, and you’ve got my attention. Whether “The Love Hypothesis” can turn all of those familiar ingredients into something that really works is another question, but I was more than ready to put this particular hypothesis to the test.</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="the-love-hypothesis-is-a-formula-i-can-get-behind">‘The Love Hypothesis’ is a formula I can get behind</h2><p>“The Love Hypothesis” gets off to a fun start, with Olive unknowingly meeting Adam for the first time when she can barely see him because her contact lenses have expired. Two years later, they cross paths again under very different circumstances, when Olive impulsively kisses the intimidating professor to convince her best friend Anh that she has finally moved on from her crush, Jeremy.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/xwdamnfS6IM" allowfullscreen></iframe></div></div><p>I liked that the movie takes time to establish Olive and Anh’s friendship, which feels much more like a sisterhood, and it’s clear that Olive genuinely wants her best friend to be happy, even if that means putting her own feelings aside.</p><p>This is also where the setup starts to lose me slightly, because Olive and Jeremy barely interact enough for us to understand why she likes him so much that she would go to the lengths of faking a relationship. It makes the fake dating premise feel a little forced. Adam’s motivation is a <em>little </em>more convincing, as he agrees to the arrangement to make the board believe he is putting down roots in California so they will release funding for his research (although I did find myself wondering about the rules surrounding professors dating students). Putting those questions aside, the film is charming enough to keep you invested in seeing where these two characters end up.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Edvv5pWXaEZAnzzMRWerjN" name="The Love Hypothesis" alt="Nicholas Duvernay as Jeremy Langley, Rachel Marsh as Anh Pham, and Jaboukie Young-White as Malcolm in "The Love Hypothesis" on Prime Video" src="https://cdn.mos.cms.futurecdn.net/Edvv5pWXaEZAnzzMRWerjN-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>Naturally, the premise gives Olive and Adam the classic slow burn, as they try their best to act like a convincing couple while, ironically, becoming closer in the process. There’s something genuinely charming about watching Adam gradually soften too, particularly when we see him become a little kinder and less harsh towards his students. Thankfully, Lili Reinhart and Tom Bateman have the chemistry needed to carry this kind of story, making their growing connection feel believable even when the plot occasionally relies on familiar rom-com beats.</p><p>There’s also a more serious thread running through the film surrounding Olive’s unfair treatment within academia and her determination to get her research on early detection methods for pancreatic cancer taken seriously. Her motivation is deeply personal, which gives her ambitions more meaning, and the film presents the obstacles she faces in a thoughtful way. It helps give Olive more to care about beyond simply getting the guy, while also adding some much-needed substance to what could otherwise have been a fairly straightforward romance.</p><h2 id="verdict-the-love-hypothesis-is-a-fun-romance-with-a-few-bumps-along-the-way">Verdict: ‘The Love Hypothesis’ is a fun romance with a few bumps along the way</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="ekJdU92kFRwnwdZEmEmMhY" name="The Love Hypothesis" alt="Tom Bateman as Dr. Adam Carlsen and Lili Reinhart as Olive in "The Love Hypothesis" on Prime Video" src="https://cdn.mos.cms.futurecdn.net/ekJdU92kFRwnwdZEmEmMhY-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>Overall, “The Love Hypothesis” is a charming, funny and incredibly easy watch, which, honestly, is all I really need from a rom-com. While the fake dating premise doesn’t feel quite as punchy as it could have been and Olive’s motivations aren’t always the most convincing, it’s difficult not to be won over by the trope, particularly when Lili Reinhart and Tom Bateman have such good chemistry. </p><p>The film gets the major romantic moments across, but it does compress some of the anticipation and emotional escalation that made the novel so enjoyable. There’s definitely yearning here, but hardcore romance fans might find themselves wanting a little more of it. Still, this is absolutely worth putting on for an easy evening watch, and I wouldn’t be surprised to see it sitting at No. 1 on Prime Video over the weekend.</p><p><em><strong>"The Love Hypothesis" is streaming on </strong></em><a href="https://www.amazon.com/gp/video/detail/B0H4WHJ9M5" target="_blank" rel="nofollow"><em><strong>Prime Video</strong></em></a></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xj23MX"></div>                            </div>                            <script src="https://kwizly.com/embed/Xj23MX.js" async></script><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/entertainment/streaming/7-top-new-movies-to-stream-this-week-on-netflix-prime-video-hbo-max-and-more-including-backrooms-toy-story-5-and-an-action-thriller-film-john-wick-fans-will-love-sept-22-28">7 top new movies to stream this week on Netflix, Prime Video, and more</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/3-biggest-prime-video-movies-and-shows-i-cant-wait-to-watch-in-fall-2026">3 biggest Prime Video movies and shows I can’t wait to watch in fall 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/movies/resident-evil-2026-review">'Resident Evil' review: Officially the best video game movie of all time</a></li></ul><div data-model-name="Disney Plus,Hulu,Max,Paramount Plus,Peacock TV" data-widget-type="multimodelreview" data-widget-title="Streaming service deals not to miss"></div> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/prime-video/i-watched-prime-videos-new-romantic-comedy-movie-and-i-think-the-logic-mostly-checks-out</link>
                                                                            <description>
                            <![CDATA[ “The Love Hypothesis” follows a PhD student who impulsively kisses her intimidating professor, leading to a fake relationship that soon feels very real. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">VB58qNTgYpyp6YoB7PTkjh</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/6xRn9Tkbdapq9vYtAjMoon-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 23 Sep 2026 06:30:00 +0000</pubDate>                                                                                                                                                                                                                                <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/6xRn9Tkbdapq9vYtAjMoon-1920-80.jpg">
                                                            <media:credit><![CDATA[Prime Video]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Lili Reinhart as Olive Smith and Tom Bateman as Professor Adam Carlsen in &quot;The Love Hypothesis&quot; on Prime Video]]></media:description>                                                            <media:text><![CDATA[Lili Reinhart as Olive Smith and Tom Bateman as Professor Adam Carlsen in &quot;The Love Hypothesis&quot; on Prime Video]]></media:text>
                                <media:title type="plain"><![CDATA[Lili Reinhart as Olive Smith and Tom Bateman as Professor Adam Carlsen in &quot;The Love Hypothesis&quot; on Prime Video]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/6xRn9Tkbdapq9vYtAjMoon-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Yearning, fake relationships and getting the gruff, reserved man to finally open up are practically the holy trinity of romance right now. As someone who is an absolute sucker for this type of story, I was naturally drawn to <a href="https://www.tomsguide.com/entertainment/streaming/prime-video"><strong>Prime Video’s</strong></a><strong> new rom-com “The Love Hypothesis.</strong>” Based on Ali Hazelwood’s bestselling novel, the movie has all the ingredients I look for in a good romance, from the forced proximity to the slow-burn tension. The question is whether it actually manages to deliver on all that romantic potential.</p><div  class="fancy-box"><div class="fancy_box-title">Tom's Guide Verdict: 'The Love Hypothesis'</div><div class="fancy_box_body"><p class="fancy-box__body-text"><ul><li><strong>Rating:</strong> 3/5 stars</li><li><strong>Verdict: </strong>“The Love Hypothesis” is a charming, easy-to-watch rom-com with plenty of chemistry and yearning. While the fake dating setup feels forced at times and some of the logic doesn’t quite add up, Lili Reinhart and Tom Bateman make this a fun, feel-good romance.</li><li><strong>Where to watch: </strong>"The Love Hypothesis" is streaming on <a data-analytics-id="inline-link" href="https://www.amazon.com/gp/video/detail/B0H4WHJ9M5" target="_blank" rel="nofollow">Prime Video</a></li></ul></p></div></div><p>“The Love Hypothesis” centers around Olive (Lili Reinhart), a PhD candidate who impulsively kisses intimidating professor Adam Carlsen (Tom Bateman) to convince her best friend she has moved on from her crush. What starts as a fake relationship quickly becomes complicated as their planned arrangement makes it harder to separate what’s pretend from what’s real. As you can tell, it’s a fairly simple premise, but the movie also puts a fair amount of emphasis on friendship and how women are treated in the academic world.</p><p>Prime Video is certainly no stranger to pumping out romance flicks, and I have to admit, I’m pretty much the target audience for a movie built around yearning, fake dating and a slightly different take on love. Throw in a world of science, a grumpy professor who slowly lets his guard down and plenty of romantic tension, and you’ve got my attention. Whether “The Love Hypothesis” can turn all of those familiar ingredients into something that really works is another question, but I was more than ready to put this particular hypothesis to the test.</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="the-love-hypothesis-is-a-formula-i-can-get-behind">‘The Love Hypothesis’ is a formula I can get behind</h2><p>“The Love Hypothesis” gets off to a fun start, with Olive unknowingly meeting Adam for the first time when she can barely see him because her contact lenses have expired. Two years later, they cross paths again under very different circumstances, when Olive impulsively kisses the intimidating professor to convince her best friend Anh that she has finally moved on from her crush, Jeremy.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/xwdamnfS6IM" allowfullscreen></iframe></div></div><p>I liked that the movie takes time to establish Olive and Anh’s friendship, which feels much more like a sisterhood, and it’s clear that Olive genuinely wants her best friend to be happy, even if that means putting her own feelings aside.</p><p>This is also where the setup starts to lose me slightly, because Olive and Jeremy barely interact enough for us to understand why she likes him so much that she would go to the lengths of faking a relationship. It makes the fake dating premise feel a little forced. Adam’s motivation is a <em>little </em>more convincing, as he agrees to the arrangement to make the board believe he is putting down roots in California so they will release funding for his research (although I did find myself wondering about the rules surrounding professors dating students). Putting those questions aside, the film is charming enough to keep you invested in seeing where these two characters end up.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Edvv5pWXaEZAnzzMRWerjN" name="The Love Hypothesis" alt="Nicholas Duvernay as Jeremy Langley, Rachel Marsh as Anh Pham, and Jaboukie Young-White as Malcolm in "The Love Hypothesis" on Prime Video" src="https://cdn.mos.cms.futurecdn.net/Edvv5pWXaEZAnzzMRWerjN-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>Naturally, the premise gives Olive and Adam the classic slow burn, as they try their best to act like a convincing couple while, ironically, becoming closer in the process. There’s something genuinely charming about watching Adam gradually soften too, particularly when we see him become a little kinder and less harsh towards his students. Thankfully, Lili Reinhart and Tom Bateman have the chemistry needed to carry this kind of story, making their growing connection feel believable even when the plot occasionally relies on familiar rom-com beats.</p><p>There’s also a more serious thread running through the film surrounding Olive’s unfair treatment within academia and her determination to get her research on early detection methods for pancreatic cancer taken seriously. Her motivation is deeply personal, which gives her ambitions more meaning, and the film presents the obstacles she faces in a thoughtful way. It helps give Olive more to care about beyond simply getting the guy, while also adding some much-needed substance to what could otherwise have been a fairly straightforward romance.</p><h2 id="verdict-the-love-hypothesis-is-a-fun-romance-with-a-few-bumps-along-the-way">Verdict: ‘The Love Hypothesis’ is a fun romance with a few bumps along the way</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="ekJdU92kFRwnwdZEmEmMhY" name="The Love Hypothesis" alt="Tom Bateman as Dr. Adam Carlsen and Lili Reinhart as Olive in "The Love Hypothesis" on Prime Video" src="https://cdn.mos.cms.futurecdn.net/ekJdU92kFRwnwdZEmEmMhY-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>Overall, “The Love Hypothesis” is a charming, funny and incredibly easy watch, which, honestly, is all I really need from a rom-com. While the fake dating premise doesn’t feel quite as punchy as it could have been and Olive’s motivations aren’t always the most convincing, it’s difficult not to be won over by the trope, particularly when Lili Reinhart and Tom Bateman have such good chemistry. </p><p>The film gets the major romantic moments across, but it does compress some of the anticipation and emotional escalation that made the novel so enjoyable. There’s definitely yearning here, but hardcore romance fans might find themselves wanting a little more of it. Still, this is absolutely worth putting on for an easy evening watch, and I wouldn’t be surprised to see it sitting at No. 1 on Prime Video over the weekend.</p><p><em><strong>"The Love Hypothesis" is streaming on </strong></em><a href="https://www.amazon.com/gp/video/detail/B0H4WHJ9M5" target="_blank" rel="nofollow"><em><strong>Prime Video</strong></em></a></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xj23MX"></div>                            </div>                            <script src="https://kwizly.com/embed/Xj23MX.js" async></script><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/entertainment/streaming/7-top-new-movies-to-stream-this-week-on-netflix-prime-video-hbo-max-and-more-including-backrooms-toy-story-5-and-an-action-thriller-film-john-wick-fans-will-love-sept-22-28">7 top new movies to stream this week on Netflix, Prime Video, and more</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/3-biggest-prime-video-movies-and-shows-i-cant-wait-to-watch-in-fall-2026">3 biggest Prime Video movies and shows I can’t wait to watch in fall 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/movies/resident-evil-2026-review">'Resident Evil' review: Officially the best video game movie of all time</a></li></ul><div data-model-name="Disney Plus,Hulu,Max,Paramount Plus,Peacock TV" data-widget-type="multimodelreview" data-widget-title="Streaming service deals not to miss"></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Netflix is about to remove 77 movies — here’s the 5 to watch before it’s too late ]]></title>
                                                                                                <dc:content><![CDATA[ <p><strong>Netflix</strong> makes a big deal about all the new movies it adds every month, but all these library arrivals come with a hidden cost: Netflix also removes a bunch of movies each month. </p><p>On the first of a new month, Netflix typically removes dozens of library titles, and <strong>October 1, 2026</strong> will be no different. Just as the calendar ticks over to the spookiest of months, 77 movies will wave goodbye to the world’s biggest streaming service. But you’ve still got time to watch some of the top picks.</p><p>However, there’s no time to waste, so to save you the headache of combing through almost 80 movies and wasting precious movie-watching time, I’ve picked out five high-quality movies you need to watch before they’re removed from Netflix. Get these at the very top of your Netflix watchlist right now.</p><h3 class="article-body__section" id="section-5-top-netflix-movies-to-watch-before-oct-1"><span>5 top Netflix movies to watch before Oct. 1</span></h3><h2 id="gone-girl-2014">‘Gone Girl’ (2014)</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/2-_-1nJf8Vg" allowfullscreen></iframe></div></div><p>Director David Fincher proved his thriller filmmaking credentials in the ‘90s with classics like “Seven” and “Fight Club,” so when it was announced he would be helming an adaptation of Gillian Flynn’s page-turner “Gone Girl,” I was <em>very</em> excited. The final result was above even my lofty expectations. Simply put, this is among the very best thrillers of the 21st century. Fincher’s eye for detail is on full display, and the story unfolds in highly compelling fashion. </p><p>Nick Dunne (Ben Affleck) awakens on the morning of his fifth wedding anniversary to discover his wife, Amy (Rosamund Pike), is missing. As the authorities investigate the disappearance, Nick and Amy’s relationship is put under the microscope, and the media machine turns its attention to Nick, turning public opinion against him. Pike delivers an Oscar-nominated performance in this slick and twisty thriller that keeps you guessing.</p><p><em><strong>Watch </strong></em><a href="https://www.netflix.com/title/70305893" target="_blank" rel="nofollow"><em><strong>"Gone Girl" on Netflix</strong></em></a><em><strong> until October 1</strong></em></p><h2 id="spider-man-homecoming-2017">‘Spider-Man: Homecoming’ (2017)</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/rk-dF1lIbIg" allowfullscreen></iframe></div></div><p>Tom Holland’s latest outing as the world’s most popular superhero, “Spider-Man: Brand New Day,” recently became the highest-grossing movie of all time in the U.S., so why not celebrate by returning to where the British actor began in his first solo outing as Spider-Man? “Spider-Man: Homecoming” is the first Spidey flick set in the MCU, and it set the stage for the popular Holland-led series to come. It also stars Robert Downey Jr., Zendaya and Michael Keaton.</p><p>After the events of “Captain America: Civil War,” Peter Parker (Holland) is back in New York, trying to be a friendly neighborhood superhero. Desperate to impress his mentor/father figure, Tony Stark (Downey Jr.), Parker gets his shot at taking on a real villain when the Vulture (Keaton) arrives on the scene with a plan to sell alien technology to some very bad people. Full of action, comedy and lovable characters, it’s a strong “Spider-Man” flick. </p><p><em><strong>Watch </strong></em><a href="https://www.netflix.com/title/80166369" target="_blank" rel="nofollow"><em><strong>"Spider-Man: Homecoming" on Netflix</strong></em></a><em><strong> until October 1</strong></em></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eG2KEX"></div>                            </div>                            <script src="https://kwizly.com/embed/eG2KEX.js" async></script><h2 id="the-witch-2015">‘The Witch’ (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/iQXmlf3Sefg" allowfullscreen></iframe></div></div><p>Halloween season is approaching, so if you’re looking for a great horror movie as we head into October, look no further than Robert Eggers’ “The Witch.” This 2015 chiller marked the filmmaker as a talent to watch, and he’s only further solidified his reputation in the years since. “The Witch” might be a little off-putting to some viewers due to its slow-burn pacing and period-accurate speech, but give it your full attention, and you’re rewarded by the end.</p><p>Set in 17th-century New England, William (Ralph Ineson) and his family are banished from their settlement and build their own farm in the shadow of a thick forest. When the family’s youngest son, Samuel, goes missing, it’s the oldest daughter, Thomasin (Taylor-Joy), who is blamed. As the family becomes increasingly fractured and paranoid, William suspects that evil forces live in the trees nearby, and that Thomasin might have engaged in witchcraft.</p><p><em><strong>Watch </strong></em><a href="https://www.netflix.com/title/80037280" target="_blank" rel="nofollow"><em><strong>"The Witch" on Netflix</strong></em></a><em><strong> until October 1</strong></em></p><h2 id="willy-wonka-and-the-chocolate-factory-1971">‘Willy Wonka and the Chocolate Factory’ (1971)</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/2WKPKnggJqk" allowfullscreen></iframe></div></div><p>“Willy Wonka and the Chocolate Factory” is a brightly wrapped family classic, anchored by one of Gene Wilder’s most iconic and celebrated performances. Based on Roald Dahl’s timeless 1960s novel, it’s a mouthwatering fantasy flick that transports viewers to a magical factory where the most incredible confectionery is created. Oh, and I’ve not even touched on the musical numbers; you’ll be singing its best songs in the shower for weeks afterward.</p><p>Young Charlie Bucket (Peter Ostrum) and his Grandpa Joe (Jack Albertson) get the opportunity of a lifetime when Charlie unwraps one of chocolate-maker Willy Wonka’s (Wilder) coveted golden tickets in a bar of candy. The ticket gives him, and four (very spoilt) children, the chance to tour Wonka’s dreamlike factory. At the eccentric factory, hijinks unfold, including an incident with a chocolate river and a meeting with the green-haired, orange-skinned Oompa-Loompas, who absolutely terrified me as a young child!</p><p><em><strong>Watch </strong></em><a href="https://www.netflix.com/title/60020949" target="_blank" rel="nofollow"><em><strong>"Willy Wonka and the Chocolate Factory" on Netflix</strong></em></a><em><strong> until October 1</strong></em></p><h2 id="queen-amp-slim-2019">‘Queen & Slim’ (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/G6Th84oGDno" allowfullscreen></iframe></div></div><p>“Queen & Slim” is a multi-layered movie. On the surface, it’s a Bonnie-and-Clyde thriller about two young lovers on the run, but this powerful movie offers much more than cheap thrills. Its timely social message lingers long after the credits roll. It’s all anchored by Daniel Kaluuya and Jodie Turner-Smith, who are quite the double act as the eponymous Slim and Queen. This 2019 movie is exhilarating, enraging and tragic in equal measure. </p><p>After an unspectacular first date, Queen (Turner-Smith) and Slim (Kaluuya) are driving home when a police officer pulls them over. The situation escalates, and Slim ends up shooting the cop in an act of self-defense. Believing they won’t be given a fair chance to explain their side of the story, they impulsively go on the run. As they make a break for freedom, a deep bond develops. However, with the authorities circling, they have only one shot at escape.</p><p><em><strong>Watch </strong></em><a href="https://www.netflix.com/title/80998887" target="_blank" rel="nofollow"><em><strong>"Queen & Slim" on Netflix</strong></em></a><em><strong> until October 1</strong></em></p><h3 class="article-body__section" id="section-every-movie-being-removed-from-netflix"><span>Every movie being removed from Netflix</span></h3><p><em>On October 1, 2026, Netflix U.S. is set to remove 77 movies from its library (per </em><a href="https://www.whats-on-netflix.com/leaving-soon/whats-leaving-netflix-october-2026/" target="_blank"><em>What's on Netflix</em></a><em>). The movies removed are subject to change. </em></p><ul><li>2 Guns (2013)</li><li>47 Ronin (2013)</li><li>A Beautiful Day In the Neighborhood (2019)</li><li>A Dog’s Journey (2019)</li><li>A Dog’s Purpose (2017)</li><li>A League of Their Own (1992)</li><li>A Stoning in Fulham County (1988)</li><li>Adam: The Song Continues (1986)</li><li>Aloha (2015)</li><li>Always (1989)</li><li>Angel Eyes (2001)</li><li>Apollo 13 (1995)</li><li>Baby Mama (2008)</li><li>Beginners (2011)</li><li>Black and Blue (2019)</li><li>Blue Is the Warmest Color (2013)</li><li>Blue Thunder (1983)</li><li>Born on the Fourth of July (1989)</li><li>Boss Baby (2017)</li><li>Charlie and the Chocolate Factory (2005)</li><li>Cinderella Man (2005)</li><li>Clueless (1995)</li><li>Edis Starlight (2021)</li><li>Eternal Summer (2006)</li><li>Fargo (1996)</li><li>Fatale (2020)</li><li>Ghostbusters (1984)</li><li>Ghostbusters: Answer the Call (2016)</li><li>Gone Girl (2014)</li><li>Hard Lessons (1986)</li><li>High Fidelity (2000)</li><li>High Plains Drifter (1973)</li><li>Hotel Transylvania 2 (2015)</li><li>How Do You Know (2010)</li><li>Identity Thief (2013)</li><li>In Defense of a Married Man (1990)</li><li>Inside Man (2006)</li><li>Inside Man: Most Wanted (2019)</li><li>Krampus (2015)</li><li>Nomadland (2020)</li><li>Official Secrets (2019)</li><li>Out of Africa (1985)</li><li>Parenthood (1989)</li><li>Pariah (2011)</li><li>Percy Jackson and the Olympians: The Lightning Thief (2010)</li><li>Percy Jackson: Sea of Monsters</li><li>Queen & Slim (2019)</li><li>Quiet Victory (1988)</li><li>Ride Along (2014)</li><li>Ride Along 2 (2016)</li><li>Riphagen – The Untouchable (2016)</li><li>Savages (2012)</li><li>She’s the One (1996)</li><li>Somewhere (2010)</li><li>Spider-Man: Homecoming (2017)</li><li>Strange Voices (1987)</li><li>Talk To Me (2007)</li><li>The Beguiled (2017)</li><li>The Book Club Murders (2024)</li><li>The Christmas Contract (2018)</li><li>The Fifth Element (1997)</li><li>The Good Shepherd (2006)</li><li>The Hitman’s Bodyguard (2017)</li><li>The Hitman’s Wife’s Bodyguard (2021)</li><li>The Last Witch Hunter (2015)</li><li>The Lazarus Project (2008)</li><li>The Professionals (1966)</li><li>The Quintessential Quintuplets Movie (2022)</li><li>The Ryan White Story (1989)</li><li>The Shack (2017)</li><li>The Vow (2012)</li><li>The VVitch (2015)</li><li>Till Death (2021)</li><li>Too Young the Hero (1988)</li><li>Triumph of the Heart (1991)</li><li>Tyler Perry’s The Family That Preys (2008)</li><li>U-571 (2000)</li><li>Unspeakable Acts (1990)</li><li>Victim of Beauty (1991)</li><li>Willy Wonka and the Chocolate Factory (1971)</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/netflix/new-on-netflix-in-september-2026-5-best-movies-and-shows-to-stream-plus-full-release-list">New on Netflix in September 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/netflix/5-best-new-netflix-movies-and-shows-to-stream-this-week-sept-21-27">5 best new Netflix movies and shows to stream this week</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/netflix/netflix-is-about-to-remove-77-movies-heres-the-5-to-watch-before-its-too-late</link>
                                                                            <description>
                            <![CDATA[ Netflix is set to remove almost 80 movies at the end of the month, but you still have time left to watch these top 5 picks before it's too late. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Gm8pu4saHBwFM4SAUzTWxR</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/UzVPphg7wJmWRFBFTwTdxT-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 23 Sep 2026 04:01:00 +0000</pubDate>                                                                                                                                <updated>Wed, 23 Sep 2026 09:20:06 +0000</updated>
                                                                                                                                            <category><![CDATA[Netflix]]></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/UzVPphg7wJmWRFBFTwTdxT-1920-80.jpg">
                                                            <media:credit><![CDATA[Netflix; Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Netflix logo on orange film reel background]]></media:description>                                                            <media:text><![CDATA[Netflix logo on orange film reel background]]></media:text>
                                <media:title type="plain"><![CDATA[Netflix logo on orange film reel background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/UzVPphg7wJmWRFBFTwTdxT-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p><strong>Netflix</strong> makes a big deal about all the new movies it adds every month, but all these library arrivals come with a hidden cost: Netflix also removes a bunch of movies each month. </p><p>On the first of a new month, Netflix typically removes dozens of library titles, and <strong>October 1, 2026</strong> will be no different. Just as the calendar ticks over to the spookiest of months, 77 movies will wave goodbye to the world’s biggest streaming service. But you’ve still got time to watch some of the top picks.</p><p>However, there’s no time to waste, so to save you the headache of combing through almost 80 movies and wasting precious movie-watching time, I’ve picked out five high-quality movies you need to watch before they’re removed from Netflix. Get these at the very top of your Netflix watchlist right now.</p><h3 class="article-body__section" id="section-5-top-netflix-movies-to-watch-before-oct-1"><span>5 top Netflix movies to watch before Oct. 1</span></h3><h2 id="gone-girl-2014">‘Gone Girl’ (2014)</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/2-_-1nJf8Vg" allowfullscreen></iframe></div></div><p>Director David Fincher proved his thriller filmmaking credentials in the ‘90s with classics like “Seven” and “Fight Club,” so when it was announced he would be helming an adaptation of Gillian Flynn’s page-turner “Gone Girl,” I was <em>very</em> excited. The final result was above even my lofty expectations. Simply put, this is among the very best thrillers of the 21st century. Fincher’s eye for detail is on full display, and the story unfolds in highly compelling fashion. </p><p>Nick Dunne (Ben Affleck) awakens on the morning of his fifth wedding anniversary to discover his wife, Amy (Rosamund Pike), is missing. As the authorities investigate the disappearance, Nick and Amy’s relationship is put under the microscope, and the media machine turns its attention to Nick, turning public opinion against him. Pike delivers an Oscar-nominated performance in this slick and twisty thriller that keeps you guessing.</p><p><em><strong>Watch </strong></em><a href="https://www.netflix.com/title/70305893" target="_blank" rel="nofollow"><em><strong>"Gone Girl" on Netflix</strong></em></a><em><strong> until October 1</strong></em></p><h2 id="spider-man-homecoming-2017">‘Spider-Man: Homecoming’ (2017)</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/rk-dF1lIbIg" allowfullscreen></iframe></div></div><p>Tom Holland’s latest outing as the world’s most popular superhero, “Spider-Man: Brand New Day,” recently became the highest-grossing movie of all time in the U.S., so why not celebrate by returning to where the British actor began in his first solo outing as Spider-Man? “Spider-Man: Homecoming” is the first Spidey flick set in the MCU, and it set the stage for the popular Holland-led series to come. It also stars Robert Downey Jr., Zendaya and Michael Keaton.</p><p>After the events of “Captain America: Civil War,” Peter Parker (Holland) is back in New York, trying to be a friendly neighborhood superhero. Desperate to impress his mentor/father figure, Tony Stark (Downey Jr.), Parker gets his shot at taking on a real villain when the Vulture (Keaton) arrives on the scene with a plan to sell alien technology to some very bad people. Full of action, comedy and lovable characters, it’s a strong “Spider-Man” flick. </p><p><em><strong>Watch </strong></em><a href="https://www.netflix.com/title/80166369" target="_blank" rel="nofollow"><em><strong>"Spider-Man: Homecoming" on Netflix</strong></em></a><em><strong> until October 1</strong></em></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eG2KEX"></div>                            </div>                            <script src="https://kwizly.com/embed/eG2KEX.js" async></script><h2 id="the-witch-2015">‘The Witch’ (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/iQXmlf3Sefg" allowfullscreen></iframe></div></div><p>Halloween season is approaching, so if you’re looking for a great horror movie as we head into October, look no further than Robert Eggers’ “The Witch.” This 2015 chiller marked the filmmaker as a talent to watch, and he’s only further solidified his reputation in the years since. “The Witch” might be a little off-putting to some viewers due to its slow-burn pacing and period-accurate speech, but give it your full attention, and you’re rewarded by the end.</p><p>Set in 17th-century New England, William (Ralph Ineson) and his family are banished from their settlement and build their own farm in the shadow of a thick forest. When the family’s youngest son, Samuel, goes missing, it’s the oldest daughter, Thomasin (Taylor-Joy), who is blamed. As the family becomes increasingly fractured and paranoid, William suspects that evil forces live in the trees nearby, and that Thomasin might have engaged in witchcraft.</p><p><em><strong>Watch </strong></em><a href="https://www.netflix.com/title/80037280" target="_blank" rel="nofollow"><em><strong>"The Witch" on Netflix</strong></em></a><em><strong> until October 1</strong></em></p><h2 id="willy-wonka-and-the-chocolate-factory-1971">‘Willy Wonka and the Chocolate Factory’ (1971)</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/2WKPKnggJqk" allowfullscreen></iframe></div></div><p>“Willy Wonka and the Chocolate Factory” is a brightly wrapped family classic, anchored by one of Gene Wilder’s most iconic and celebrated performances. Based on Roald Dahl’s timeless 1960s novel, it’s a mouthwatering fantasy flick that transports viewers to a magical factory where the most incredible confectionery is created. Oh, and I’ve not even touched on the musical numbers; you’ll be singing its best songs in the shower for weeks afterward.</p><p>Young Charlie Bucket (Peter Ostrum) and his Grandpa Joe (Jack Albertson) get the opportunity of a lifetime when Charlie unwraps one of chocolate-maker Willy Wonka’s (Wilder) coveted golden tickets in a bar of candy. The ticket gives him, and four (very spoilt) children, the chance to tour Wonka’s dreamlike factory. At the eccentric factory, hijinks unfold, including an incident with a chocolate river and a meeting with the green-haired, orange-skinned Oompa-Loompas, who absolutely terrified me as a young child!</p><p><em><strong>Watch </strong></em><a href="https://www.netflix.com/title/60020949" target="_blank" rel="nofollow"><em><strong>"Willy Wonka and the Chocolate Factory" on Netflix</strong></em></a><em><strong> until October 1</strong></em></p><h2 id="queen-amp-slim-2019">‘Queen & Slim’ (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/G6Th84oGDno" allowfullscreen></iframe></div></div><p>“Queen & Slim” is a multi-layered movie. On the surface, it’s a Bonnie-and-Clyde thriller about two young lovers on the run, but this powerful movie offers much more than cheap thrills. Its timely social message lingers long after the credits roll. It’s all anchored by Daniel Kaluuya and Jodie Turner-Smith, who are quite the double act as the eponymous Slim and Queen. This 2019 movie is exhilarating, enraging and tragic in equal measure. </p><p>After an unspectacular first date, Queen (Turner-Smith) and Slim (Kaluuya) are driving home when a police officer pulls them over. The situation escalates, and Slim ends up shooting the cop in an act of self-defense. Believing they won’t be given a fair chance to explain their side of the story, they impulsively go on the run. As they make a break for freedom, a deep bond develops. However, with the authorities circling, they have only one shot at escape.</p><p><em><strong>Watch </strong></em><a href="https://www.netflix.com/title/80998887" target="_blank" rel="nofollow"><em><strong>"Queen & Slim" on Netflix</strong></em></a><em><strong> until October 1</strong></em></p><h3 class="article-body__section" id="section-every-movie-being-removed-from-netflix"><span>Every movie being removed from Netflix</span></h3><p><em>On October 1, 2026, Netflix U.S. is set to remove 77 movies from its library (per </em><a href="https://www.whats-on-netflix.com/leaving-soon/whats-leaving-netflix-october-2026/" target="_blank"><em>What's on Netflix</em></a><em>). The movies removed are subject to change. </em></p><ul><li>2 Guns (2013)</li><li>47 Ronin (2013)</li><li>A Beautiful Day In the Neighborhood (2019)</li><li>A Dog’s Journey (2019)</li><li>A Dog’s Purpose (2017)</li><li>A League of Their Own (1992)</li><li>A Stoning in Fulham County (1988)</li><li>Adam: The Song Continues (1986)</li><li>Aloha (2015)</li><li>Always (1989)</li><li>Angel Eyes (2001)</li><li>Apollo 13 (1995)</li><li>Baby Mama (2008)</li><li>Beginners (2011)</li><li>Black and Blue (2019)</li><li>Blue Is the Warmest Color (2013)</li><li>Blue Thunder (1983)</li><li>Born on the Fourth of July (1989)</li><li>Boss Baby (2017)</li><li>Charlie and the Chocolate Factory (2005)</li><li>Cinderella Man (2005)</li><li>Clueless (1995)</li><li>Edis Starlight (2021)</li><li>Eternal Summer (2006)</li><li>Fargo (1996)</li><li>Fatale (2020)</li><li>Ghostbusters (1984)</li><li>Ghostbusters: Answer the Call (2016)</li><li>Gone Girl (2014)</li><li>Hard Lessons (1986)</li><li>High Fidelity (2000)</li><li>High Plains Drifter (1973)</li><li>Hotel Transylvania 2 (2015)</li><li>How Do You Know (2010)</li><li>Identity Thief (2013)</li><li>In Defense of a Married Man (1990)</li><li>Inside Man (2006)</li><li>Inside Man: Most Wanted (2019)</li><li>Krampus (2015)</li><li>Nomadland (2020)</li><li>Official Secrets (2019)</li><li>Out of Africa (1985)</li><li>Parenthood (1989)</li><li>Pariah (2011)</li><li>Percy Jackson and the Olympians: The Lightning Thief (2010)</li><li>Percy Jackson: Sea of Monsters</li><li>Queen & Slim (2019)</li><li>Quiet Victory (1988)</li><li>Ride Along (2014)</li><li>Ride Along 2 (2016)</li><li>Riphagen – The Untouchable (2016)</li><li>Savages (2012)</li><li>She’s the One (1996)</li><li>Somewhere (2010)</li><li>Spider-Man: Homecoming (2017)</li><li>Strange Voices (1987)</li><li>Talk To Me (2007)</li><li>The Beguiled (2017)</li><li>The Book Club Murders (2024)</li><li>The Christmas Contract (2018)</li><li>The Fifth Element (1997)</li><li>The Good Shepherd (2006)</li><li>The Hitman’s Bodyguard (2017)</li><li>The Hitman’s Wife’s Bodyguard (2021)</li><li>The Last Witch Hunter (2015)</li><li>The Lazarus Project (2008)</li><li>The Professionals (1966)</li><li>The Quintessential Quintuplets Movie (2022)</li><li>The Ryan White Story (1989)</li><li>The Shack (2017)</li><li>The Vow (2012)</li><li>The VVitch (2015)</li><li>Till Death (2021)</li><li>Too Young the Hero (1988)</li><li>Triumph of the Heart (1991)</li><li>Tyler Perry’s The Family That Preys (2008)</li><li>U-571 (2000)</li><li>Unspeakable Acts (1990)</li><li>Victim of Beauty (1991)</li><li>Willy Wonka and the Chocolate Factory (1971)</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/netflix/new-on-netflix-in-september-2026-5-best-movies-and-shows-to-stream-plus-full-release-list">New on Netflix in September 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/netflix/5-best-new-netflix-movies-and-shows-to-stream-this-week-sept-21-27">5 best new Netflix movies and shows to stream this week</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 3 new to Prime Video thriller movies to watch this week — including a ‘90s crime mystery flick with Denzel Washington and Angelina Jolie (Sept. 22-28) ]]></title>
                                                                                                <dc:content><![CDATA[ <p>If you’re in the mood for some thrilling movies this week, I can help. Every week, I comb through the latest arrivals on Prime Video and pick out the best thrillers recently added to the popular streaming service’s library. </p><p>We’re in the final full week of September, so now is a great time to get caught up on some of the month’s thriller highlights. These include a tense flick that sees a serial killer try to evade the police during a pop concert. Or you can enjoy “The Purge” movies from the very start. Or perhaps a crime mystery with two A-list stars will catch your eye. There’s plenty to watch. </p><p>These are the top Prime Video thriller movies you need to stream this week.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W5E9xW"></div>                            </div>                            <script src="https://kwizly.com/embed/W5E9xW.js" async></script><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="trap-2024">‘Trap’ (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/hJiPAJKjUVg" allowfullscreen></iframe></div></div><p>“Trap” is one of the most frustrating movies I’ve ever watched. That’s because the first half is so darn good, but it can’t retain its initial momentum. This latest M. Night Shyamalan movie totally falls apart in its second half thanks to a weak script, shoddy performances, and poor plotting. But still, it’s worth watching just for the excellent first 45 minutes alone and its unique perspective. In “Trap,” the killer is the lead character rather than a mystery figure. </p><p>Josh Hartnett plays Cooper Abbott, an everyday dad taking his young daughter to a concert for her idol, Lady Raven (Saleka Night). However, it’s soon revealed that Cooper is actually a wanted killer, known as “the Butcher,” and unbeknownst to him, the concert has become a police sting operation after they received a tip-off that he would be in attendance. Among the crowds, Cooper must find an escape route without his identity being revealed to his family.</p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B0D83Q657Q" target="_blank" rel="nofollow"><em><strong>"Trap" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="the-purge-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>Prime Video added the first three “The Purge” movies this month, and if you want to get caught up on this horror-thriller series, naturally, you’ll want to start at the beginning. “The Purge” has always been a series with a strong core idea, but flawed execution (even the “best” “Purge” movie, 2014’s “The Purge: Anarchy,” has clear problems), but the novelty of its setup goes some way to keeping you invested even when the narrative cliches arise. </p><p>Set in a dystopian America where a new political party has risen to power and instituted an annual “Purge,” a 12-hour period where all crime, including murder, is legal, “The Purge” sees a wealth security system salesman (Ethan Hawke) and his family bunkered down in their home on the eve of the next Purge. However, when masked men arrive at the door, the family is forced to fight for their lives as purgers invade their tightly locked-down home.</p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B00EQWWJCK" target="_blank" rel="nofollow"><em><strong>"The Purge" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="the-bone-collector-1999">‘The Bone Collector’ (1999)</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/fI56162Lz0A" allowfullscreen></iframe></div></div><p>“The Bone Collector” was a clear attempt to capitalize on the success of gritty crime thrillers like “Seven” and “The Silence of the Lambs” early in the decade. Based on Jeffery Deaver’s novel of the same name, the movie failed to reach the heights of its two most obvious inspirations. However, this psychological mystery is compelling enough that you’ll want to reach its conclusion, and that it stars Denzel Washington and Angelina Jolie helps. </p><p>In New York City, a ruthless serial killer is on the loose. Their chilling calling card is leaving a small shard of bone taken at the scene of the crime. Newly recruited police officer Amelia Donaghy (Jolie) investigates with the help of a brilliant forensic expert, Lincoln Rhyme (Washington), who is bed-bound after an accident leaves him quadriplegic. With Donaghy acting on the ground, Rhyme attempts to solve the twisting case before it’s too late.</p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B0GXCMCFWT" target="_blank" rel="nofollow"><em><strong>"The Bone Collector" 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-september-2026-top-picks-and-all-the-new-movies-and-shows-to-watch">New on Prime Video in September 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/amazon-wants-to-make-sure-you-see-the-latest-news-with-free-short-clips-on-all-the-major-stories-starting-today">Amazon adds "News" section to Prime Video</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/3-new-to-prime-video-thriller-movies-to-watch-this-week-sept-15-21-including-a-psychological-masterpiece-that-won-all-five-major-oscars">3 Prime Video movies and shows I can’t wait to watch in fall 2026</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-a-90s-crime-mystery-flick-with-denzel-washington-and-angelina-jolie-sept-22-28</link>
                                                                            <description>
                            <![CDATA[ These are the latest thriller movies added to Prime Video in September 2026, including a psychological mystery flick with Denzel Washington. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">wVgjFjFzTjUYnF9LnTQnAC</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/zWqHCpTxYNgNF2cEkpZ93U-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 22 Sep 2026 10:48:04 +0000</pubDate>                                                                                                                                <updated>Tue, 22 Sep 2026 10:48:08 +0000</updated>
                                                                                                                                            <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/zWqHCpTxYNgNF2cEkpZ93U-1920-80.jpg">
                                                            <media:credit><![CDATA[Prime Video; Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Prime Video logo on blue electric currents background]]></media:description>                                                            <media:text><![CDATA[Prime Video logo on blue electric currents background]]></media:text>
                                <media:title type="plain"><![CDATA[Prime Video logo on blue electric currents background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/zWqHCpTxYNgNF2cEkpZ93U-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>If you’re in the mood for some thrilling movies this week, I can help. Every week, I comb through the latest arrivals on Prime Video and pick out the best thrillers recently added to the popular streaming service’s library. </p><p>We’re in the final full week of September, so now is a great time to get caught up on some of the month’s thriller highlights. These include a tense flick that sees a serial killer try to evade the police during a pop concert. Or you can enjoy “The Purge” movies from the very start. Or perhaps a crime mystery with two A-list stars will catch your eye. There’s plenty to watch. </p><p>These are the top Prime Video thriller movies you need to stream this week.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W5E9xW"></div>                            </div>                            <script src="https://kwizly.com/embed/W5E9xW.js" async></script><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="trap-2024">‘Trap’ (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/hJiPAJKjUVg" allowfullscreen></iframe></div></div><p>“Trap” is one of the most frustrating movies I’ve ever watched. That’s because the first half is so darn good, but it can’t retain its initial momentum. This latest M. Night Shyamalan movie totally falls apart in its second half thanks to a weak script, shoddy performances, and poor plotting. But still, it’s worth watching just for the excellent first 45 minutes alone and its unique perspective. In “Trap,” the killer is the lead character rather than a mystery figure. </p><p>Josh Hartnett plays Cooper Abbott, an everyday dad taking his young daughter to a concert for her idol, Lady Raven (Saleka Night). However, it’s soon revealed that Cooper is actually a wanted killer, known as “the Butcher,” and unbeknownst to him, the concert has become a police sting operation after they received a tip-off that he would be in attendance. Among the crowds, Cooper must find an escape route without his identity being revealed to his family.</p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B0D83Q657Q" target="_blank" rel="nofollow"><em><strong>"Trap" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="the-purge-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>Prime Video added the first three “The Purge” movies this month, and if you want to get caught up on this horror-thriller series, naturally, you’ll want to start at the beginning. “The Purge” has always been a series with a strong core idea, but flawed execution (even the “best” “Purge” movie, 2014’s “The Purge: Anarchy,” has clear problems), but the novelty of its setup goes some way to keeping you invested even when the narrative cliches arise. </p><p>Set in a dystopian America where a new political party has risen to power and instituted an annual “Purge,” a 12-hour period where all crime, including murder, is legal, “The Purge” sees a wealth security system salesman (Ethan Hawke) and his family bunkered down in their home on the eve of the next Purge. However, when masked men arrive at the door, the family is forced to fight for their lives as purgers invade their tightly locked-down home.</p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B00EQWWJCK" target="_blank" rel="nofollow"><em><strong>"The Purge" on Prime Video</strong></em></a><em><strong> now</strong></em></p><h2 id="the-bone-collector-1999">‘The Bone Collector’ (1999)</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/fI56162Lz0A" allowfullscreen></iframe></div></div><p>“The Bone Collector” was a clear attempt to capitalize on the success of gritty crime thrillers like “Seven” and “The Silence of the Lambs” early in the decade. Based on Jeffery Deaver’s novel of the same name, the movie failed to reach the heights of its two most obvious inspirations. However, this psychological mystery is compelling enough that you’ll want to reach its conclusion, and that it stars Denzel Washington and Angelina Jolie helps. </p><p>In New York City, a ruthless serial killer is on the loose. Their chilling calling card is leaving a small shard of bone taken at the scene of the crime. Newly recruited police officer Amelia Donaghy (Jolie) investigates with the help of a brilliant forensic expert, Lincoln Rhyme (Washington), who is bed-bound after an accident leaves him quadriplegic. With Donaghy acting on the ground, Rhyme attempts to solve the twisting case before it’s too late.</p><p><em><strong>Watch </strong></em><a href="https://www.amazon.com/gp/video/detail/B0GXCMCFWT" target="_blank" rel="nofollow"><em><strong>"The Bone Collector" 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-september-2026-top-picks-and-all-the-new-movies-and-shows-to-watch">New on Prime Video in September 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/amazon-wants-to-make-sure-you-see-the-latest-news-with-free-short-clips-on-all-the-major-stories-starting-today">Amazon adds "News" section to Prime Video</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/3-new-to-prime-video-thriller-movies-to-watch-this-week-sept-15-21-including-a-psychological-masterpiece-that-won-all-five-major-oscars">3 Prime Video movies and shows I can’t wait to watch in fall 2026</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Netflix top 10 shows — here’s the 3 you need to binge-watch this week (September 22-28) ]]></title>
                                                                                                <dc:content><![CDATA[ <p><a href="https://www.tomsguide.com/entertainment/streaming/netflix">Netflix’s </a>top 10 shows list is looking particularly tempting this week, with several new releases making their way up the rankings. If you’re staring at the list wondering what’s actually worth adding to your watchlist, I’ve picked out three shows that deserve your attention. Whether you’re after something new to binge or simply want to know which titles are worth prioritizing, these are the shows that caught my eye this week.</p><p>That includes a sports drama following a teenage girl who takes on the challenge of competing alongside an elite boys’ rowing team, a thriller about a new mother whose seemingly perfect family life starts to unravel after hiring a mysterious nanny, and the latest season of the “Monster” anthology, this time revisiting the infamous Lizzie Borden case. So, here are the three Netflix shows worth streaming this week. </p><p><strong>Note: This list is based on the Netflix U.S. top 10 shows as of Tuesday, September 22, 2026. </strong></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ODmDlX"></div>                            </div>                            <script src="https://kwizly.com/embed/ODmDlX.js" async></script><h3 class="article-body__section" id="section-best-shows-in-the-netflix-top-10"><span>Best shows in the Netflix top 10</span></h3><h2 id="monster-the-lizzie-borden-story-2">‘Monster: The Lizzie Borden Story’</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/gYTzF1vna40" allowfullscreen></iframe></div></div><p>“Monster: The Lizzie Borden Story” is the eight-episode fourth installment of Ryan Murphy and Ian Brennan’s true-crime anthology franchise on Netflix. Following previous entries centered on Jeffrey Dahmer, the Menendez brothers and Ed Gein, this season marks the franchise’s first focus on an alleged female perpetrator, exploring one of late-19th-century America’s most infamous murder trials. Leading the series this time is Ella Beatty, who portrays the complex and repressed 32-year-old at the center of the media circus.</p><p>Set in 1890s Massachusetts, the new season follows Lizzie Borden (Beatty), a young woman living with her wealthy but troubled family. Her difficult relationship with her stepmother Abby (Rebecca Hall) and father Andrew (Charlie Hunnam) becomes increasingly strained, while the arrival of their new maid, Bridget “Maggie” Sullivan (Vicky Krieps), gives Lizzie an unexpected confidante. Soon, Lizzie and Maggie become increasingly close and begin plotting against those who have mistreated them. </p><p><em><strong>Stream "Monster: The Lizzie Borden Story" on </strong></em><a href="https://www.netflix.com/title/82068293" target="_blank" rel="nofollow"><em><strong>Netflix</strong></em></a></p><h2 id="crew-girl">‘Crew Girl’</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/Xs5qsfqp-tA" allowfullscreen></iframe></div></div><p>If you want something a little lighter to watch this week, “Crew Girl” should be on your watchlist. This Canadian coming-of-age sports drama leans into classic YA romance territory, complete with a central love triangle and plenty of yearning, which feels very much like the kind of romance we’re seeing everywhere right now. The story plays with two very different romantic dynamics: one is a slow-burn connection built on mutual respect, while the other is much more chaotic and intense. The series is basically perfect for fans of Prime Video’s “Off Campus” and Netflix’s “Finding Her Edge.”</p><p>After a family scandal upends her life, 16-year-old rower Teagan Tao (Miku Martineau) moves across the country and starts over at the prestigious Easton Prep. Determined to get back on the water, she discovers the school has no girls’ rowing team, leaving her with one option: joining the struggling boys’ varsity crew as their coxswain. Teagan quickly finds herself trying to earn the team’s trust while dealing with the pressures of her new school. Away from the boat, she also grows closer to two very different teammates, Josh Regis (Samuel Braun) and Cam Dillinger (Kyle Clark).</p><p><em><strong>Stream "Crew Girl" on </strong></em><a href="https://www.netflix.com/title/81991578" target="_blank" rel="nofollow"><em><strong>Netflix</strong></em></a></p><h2 id="not-a-stranger">‘Not a Stranger’</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/ODIk9yGmpQI" allowfullscreen></iframe></div></div><p>Thriller fans will be pleased to see “Not a Stranger” climbing Netflix’s top 10. This Turkish series has a compelling mystery at its core, following a new mother whose life starts to unravel after she hires a nanny to help around the house. Created and written by Tuğba Doğan, the series takes its time building the story and gradually reveals more about its characters and their relationships. I’m always happy to see more non-English-language shows getting the attention they deserve on Netflix, and this one looks like a particularly intriguing addition to the top 10.</p><p>After giving birth to her daughter, painter Funda (Elçin Sangu) is eager to return to her career but struggles to balance work, motherhood and her marriage. Her situation changes when she meets Nazlı (Melis Sezen), a seemingly ideal nanny who quickly becomes an important part of the family’s life. However, Funda soon discovers that Nazlı has a connection to her husband, İlker (Ozan Dolunay), from years earlier. As Nazlı settles into their home, Funda begins to question why she has appeared in their lives and what her husband may be hiding. </p><p><em><strong>Stream "Not a Stranger" on </strong></em><a href="https://www.netflix.com/title/81726799" target="_blank" rel="nofollow"><em><strong>Netflix</strong></em></a></p><h3 class="article-body__section" id="section-netflix-top-10-shows-right-now"><span>Netflix top 10 shows right now</span></h3><p>1. "Monster: The Lizzie Borden Story" (2026)<br>2. "Jo Koy: Blue in the Face" (2026)<br>3. "Crew Girl" (2026)<br>4. "Not a Stranger" (2026)<br>5. "I Survived A Serial Killer" (2021)<br>6. "The Perfect Lie" (2026)<br>7. "Death of the Pastor’s Wife" (2026)<br>8. "The Gentlemen" (2024)<br>9. "Mark Rober's CrunchLabs" (2025)<br>10. "The Doll" (2026)</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/netflix/new-on-netflix-in-september-2026-5-best-movies-and-shows-to-stream-plus-full-release-list">Everything new on Netflix in September 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/netflix/finished-the-lizzie-borden-story-3-chilling-true-crime-dramas-to-stream-next-on-netflix">3 true-crime dramas to stream after 'The Lizzie Borden Story'</a></li><li><a href="https://www.tomsguide.com/entertainment/netflix/5-best-new-netflix-movies-and-shows-to-stream-this-week-sept-21-27">5 best new Netflix movies and shows to stream this week</a></li></ul><div data-model-name="Disney Plus,Hulu,Max,Paramount Plus,Peacock TV" data-widget-type="multimodelreview" data-widget-title="Streaming service deals not to miss"></div> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/netflix/netflix-top-10-shows-heres-the-3-you-need-to-binge-watch-this-week-september-22-28</link>
                                                                            <description>
                            <![CDATA[ Looking for something new to watch? We've picked the best shows currently dominating Netflix’s top 10 list, including a new season of the "Monster" anthology series. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">eTByK7GhScjvqVgXYtKDVh</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/Xb4D8wVMmz2UXjYZs8Q7Jc-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 22 Sep 2026 09:36:02 +0000</pubDate>                                                                                                                                <updated>Tue, 22 Sep 2026 18:55:36 +0000</updated>
                                                                                                                                            <category><![CDATA[Netflix]]></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/Xb4D8wVMmz2UXjYZs8Q7Jc-1920-80.jpg">
                                                            <media:credit><![CDATA[Ivan Fedorov / Alamy]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Netflix logo on blue background]]></media:description>                                                            <media:text><![CDATA[Netflix logo on blue background]]></media:text>
                                <media:title type="plain"><![CDATA[Netflix logo on blue background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/Xb4D8wVMmz2UXjYZs8Q7Jc-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p><a href="https://www.tomsguide.com/entertainment/streaming/netflix">Netflix’s </a>top 10 shows list is looking particularly tempting this week, with several new releases making their way up the rankings. If you’re staring at the list wondering what’s actually worth adding to your watchlist, I’ve picked out three shows that deserve your attention. Whether you’re after something new to binge or simply want to know which titles are worth prioritizing, these are the shows that caught my eye this week.</p><p>That includes a sports drama following a teenage girl who takes on the challenge of competing alongside an elite boys’ rowing team, a thriller about a new mother whose seemingly perfect family life starts to unravel after hiring a mysterious nanny, and the latest season of the “Monster” anthology, this time revisiting the infamous Lizzie Borden case. So, here are the three Netflix shows worth streaming this week. </p><p><strong>Note: This list is based on the Netflix U.S. top 10 shows as of Tuesday, September 22, 2026. </strong></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ODmDlX"></div>                            </div>                            <script src="https://kwizly.com/embed/ODmDlX.js" async></script><h3 class="article-body__section" id="section-best-shows-in-the-netflix-top-10"><span>Best shows in the Netflix top 10</span></h3><h2 id="monster-the-lizzie-borden-story-2">‘Monster: The Lizzie Borden Story’</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/gYTzF1vna40" allowfullscreen></iframe></div></div><p>“Monster: The Lizzie Borden Story” is the eight-episode fourth installment of Ryan Murphy and Ian Brennan’s true-crime anthology franchise on Netflix. Following previous entries centered on Jeffrey Dahmer, the Menendez brothers and Ed Gein, this season marks the franchise’s first focus on an alleged female perpetrator, exploring one of late-19th-century America’s most infamous murder trials. Leading the series this time is Ella Beatty, who portrays the complex and repressed 32-year-old at the center of the media circus.</p><p>Set in 1890s Massachusetts, the new season follows Lizzie Borden (Beatty), a young woman living with her wealthy but troubled family. Her difficult relationship with her stepmother Abby (Rebecca Hall) and father Andrew (Charlie Hunnam) becomes increasingly strained, while the arrival of their new maid, Bridget “Maggie” Sullivan (Vicky Krieps), gives Lizzie an unexpected confidante. Soon, Lizzie and Maggie become increasingly close and begin plotting against those who have mistreated them. </p><p><em><strong>Stream "Monster: The Lizzie Borden Story" on </strong></em><a href="https://www.netflix.com/title/82068293" target="_blank" rel="nofollow"><em><strong>Netflix</strong></em></a></p><h2 id="crew-girl">‘Crew Girl’</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/Xs5qsfqp-tA" allowfullscreen></iframe></div></div><p>If you want something a little lighter to watch this week, “Crew Girl” should be on your watchlist. This Canadian coming-of-age sports drama leans into classic YA romance territory, complete with a central love triangle and plenty of yearning, which feels very much like the kind of romance we’re seeing everywhere right now. The story plays with two very different romantic dynamics: one is a slow-burn connection built on mutual respect, while the other is much more chaotic and intense. The series is basically perfect for fans of Prime Video’s “Off Campus” and Netflix’s “Finding Her Edge.”</p><p>After a family scandal upends her life, 16-year-old rower Teagan Tao (Miku Martineau) moves across the country and starts over at the prestigious Easton Prep. Determined to get back on the water, she discovers the school has no girls’ rowing team, leaving her with one option: joining the struggling boys’ varsity crew as their coxswain. Teagan quickly finds herself trying to earn the team’s trust while dealing with the pressures of her new school. Away from the boat, she also grows closer to two very different teammates, Josh Regis (Samuel Braun) and Cam Dillinger (Kyle Clark).</p><p><em><strong>Stream "Crew Girl" on </strong></em><a href="https://www.netflix.com/title/81991578" target="_blank" rel="nofollow"><em><strong>Netflix</strong></em></a></p><h2 id="not-a-stranger">‘Not a Stranger’</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/ODIk9yGmpQI" allowfullscreen></iframe></div></div><p>Thriller fans will be pleased to see “Not a Stranger” climbing Netflix’s top 10. This Turkish series has a compelling mystery at its core, following a new mother whose life starts to unravel after she hires a nanny to help around the house. Created and written by Tuğba Doğan, the series takes its time building the story and gradually reveals more about its characters and their relationships. I’m always happy to see more non-English-language shows getting the attention they deserve on Netflix, and this one looks like a particularly intriguing addition to the top 10.</p><p>After giving birth to her daughter, painter Funda (Elçin Sangu) is eager to return to her career but struggles to balance work, motherhood and her marriage. Her situation changes when she meets Nazlı (Melis Sezen), a seemingly ideal nanny who quickly becomes an important part of the family’s life. However, Funda soon discovers that Nazlı has a connection to her husband, İlker (Ozan Dolunay), from years earlier. As Nazlı settles into their home, Funda begins to question why she has appeared in their lives and what her husband may be hiding. </p><p><em><strong>Stream "Not a Stranger" on </strong></em><a href="https://www.netflix.com/title/81726799" target="_blank" rel="nofollow"><em><strong>Netflix</strong></em></a></p><h3 class="article-body__section" id="section-netflix-top-10-shows-right-now"><span>Netflix top 10 shows right now</span></h3><p>1. "Monster: The Lizzie Borden Story" (2026)<br>2. "Jo Koy: Blue in the Face" (2026)<br>3. "Crew Girl" (2026)<br>4. "Not a Stranger" (2026)<br>5. "I Survived A Serial Killer" (2021)<br>6. "The Perfect Lie" (2026)<br>7. "Death of the Pastor’s Wife" (2026)<br>8. "The Gentlemen" (2024)<br>9. "Mark Rober's CrunchLabs" (2025)<br>10. "The Doll" (2026)</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/netflix/new-on-netflix-in-september-2026-5-best-movies-and-shows-to-stream-plus-full-release-list">Everything new on Netflix in September 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/netflix/finished-the-lizzie-borden-story-3-chilling-true-crime-dramas-to-stream-next-on-netflix">3 true-crime dramas to stream after 'The Lizzie Borden Story'</a></li><li><a href="https://www.tomsguide.com/entertainment/netflix/5-best-new-netflix-movies-and-shows-to-stream-this-week-sept-21-27">5 best new Netflix movies and shows to stream this week</a></li></ul><div data-model-name="Disney Plus,Hulu,Max,Paramount Plus,Peacock TV" data-widget-type="multimodelreview" data-widget-title="Streaming service deals not to miss"></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Paramount+ just added one of the year’s most overlooked crime thriller movies — and it's led by a ‘White Lotus’ star ]]></title>
                                                                                                <dc:content><![CDATA[ <p>British actor <strong>Leo Woodall</strong> is building quite a resume, having appeared in popular shows like HBO’s “The White Lotus” and Netflix’s “One Day.” He also featured in the fourth “Bridget Jones” movie last year and the Anthony Bourdain biopic "Tony" over the summer. But perhaps his best work to date has flown under the radar. </p><p>I’m talking about <strong>“Tuner,”</strong> a crime thriller that arrived in theaters back in May. It made a modest splash at the box office, grossing around $15 million worldwide (a relatively solid sum considering its $7 million budget). However, <strong>it just arrived on </strong><a href="https://www.paramountplus.com/" target="_blank" rel="nofollow"><strong>Paramount+</strong></a>, which gives it a springboard to receive even wider attention. And it totally deserves that chance.</p><p>This engaging thriller currently ranks in my top 10 favorite movies of 2026 (and I’ve seen 77 movies on the big screen as of September 21), and I’ve been recommending it to friends and colleagues for months. They’ve got the message; now I’m here to tell you why you should stream “Tuner.”</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xj2GYX"></div>                            </div>                            <script src="https://kwizly.com/embed/Xj2GYX.js" async></script><h2 id="what-is-tuner-about">What is ‘Tuner’ about?</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/rdlOZhl-nSA" allowfullscreen></iframe></div></div><p>Written and directed by Daniel Roher, “Tuner” centers on Niki White (Woodall), a New York City apprentice piano tuner working with a master of the craft, and Niki’s father figure, Harry Horowitz (Dustin Hoffman). </p><p>Niki also suffers from hyperacusis, which he describes as “an allergy to noise.” To protect his extremely sensitive hearing, he wears ear protectors and has given up his true passion of playing the piano, despite being a virtuoso in his youth. </p><p>When he unexpectedly discovers his condition gives him an aptitude for cracking safes, he becomes involved with a criminal organisation. At the same time, he also meets and courts a talented musical student, Ruthie (Havana Rose Liu). </p><p>For a while, Niki manages to balance his everyday life and blossoming romance with his criminal side hustle, but eventually the two start to mix with disastrous consequences.</p><h2 id="tuner-is-a-compelling-character-driven-thriller">‘Tuner’ is a compelling, character-driven thriller</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="J4AqJXYfstPRvXCXRD8UJj" name="3EJ946T-tuner-movie-2026" alt="Leo Woodall as Niki White in "Tuner"" src="https://cdn.mos.cms.futurecdn.net/J4AqJXYfstPRvXCXRD8UJj-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 / Collection Christophel / Black Bear Pictures)</span></figcaption></figure><p>Unlike some thrillers that center on a world-altering conspiracy or life-or-death stakes, “Tuner” is a little smaller in scale. Rather than a weakness, this is a huge strength. I greatly enjoyed “Tuner’s” most modest scope and decision to place its compelling characters above a "save the world" plot. </p><p>A lot of time is dedicated to Niki’s relationship with both Hoffman’s Harry and his budding relationship with Liu’s Ruthie. This pays off in spades as you’ll grow to really care about the main players. When forces conspire to tear Niki and Ruthie apart, and Harry suffers from major health issues, I was genuinely invested in seeing these threads resolved. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="aZHJP5j6uA74rNvWxQfYEj" name="3EJ9471-tuner-movie-2026" alt="(L-R) Leo Woodall as Niki White and Havana Rose Liu as Ruthie Waymon in "Tuner"" src="https://cdn.mos.cms.futurecdn.net/aZHJP5j6uA74rNvWxQfYEj-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 / Collection Christophel / Black Bear Pictures)</span></figcaption></figure><p>Which isn’t to say that “Tuner” comes up short in the excitement department. As noted, Niki’s discovery that his sensitive hearing makes him a whizz at cracking safes leads him to work for some very unsavory figures. And naturally, criminals aren’t the most reliable colleagues. </p><p>Through it all, Woodall shines in the lead role. He serves up especially strong work with the dramatic material given to him that revolves around Niki’s frustration at what the world took from him — his ability to play the musical instrument he now works to tune every day. On the surface, Niki is an unassuming, sweet man, but there’s also a bitterness inside him. </p><p>“Tuner's” narrative throws plenty of obstacles at its protagonist, almost as if to see whether Niki will crack under the pressure. It all builds to a melancholic but oddly hopeful conclusion that ranks among my favorite endings of the year so far.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="tcp2P6nnM4maXAckooR7Ej" name="3F70FJN-tuner-movie-2026" alt="Leo Woodall as Niki White in "Tuner"" src="https://cdn.mos.cms.futurecdn.net/tcp2P6nnM4maXAckooR7Ej-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 / Collection Christophel / Black Bear Pictures)</span></figcaption></figure><p>Director Daniel Roher and Editor Greg O'Bryant also use some clever filmmaking tricks to draw you into Niki's world. Watching somebody spend hours cracking a safe might not sound all that compelling, but "Tuner" finds a way to make this act feel electric. Sound is brilliantly used to portray Niki's heightened (but seriously sensitive) hearing, and even with some quick-cut editing tactics, the movie never feels overproduced.</p><p>If my words alone don’t convince you, over on review site <a href="https://www.rottentomatoes.com/m/tuner" target="_blank">Rotten Tomatoes</a>, the movie holds an impressive 94% rating from critics, and viewers agree, rating it 93%. The site’s Critics Consensus reads, “Announcing Leo Woodall as a compelling star talent, ‘Tuner’ enhances its nifty caper setup with a smart sense of humor and vivid characterizations.”</p><p>Between its great cast (Hoffman deserves his own shout-out), engaging central premise, well-written characters, and satisfying thriller moments, “Tuner” is one of the year’s best genre efforts. A well-crafted caper that hits all the right notes, much like a perfectly tuned grand piano. </p><p><em><strong>Watch </strong></em><a href="https://www.paramountplus.com/" target="_blank" rel="nofollow"><em><strong>“Tuner” on Paramount+</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/paramount-plus/new-on-paramount-in-september-2026-top-movies-and-shows-to-stream-this-month">New on Paramount+ in September 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/paramount-plus/3-new-to-paramount-movies-you-need-to-stream-this-weekend-sept-18-20-2026">3 new to Paramount+ movies you need to stream</a></li><li><a href="https://www.tomsguide.com/entertainment/streaming/netflix-and-prime-video-dropped-the-2-worst-thrillers-of-2026-but-here-are-5-new-movies-actually-worth-streaming">watched the 2 worst thrillers of 2026 — here are 5 to stream instead</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/paramount-plus/paramount-just-added-one-of-the-years-most-overlooked-crime-thriller-movies-and-its-led-by-a-white-lotus-star</link>
                                                                            <description>
                            <![CDATA[ One of my favorite thriller movies of the year is now streaming on Paramount+. Here's why "Tuner" deserves to be on your watchlist. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">nxcpjswSVWd4scGfRug6Q5</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/gGzeVZaastFbdgkbP8RvEj-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 21 Sep 2026 08:00:00 +0000</pubDate>                                                                                                                                <updated>Mon, 21 Sep 2026 18:37:58 +0000</updated>
                                                                                                                                            <category><![CDATA[Paramount Plus]]></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/gGzeVZaastFbdgkbP8RvEj-1920-80.jpg">
                                                            <media:credit><![CDATA[Alamy / Collection Christophel / Black Bear Pictures]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[(L-R) Dustin Hoffman as Harry Horowitz and Leo Woodall as Niki White in &quot;Tuner&quot;]]></media:description>                                                            <media:text><![CDATA[(L-R) Dustin Hoffman as Harry Horowitz and Leo Woodall as Niki White in &quot;Tuner&quot;]]></media:text>
                                <media:title type="plain"><![CDATA[(L-R) Dustin Hoffman as Harry Horowitz and Leo Woodall as Niki White in &quot;Tuner&quot;]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/gGzeVZaastFbdgkbP8RvEj-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>British actor <strong>Leo Woodall</strong> is building quite a resume, having appeared in popular shows like HBO’s “The White Lotus” and Netflix’s “One Day.” He also featured in the fourth “Bridget Jones” movie last year and the Anthony Bourdain biopic "Tony" over the summer. But perhaps his best work to date has flown under the radar. </p><p>I’m talking about <strong>“Tuner,”</strong> a crime thriller that arrived in theaters back in May. It made a modest splash at the box office, grossing around $15 million worldwide (a relatively solid sum considering its $7 million budget). However, <strong>it just arrived on </strong><a href="https://www.paramountplus.com/" target="_blank" rel="nofollow"><strong>Paramount+</strong></a>, which gives it a springboard to receive even wider attention. And it totally deserves that chance.</p><p>This engaging thriller currently ranks in my top 10 favorite movies of 2026 (and I’ve seen 77 movies on the big screen as of September 21), and I’ve been recommending it to friends and colleagues for months. They’ve got the message; now I’m here to tell you why you should stream “Tuner.”</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xj2GYX"></div>                            </div>                            <script src="https://kwizly.com/embed/Xj2GYX.js" async></script><h2 id="what-is-tuner-about">What is ‘Tuner’ about?</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/rdlOZhl-nSA" allowfullscreen></iframe></div></div><p>Written and directed by Daniel Roher, “Tuner” centers on Niki White (Woodall), a New York City apprentice piano tuner working with a master of the craft, and Niki’s father figure, Harry Horowitz (Dustin Hoffman). </p><p>Niki also suffers from hyperacusis, which he describes as “an allergy to noise.” To protect his extremely sensitive hearing, he wears ear protectors and has given up his true passion of playing the piano, despite being a virtuoso in his youth. </p><p>When he unexpectedly discovers his condition gives him an aptitude for cracking safes, he becomes involved with a criminal organisation. At the same time, he also meets and courts a talented musical student, Ruthie (Havana Rose Liu). </p><p>For a while, Niki manages to balance his everyday life and blossoming romance with his criminal side hustle, but eventually the two start to mix with disastrous consequences.</p><h2 id="tuner-is-a-compelling-character-driven-thriller">‘Tuner’ is a compelling, character-driven thriller</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="J4AqJXYfstPRvXCXRD8UJj" name="3EJ946T-tuner-movie-2026" alt="Leo Woodall as Niki White in "Tuner"" src="https://cdn.mos.cms.futurecdn.net/J4AqJXYfstPRvXCXRD8UJj-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 / Collection Christophel / Black Bear Pictures)</span></figcaption></figure><p>Unlike some thrillers that center on a world-altering conspiracy or life-or-death stakes, “Tuner” is a little smaller in scale. Rather than a weakness, this is a huge strength. I greatly enjoyed “Tuner’s” most modest scope and decision to place its compelling characters above a "save the world" plot. </p><p>A lot of time is dedicated to Niki’s relationship with both Hoffman’s Harry and his budding relationship with Liu’s Ruthie. This pays off in spades as you’ll grow to really care about the main players. When forces conspire to tear Niki and Ruthie apart, and Harry suffers from major health issues, I was genuinely invested in seeing these threads resolved. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="aZHJP5j6uA74rNvWxQfYEj" name="3EJ9471-tuner-movie-2026" alt="(L-R) Leo Woodall as Niki White and Havana Rose Liu as Ruthie Waymon in "Tuner"" src="https://cdn.mos.cms.futurecdn.net/aZHJP5j6uA74rNvWxQfYEj-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 / Collection Christophel / Black Bear Pictures)</span></figcaption></figure><p>Which isn’t to say that “Tuner” comes up short in the excitement department. As noted, Niki’s discovery that his sensitive hearing makes him a whizz at cracking safes leads him to work for some very unsavory figures. And naturally, criminals aren’t the most reliable colleagues. </p><p>Through it all, Woodall shines in the lead role. He serves up especially strong work with the dramatic material given to him that revolves around Niki’s frustration at what the world took from him — his ability to play the musical instrument he now works to tune every day. On the surface, Niki is an unassuming, sweet man, but there’s also a bitterness inside him. </p><p>“Tuner's” narrative throws plenty of obstacles at its protagonist, almost as if to see whether Niki will crack under the pressure. It all builds to a melancholic but oddly hopeful conclusion that ranks among my favorite endings of the year so far.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="tcp2P6nnM4maXAckooR7Ej" name="3F70FJN-tuner-movie-2026" alt="Leo Woodall as Niki White in "Tuner"" src="https://cdn.mos.cms.futurecdn.net/tcp2P6nnM4maXAckooR7Ej-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 / Collection Christophel / Black Bear Pictures)</span></figcaption></figure><p>Director Daniel Roher and Editor Greg O'Bryant also use some clever filmmaking tricks to draw you into Niki's world. Watching somebody spend hours cracking a safe might not sound all that compelling, but "Tuner" finds a way to make this act feel electric. Sound is brilliantly used to portray Niki's heightened (but seriously sensitive) hearing, and even with some quick-cut editing tactics, the movie never feels overproduced.</p><p>If my words alone don’t convince you, over on review site <a href="https://www.rottentomatoes.com/m/tuner" target="_blank">Rotten Tomatoes</a>, the movie holds an impressive 94% rating from critics, and viewers agree, rating it 93%. The site’s Critics Consensus reads, “Announcing Leo Woodall as a compelling star talent, ‘Tuner’ enhances its nifty caper setup with a smart sense of humor and vivid characterizations.”</p><p>Between its great cast (Hoffman deserves his own shout-out), engaging central premise, well-written characters, and satisfying thriller moments, “Tuner” is one of the year’s best genre efforts. A well-crafted caper that hits all the right notes, much like a perfectly tuned grand piano. </p><p><em><strong>Watch </strong></em><a href="https://www.paramountplus.com/" target="_blank" rel="nofollow"><em><strong>“Tuner” on Paramount+</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/paramount-plus/new-on-paramount-in-september-2026-top-movies-and-shows-to-stream-this-month">New on Paramount+ in September 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/paramount-plus/3-new-to-paramount-movies-you-need-to-stream-this-weekend-sept-18-20-2026">3 new to Paramount+ movies you need to stream</a></li><li><a href="https://www.tomsguide.com/entertainment/streaming/netflix-and-prime-video-dropped-the-2-worst-thrillers-of-2026-but-here-are-5-new-movies-actually-worth-streaming">watched the 2 worst thrillers of 2026 — here are 5 to stream instead</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ This free horror movie on Tubi with a pre-fame Bradley Cooper has a scene I'll never forget —but you don't have long to stream it ]]></title>
                                                                                                <dc:content><![CDATA[ <p>There's a whole subgenre of horror built on a simple fear: a child who isn't what they seem. <strong>"Case 39"</strong> is one of the nastier entries in it, and right now you can stream it for <strong>free on Tubi</strong>. Move quickly, though, because it's leaving the platform soon.</p><p>This 2009 supernatural horror flick comes from director Christian Alvart ("Pandorum") and stars <strong>Renée Zellweger</strong> as a social worker who bites off far more than she can chew. She's joined by a great supporting cast as well: <strong>Ian McShane</strong> as a detective and <strong>Bradley Cooper</strong>, years before "The Hangover" made him a star, as her ill-fated best friend.</p><p>Critics were rough on it back in the day, but "Case 39" is a genuinely creepy watch with a couple of moments that'll stick with you, so if you're in the mood for a mean little horror movie tonight, you'll want to make sure you catch it on Tubi before it disappears.</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="what-is-39-case-39-39-about">What is 'Case 39' about?</h2><p>Emily Jenkins (Renée Zellweger) is a social worker in Oregon who takes on her 39th case: 10-year-old Lilith Sullivan (Jodelle Ferland), a quiet girl who seems terrified of her own parents. </p><p>Emily suspects abuse, and her worst fears appear to come true when Lilith's parents try to kill her by locking her in an oven. Emily and a detective (Ian McShane) rescue the girl, but rather than send her to a children's home, Emily takes Lilith in herself.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/Cd9t9yHK7Mw" allowfullscreen></iframe></div></div><p>That's when things start to go very wrong. People close to Emily begin dying in strange, horrifying ways, each one right after crossing paths with Lilith. Desperate for answers, Emily visits the girl's institutionalized parents, who finally tell her the truth they were trying to escape: Lilith isn't a child at all, but a demon that feeds on fear. Now, Emily is the one standing between it and its next meal, in a house she invited it into herself. And things only get worse from there. </p><h2 id="why-i-recommend-streaming-39-case-39-39">Why I recommend streaming 'Case 39'</h2><p>So, I'll be real here. "Case 39" isn't reinventing anything. It's obviously an homage to several other movies, and it doesn't exactly have an original premise. But it's a lot more effective than its reputation suggests, mostly because it plays everything straight. And its cast is fantastic: Zellweger really commits completely to a woman slowly realizing she's made a catastrophic mistake, and young Jodelle Ferland is genuinely unnerving as Lilith. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Fh37bdfzeeHMQFBLod3sgc" name="Case 39" alt="Case 39" src="https://cdn.mos.cms.futurecdn.net/Fh37bdfzeeHMQFBLod3sgc-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tubi)</span></figcaption></figure><p>The real reason to watch, though, is the handful of scenes that go for the throat. There's a scene involving Bradley Cooper and a swarm of hornets that's as nasty and memorable as anything in a bigger, better-reviewed horror film, and the movie's willingness to be genuinely mean gives it a real edge.</p><p>"Case 39" is a tense, underrated horror gem that deserves better than it got, and it's a great pick if you're ready to start getting into the Halloween spirit. Just don't wait too long, because it won't be free on Tubi for much longer.</p><p><a href="https://tubitv.com/movies/554186/case-39" target="_blank" rel="nofollow"><em><strong>Stream "Case 39" free on Tubi</strong></em></a></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-O63yjX"></div>                            </div>                            <script src="https://kwizly.com/embed/O63yjX.js" async></script> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/streaming/this-free-horror-movie-on-tubi-features-a-pre-fame-bradley-cooper-and-a-scene-ill-never-forget-but-you-dont-have-long-to-stream-it</link>
                                                                            <description>
                            <![CDATA[ 'Case 39' is one of Renée Zellweger's best movies, especially if you enjoy tales about creepy kids. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">kauFMNUKca5KWM59LR6Ez</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/aqDWCDb8ZTTPz2m4XbW8jU-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 20 Sep 2026 11:45:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Streaming]]></category>
                                                    <category><![CDATA[Entertainment]]></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/aqDWCDb8ZTTPz2m4XbW8jU-1920-80.jpg">
                                                            <media:credit><![CDATA[Alamy]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Renee Zellweger and Bradley Cooper in Case 39]]></media:description>                                                            <media:text><![CDATA[Renee Zellweger and Bradley Cooper in Case 39]]></media:text>
                                <media:title type="plain"><![CDATA[Renee Zellweger and Bradley Cooper in Case 39]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/aqDWCDb8ZTTPz2m4XbW8jU-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>There's a whole subgenre of horror built on a simple fear: a child who isn't what they seem. <strong>"Case 39"</strong> is one of the nastier entries in it, and right now you can stream it for <strong>free on Tubi</strong>. Move quickly, though, because it's leaving the platform soon.</p><p>This 2009 supernatural horror flick comes from director Christian Alvart ("Pandorum") and stars <strong>Renée Zellweger</strong> as a social worker who bites off far more than she can chew. She's joined by a great supporting cast as well: <strong>Ian McShane</strong> as a detective and <strong>Bradley Cooper</strong>, years before "The Hangover" made him a star, as her ill-fated best friend.</p><p>Critics were rough on it back in the day, but "Case 39" is a genuinely creepy watch with a couple of moments that'll stick with you, so if you're in the mood for a mean little horror movie tonight, you'll want to make sure you catch it on Tubi before it disappears.</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="what-is-39-case-39-39-about">What is 'Case 39' about?</h2><p>Emily Jenkins (Renée Zellweger) is a social worker in Oregon who takes on her 39th case: 10-year-old Lilith Sullivan (Jodelle Ferland), a quiet girl who seems terrified of her own parents. </p><p>Emily suspects abuse, and her worst fears appear to come true when Lilith's parents try to kill her by locking her in an oven. Emily and a detective (Ian McShane) rescue the girl, but rather than send her to a children's home, Emily takes Lilith in herself.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/Cd9t9yHK7Mw" allowfullscreen></iframe></div></div><p>That's when things start to go very wrong. People close to Emily begin dying in strange, horrifying ways, each one right after crossing paths with Lilith. Desperate for answers, Emily visits the girl's institutionalized parents, who finally tell her the truth they were trying to escape: Lilith isn't a child at all, but a demon that feeds on fear. Now, Emily is the one standing between it and its next meal, in a house she invited it into herself. And things only get worse from there. </p><h2 id="why-i-recommend-streaming-39-case-39-39">Why I recommend streaming 'Case 39'</h2><p>So, I'll be real here. "Case 39" isn't reinventing anything. It's obviously an homage to several other movies, and it doesn't exactly have an original premise. But it's a lot more effective than its reputation suggests, mostly because it plays everything straight. And its cast is fantastic: Zellweger really commits completely to a woman slowly realizing she's made a catastrophic mistake, and young Jodelle Ferland is genuinely unnerving as Lilith. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Fh37bdfzeeHMQFBLod3sgc" name="Case 39" alt="Case 39" src="https://cdn.mos.cms.futurecdn.net/Fh37bdfzeeHMQFBLod3sgc-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tubi)</span></figcaption></figure><p>The real reason to watch, though, is the handful of scenes that go for the throat. There's a scene involving Bradley Cooper and a swarm of hornets that's as nasty and memorable as anything in a bigger, better-reviewed horror film, and the movie's willingness to be genuinely mean gives it a real edge.</p><p>"Case 39" is a tense, underrated horror gem that deserves better than it got, and it's a great pick if you're ready to start getting into the Halloween spirit. Just don't wait too long, because it won't be free on Tubi for much longer.</p><p><a href="https://tubitv.com/movies/554186/case-39" target="_blank" rel="nofollow"><em><strong>Stream "Case 39" free on Tubi</strong></em></a></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-O63yjX"></div>                            </div>                            <script src="https://kwizly.com/embed/O63yjX.js" async></script>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ The 'Reacher' formula is completely ridiculous —and spinoff 'Neagley' proves why it works ]]></title>
                                                                                                <dc:content><![CDATA[ <p>“<strong>Reacher</strong>” is not the best show ever made. It’s not even the best show on the air currently. I sometimes cringe when Reacher drops a cheesy, sarcastic line like “They didn’t say the magic word” or “They broke my toothbrush.”</p><p>What I can proclaim is that “Reacher” might be one of the few shows that understands the assignment. Through four seasons, it has mastered the action formula so well that it's one of the most enjoyable shows on television.</p><p>Fans just got more of the Reacherverse in “<strong>Neagley</strong>,” the spinoff series centered around Maria Sten’s Francis Neagley. And so far through the first half of the season, “Neagley” also understands the assignment.</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-reacher-39-believes-in-kiss-keep-it-simple-stupid">'Reacher' believes in KISS: Keep It Simple, Stupid</h2><p>In the Reacherverse, simplicity is perfection. Jack Reacher, played by Alan Ritchson, is a drifter who fights for those who can’t defend themselves and delivers justice when he deems it necessary. His form of justice usually involves his fists, so the authorities typically have to look away since it’s not always legal. </p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/PCbp1FfipPg" allowfullscreen></iframe></div></div><p>Like <a href="https://www.youtube.com/watch?v=aMYMNX7qFtY&pp=ygUMcGFjZSBuZXRmbGl4" target="_blank" rel="nofollow">P.A.C.E. in the excellent “Rebel Ridge,”</a> “Reacher” is a show that believes in acronyms. The acronym you need to worry about right now is KISS: Keep It Simple, Stupid. So many shows abandon what works and try to reinvent the wheel, leading to poorly received seasons later in a series’ run. “The Walking Dead,” “Arrested Development,” and “Killing Eve” delivered excellent initial seasons before driving full speed off a cliff during later seasons.</p><p>It’s certainly an oversimplification of the plot and the show’s core mystery at the center of every season. However, I don’t think my synopsis is too far off from what happened to Reacher in Georgia, New York/New Jersey, Maine, and Philadelphia. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3000px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="vRCpY874WuHoWoV4otxcyS" name="RCHR_S2_UT_203_221014_PALBRO_00152RC_3000-2.jpg" alt="Alan Ritchson in Reacher season 2" src="https://cdn.mos.cms.futurecdn.net/vRCpY874WuHoWoV4otxcyS-1920-80.jpg" mos="" align="middle" fullscreen="" width="3000" height="1688" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Amazon Studios)</span></figcaption></figure><p>“Reacher” reminds me of a cop or medical show that runs in prime time on broadcast television. There might be a few surprises along the way, but for the most part, it’s a similar plot every season, featuring the same protagonists battling new antagonists. </p><p>And you know what? That is a tried-and-true method that has worked for 50 years, and it will likely work for 50 more as long as AI hasn’t replaced us yet.</p><h2 id="escapism-at-its-finest">Escapism at its finest</h2><p>I don’t watch “Reacher” to be lectured about the world. I can turn on the news or listen to a podcast if I want to check in on current events. That’s not to say “Reacher” is apolitical. It may not deliberately pick a side, but the show revolves around an old-school lawman who distrusts politicians and the government. When the system fails, Reacher takes matters into his own hands. That’s not how our world works, but there’s satisfaction in watching a TV show about a guy who walks around with his toothbrush, solving problems with his fists.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="PAua2spCww4Zjh8gEwgm2N" name="Reacher (1).jpg" alt="Alan Ritchson as Jack Reacher in "Reacher" season 2 on Prime Video" src="https://cdn.mos.cms.futurecdn.net/PAua2spCww4Zjh8gEwgm2N-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>“Reacher” is my perfect form of escapism. All you have to think about is the mystery. Who is responsible for this wrongdoing, and who will Reacher have to kill to get answers? Simple enough. I don’t need to spend hours on Reddit learning about the Targaryen family lineage in “House of the Dragon” or reading about the physics of parallel universes in “Dark Matter.”</p><p>That is unnecessary in “Reacher.” In season 1, Jack Reacher is arrested for murder upon arrival in Margrave, Georgia. Reacher must find out who framed him for murder and get to the bottom of this conspiracy. It's short, sweet, and to the point. </p><p>You know what else is good about escapism? You can suspend disbelief during the action sequences. Reacher is a more athletic version of Paul Bunyan who happens to be awesome at hand-to-hand combat. Reacher never loses a fight, but unlike Vin Diesel in the "<a href="https://www.tomsguide.com/entertainment/movies/25-years-later-the-fast-and-the-furious-franchise-has-lost-its-soul-but-it-can-get-it-back" target="_blank" rel="nofollow">Fast & Furious</a>" saga, Ritchson is willing to take some damage to give off the illusion that he might be defeated.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/pPVmrK15Qfs" allowfullscreen></iframe></div></div><p>Reacher will pull rabbits out of a hat every episode. You just have to accept it. In Season 3, Reacher somehow became an Olympic swimmer and pulled off an ocean swim despite heavy currents. Hang off a helicopter? Reacher does it with ease. Kicking a car to set off an airbag? No problem. Yet I find myself the most offended by Reacher’s innate ability to sprint in boots. He’d beat Usain Bolt in a race if both had to wear Timberland boots.</p><h2 id="39-neagley-39-looks-to-carry-the-torch">'Neagley' looks to carry the torch </h2><p>If you ever wanted to see a female version of “Reacher,” you'll get that with “Neagley.” The series revolves around Francis Neagley, a security professional who served with Reacher in the Army. She’s likely Reacher’s only friend, too.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/BOzNaa_o9_g" allowfullscreen></iframe></div></div><p>While working as a private investigator in Chicago, Neagley gets pulled into a mysterious case that ends with the death of her childhood friend. Neagley teams up with a local detective (Greyston Holt) to investigate an enigmatic cult that likely played a hand in the death of her friend.</p><p>I’ve seen half the episodes, and if you feared that “Neagley” wouldn’t deliver, think again. It still hits the same beats of a “Reacher” episode: Neagley fights the bad guys, though she prefers to shoot a gun over hand-to-hand combat. She pulls rabbits out of her hat and constantly gets out of impossible situations. However, the show explores more of Neagley’s backstory, including her haphephobia. </p><p>“Reacher” and “Neagley” are television done right. Sign me up for double-digit seasons.</p><p><em><strong>Watch "Reacher" and "Neagley" on </strong></em><a href="https://www.primevideo.com/" target="_blank" rel="nofollow"><em><strong>Prime Video</strong></em></a><em><strong>.</strong></em></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XYkQYW"></div>                            </div>                            <script src="https://kwizly.com/embed/XYkQYW.js" async></script> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/movies/the-reacher-formula-is-completely-ridiculous-and-spinoff-neagley-proves-why-it-works</link>
                                                                            <description>
                            <![CDATA[ The Jack Reacher universe understands what so many action shows get wrong. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">UjnV8saQDmSTqVTyjoXty3</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/3WZHMdR7uqdDa89oGMymyg-1920-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Sun, 20 Sep 2026 10:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Movies]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                                                                                    <dc:creator><![CDATA[ Dan Girolamo ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/vxcyd6Ys4CLeC8aB9eihZR-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/3WZHMdR7uqdDa89oGMymyg-1920-80.png">
                                                            <media:credit><![CDATA[Amazon MGM Studios]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[(L-R) Alan Ritchson as Jack Reacher and Maria Sten as Frances Neagley in &quot;Neagley&quot; season 1 on Prime Video]]></media:description>                                                            <media:text><![CDATA[(L-R) Alan Ritchson as Jack Reacher and Maria Sten as Frances Neagley in &quot;Neagley&quot; season 1 on Prime Video]]></media:text>
                                <media:title type="plain"><![CDATA[(L-R) Alan Ritchson as Jack Reacher and Maria Sten as Frances Neagley in &quot;Neagley&quot; season 1 on Prime Video]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/3WZHMdR7uqdDa89oGMymyg-1920-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>“<strong>Reacher</strong>” is not the best show ever made. It’s not even the best show on the air currently. I sometimes cringe when Reacher drops a cheesy, sarcastic line like “They didn’t say the magic word” or “They broke my toothbrush.”</p><p>What I can proclaim is that “Reacher” might be one of the few shows that understands the assignment. Through four seasons, it has mastered the action formula so well that it's one of the most enjoyable shows on television.</p><p>Fans just got more of the Reacherverse in “<strong>Neagley</strong>,” the spinoff series centered around Maria Sten’s Francis Neagley. And so far through the first half of the season, “Neagley” also understands the assignment.</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-reacher-39-believes-in-kiss-keep-it-simple-stupid">'Reacher' believes in KISS: Keep It Simple, Stupid</h2><p>In the Reacherverse, simplicity is perfection. Jack Reacher, played by Alan Ritchson, is a drifter who fights for those who can’t defend themselves and delivers justice when he deems it necessary. His form of justice usually involves his fists, so the authorities typically have to look away since it’s not always legal. </p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/PCbp1FfipPg" allowfullscreen></iframe></div></div><p>Like <a href="https://www.youtube.com/watch?v=aMYMNX7qFtY&pp=ygUMcGFjZSBuZXRmbGl4" target="_blank" rel="nofollow">P.A.C.E. in the excellent “Rebel Ridge,”</a> “Reacher” is a show that believes in acronyms. The acronym you need to worry about right now is KISS: Keep It Simple, Stupid. So many shows abandon what works and try to reinvent the wheel, leading to poorly received seasons later in a series’ run. “The Walking Dead,” “Arrested Development,” and “Killing Eve” delivered excellent initial seasons before driving full speed off a cliff during later seasons.</p><p>It’s certainly an oversimplification of the plot and the show’s core mystery at the center of every season. However, I don’t think my synopsis is too far off from what happened to Reacher in Georgia, New York/New Jersey, Maine, and Philadelphia. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3000px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="vRCpY874WuHoWoV4otxcyS" name="RCHR_S2_UT_203_221014_PALBRO_00152RC_3000-2.jpg" alt="Alan Ritchson in Reacher season 2" src="https://cdn.mos.cms.futurecdn.net/vRCpY874WuHoWoV4otxcyS-1920-80.jpg" mos="" align="middle" fullscreen="" width="3000" height="1688" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Amazon Studios)</span></figcaption></figure><p>“Reacher” reminds me of a cop or medical show that runs in prime time on broadcast television. There might be a few surprises along the way, but for the most part, it’s a similar plot every season, featuring the same protagonists battling new antagonists. </p><p>And you know what? That is a tried-and-true method that has worked for 50 years, and it will likely work for 50 more as long as AI hasn’t replaced us yet.</p><h2 id="escapism-at-its-finest">Escapism at its finest</h2><p>I don’t watch “Reacher” to be lectured about the world. I can turn on the news or listen to a podcast if I want to check in on current events. That’s not to say “Reacher” is apolitical. It may not deliberately pick a side, but the show revolves around an old-school lawman who distrusts politicians and the government. When the system fails, Reacher takes matters into his own hands. That’s not how our world works, but there’s satisfaction in watching a TV show about a guy who walks around with his toothbrush, solving problems with his fists.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="PAua2spCww4Zjh8gEwgm2N" name="Reacher (1).jpg" alt="Alan Ritchson as Jack Reacher in "Reacher" season 2 on Prime Video" src="https://cdn.mos.cms.futurecdn.net/PAua2spCww4Zjh8gEwgm2N-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>“Reacher” is my perfect form of escapism. All you have to think about is the mystery. Who is responsible for this wrongdoing, and who will Reacher have to kill to get answers? Simple enough. I don’t need to spend hours on Reddit learning about the Targaryen family lineage in “House of the Dragon” or reading about the physics of parallel universes in “Dark Matter.”</p><p>That is unnecessary in “Reacher.” In season 1, Jack Reacher is arrested for murder upon arrival in Margrave, Georgia. Reacher must find out who framed him for murder and get to the bottom of this conspiracy. It's short, sweet, and to the point. </p><p>You know what else is good about escapism? You can suspend disbelief during the action sequences. Reacher is a more athletic version of Paul Bunyan who happens to be awesome at hand-to-hand combat. Reacher never loses a fight, but unlike Vin Diesel in the "<a href="https://www.tomsguide.com/entertainment/movies/25-years-later-the-fast-and-the-furious-franchise-has-lost-its-soul-but-it-can-get-it-back" target="_blank" rel="nofollow">Fast & Furious</a>" saga, Ritchson is willing to take some damage to give off the illusion that he might be defeated.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/pPVmrK15Qfs" allowfullscreen></iframe></div></div><p>Reacher will pull rabbits out of a hat every episode. You just have to accept it. In Season 3, Reacher somehow became an Olympic swimmer and pulled off an ocean swim despite heavy currents. Hang off a helicopter? Reacher does it with ease. Kicking a car to set off an airbag? No problem. Yet I find myself the most offended by Reacher’s innate ability to sprint in boots. He’d beat Usain Bolt in a race if both had to wear Timberland boots.</p><h2 id="39-neagley-39-looks-to-carry-the-torch">'Neagley' looks to carry the torch </h2><p>If you ever wanted to see a female version of “Reacher,” you'll get that with “Neagley.” The series revolves around Francis Neagley, a security professional who served with Reacher in the Army. She’s likely Reacher’s only friend, too.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/BOzNaa_o9_g" allowfullscreen></iframe></div></div><p>While working as a private investigator in Chicago, Neagley gets pulled into a mysterious case that ends with the death of her childhood friend. Neagley teams up with a local detective (Greyston Holt) to investigate an enigmatic cult that likely played a hand in the death of her friend.</p><p>I’ve seen half the episodes, and if you feared that “Neagley” wouldn’t deliver, think again. It still hits the same beats of a “Reacher” episode: Neagley fights the bad guys, though she prefers to shoot a gun over hand-to-hand combat. She pulls rabbits out of her hat and constantly gets out of impossible situations. However, the show explores more of Neagley’s backstory, including her haphephobia. </p><p>“Reacher” and “Neagley” are television done right. Sign me up for double-digit seasons.</p><p><em><strong>Watch "Reacher" and "Neagley" on </strong></em><a href="https://www.primevideo.com/" target="_blank" rel="nofollow"><em><strong>Prime Video</strong></em></a><em><strong>.</strong></em></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-XYkQYW"></div>                            </div>                            <script src="https://kwizly.com/embed/XYkQYW.js" async></script>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I spent 30 minutes with the iPhone Duo — 3 things you just don’t get from the pictures ]]></title>
                                                                                                <dc:content><![CDATA[ <p>I have a confession to make: When I first saw the <a href="https://www.tomsguide.com/phones/iphones/iphone-duo-hands-on-apple-nailed-it-and-just-put-everyone-else-on-notice">iPhone Duo</a> announced at September’s <a href="https://www.tomsguide.com/news/live/apple-event-live-foldable-iphone-iphone-18-pro-max-apple-watch-12-and-all-the-big-news">‘Surprise and shine’ keynote</a>, I was happy to see Apple enter the foldable market — but I wasn’t entirely sold on the device.</p><p>My limited <a href="https://www.tomsguide.com/opinion/i-ditched-the-iphone-15-pro-for-the-oneplus-open-5-things-i-discovered-after-using-a-foldable">experience with various Android foldables has been positive</a> — but it’s always left me feeling like I’d rather pair a small regular phone with a mini tablet instead of having them sandwiched together. So I went into a brief hands-on demo with the iPhone Duo this week with a healthy amount of skepticism.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/2qNfOa5AuVU" allowfullscreen></iframe></div></div><p>Of course, I’m going to reserve full judgment for when Tom’s Guide can test and review the device properly — but three things immediately stood out to me after spending a half hour with Apple's $1,999 handset. </p><p>These were things you just don’t appreciate when you look at pictures or watch videos of the device; you need to hold it in your hand to really appreciate them. And I’m not talking about <a href="https://www.tomsguide.com/phones/iphones/iphone-ultra-heres-how-apple-is-reportedly-erasing-the-crease-for-its-foldable-phone">the crease</a>.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W2EK0e"></div>                            </div>                            <script src="https://kwizly.com/embed/W2EK0e.js" async></script><h3 class="article-body__section" id="section-the-weighting-is-perfect"><span>The weighting is perfect</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="rSoCvpXGwqJDaxV5wFWorU" name="iPhone Duo-4" alt="iPhone Duo hands-on pictures" src="https://cdn.mos.cms.futurecdn.net/rSoCvpXGwqJDaxV5wFWorU-1920-80.jpg" mos="" align="middle" fullscreen="" width="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 / Jeff Parsons)</span></figcaption></figure><p>In an effort to make folding phones as thin and light as possible when folded, I’ve noticed they sometimes feel too flimsy when unfolded. Case in point is last year's <a href="https://www.tomsguide.com/phones/android-phones/oppo-find-n5-review-simply-superior">Oppo Find N5</a>, which is the foldable I've spent the most time with and measures just 4.21mm when open (8.93mm thick when folded) and weighs 229 grams (8.07 ounces).</p><p>The iPhone Duo, by comparison, is 5.2mm when open and weighs 254 grams (8.96 ounces). If your first instinct is to shudder and recoil because <em>thinner and lighter is always better</em>, then I’m here to tell you it’s not the case when you hold the device in your hand. </p><p>Part of the reason I like using a tablet is that there’s some degree of heft and chunk that you can actually grip onto when you’re reading, sketching or watching something. Not enough to make your arm sore, of course, but enough to make it feel like you’re holding something that won’t snap in half. The iPhone Duo nails that balance perfectly, and it was super reassuring the second I picked it up off the display table.</p><h3 class="article-body__section" id="section-the-matte-display-rocks"><span>The matte display rocks</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="vYM5tTFWZqoCzzH8Kj9EHV" name="iPhone Duo-3" alt="iPhone Duo hands-on pictures" src="https://cdn.mos.cms.futurecdn.net/vYM5tTFWZqoCzzH8Kj9EHV-1920-80.jpg" mos="" align="middle" fullscreen="" width="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 / Jeff Parsons)</span></figcaption></figure><p>I’m not going to talk about the crease (yes there is one, and yes, you can see it if you look closely) or the animation, but what was really cool about the Duo’s inner display was the Nano-texture finish. It gives it this epic level of matte quality that Apple says is scratch-resistant and 40 percent stiffer than the competition. </p><p>My use case for foldable phones is chiefly about productivity — for my sins I look at spreadsheets more than Netflix movies while commuting — and the Duo’s inner display is so easy on the eyes I couldn’t help but feel it’d be perfect for this. Reflective glare from aggressive overhead lighting is expertly muted by this matte texture for readability and functionality. </p><p>If you want to read ebooks, or when you come to use an Apple Pencil to sketch or take notes, I’m convinced the decision to go matte will make this a quality experience.</p><h3 class="article-body__section" id="section-it-s-a-fingerprint-magnet"><span>It’s a fingerprint magnet</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="tMqrxu9xgE5keuWLjFoH4V" name="iPhone Duo-7" alt="iPhone Duo hands-on pictures" src="https://cdn.mos.cms.futurecdn.net/tMqrxu9xgE5keuWLjFoH4V-1920-80.jpg" mos="" align="middle" fullscreen="" width="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 / Jeff Parsons)</span></figcaption></figure><p>Okay, this isn’t exactly a positive point, but I need to make it anyway. The iPhone Duo comes in two shades: Star White and Night Sky. And the latter seemed — to me, at least — a fingerprint magnet. In all the images, you’re likely to see the finely polished Ceramic Shield back looking flawless. And it does... until you start pawing at it with greasy fingers. For what it's worth, I didn’t notice this as much on the Star White colorway.</p><p>It seems petty to dunk on such a well-engineered device for something so trivial, especially since Apple has achieved an IP68 protection rating. That means it's safe against both water and dust and (as with the weight example above) this really does feel like a durable device in the hand. If you're one of the people who wraps their iPhone up in a case anyway, then you can completely ignore this entire point.</p><h3 class="article-body__section" id="section-bottom-line"><span>Bottom line</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="JvujTtKZVT9EXJzzqh9FHV" name="iPhone Duo-LIST2" alt="iPhone Duo hands-on pictures" src="https://cdn.mos.cms.futurecdn.net/JvujTtKZVT9EXJzzqh9FHV-1920-80.jpg" mos="" align="middle" fullscreen="" width="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 / Jeff Parsons)</span></figcaption></figure><p>There is, of course, way more to unpack with the iPhone Duo when it hits the market in October. And I have more thoughts on things like the camera performance and iOS 27 that I’ll write up if and when I get more time with it. But the points above were just what sprung instantly to mind the minute I picked it up. If you want more, read my colleague Mark’s <a href="https://www.tomsguide.com/phones/iphones/iphone-duo-hands-on-apple-nailed-it-and-just-put-everyone-else-on-notice">in-depth hands-on with the Duo</a> following his experience with it at Apple Park.</p><p>But from my very brief time with it, my takeaway is that Apple’s long-awaited entry into the foldable phone category has arrived in style. Everything from the feeling of snapping it shut to the way the passport-style form factor nestles into your palm is sublime. There’s certainly a high price of entry, but after using the iPhone Duo myself, I think a <a href="https://www.tomsguide.com/phones/iphones/i-have-not-been-this-excited-about-apple-in-a-long-time-toms-guides-readers-react-to-the-iphone-duo">lot of people will be willing to pay it</a> once they actually get to experience it in their own hands.</p><p>Let me know what your thoughts are about the iPhone Duo in the comments below. Are you interested in trying one, or are you happy with a regular, non-folding phone? I’d love to hear from you.</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/phones/iphones/iphone-duo-hands-on-apple-nailed-it-and-just-put-everyone-else-on-notice">iPhone Duo hands-on</a></li><li><a href="https://www.tomsguide.com/phones/iphones/best-iphone-18-pro-and-pro-max-deals">iPhone 18 Pro and Pro Max deals are live — here's the biggest discounts at T-Mobile, Verizon and more</a></li><li><a href="https://www.tomsguide.com/phones/iphones/i-tested-iphone-18-pro-max-variable-aperture-camera-and-i-can-almost-ditch-my-mirrorless">I tested the iPhone 18 Pro Max's variable aperture camera — here's the results</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/phones/iphones/i-spent-30-minutes-with-the-iphone-duo-3-things-you-just-dont-get-from-the-pictures</link>
                                                                            <description>
                            <![CDATA[ After a 30-minute demo session with the folding iPhone Duo, I came away with three clear impressions you just don’t get from the pictures of it ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">VVamj5XisisDkxmEQUSJcC</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/GTrSzbvbSigPgscpMS3JsU-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 20 Sep 2026 09:45:00 +0000</pubDate>                                                                                                                                <updated>Mon, 21 Sep 2026 14:53:18 +0000</updated>
                                                                                                                                            <category><![CDATA[iPhones]]></category>
                                                    <category><![CDATA[Phones]]></category>
                                                                                                <author><![CDATA[ jeff.parsons@futurenet.com (Jeff Parsons) ]]></author>                    <dc:creator><![CDATA[ Jeff Parsons ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/7z3UTGGrmSokMKxTWHmhjX-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jeff is U.K. Editor-in-Chief for Tom’s Guide looking after the day-to-day output of the site’s British contingent. &lt;/p&gt;&lt;p&gt;Rising early and heading straight for the coffee machine, Jeff loves nothing more than dialling into the zeitgeist of the day’s tech news. A journalist for over a decade, he&#039;s travelled around the world testing and reviewing any gadget he can get his hands on.&lt;/p&gt;&lt;p&gt;Before joining the team at Tom’s Guide, Jeff covered technology and science for two of the U.K.’s biggest national news sites: Metro.co.uk and the Daily Mirror. Memorable moments include getting lost in Vienna in an electric Audi, touring Lockheed Martin’s mile-long jet factory in Fort Worth and filming a Netflix documentary about Elon Musk in West London.&lt;/p&gt;&lt;p&gt;When not plugged into the current news agenda, editing or commissioning a series of articles or debating the merits of Apple vs Android, Jeff can usually be found out for a run trying to shave precious seconds off his PB. Or lifting weights in a vain attempt to offset the ageing process.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/GTrSzbvbSigPgscpMS3JsU-1920-80.jpg">
                                                            <media:credit><![CDATA[Tom&amp;#39;s Guide / Jeff Parsons]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[iPhone Duo hands-on pictures]]></media:description>                                                            <media:text><![CDATA[iPhone Duo hands-on pictures]]></media:text>
                                <media:title type="plain"><![CDATA[iPhone Duo hands-on pictures]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/GTrSzbvbSigPgscpMS3JsU-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I have a confession to make: When I first saw the <a href="https://www.tomsguide.com/phones/iphones/iphone-duo-hands-on-apple-nailed-it-and-just-put-everyone-else-on-notice">iPhone Duo</a> announced at September’s <a href="https://www.tomsguide.com/news/live/apple-event-live-foldable-iphone-iphone-18-pro-max-apple-watch-12-and-all-the-big-news">‘Surprise and shine’ keynote</a>, I was happy to see Apple enter the foldable market — but I wasn’t entirely sold on the device.</p><p>My limited <a href="https://www.tomsguide.com/opinion/i-ditched-the-iphone-15-pro-for-the-oneplus-open-5-things-i-discovered-after-using-a-foldable">experience with various Android foldables has been positive</a> — but it’s always left me feeling like I’d rather pair a small regular phone with a mini tablet instead of having them sandwiched together. So I went into a brief hands-on demo with the iPhone Duo this week with a healthy amount of skepticism.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/2qNfOa5AuVU" allowfullscreen></iframe></div></div><p>Of course, I’m going to reserve full judgment for when Tom’s Guide can test and review the device properly — but three things immediately stood out to me after spending a half hour with Apple's $1,999 handset. </p><p>These were things you just don’t appreciate when you look at pictures or watch videos of the device; you need to hold it in your hand to really appreciate them. And I’m not talking about <a href="https://www.tomsguide.com/phones/iphones/iphone-ultra-heres-how-apple-is-reportedly-erasing-the-crease-for-its-foldable-phone">the crease</a>.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W2EK0e"></div>                            </div>                            <script src="https://kwizly.com/embed/W2EK0e.js" async></script><h3 class="article-body__section" id="section-the-weighting-is-perfect"><span>The weighting is perfect</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="rSoCvpXGwqJDaxV5wFWorU" name="iPhone Duo-4" alt="iPhone Duo hands-on pictures" src="https://cdn.mos.cms.futurecdn.net/rSoCvpXGwqJDaxV5wFWorU-1920-80.jpg" mos="" align="middle" fullscreen="" width="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 / Jeff Parsons)</span></figcaption></figure><p>In an effort to make folding phones as thin and light as possible when folded, I’ve noticed they sometimes feel too flimsy when unfolded. Case in point is last year's <a href="https://www.tomsguide.com/phones/android-phones/oppo-find-n5-review-simply-superior">Oppo Find N5</a>, which is the foldable I've spent the most time with and measures just 4.21mm when open (8.93mm thick when folded) and weighs 229 grams (8.07 ounces).</p><p>The iPhone Duo, by comparison, is 5.2mm when open and weighs 254 grams (8.96 ounces). If your first instinct is to shudder and recoil because <em>thinner and lighter is always better</em>, then I’m here to tell you it’s not the case when you hold the device in your hand. </p><p>Part of the reason I like using a tablet is that there’s some degree of heft and chunk that you can actually grip onto when you’re reading, sketching or watching something. Not enough to make your arm sore, of course, but enough to make it feel like you’re holding something that won’t snap in half. The iPhone Duo nails that balance perfectly, and it was super reassuring the second I picked it up off the display table.</p><h3 class="article-body__section" id="section-the-matte-display-rocks"><span>The matte display rocks</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="vYM5tTFWZqoCzzH8Kj9EHV" name="iPhone Duo-3" alt="iPhone Duo hands-on pictures" src="https://cdn.mos.cms.futurecdn.net/vYM5tTFWZqoCzzH8Kj9EHV-1920-80.jpg" mos="" align="middle" fullscreen="" width="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 / Jeff Parsons)</span></figcaption></figure><p>I’m not going to talk about the crease (yes there is one, and yes, you can see it if you look closely) or the animation, but what was really cool about the Duo’s inner display was the Nano-texture finish. It gives it this epic level of matte quality that Apple says is scratch-resistant and 40 percent stiffer than the competition. </p><p>My use case for foldable phones is chiefly about productivity — for my sins I look at spreadsheets more than Netflix movies while commuting — and the Duo’s inner display is so easy on the eyes I couldn’t help but feel it’d be perfect for this. Reflective glare from aggressive overhead lighting is expertly muted by this matte texture for readability and functionality. </p><p>If you want to read ebooks, or when you come to use an Apple Pencil to sketch or take notes, I’m convinced the decision to go matte will make this a quality experience.</p><h3 class="article-body__section" id="section-it-s-a-fingerprint-magnet"><span>It’s a fingerprint magnet</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="tMqrxu9xgE5keuWLjFoH4V" name="iPhone Duo-7" alt="iPhone Duo hands-on pictures" src="https://cdn.mos.cms.futurecdn.net/tMqrxu9xgE5keuWLjFoH4V-1920-80.jpg" mos="" align="middle" fullscreen="" width="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 / Jeff Parsons)</span></figcaption></figure><p>Okay, this isn’t exactly a positive point, but I need to make it anyway. The iPhone Duo comes in two shades: Star White and Night Sky. And the latter seemed — to me, at least — a fingerprint magnet. In all the images, you’re likely to see the finely polished Ceramic Shield back looking flawless. And it does... until you start pawing at it with greasy fingers. For what it's worth, I didn’t notice this as much on the Star White colorway.</p><p>It seems petty to dunk on such a well-engineered device for something so trivial, especially since Apple has achieved an IP68 protection rating. That means it's safe against both water and dust and (as with the weight example above) this really does feel like a durable device in the hand. If you're one of the people who wraps their iPhone up in a case anyway, then you can completely ignore this entire point.</p><h3 class="article-body__section" id="section-bottom-line"><span>Bottom line</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="JvujTtKZVT9EXJzzqh9FHV" name="iPhone Duo-LIST2" alt="iPhone Duo hands-on pictures" src="https://cdn.mos.cms.futurecdn.net/JvujTtKZVT9EXJzzqh9FHV-1920-80.jpg" mos="" align="middle" fullscreen="" width="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 / Jeff Parsons)</span></figcaption></figure><p>There is, of course, way more to unpack with the iPhone Duo when it hits the market in October. And I have more thoughts on things like the camera performance and iOS 27 that I’ll write up if and when I get more time with it. But the points above were just what sprung instantly to mind the minute I picked it up. If you want more, read my colleague Mark’s <a href="https://www.tomsguide.com/phones/iphones/iphone-duo-hands-on-apple-nailed-it-and-just-put-everyone-else-on-notice">in-depth hands-on with the Duo</a> following his experience with it at Apple Park.</p><p>But from my very brief time with it, my takeaway is that Apple’s long-awaited entry into the foldable phone category has arrived in style. Everything from the feeling of snapping it shut to the way the passport-style form factor nestles into your palm is sublime. There’s certainly a high price of entry, but after using the iPhone Duo myself, I think a <a href="https://www.tomsguide.com/phones/iphones/i-have-not-been-this-excited-about-apple-in-a-long-time-toms-guides-readers-react-to-the-iphone-duo">lot of people will be willing to pay it</a> once they actually get to experience it in their own hands.</p><p>Let me know what your thoughts are about the iPhone Duo in the comments below. Are you interested in trying one, or are you happy with a regular, non-folding phone? I’d love to hear from you.</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/phones/iphones/iphone-duo-hands-on-apple-nailed-it-and-just-put-everyone-else-on-notice">iPhone Duo hands-on</a></li><li><a href="https://www.tomsguide.com/phones/iphones/best-iphone-18-pro-and-pro-max-deals">iPhone 18 Pro and Pro Max deals are live — here's the biggest discounts at T-Mobile, Verizon and more</a></li><li><a href="https://www.tomsguide.com/phones/iphones/i-tested-iphone-18-pro-max-variable-aperture-camera-and-i-can-almost-ditch-my-mirrorless">I tested the iPhone 18 Pro Max's variable aperture camera — here's the results</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Should you buy a TV now or wait until Black Friday? After covering TVs for over 10 years, here's what I recommend ]]></title>
                                                                                                <dc:content><![CDATA[ <p>When summer wanes and the leaves begin to turn, that’s around the time I start getting questions about Black Friday. People who know that I cover the TV business for a living begin to ask: <em>Is it worth waiting until Black Friday to buy a new TV?</em></p><p>In the months leading up to November, some folks feel as though they’re in an awkward, pre-sale-season limbo, and with so much hype around holiday sales events, it’s easy to see why. </p><p>Before you commit to holding off on a new purchase or go all-in on that new big-screen this weekend, here’s what you ought to consider.</p><h2 id="there-are-advantages-to-shopping-for-a-tv-on-or-around-black-friday">There are advantages to shopping for a TV on (or around) Black Friday</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="SazJK9Y8ZtMcFn46eFFEXL" name="shutterstock_1749347006.jpg" alt="Line of people wearing masks waiting outside to enter Best Buy store in Montreal, Canada." src="https://cdn.mos.cms.futurecdn.net/SazJK9Y8ZtMcFn46eFFEXL-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>The benefits of buying a TV around Black Friday are twofold. The first is obvious: Stores competitively cut prices during their Black Friday sales events in order to entice shoppers ahead of the holidays.</p><p>The second benefit isn’t quite as obvious, but it’s nevertheless relevant: Since these sales arrive at the end of the calendar year, many newly released TVs have already seen several rounds of price cuts by the time the sale starts.</p><p>This creates a perfect storm of savings opportunities. Stores slash the prices of already-discounted sets, and this double-dipping takes some TVs down to their lowest price on record.</p><p>As a result, most new TVs are “on sale” during Black Friday sales events, either because they’ve already seen discounts throughout the year, and/or because a retailer is cutting their price as part of the sale. </p><p>The key question, then, is how much savings one is leaving on the table by shopping ahead of Black Friday.</p><h2 id="how-much-money-do-you-save-by-buying-a-tv-on-black-friday">How much money do you save by buying a TV on Black Friday?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3917px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="v3AMrsbg8Q3mZxhZwsQUBi" name="Amazon shopping.jpg" alt="How to cancel an Amazon order" src="https://cdn.mos.cms.futurecdn.net/v3AMrsbg8Q3mZxhZwsQUBi-1920-80.jpg" mos="" align="middle" fullscreen="" width="3917" height="2203" 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><div><blockquote><p>I’ll tell you what I tell everyone else: probably a few hundred bucks.</p></blockquote></div><p>After over ten years of testing, reviewing and tracking the sales of TVs, I’ve developed a not-so-scientific, vibes-based answer to this very question: <em>a few hundred bucks</em>.</p><p>How much is a few hundred? Well, sometimes it’s $200 and sometimes it’s $500. Some TVs crash by over $1,000, and others, weirdly, climb in price.</p><p><em>“But Michael,”</em> you might be saying, <em>“doesn’t that make the word ‘few’ inaccurate? Don’t words have meaning? Are we not trying to have a society here?”</em></p><p>Consider this: Some TVs are released exclusively on Black Friday and debut on sale. That doesn’t stop retailers from slapping a big ol’ <em>“$800 off!”</em> label on the listing, referring to an original price that technically never really existed.</p><p>In other words, we don’t exist in a realm that makes much sense. Besides, sale prices are impossible to predict. Brands are constantly affected by forces great and small that contribute to when products go on sale (and for how much).</p><p>So, if you ask me how much extra money you’re spending by buying a TV now instead of waiting until Black Friday, I’ll tell you what I tell everyone else: probably a few hundred bucks. And that brings me to my final point.</p><h2 id="if-you-want-a-new-tv-right-now-you-shouldn-39-t-wait-until-black-friday">If you want a new TV right now, you shouldn't wait until Black Friday</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="kdcMwrwkh4JexNr2JwNq8K" name="TV-Box-In-Walmart" alt="A Samsung TV box on the floor of a Walmart. It is strapped shut and ready to be moved." src="https://cdn.mos.cms.futurecdn.net/kdcMwrwkh4JexNr2JwNq8K-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" 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>I know, I know: This piece of advice seems like a bit of a cop-out.</p><p>“Buy a TV if you want a TV” may seem like an obvious statement to make (and it is), but the truth of the matter is that no one but yourself can decide if — ahem — <em>a few hundred bucks</em> is more valuable than having a new TV between now and Black Friday. Nor can anyone tell you which models are most likely to get the biggest discounts when these sales events start churning out deals.</p><div  class="fancy-box"><div class="fancy_box-title">Want to learn more?</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="zEpPDZRYNw2JgcytKEFGkK" name="What-To-Avoid-When-Shopping-For-A-Cheap-TV" caption="" alt="A man thoughtfully looks at LCD TVs in a large store with his back to the camera" src="https://cdn.mos.cms.futurecdn.net/zEpPDZRYNw2JgcytKEFGkK-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: Shutterstock)</span></figcaption></figure><p class="fancy-box__body-text"><strong>Here's </strong><a data-analytics-id="inline-link" href="https://www.tomsguide.com/tvs/its-time-to-replace-your-tv-if-you-notice-any-of-these-5-issues"><strong>how to tell when it's time to buy a new TV</strong></a></p></div></div><p>I can tell you two things with certainty: Most new TVs will be on sale during Black Friday, but most of these models are already relatively close to what will eventually be their lowest price.</p><p>Your particular circumstances and preferences matter more than anything else in this scenario. Maybe the risk of spending more on a TV now than you will in a couple of months is worth having a new screen to look at during football season. Perhaps you're really itching to do that marathon of "The Lord of the Rings" sooner rather than later.</p><p>Just for fun, let’s take a look at one of the most popular TVs among our readers during Black Friday last year: the <a href="https://www.tomsguide.com/tvs/oled-tvs/lg-c5-oled-tv-review">LG C5 OLED</a>.</p><p>According to my records, in late September of 2025, the 65-inch C5 was $1,699 at Best Buy. When Black Friday rolled around a couple of months later, the same model had fallen to $1,399.</p><div class="product"><a data-dimension112="05bd1030-b37e-11f1-97c5-c9b978f5cb03" data-action="Deal Block" data-label="65" C6 4K OLED TV" data-dimension48="65" C6 4K OLED TV" data-dimension25="$1599" href="https://www.bestbuy.com/product/lg-65-class-c6-series-oled-evo-ai-4k-smart-webos-tv-2026/JJ8VPZKZ8H" 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="pApZeLtG7EepRfSr7wqdbf" name="LG-C6-OLED-TV-1-by-1-Deal-Block" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/pApZeLtG7EepRfSr7wqdbf-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.bestbuy.com/product/lg-65-class-c6-series-oled-evo-ai-4k-smart-webos-tv-2026/JJ8VPZKZ8H" target="_blank" rel="nofollow" data-dimension112="05bd1030-b37e-11f1-97c5-c9b978f5cb03" data-action="Deal Block" data-label='65" C6 4K OLED TV' data-dimension48='65" C6 4K OLED TV' data-dimension25="$1599">65" C6 4K OLED TV: was $2699 now $1599</a></strong><br>LG's latest mid-range OLED is one of the best value propositions in the 2026 OLED TV class. It boasts all of the benefits of OLED technology like perfect black levels, pixel-level dimming and ultra-wide viewing angles, and the C6 even offers better HDR brightness than last-year's C5.<a class="view-deal button" href="https://www.bestbuy.com/product/lg-65-class-c6-series-oled-evo-ai-4k-smart-webos-tv-2026/JJ8VPZKZ8H" target="_blank" rel="nofollow" data-dimension112="05bd1030-b37e-11f1-97c5-c9b978f5cb03" data-action="Deal Block" data-label="65" C6 4K OLED TV" data-dimension48="65" C6 4K OLED TV" data-dimension25="$1599">View Deal</a></p></div><p>The <a href="https://www.tomsguide.com/tvs/oled-tvs/lg-c6-oled-review">LG C6 OLED</a> — the C5's successor — appears to be following a similar trajectory. At the time of publishing, the 65-inch LG C6 is $1,599.</p><p>While there's no way to know for sure, my hunch is that this model will settle between $1,299 and $1,399 at major retailers during Black Friday sales events. If I'm correct, the cost of skipping the wait will be about $200 to $300.</p><p>In other words, a few hundred bucks.</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/tvs/oled-tvs/your-living-room-might-be-too-bright-for-an-oled-tv-heres-how-to-tell">Your living room might be too bright for an OLED TV — here’s how to tell</a></li><li><a href="https://www.tomsguide.com/tvs/lg-responds-to-claims-that-its-smart-tvs-track-viewers-but-i-still-have-several-questions">LG responds to claims that its smart TVs track viewers — but I still have several questions</a></li><li><a href="https://www.tomsguide.com/tvs/dont-believe-your-eyes-when-shopping-for-a-tv-in-person-heres-why">Don’t believe your eyes when shopping for a TV in person — here’s why</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/tvs/should-you-buy-a-tv-now-or-wait-until-black-friday-after-covering-tvs-for-over-10-years-heres-what-i-recommend</link>
                                                                            <description>
                            <![CDATA[ Upgrading your TV sometime soon? Here's what you need to know about Black Friday, Cyber Monday and the best time to buy a new TV. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">wPDDbzZtkVR5DK9WPDAjbb</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/XCULWjCmc6jRD9hntLn8XD-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 20 Sep 2026 08:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[TVs]]></category>
                                                                                                <author><![CDATA[ michael.desjardin@futurenet.com (Michael Desjardin) ]]></author>                    <dc:creator><![CDATA[ Michael Desjardin ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/esytxRqW9GNVZNVCf7BFyV-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Michael Desjardin is a Senior Editor for TVs at Tom&#039;s Guide. He&#039;s been testing and tinkering with TVs professionally for over a decade, previously for Reviewed and USA Today. Michael studied media production and screenwriting at Emerson College. He loves cooking, zoning out to ambient music, and getting way too invested in the Red Sox. He considers himself living proof that TV doesn&#039;t necessarily rot your brain.&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/XCULWjCmc6jRD9hntLn8XD-1920-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock / Gorodenkoff]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Two people stand in front of a retail wall featuring several TVs. In the foreground is a sign that reads: &quot;BLACK FRIDAY&quot;.]]></media:description>                                                            <media:text><![CDATA[Two people stand in front of a retail wall featuring several TVs. In the foreground is a sign that reads: &quot;BLACK FRIDAY&quot;.]]></media:text>
                                <media:title type="plain"><![CDATA[Two people stand in front of a retail wall featuring several TVs. In the foreground is a sign that reads: &quot;BLACK FRIDAY&quot;.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/XCULWjCmc6jRD9hntLn8XD-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>When summer wanes and the leaves begin to turn, that’s around the time I start getting questions about Black Friday. People who know that I cover the TV business for a living begin to ask: <em>Is it worth waiting until Black Friday to buy a new TV?</em></p><p>In the months leading up to November, some folks feel as though they’re in an awkward, pre-sale-season limbo, and with so much hype around holiday sales events, it’s easy to see why. </p><p>Before you commit to holding off on a new purchase or go all-in on that new big-screen this weekend, here’s what you ought to consider.</p><h2 id="there-are-advantages-to-shopping-for-a-tv-on-or-around-black-friday">There are advantages to shopping for a TV on (or around) Black Friday</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="SazJK9Y8ZtMcFn46eFFEXL" name="shutterstock_1749347006.jpg" alt="Line of people wearing masks waiting outside to enter Best Buy store in Montreal, Canada." src="https://cdn.mos.cms.futurecdn.net/SazJK9Y8ZtMcFn46eFFEXL-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>The benefits of buying a TV around Black Friday are twofold. The first is obvious: Stores competitively cut prices during their Black Friday sales events in order to entice shoppers ahead of the holidays.</p><p>The second benefit isn’t quite as obvious, but it’s nevertheless relevant: Since these sales arrive at the end of the calendar year, many newly released TVs have already seen several rounds of price cuts by the time the sale starts.</p><p>This creates a perfect storm of savings opportunities. Stores slash the prices of already-discounted sets, and this double-dipping takes some TVs down to their lowest price on record.</p><p>As a result, most new TVs are “on sale” during Black Friday sales events, either because they’ve already seen discounts throughout the year, and/or because a retailer is cutting their price as part of the sale. </p><p>The key question, then, is how much savings one is leaving on the table by shopping ahead of Black Friday.</p><h2 id="how-much-money-do-you-save-by-buying-a-tv-on-black-friday">How much money do you save by buying a TV on Black Friday?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3917px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="v3AMrsbg8Q3mZxhZwsQUBi" name="Amazon shopping.jpg" alt="How to cancel an Amazon order" src="https://cdn.mos.cms.futurecdn.net/v3AMrsbg8Q3mZxhZwsQUBi-1920-80.jpg" mos="" align="middle" fullscreen="" width="3917" height="2203" 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><div><blockquote><p>I’ll tell you what I tell everyone else: probably a few hundred bucks.</p></blockquote></div><p>After over ten years of testing, reviewing and tracking the sales of TVs, I’ve developed a not-so-scientific, vibes-based answer to this very question: <em>a few hundred bucks</em>.</p><p>How much is a few hundred? Well, sometimes it’s $200 and sometimes it’s $500. Some TVs crash by over $1,000, and others, weirdly, climb in price.</p><p><em>“But Michael,”</em> you might be saying, <em>“doesn’t that make the word ‘few’ inaccurate? Don’t words have meaning? Are we not trying to have a society here?”</em></p><p>Consider this: Some TVs are released exclusively on Black Friday and debut on sale. That doesn’t stop retailers from slapping a big ol’ <em>“$800 off!”</em> label on the listing, referring to an original price that technically never really existed.</p><p>In other words, we don’t exist in a realm that makes much sense. Besides, sale prices are impossible to predict. Brands are constantly affected by forces great and small that contribute to when products go on sale (and for how much).</p><p>So, if you ask me how much extra money you’re spending by buying a TV now instead of waiting until Black Friday, I’ll tell you what I tell everyone else: probably a few hundred bucks. And that brings me to my final point.</p><h2 id="if-you-want-a-new-tv-right-now-you-shouldn-39-t-wait-until-black-friday">If you want a new TV right now, you shouldn't wait until Black Friday</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="kdcMwrwkh4JexNr2JwNq8K" name="TV-Box-In-Walmart" alt="A Samsung TV box on the floor of a Walmart. It is strapped shut and ready to be moved." src="https://cdn.mos.cms.futurecdn.net/kdcMwrwkh4JexNr2JwNq8K-1920-80.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" 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>I know, I know: This piece of advice seems like a bit of a cop-out.</p><p>“Buy a TV if you want a TV” may seem like an obvious statement to make (and it is), but the truth of the matter is that no one but yourself can decide if — ahem — <em>a few hundred bucks</em> is more valuable than having a new TV between now and Black Friday. Nor can anyone tell you which models are most likely to get the biggest discounts when these sales events start churning out deals.</p><div  class="fancy-box"><div class="fancy_box-title">Want to learn more?</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="zEpPDZRYNw2JgcytKEFGkK" name="What-To-Avoid-When-Shopping-For-A-Cheap-TV" caption="" alt="A man thoughtfully looks at LCD TVs in a large store with his back to the camera" src="https://cdn.mos.cms.futurecdn.net/zEpPDZRYNw2JgcytKEFGkK-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: Shutterstock)</span></figcaption></figure><p class="fancy-box__body-text"><strong>Here's </strong><a data-analytics-id="inline-link" href="https://www.tomsguide.com/tvs/its-time-to-replace-your-tv-if-you-notice-any-of-these-5-issues"><strong>how to tell when it's time to buy a new TV</strong></a></p></div></div><p>I can tell you two things with certainty: Most new TVs will be on sale during Black Friday, but most of these models are already relatively close to what will eventually be their lowest price.</p><p>Your particular circumstances and preferences matter more than anything else in this scenario. Maybe the risk of spending more on a TV now than you will in a couple of months is worth having a new screen to look at during football season. Perhaps you're really itching to do that marathon of "The Lord of the Rings" sooner rather than later.</p><p>Just for fun, let’s take a look at one of the most popular TVs among our readers during Black Friday last year: the <a href="https://www.tomsguide.com/tvs/oled-tvs/lg-c5-oled-tv-review">LG C5 OLED</a>.</p><p>According to my records, in late September of 2025, the 65-inch C5 was $1,699 at Best Buy. When Black Friday rolled around a couple of months later, the same model had fallen to $1,399.</p><div class="product"><a data-dimension112="05bd1030-b37e-11f1-97c5-c9b978f5cb03" data-action="Deal Block" data-label="65" C6 4K OLED TV" data-dimension48="65" C6 4K OLED TV" data-dimension25="$1599" href="https://www.bestbuy.com/product/lg-65-class-c6-series-oled-evo-ai-4k-smart-webos-tv-2026/JJ8VPZKZ8H" 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="pApZeLtG7EepRfSr7wqdbf" name="LG-C6-OLED-TV-1-by-1-Deal-Block" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/pApZeLtG7EepRfSr7wqdbf-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.bestbuy.com/product/lg-65-class-c6-series-oled-evo-ai-4k-smart-webos-tv-2026/JJ8VPZKZ8H" target="_blank" rel="nofollow" data-dimension112="05bd1030-b37e-11f1-97c5-c9b978f5cb03" data-action="Deal Block" data-label='65" C6 4K OLED TV' data-dimension48='65" C6 4K OLED TV' data-dimension25="$1599">65" C6 4K OLED TV: was $2699 now $1599</a></strong><br>LG's latest mid-range OLED is one of the best value propositions in the 2026 OLED TV class. It boasts all of the benefits of OLED technology like perfect black levels, pixel-level dimming and ultra-wide viewing angles, and the C6 even offers better HDR brightness than last-year's C5.<a class="view-deal button" href="https://www.bestbuy.com/product/lg-65-class-c6-series-oled-evo-ai-4k-smart-webos-tv-2026/JJ8VPZKZ8H" target="_blank" rel="nofollow" data-dimension112="05bd1030-b37e-11f1-97c5-c9b978f5cb03" data-action="Deal Block" data-label="65" C6 4K OLED TV" data-dimension48="65" C6 4K OLED TV" data-dimension25="$1599">View Deal</a></p></div><p>The <a href="https://www.tomsguide.com/tvs/oled-tvs/lg-c6-oled-review">LG C6 OLED</a> — the C5's successor — appears to be following a similar trajectory. At the time of publishing, the 65-inch LG C6 is $1,599.</p><p>While there's no way to know for sure, my hunch is that this model will settle between $1,299 and $1,399 at major retailers during Black Friday sales events. If I'm correct, the cost of skipping the wait will be about $200 to $300.</p><p>In other words, a few hundred bucks.</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/tvs/oled-tvs/your-living-room-might-be-too-bright-for-an-oled-tv-heres-how-to-tell">Your living room might be too bright for an OLED TV — here’s how to tell</a></li><li><a href="https://www.tomsguide.com/tvs/lg-responds-to-claims-that-its-smart-tvs-track-viewers-but-i-still-have-several-questions">LG responds to claims that its smart TVs track viewers — but I still have several questions</a></li><li><a href="https://www.tomsguide.com/tvs/dont-believe-your-eyes-when-shopping-for-a-tv-in-person-heres-why">Don’t believe your eyes when shopping for a TV in person — here’s why</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I 3D printed these 3 golf accessories — and they actually don't suck ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Golf is an expensive sport. You could easily spend thousands of dollars on clubs, a <a href="https://www.tomsguide.com/best-picks/best-golf-shoes">pair of the best golf shoes</a> and don't even get me started on the price of tee times. It's maddening, but we golfers keep coming back for more. Gluttons for wallet punishment, are we?</p><p>But if you own a <a href="https://www.tomsguide.com/computing/3d-printers/i-tested-this-usd300-beginner-friendly-3d-printer-and-im-blown-away">3D printer</a> (I used the <a href="https://www.amazon.com/Multi-Color-Precision-Full-Auto-Calibration-Compensation/dp/B0CRYZWJLG" target="_blank" rel="nofollow">Bambu Lab A1 Combo</a> to print these products), there are some golf-related accessories you can print that are actually useful. I tried tons of different 3D prints for golf, and there are three in particular that stand out as being useful, especially for practicing in the simulator or on the range.</p><div class="product"><a data-dimension112="76c6eb8e-b383-11f1-a0e6-597bb2d288f2" data-action="Deal Block" data-label="A1 Combo 3D printer" data-dimension48="A1 Combo 3D printer" data-dimension25="$369" href="https://www.amazon.com/Multi-Color-Precision-Full-Auto-Calibration-Compensation/dp/B0CRYZWJLG" 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="XXsiasGRiugMTR5eeXRUYc" name="1761332020.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/XXsiasGRiugMTR5eeXRUYc-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/Multi-Color-Precision-Full-Auto-Calibration-Compensation/dp/B0CRYZWJLG" target="_blank" rel="nofollow" data-dimension112="76c6eb8e-b383-11f1-a0e6-597bb2d288f2" data-action="Deal Block" data-label="A1 Combo 3D printer" data-dimension48="A1 Combo 3D printer" data-dimension25="$369">A1 Combo 3D printer: was $599 now $369</a></strong><br>The Bambu Lab A1 Combo comes with four spools for different filament colors, and 256mm of printing space for moderate-sized projects. One of my favorite aspects of the printer is how easy it is to get up and running — Bambu says about 20 minutes from box to print, and I'd say it took me a couple of minutes longer, but not far off. For beginners, the process to get going is minimal, and the quality of print jobs is way better than you'd expect.  <a class="view-deal button" href="https://www.amazon.com/Multi-Color-Precision-Full-Auto-Calibration-Compensation/dp/B0CRYZWJLG" target="_blank" rel="nofollow" data-dimension112="76c6eb8e-b383-11f1-a0e6-597bb2d288f2" data-action="Deal Block" data-label="A1 Combo 3D printer" data-dimension48="A1 Combo 3D printer" data-dimension25="$369">View Deal</a></p></div><p>And best of all, they're readily available without any custom 3D design knowledge required, so even if you're a complete beginner to the world of 3D printing, you can send these designs to your printer and take part in the fun. </p><p>Now, I'm not saying there are huge cost savings with these, since a 3D printer costs more than you'd spend on these particular accessories. But if you 3D print a bunch of other stuff and add these to the rotation, you will take a little weight off your wallet. </p><p>Plus, there's the satisfaction of knowing you made something for yourself that you'll actually use.</p><h2 id="golf-ball-dispenser-pro">Golf Ball Dispenser Pro</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="nD9oguZrbAQTi2nsVuwZjS" name="IMG_0465" alt="Golf Ball dispenser" src="https://cdn.mos.cms.futurecdn.net/nD9oguZrbAQTi2nsVuwZjS-1920-80.jpg" mos="" align="middle" fullscreen="" width="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>For me, the <a href="https://makerworld.com/en/models/1295289-golf-ball-dispenser-pro" target="_blank">Golf Ball Dispenser Pro</a> is the ultimate 3D-printed golf accessory. It gives you much of the same functionality as driving ranges with auto-tee capabilities, but at home (or at a cheaper range that doesn't offer it). While it's a slightly more complicated print, it does print everything you need to use the dispenser (except a golf ball, which is used as a weight).</p><p>I highly recommend printing the <a href="https://makerworld.com/en/models/1405890-funnel-to-golf-ball-dispenser-pro?from=search#profileId-1458735" target="_blank">funnel</a> so it can hold a few extra balls, since it means you don't have to fill it as often and you can keep your practice flowing without stopping (there's an even <a href="https://makerworld.com/en/models/2458482-expanded-ball-garage-for-golf-ball-dispenser-pro?from=search" target="_blank">larger ball garage</a> that has come out since I printed mine, but I haven't tried it, so I can't speak to how well it works). Between the funnel and the actual dispenser, you can step up your practice game in a big way without spending much money.</p><h2 id="weighted-tee-base-for-golf-simulator">Weighted Tee Base for Golf Simulator</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="yexwxyEQ2wDKMeuXgXh6UW" name="IMG_0490" alt="Golf tee weight" src="https://cdn.mos.cms.futurecdn.net/yexwxyEQ2wDKMeuXgXh6UW-1920-80.jpg" mos="" align="middle" fullscreen="" width="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>When you're practicing in the simulator or range, your tees fly all over the place. That's where this <a href="https://makerworld.com/en/models/957732-weighted-tee-base-for-golf-simulator?from=search#profileId-926968" target="_blank">Weighted Tee Base for Golf Simulator</a> comes in. Products like the <a href="https://k2golf.com/" target="_blank">K2 Golf tee holder</a> do a similar job, but they're pricey. If you own a 3D printer, some sand (or something heavy you can fit inside it) and a rubber-band tether, you can print this weighted tee base and save a lot of cash.</p><p>I definitely enjoy not having to chase my simulator tees all around the room with every tee shot. When practicing driver, this lets you get more shots off in less time, which will help you improve faster. After all, good practice is all about efficiency, and this simple 3D print gives you that.</p><h2 id="golf-tee-elevator">Golf Tee Elevator</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="hELvtCJZFzgbZrXWTuKbkE" name="1789679457.jpg" alt="The Golf Tee Elevator in use on the course" src="https://cdn.mos.cms.futurecdn.net/hELvtCJZFzgbZrXWTuKbkE-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: Printworthy on MakerWorld)</span></figcaption></figure><p>Maybe I'm just being weird, but I'm very particular about the height of my golf tee. At the same time, I'm terrible about using the same type of tee all the time. I usually use whatever I pull out of my bag, which makes lining up the exact height a pain. </p><p>When I saw the <a href="https://makerworld.com/en/models/892663-golf-tee-elevator?from=search#profileId-859634" target="_blank">Golf Tee Elevator on MakerWorld</a>, I found the solution. No matter what kind of tee I grab (or find on the ground near the tee box), I can slot it into this and set it in the ground at the perfect height.</p><p>Does it really make a difference in the quality of my tee shots? Probably not, but the consistency gives me one less thing to think about, and any distraction you can get rid of on the course is a good thing.</p><h2 id="golf-and-3d-printing-together-at-last">Golf and 3D printing, together at last</h2><p><a href="https://makerworld.com/en/search/models?keyword=golf+practice" target="_blank">MakerWorld has tons of other 3D-printed golf accessories</a>, such as tees, a grip training aid, alignment stick holders, and more. However, the three listed here are the ones that have really been game-changers for me personally. But don't be afraid to expand out and try other fun golf prints. You never know what's best for you until you try. </p><p>And what do you have to lose besides some filament and a couple of hours of print time? </p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/fitness/golf-vxs-new-simulator-is-next-level-so-i-compared-it-side-by-side-with-a-real-course">Golf VX's new simulator is next level — so I compared it side-by-side with a real course</a></li><li><a href="https://www.tomsguide.com/tvs/4k-tvs/projectors-arent-just-for-movies-and-gaming-this-one-improves-your-golf-game">I replaced my TV with a 4K projector — and it was the best thing for my golf swing</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/this-pga-tour-pro-ditched-the-big-brands-for-a-usd39-golf-ball-and-now-ben-griffin-is-going-to-the-masters">'I noticed how much farther and straighter it was flying': PGA Tour pro Ben Griffin on playing a cheaper golf ball at The Masters</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/computing/3d-printers/i-3d-printed-these-3-golf-accessories-and-they-actually-dont-suck</link>
                                                                            <description>
                            <![CDATA[ Who would have thought 3D printing and golf could come together to create some really useful products. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Jhy2LXEXLXUutSszWgQhPP</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/ScYTM8WFNDZC7wAPtRKSYZ-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 20 Sep 2026 07:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[3D Printers]]></category>
                                                    <category><![CDATA[Computing Peripherals]]></category>
                                                    <category><![CDATA[Computing Hardware]]></category>
                                                    <category><![CDATA[Printers]]></category>
                                                                                                <author><![CDATA[ dave.leclair@futurenet.com (Dave LeClair) ]]></author>                    <dc:creator><![CDATA[ Dave LeClair ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/fyx7qYdxPMTNBhdnMfNmaB-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Dave LeClair is the Managing News Editor for Tom&#039;s Guide, keeping his finger on the pulse of all things technology. He loves taking the complicated happenings in the tech world and explaining why they matter. Whether Apple is announcing the next big thing in the mobile space or a small startup advancing generative AI, Dave will apply his experience to help you figure out what&#039;s happening and why it&#039;s relevant to your life.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Before Tom&#039;s Guide, Dave worked for publications like PCMag, Pocket-lint, MUO, How-To Geek, Digital Trends, and others. He started writing about technology professionally for MUO in 2011 and hasn&#039;t looked back since. In addition to news, you can find reviews, how-to pieces, shopping guides, and many other types of content with Dave&#039;s name attached.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/ScYTM8WFNDZC7wAPtRKSYZ-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[3D printed golf products on a golf mat]]></media:description>                                                            <media:text><![CDATA[3D printed golf products on a golf mat]]></media:text>
                                <media:title type="plain"><![CDATA[3D printed golf products on a golf mat]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/ScYTM8WFNDZC7wAPtRKSYZ-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Golf is an expensive sport. You could easily spend thousands of dollars on clubs, a <a href="https://www.tomsguide.com/best-picks/best-golf-shoes">pair of the best golf shoes</a> and don't even get me started on the price of tee times. It's maddening, but we golfers keep coming back for more. Gluttons for wallet punishment, are we?</p><p>But if you own a <a href="https://www.tomsguide.com/computing/3d-printers/i-tested-this-usd300-beginner-friendly-3d-printer-and-im-blown-away">3D printer</a> (I used the <a href="https://www.amazon.com/Multi-Color-Precision-Full-Auto-Calibration-Compensation/dp/B0CRYZWJLG" target="_blank" rel="nofollow">Bambu Lab A1 Combo</a> to print these products), there are some golf-related accessories you can print that are actually useful. I tried tons of different 3D prints for golf, and there are three in particular that stand out as being useful, especially for practicing in the simulator or on the range.</p><div class="product"><a data-dimension112="76c6eb8e-b383-11f1-a0e6-597bb2d288f2" data-action="Deal Block" data-label="A1 Combo 3D printer" data-dimension48="A1 Combo 3D printer" data-dimension25="$369" href="https://www.amazon.com/Multi-Color-Precision-Full-Auto-Calibration-Compensation/dp/B0CRYZWJLG" 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="XXsiasGRiugMTR5eeXRUYc" name="1761332020.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/XXsiasGRiugMTR5eeXRUYc-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/Multi-Color-Precision-Full-Auto-Calibration-Compensation/dp/B0CRYZWJLG" target="_blank" rel="nofollow" data-dimension112="76c6eb8e-b383-11f1-a0e6-597bb2d288f2" data-action="Deal Block" data-label="A1 Combo 3D printer" data-dimension48="A1 Combo 3D printer" data-dimension25="$369">A1 Combo 3D printer: was $599 now $369</a></strong><br>The Bambu Lab A1 Combo comes with four spools for different filament colors, and 256mm of printing space for moderate-sized projects. One of my favorite aspects of the printer is how easy it is to get up and running — Bambu says about 20 minutes from box to print, and I'd say it took me a couple of minutes longer, but not far off. For beginners, the process to get going is minimal, and the quality of print jobs is way better than you'd expect.  <a class="view-deal button" href="https://www.amazon.com/Multi-Color-Precision-Full-Auto-Calibration-Compensation/dp/B0CRYZWJLG" target="_blank" rel="nofollow" data-dimension112="76c6eb8e-b383-11f1-a0e6-597bb2d288f2" data-action="Deal Block" data-label="A1 Combo 3D printer" data-dimension48="A1 Combo 3D printer" data-dimension25="$369">View Deal</a></p></div><p>And best of all, they're readily available without any custom 3D design knowledge required, so even if you're a complete beginner to the world of 3D printing, you can send these designs to your printer and take part in the fun. </p><p>Now, I'm not saying there are huge cost savings with these, since a 3D printer costs more than you'd spend on these particular accessories. But if you 3D print a bunch of other stuff and add these to the rotation, you will take a little weight off your wallet. </p><p>Plus, there's the satisfaction of knowing you made something for yourself that you'll actually use.</p><h2 id="golf-ball-dispenser-pro">Golf Ball Dispenser Pro</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="nD9oguZrbAQTi2nsVuwZjS" name="IMG_0465" alt="Golf Ball dispenser" src="https://cdn.mos.cms.futurecdn.net/nD9oguZrbAQTi2nsVuwZjS-1920-80.jpg" mos="" align="middle" fullscreen="" width="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>For me, the <a href="https://makerworld.com/en/models/1295289-golf-ball-dispenser-pro" target="_blank">Golf Ball Dispenser Pro</a> is the ultimate 3D-printed golf accessory. It gives you much of the same functionality as driving ranges with auto-tee capabilities, but at home (or at a cheaper range that doesn't offer it). While it's a slightly more complicated print, it does print everything you need to use the dispenser (except a golf ball, which is used as a weight).</p><p>I highly recommend printing the <a href="https://makerworld.com/en/models/1405890-funnel-to-golf-ball-dispenser-pro?from=search#profileId-1458735" target="_blank">funnel</a> so it can hold a few extra balls, since it means you don't have to fill it as often and you can keep your practice flowing without stopping (there's an even <a href="https://makerworld.com/en/models/2458482-expanded-ball-garage-for-golf-ball-dispenser-pro?from=search" target="_blank">larger ball garage</a> that has come out since I printed mine, but I haven't tried it, so I can't speak to how well it works). Between the funnel and the actual dispenser, you can step up your practice game in a big way without spending much money.</p><h2 id="weighted-tee-base-for-golf-simulator">Weighted Tee Base for Golf Simulator</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="yexwxyEQ2wDKMeuXgXh6UW" name="IMG_0490" alt="Golf tee weight" src="https://cdn.mos.cms.futurecdn.net/yexwxyEQ2wDKMeuXgXh6UW-1920-80.jpg" mos="" align="middle" fullscreen="" width="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>When you're practicing in the simulator or range, your tees fly all over the place. That's where this <a href="https://makerworld.com/en/models/957732-weighted-tee-base-for-golf-simulator?from=search#profileId-926968" target="_blank">Weighted Tee Base for Golf Simulator</a> comes in. Products like the <a href="https://k2golf.com/" target="_blank">K2 Golf tee holder</a> do a similar job, but they're pricey. If you own a 3D printer, some sand (or something heavy you can fit inside it) and a rubber-band tether, you can print this weighted tee base and save a lot of cash.</p><p>I definitely enjoy not having to chase my simulator tees all around the room with every tee shot. When practicing driver, this lets you get more shots off in less time, which will help you improve faster. After all, good practice is all about efficiency, and this simple 3D print gives you that.</p><h2 id="golf-tee-elevator">Golf Tee Elevator</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="hELvtCJZFzgbZrXWTuKbkE" name="1789679457.jpg" alt="The Golf Tee Elevator in use on the course" src="https://cdn.mos.cms.futurecdn.net/hELvtCJZFzgbZrXWTuKbkE-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: Printworthy on MakerWorld)</span></figcaption></figure><p>Maybe I'm just being weird, but I'm very particular about the height of my golf tee. At the same time, I'm terrible about using the same type of tee all the time. I usually use whatever I pull out of my bag, which makes lining up the exact height a pain. </p><p>When I saw the <a href="https://makerworld.com/en/models/892663-golf-tee-elevator?from=search#profileId-859634" target="_blank">Golf Tee Elevator on MakerWorld</a>, I found the solution. No matter what kind of tee I grab (or find on the ground near the tee box), I can slot it into this and set it in the ground at the perfect height.</p><p>Does it really make a difference in the quality of my tee shots? Probably not, but the consistency gives me one less thing to think about, and any distraction you can get rid of on the course is a good thing.</p><h2 id="golf-and-3d-printing-together-at-last">Golf and 3D printing, together at last</h2><p><a href="https://makerworld.com/en/search/models?keyword=golf+practice" target="_blank">MakerWorld has tons of other 3D-printed golf accessories</a>, such as tees, a grip training aid, alignment stick holders, and more. However, the three listed here are the ones that have really been game-changers for me personally. But don't be afraid to expand out and try other fun golf prints. You never know what's best for you until you try. </p><p>And what do you have to lose besides some filament and a couple of hours of print time? </p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/fitness/golf-vxs-new-simulator-is-next-level-so-i-compared-it-side-by-side-with-a-real-course">Golf VX's new simulator is next level — so I compared it side-by-side with a real course</a></li><li><a href="https://www.tomsguide.com/tvs/4k-tvs/projectors-arent-just-for-movies-and-gaming-this-one-improves-your-golf-game">I replaced my TV with a 4K projector — and it was the best thing for my golf swing</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/this-pga-tour-pro-ditched-the-big-brands-for-a-usd39-golf-ball-and-now-ben-griffin-is-going-to-the-masters">'I noticed how much farther and straighter it was flying': PGA Tour pro Ben Griffin on playing a cheaper golf ball at The Masters</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 'Anatomy of a Fall' is leaving Netflix this week — watch this modern thriller masterpiece before it's gone ]]></title>
                                                                                                <dc:content><![CDATA[ <p>I can think of precious few movies from the last 10 years that I get excited about watching again for work. <strong>"Anatomy of a Fall"</strong> is one of them. Every time I re-watch it, I notice something new, both delightful and heartbreaking in equal measure. It's an intelligent thriller where a suspicious death puts a marriage under a microscope, hushed arguments of fights past hashed out in court while their young son watches on. </p><p><strong>"Anatomy of a Fall" is about to leave Netflix</strong> this week on Sept. 23, so I have an excuse to yap about this Oscar winning that starts as a psychological thriller and ends with a courtroom drama for the history books. If you haven't seen it yet, it's definitely worth a watch before it leaves one of <a href="https://www.tomsguide.com/us/best-streaming-video-services,review-2625.html">the best streaming services</a>. Netflix got hundreds of <a href="https://www.tomsguide.com/entertainment/netflix/new-on-netflix-in-september-2026-5-best-movies-and-shows-to-stream-plus-full-release-list" target="_blank">new movies in September</a>, but as always, it means we're saying goodbye to other great ones on our watchlist. So while it's still on Netflix, don't miss "Anatomy of a Fall." </p><p>Still not convinced? I hear ya. Who wants to waste their precious streaming time with a dud? Here's everything you need to know about why "Anatomy of a Fall" deserves a spot on your watchlist. </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="what-is-39-anatomy-of-a-fall-39-about">What is 'Anatomy of a Fall' about?</h2><p>The title breaks things down splendidly. If a husband falls to his death after a fight with his wife, who's to say it wasn't murder? That's the premise of Justine Triet's Palme d'Or- and Oscar-winning movie, "Anatomy of a Fall." </p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/FUXawkH-ONM" allowfullscreen></iframe></div></div><p>It's the kind of film where you quickly realize you must choose whose word to trust. But really, who is telling the truth doesn’t matter as much as how their stories make you feel. A cast impeccably led by Sandra Hüller in the performance of a lifetime, that you inevitably grow to root for.  </p><p>"You must never lie to yourself," a mother tells her son, played by Milo Machado-Graner, a genuine talent beyond his years. His father, the equal parts conniving and charming Swann Arlaud, winds up dead. Suicide? Or defenestration? (Please indulge me, I rarely get the chance to use the word.) </p><p>Let me set the scene with the movie's iconic opening sequence. A younger woman (a student?) records an interview with an older woman while an objectively sick saxophone instrumental spoils the gay panic clear on display. It's hilarious both with and without context, and sets the tone exquisitely. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xj2GKX"></div>                            </div>                            <script src="https://kwizly.com/embed/Xj2GKX.js" async></script><h2 id="stream-39-anatomy-of-a-fall-39-on-netflix-now">Stream 'Anatomy of a Fall' on Netflix now</h2><p>Sometimes a movie doesn’t have to do anything more than execute a simple premise well. I said the same thing of “Obsession." The setting is scrumptious — the a-frame attic of my dreams on a snowy mountain cabin. In a weird way, it makes "Anatomy of a Fall" a perfect summer send-off in these Unprecedented Times. It's hard to explain exactly without spoiling the steady drip of discovery at the heart of this film, so if I'm being annoyingly vague, I apologize. I will continue to be. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="xSZeyYwSrLWGVXgsaTKCza" name="2YAWN6R-anatomy-of-a-fall-movie" alt="Sandra Hüller as Sandra Voyter in "Anatomy of a Fall"" src="https://cdn.mos.cms.futurecdn.net/xSZeyYwSrLWGVXgsaTKCza-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: Le Pacte / Photo 12 / Alamy)</span></figcaption></figure><p>"Anatomy of a Fall" is spectacle in a glorious sense. It'll hypnotize you in the way films were once known for; the kind where you'd look up at the clock and realize an afternoon's disappeared. The meatier themes give eagle-eyed viewers plenty to gnaw on as you get lost in Triet, Hüller, and the rest of these movie magic scientists breaking down the anatomy of a fall again, and again, and again. </p><p>Also, this is purely self-indulgent, but shout-out to <a href="https://www.tiktok.com/@ginafancam/video/7320639298082966816" target="_blank">Antoine Reinartz</a> for the French Phoenix Wright impression I didn't know I needed. I love it when a side character completely kills a role, and this man had me <em>obsessed</em>. </p><p>So check out "Anatomy of a Fall" on Netflix before it's gone. Pro tip: If you miss that Sept. 23 deadline, there's another place you can stream it. All you'll need to do is <a href="https://www.kanopy.com/en/signup" target="_blank">sign up for a Kanopy account</a> for free with a public library card or university login. Kanopy's library is stacked with over 30,000 movies, TV shows, and educational videos, and like the rest of <a href="https://www.tomsguide.com/us/best-streaming-video-services,review-2625.html">the best streaming platforms</a>, it's constantly rotating its stock. That includes some <a href="https://www.tomsguide.com/entertainment/streaming/you-dont-have-to-spend-a-dime-to-stream-this-oscar-best-picture-winner-3-iconic-movies-free-on-kanopy-right-now" target="_blank">newer releases on Kanopy too</a>, like 2022's "Marcel the Shell With Shoes On" and "Everything Everywhere All at Once."</p><p><em><strong>Watch </strong></em><a href="https://www.netflix.com/title/81713297" target="_blank"><em><strong>"Anatomy of a Fall" on Netflix</strong></em></a></p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/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/netflix/5-best-new-netflix-movies-and-shows-to-stream-this-week-sept-14-20-2026">5 best new Netflix movies and shows to stream this week (Sept. 14-20)</a></li><li><a href="https://www.tomsguide.com/entertainment/netflix/3-new-to-netflix-thriller-movies-to-watch-this-week-including-one-of-the-most-iconic-spielberg-movies-ever-made-sept-17-23">3 new to Netflix thriller movies to watch this week — including one of the most iconic Spielberg movies ever made (Sept. 17-23)</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/netflix/anatomy-of-a-fall-is-leaving-netflix-this-week-watch-this-modern-thriller-masterpiece-before-its-gone</link>
                                                                            <description>
                            <![CDATA[ "Anatomy of a Fall" is going to leave Netflix this week, and here's why this Oscar winning thriller deserves a spot on your watchlist. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">TiHJ9tarYoiAFRe5CrCAgA</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/uhBUUMqFL5omB5fewZNGKb-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 20 Sep 2026 06:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Netflix]]></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/uhBUUMqFL5omB5fewZNGKb-1920-80.jpg">
                                                            <media:credit><![CDATA[Le Pacte / Capital Pictures / Alamy]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Sandra Hüller as Sandra Voyter in &quot;Anatomy of a Fall&quot;]]></media:description>                                                            <media:text><![CDATA[Sandra Hüller as Sandra Voyter in &quot;Anatomy of a Fall&quot;]]></media:text>
                                <media:title type="plain"><![CDATA[Sandra Hüller as Sandra Voyter in &quot;Anatomy of a Fall&quot;]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/uhBUUMqFL5omB5fewZNGKb-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I can think of precious few movies from the last 10 years that I get excited about watching again for work. <strong>"Anatomy of a Fall"</strong> is one of them. Every time I re-watch it, I notice something new, both delightful and heartbreaking in equal measure. It's an intelligent thriller where a suspicious death puts a marriage under a microscope, hushed arguments of fights past hashed out in court while their young son watches on. </p><p><strong>"Anatomy of a Fall" is about to leave Netflix</strong> this week on Sept. 23, so I have an excuse to yap about this Oscar winning that starts as a psychological thriller and ends with a courtroom drama for the history books. If you haven't seen it yet, it's definitely worth a watch before it leaves one of <a href="https://www.tomsguide.com/us/best-streaming-video-services,review-2625.html">the best streaming services</a>. Netflix got hundreds of <a href="https://www.tomsguide.com/entertainment/netflix/new-on-netflix-in-september-2026-5-best-movies-and-shows-to-stream-plus-full-release-list" target="_blank">new movies in September</a>, but as always, it means we're saying goodbye to other great ones on our watchlist. So while it's still on Netflix, don't miss "Anatomy of a Fall." </p><p>Still not convinced? I hear ya. Who wants to waste their precious streaming time with a dud? Here's everything you need to know about why "Anatomy of a Fall" deserves a spot on your watchlist. </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="what-is-39-anatomy-of-a-fall-39-about">What is 'Anatomy of a Fall' about?</h2><p>The title breaks things down splendidly. If a husband falls to his death after a fight with his wife, who's to say it wasn't murder? That's the premise of Justine Triet's Palme d'Or- and Oscar-winning movie, "Anatomy of a Fall." </p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/FUXawkH-ONM" allowfullscreen></iframe></div></div><p>It's the kind of film where you quickly realize you must choose whose word to trust. But really, who is telling the truth doesn’t matter as much as how their stories make you feel. A cast impeccably led by Sandra Hüller in the performance of a lifetime, that you inevitably grow to root for.  </p><p>"You must never lie to yourself," a mother tells her son, played by Milo Machado-Graner, a genuine talent beyond his years. His father, the equal parts conniving and charming Swann Arlaud, winds up dead. Suicide? Or defenestration? (Please indulge me, I rarely get the chance to use the word.) </p><p>Let me set the scene with the movie's iconic opening sequence. A younger woman (a student?) records an interview with an older woman while an objectively sick saxophone instrumental spoils the gay panic clear on display. It's hilarious both with and without context, and sets the tone exquisitely. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xj2GKX"></div>                            </div>                            <script src="https://kwizly.com/embed/Xj2GKX.js" async></script><h2 id="stream-39-anatomy-of-a-fall-39-on-netflix-now">Stream 'Anatomy of a Fall' on Netflix now</h2><p>Sometimes a movie doesn’t have to do anything more than execute a simple premise well. I said the same thing of “Obsession." The setting is scrumptious — the a-frame attic of my dreams on a snowy mountain cabin. In a weird way, it makes "Anatomy of a Fall" a perfect summer send-off in these Unprecedented Times. It's hard to explain exactly without spoiling the steady drip of discovery at the heart of this film, so if I'm being annoyingly vague, I apologize. I will continue to be. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="xSZeyYwSrLWGVXgsaTKCza" name="2YAWN6R-anatomy-of-a-fall-movie" alt="Sandra Hüller as Sandra Voyter in "Anatomy of a Fall"" src="https://cdn.mos.cms.futurecdn.net/xSZeyYwSrLWGVXgsaTKCza-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: Le Pacte / Photo 12 / Alamy)</span></figcaption></figure><p>"Anatomy of a Fall" is spectacle in a glorious sense. It'll hypnotize you in the way films were once known for; the kind where you'd look up at the clock and realize an afternoon's disappeared. The meatier themes give eagle-eyed viewers plenty to gnaw on as you get lost in Triet, Hüller, and the rest of these movie magic scientists breaking down the anatomy of a fall again, and again, and again. </p><p>Also, this is purely self-indulgent, but shout-out to <a href="https://www.tiktok.com/@ginafancam/video/7320639298082966816" target="_blank">Antoine Reinartz</a> for the French Phoenix Wright impression I didn't know I needed. I love it when a side character completely kills a role, and this man had me <em>obsessed</em>. </p><p>So check out "Anatomy of a Fall" on Netflix before it's gone. Pro tip: If you miss that Sept. 23 deadline, there's another place you can stream it. All you'll need to do is <a href="https://www.kanopy.com/en/signup" target="_blank">sign up for a Kanopy account</a> for free with a public library card or university login. Kanopy's library is stacked with over 30,000 movies, TV shows, and educational videos, and like the rest of <a href="https://www.tomsguide.com/us/best-streaming-video-services,review-2625.html">the best streaming platforms</a>, it's constantly rotating its stock. That includes some <a href="https://www.tomsguide.com/entertainment/streaming/you-dont-have-to-spend-a-dime-to-stream-this-oscar-best-picture-winner-3-iconic-movies-free-on-kanopy-right-now" target="_blank">newer releases on Kanopy too</a>, like 2022's "Marcel the Shell With Shoes On" and "Everything Everywhere All at Once."</p><p><em><strong>Watch </strong></em><a href="https://www.netflix.com/title/81713297" target="_blank"><em><strong>"Anatomy of a Fall" on Netflix</strong></em></a></p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/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/netflix/5-best-new-netflix-movies-and-shows-to-stream-this-week-sept-14-20-2026">5 best new Netflix movies and shows to stream this week (Sept. 14-20)</a></li><li><a href="https://www.tomsguide.com/entertainment/netflix/3-new-to-netflix-thriller-movies-to-watch-this-week-including-one-of-the-most-iconic-spielberg-movies-ever-made-sept-17-23">3 new to Netflix thriller movies to watch this week — including one of the most iconic Spielberg movies ever made (Sept. 17-23)</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 3 biggest Prime Video movies and shows I can’t wait to watch in fall 2026 ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Fall is my favorite time of year. I love that September marks the start of the build-up to spooky season, with colder evenings, darker nights and Halloween slowly creeping closer. It also gives me another excuse to stay indoors with a blanket and watch a new movie or settle in for a full-on binge of a new show. Luckily, <a href="https://www.tomsguide.com/entertainment/streaming/prime-video"><strong>Prime Video</strong></a> has quite a few releases to look forward to over the next few weeks, making the start of fall even more exciting.</p><p>There’s a little bit of everything coming to the streaming service, from a highly anticipated romantic comedy based on a bestselling novel to Mike Flanagan’s new eight-episode take on one of Stephen King’s most famous stories. There’s also a long-awaited sci-fi series set in the world of a beloved futuristic franchise, which arrives later in the season. With all three offering something very different, these are the three Prime Video releases I’m most excited to add to my fall 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><h2 id="the-love-hypothesis">‘The Love Hypothesis’</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>A movie we’re actually getting very soon is “The Love Hypothesis,” a romantic comedy adapted from Ali Hazelwood’s 2021 New York Times bestselling novel. I’m a huge sucker for romance films just as much as I am for horror, and this one looks like it’s going to deliver plenty of yearning. I also have high hopes considering it’s directed by Claire Scanlon, known for her work on “Set It Up,” which is one of the best modern rom-coms of all time. There’s no better time than fall to cozy up with a charming flick, and I’m confident this could be Prime Video’s next No. 1.</p><p>Olive Smith (Lili Reinhart) is a Ph.D. candidate whose life takes an unexpected turn when her best friend starts dating Olive’s former crush. To convince her best friend that she has moved on, Olive impulsively kisses Adam Carlsen (Tom Bateman), an intimidating professor at her university. Rather than causing the awkward encounter she expects, the moment leads to an unusual arrangement. Adam agrees to pretend to be Olive’s boyfriend, giving both of them something they need. However, their established rules become increasingly difficult to follow.</p><p><em><strong>Stream on </strong></em><a href="https://www.amazon.com/gp/video/detail/B0H4WZS7VX" target="_blank" rel="nofollow"><em><strong>Prime Video</strong></em></a><em><strong> starting September 23</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>Stephen King is my favorite horror author, which feels pretty natural given how much I love the genre, so I’ve seen several film adaptations of his most popular books. When Prime Video announced a TV adaptation of “Carrie,” it quickly became one of my most anticipated releases of the year. The project also marks Mike Flanagan’s fourth major Stephen King adaptation, following “Gerald’s Game,” “Doctor Sleep” and “The Life of Chuck.” Judging by the trailer, “Carrie” brings telekinesis into the modern world, with cyberbullying, social media and viral videos all playing a part in the story.</p><p>Carrie White (Summer H. Howell) has spent most of her life sheltered at home by her fiercely protective mother, Margaret (Samantha Sloyan). Following the sudden death of her father, Carrie is sent into public high school for the first time, where she struggles to adjust to her unfamiliar surroundings and classmates. After a humiliating incident is filmed and shared online, Carrie finds herself at the center of a viral scandal. Meanwhile, strange abilities begin to emerge as she adjusts to her new life.</p><p><em><strong>Stream 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> starting October 7</strong></em></p><h2 id="blade-runner-2099">‘Blade Runner 2099’</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/0Dr8I_RyRCg" allowfullscreen></iframe></div></div><p>“Blade Runner 2099” functions as a direct TV continuation of Ridley Scott’s original 1982 masterpiece and Denis Villeneuve’s “Blade Runner 2049,” shifting the neo-noir franchise 50 years forward in the canon timeline. Even though we only have a teaser trailer right now, it already looks very promising from a visual standpoint, and I have no doubt it will retain the cyberpunk feel of the previous films. The pairing of Michelle Yeoh and Hunter Schafer is also particularly compelling, and I’m excited to see what these two bring to the franchise.</p><p>Set 50 years after the events of “Blade Runner 2049,” the series follows Cora (Hunter Schafer), a fugitive who has spent years moving between identities while trying to protect her brother. When she takes on one final identity as a Blade Runner, she is partnered with Olwen (Michelle Yeoh), a Replicant who is nearing the end of her life. Together, they set out to track down a runaway whose hidden secret could threaten the future of Los Angeles. Soon, Cora and Olwen find themselves drawn into a dangerous conspiracy involving the city’s rogue Replicants.</p><p><em><strong>Stream on </strong></em><a href="https://www.amazon.com/gp/video/detail/B0H8MGR6PV" target="_blank" rel="nofollow"><em><strong>Prime Video</strong></em></a><em><strong> starting November 25</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/movies/7-movies-i-cant-wait-to-watch-in-fall-2026-including-a-survival-thriller-about-being-trapped-inside-a-whale">7 movies I can’t wait to watch in theaters in fall 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/3-new-to-prime-video-thriller-movies-to-watch-this-week-sept-15-21-including-a-psychological-masterpiece-that-won-all-five-major-oscars">3 new to Prime Video thriller movies to watch this week</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 to stream now</a></li></ul><div data-model-name="Disney Plus,Hulu,Max,Paramount Plus,Peacock TV" data-widget-type="multimodelreview" data-widget-title="Streaming service deals not to miss"></div> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/prime-video/3-biggest-prime-video-movies-and-shows-i-cant-wait-to-watch-in-fall-2026</link>
                                                                            <description>
                            <![CDATA[ Prime Video is releasing a whole bunch of exciting new movies and shows in fall 2026. Here’s the five I’m adding to my watchlist first. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Tuc9bwT6osgEecHCwBPtFX</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/FWekEyPaaKLHQFPSV5DbjR-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 20 Sep 2026 04:01:00 +0000</pubDate>                                                                                                                                <updated>Sun, 20 Sep 2026 12:26:44 +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/FWekEyPaaKLHQFPSV5DbjR-1920-80.jpg">
                                                            <media:credit><![CDATA[Robert Falconer / Prime Video]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Summer H. Howell as Carrie White in &quot;Carrie&quot; on Prime Video (2026)]]></media:description>                                                            <media:text><![CDATA[Summer H. Howell as Carrie White in &quot;Carrie&quot; on Prime Video (2026)]]></media:text>
                                <media:title type="plain"><![CDATA[Summer H. Howell as Carrie White in &quot;Carrie&quot; on Prime Video (2026)]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/FWekEyPaaKLHQFPSV5DbjR-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Fall is my favorite time of year. I love that September marks the start of the build-up to spooky season, with colder evenings, darker nights and Halloween slowly creeping closer. It also gives me another excuse to stay indoors with a blanket and watch a new movie or settle in for a full-on binge of a new show. Luckily, <a href="https://www.tomsguide.com/entertainment/streaming/prime-video"><strong>Prime Video</strong></a> has quite a few releases to look forward to over the next few weeks, making the start of fall even more exciting.</p><p>There’s a little bit of everything coming to the streaming service, from a highly anticipated romantic comedy based on a bestselling novel to Mike Flanagan’s new eight-episode take on one of Stephen King’s most famous stories. There’s also a long-awaited sci-fi series set in the world of a beloved futuristic franchise, which arrives later in the season. With all three offering something very different, these are the three Prime Video releases I’m most excited to add to my fall 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><h2 id="the-love-hypothesis">‘The Love Hypothesis’</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>A movie we’re actually getting very soon is “The Love Hypothesis,” a romantic comedy adapted from Ali Hazelwood’s 2021 New York Times bestselling novel. I’m a huge sucker for romance films just as much as I am for horror, and this one looks like it’s going to deliver plenty of yearning. I also have high hopes considering it’s directed by Claire Scanlon, known for her work on “Set It Up,” which is one of the best modern rom-coms of all time. There’s no better time than fall to cozy up with a charming flick, and I’m confident this could be Prime Video’s next No. 1.</p><p>Olive Smith (Lili Reinhart) is a Ph.D. candidate whose life takes an unexpected turn when her best friend starts dating Olive’s former crush. To convince her best friend that she has moved on, Olive impulsively kisses Adam Carlsen (Tom Bateman), an intimidating professor at her university. Rather than causing the awkward encounter she expects, the moment leads to an unusual arrangement. Adam agrees to pretend to be Olive’s boyfriend, giving both of them something they need. However, their established rules become increasingly difficult to follow.</p><p><em><strong>Stream on </strong></em><a href="https://www.amazon.com/gp/video/detail/B0H4WZS7VX" target="_blank" rel="nofollow"><em><strong>Prime Video</strong></em></a><em><strong> starting September 23</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>Stephen King is my favorite horror author, which feels pretty natural given how much I love the genre, so I’ve seen several film adaptations of his most popular books. When Prime Video announced a TV adaptation of “Carrie,” it quickly became one of my most anticipated releases of the year. The project also marks Mike Flanagan’s fourth major Stephen King adaptation, following “Gerald’s Game,” “Doctor Sleep” and “The Life of Chuck.” Judging by the trailer, “Carrie” brings telekinesis into the modern world, with cyberbullying, social media and viral videos all playing a part in the story.</p><p>Carrie White (Summer H. Howell) has spent most of her life sheltered at home by her fiercely protective mother, Margaret (Samantha Sloyan). Following the sudden death of her father, Carrie is sent into public high school for the first time, where she struggles to adjust to her unfamiliar surroundings and classmates. After a humiliating incident is filmed and shared online, Carrie finds herself at the center of a viral scandal. Meanwhile, strange abilities begin to emerge as she adjusts to her new life.</p><p><em><strong>Stream 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> starting October 7</strong></em></p><h2 id="blade-runner-2099">‘Blade Runner 2099’</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/0Dr8I_RyRCg" allowfullscreen></iframe></div></div><p>“Blade Runner 2099” functions as a direct TV continuation of Ridley Scott’s original 1982 masterpiece and Denis Villeneuve’s “Blade Runner 2049,” shifting the neo-noir franchise 50 years forward in the canon timeline. Even though we only have a teaser trailer right now, it already looks very promising from a visual standpoint, and I have no doubt it will retain the cyberpunk feel of the previous films. The pairing of Michelle Yeoh and Hunter Schafer is also particularly compelling, and I’m excited to see what these two bring to the franchise.</p><p>Set 50 years after the events of “Blade Runner 2049,” the series follows Cora (Hunter Schafer), a fugitive who has spent years moving between identities while trying to protect her brother. When she takes on one final identity as a Blade Runner, she is partnered with Olwen (Michelle Yeoh), a Replicant who is nearing the end of her life. Together, they set out to track down a runaway whose hidden secret could threaten the future of Los Angeles. Soon, Cora and Olwen find themselves drawn into a dangerous conspiracy involving the city’s rogue Replicants.</p><p><em><strong>Stream on </strong></em><a href="https://www.amazon.com/gp/video/detail/B0H8MGR6PV" target="_blank" rel="nofollow"><em><strong>Prime Video</strong></em></a><em><strong> starting November 25</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/movies/7-movies-i-cant-wait-to-watch-in-fall-2026-including-a-survival-thriller-about-being-trapped-inside-a-whale">7 movies I can’t wait to watch in theaters in fall 2026</a></li><li><a href="https://www.tomsguide.com/entertainment/prime-video/3-new-to-prime-video-thriller-movies-to-watch-this-week-sept-15-21-including-a-psychological-masterpiece-that-won-all-five-major-oscars">3 new to Prime Video thriller movies to watch this week</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 to stream now</a></li></ul><div data-model-name="Disney Plus,Hulu,Max,Paramount Plus,Peacock TV" data-widget-type="multimodelreview" data-widget-title="Streaming service deals not to miss"></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 3 newly added Paramount+ shows you need to binge-watch this weekend (Sept. 18-20) ]]></title>
                                                                                                <dc:content><![CDATA[ <p><strong></strong><a href="https://www.tomsguide.com/entertainment/streaming/paramount-plus"><strong>Paramount+</strong></a> is regularly adding new shows to binge-watch. This weekend is no exception. The <a href="https://www.tomsguide.com/us/best-streaming-video-services,review-2625.html">streaming service</a> releases new episodes of hit shows every week. Sometimes, even entire seasons at once. It <a href="https://www.tomsguide.com/entertainment/paramount-plus/paramount-just-added-121-new-movies-and-shows-heres-the-5-im-streaming-first-september-1-2026">added over 120 new movies and shows on September 1</a> alone. It even has some live sporting events, including all major events from the Ultimate Fighting Championship.</p><p>This weekend, let's start with a show that's just getting started: "<strong>MobLand</strong>" <strong>season 2</strong>. Once you're done watching that premiere (and catching up on season 1), be sure to watch the "<strong>Lioness</strong>" <strong>season 3 </strong>finale, arriving on Paramount+ this Sunday (September 20). Finally, check out the "<strong>South Park</strong>" <strong>season 29</strong> premiere, which arrives each week on the day after it debuts on Comedy Central.</p><p><strong>Here are the three new to Paramount+ shows you need to binge-watch this weekend</strong>. If you need more recommendations, check out <a href="https://www.tomsguide.com/entertainment/paramount-plus/new-on-paramount-in-september-2026-top-movies-and-shows-to-stream-this-month">everything new on Paramount+ in September 2026</a> for more options.</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-mobland-39-season-2">'MobLand' 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/VvYl1a1Px5Y" allowfullscreen></iframe></div></div><p><strong>Genre:</strong> Crime drama series</p><p><strong>What's it about?</strong> "MobLand" centers around the Harrigan crime family. This gang of drug lords is led by patriarch Conrad (Pierce Brosnan), matriarch Maeve (Helen Mirren) and Conrad's second son Kevin (Paddy Considine). But the show largely focuses on the family's fixer, Harry (Tom Hardy). He cleans up all their messes, including a gang war in season 1. In season 2, he'll be trying to fend off the cold, calculating Kat McAllister (Janet McTeer) while struggling to keep his own marriage intact.</p><p><strong>Why you should watch it:</strong> This show didn't start without some bumps, but <a href="https://www.tomsguide.com/entertainment/paramount-plus/tom-hardys-paramount-plus-crime-thriller-just-wrapped-up-an-epic-first-season-with-a-stunning-finale">"MobLand" season 1 ended with a stunning finale</a>. This next batch of episodes looks to be starting on a high note too, with a <a href="https://www.tomsguide.com/entertainment/paramount-plus/mobland-season-2-kicks-things-off-with-a-bang-in-a-bloody-season-premiere-and-the-return-of-tom-hardy">bloody season 2 premiere</a>. So make sure to check it out this weekend and to catch up on season 1 if you haven't already.</p><p><em>Watch the premiere of </em><a href="https://www.paramountplus.com/home/" target="_blank" rel="nofollow"><em>"MobLand" season 2 on Paramount+</em></a><em> now</em></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W2d5vX"></div>                            </div>                            <script src="https://kwizly.com/embed/W2d5vX.js" async></script><h2 id="39-lioness-39-season-3">'Lioness' season 3</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/OrunH41K3Ps" allowfullscreen></iframe></div></div><p><strong>Genre:</strong> Spy thriller series</p><p><strong>What's it about?</strong> Zoe Saldaña stars in this spy thriller as CIA operative Joe McNamara. She is in charge of Lioness, a program that inserts women operatives undercover and then takes down enemy targets in the war on terror. Once embedded, these women typically bring down their marks by getting close to the women around the dangerous characters and then finding an exploit from there. </p><p><strong>Why you should watch it: </strong>"Lioness" season 3 has Joe dealing with a sticky situation, to say the least. But she's not the only one in trouble. Audiences initially loved this season, but it's now 78% fresh on <a href="https://www.rottentomatoes.com/tv/lioness/s03" target="_blank">Rotten Tomatoes</a>. That's a notable drop from the 91% it had been rated by fans at the start of the season. Hopefully it can stick the landing with an epic season 3 finale.</p><p><em>Watch the first seven episodes of </em><a href="https://www.paramountplus.com" target="_blank" rel="nofollow"><em>"Lioness" season 3 on Paramount+</em></a><em> now. Episode 8 (season finale) premieres on September 6</em></p><h2 id="39-south-park-39-season-29">'South Park' season 29</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/jp7rSWFt-YA" allowfullscreen></iframe></div></div><p><strong>Genre:</strong> Animated adult comedy series</p><p><strong>What's it about?</strong> "South Park" features the voices of Trey Parker and Matt Stone as Stan, Eric, Kyle and Kenny. These four, their friends and their families are used by the creative duo to pillory ... well, just about everyone and everything. Last year, it was mostly U.S. President Donald Trump who took the brunt of Parker and Stone's wit. Given that the show is now technically "South America," a nod to Trump's penchant for naming things after the U.S., I would expect President 45/47 to bear the brunt of their comedic slings and arrows once again.</p><p><strong>Why you should watch it: </strong>Last year, "South Park" season 27 was one of <a href="https://www.tomsguide.com/entertainment/streaming/ive-watched-60-shows-in-2025-here-are-the-10-best">my top 10 shows of 2025</a>. I can't wait to see if season 29 can be a contender in 2026.</p><p><em>Watch the premiere of </em><a href="https://www.paramountplus.com/" target="_blank" rel="nofollow"><em>"South Park" season 29 on Paramount+</em></a><em> now</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/movies/resident-evil-2026-review">'Resident Evil' review: Officially the best video game movie of all time, but also Zach Cregger's worst</a></li><li><a href="https://www.tomsguide.com/entertainment/apple-tv/slow-horses-season-6-kicks-things-off-with-a-stunning-death-and-im-still-in-shock">'Slow Horses' season 6 kicks things off with a stunning death, and I'm still in shock</a></li><li><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">Alan Ritchson does his best John Wick impression in a hyper-violent 'Reacher' season 4 finale</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/paramount-plus/3-newly-added-paramount-shows-you-need-to-binge-watch-this-weekend-sept-18-20-2026</link>
                                                                            <description>
                            <![CDATA[ These three new Paramount+ shows are a must-watch this weekend. Here's what you need to add to your watchlist. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">tXFkjQdKEXpE6TCDXaomKk</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/mHmY8PH3z4uFjiiC2WeAbB-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 19 Sep 2026 13:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Paramount Plus]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                    <category><![CDATA[Streaming]]></category>
                                                                                                <author><![CDATA[ malcolm.mcmillan@futurenet.com (Malcolm McMillan) ]]></author>                    <dc:creator><![CDATA[ Malcolm McMillan ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/sSDLEbNEgBXf86HpujaWZ6-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Malcolm McMillan is a Streaming Editor for Tom&#039;s Guide, covering all the latest in streaming TV shows and movies. That means news, analysis, recommendations, reviews and more for just about anything you can watch, including sports! If it can be seen on a screen, he can write about it. &lt;/p&gt;&lt;p&gt;Malcolm has been with Tom&#039;s Guide since June 2022, starting as a staff writer covering breaking news. Since then, he&#039;s transitioned to cover artificial intelligence (AI), A/V tech and VR headsets. Since late 2023 he has almost exclusively covered streaming and entertainment for Tom&#039;s Guide.&lt;/p&gt;&lt;p&gt;Before writing for Tom&#039;s Guide, Malcolm worked as a fantasy football analyst writing for several sites and also had a brief stint working for Microsoft selling laptops, Xbox products and even the ill-fated Windows phone. He is passionate about video games and sports, though both cause him to yell at the TV frequently. He proudly sports many tattoos, including an Arsenal tattoo, in honor of the team that causes him to yell at the TV the most.&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/mHmY8PH3z4uFjiiC2WeAbB-1920-80.jpg">
                                                            <media:credit><![CDATA[Paramount Plus; Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Paramount Plus logo on a magenta background]]></media:description>                                                            <media:text><![CDATA[Paramount Plus logo on a magenta background]]></media:text>
                                <media:title type="plain"><![CDATA[Paramount Plus logo on a magenta background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/mHmY8PH3z4uFjiiC2WeAbB-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p><strong></strong><a href="https://www.tomsguide.com/entertainment/streaming/paramount-plus"><strong>Paramount+</strong></a> is regularly adding new shows to binge-watch. This weekend is no exception. The <a href="https://www.tomsguide.com/us/best-streaming-video-services,review-2625.html">streaming service</a> releases new episodes of hit shows every week. Sometimes, even entire seasons at once. It <a href="https://www.tomsguide.com/entertainment/paramount-plus/paramount-just-added-121-new-movies-and-shows-heres-the-5-im-streaming-first-september-1-2026">added over 120 new movies and shows on September 1</a> alone. It even has some live sporting events, including all major events from the Ultimate Fighting Championship.</p><p>This weekend, let's start with a show that's just getting started: "<strong>MobLand</strong>" <strong>season 2</strong>. Once you're done watching that premiere (and catching up on season 1), be sure to watch the "<strong>Lioness</strong>" <strong>season 3 </strong>finale, arriving on Paramount+ this Sunday (September 20). Finally, check out the "<strong>South Park</strong>" <strong>season 29</strong> premiere, which arrives each week on the day after it debuts on Comedy Central.</p><p><strong>Here are the three new to Paramount+ shows you need to binge-watch this weekend</strong>. If you need more recommendations, check out <a href="https://www.tomsguide.com/entertainment/paramount-plus/new-on-paramount-in-september-2026-top-movies-and-shows-to-stream-this-month">everything new on Paramount+ in September 2026</a> for more options.</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-mobland-39-season-2">'MobLand' 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/VvYl1a1Px5Y" allowfullscreen></iframe></div></div><p><strong>Genre:</strong> Crime drama series</p><p><strong>What's it about?</strong> "MobLand" centers around the Harrigan crime family. This gang of drug lords is led by patriarch Conrad (Pierce Brosnan), matriarch Maeve (Helen Mirren) and Conrad's second son Kevin (Paddy Considine). But the show largely focuses on the family's fixer, Harry (Tom Hardy). He cleans up all their messes, including a gang war in season 1. In season 2, he'll be trying to fend off the cold, calculating Kat McAllister (Janet McTeer) while struggling to keep his own marriage intact.</p><p><strong>Why you should watch it:</strong> This show didn't start without some bumps, but <a href="https://www.tomsguide.com/entertainment/paramount-plus/tom-hardys-paramount-plus-crime-thriller-just-wrapped-up-an-epic-first-season-with-a-stunning-finale">"MobLand" season 1 ended with a stunning finale</a>. This next batch of episodes looks to be starting on a high note too, with a <a href="https://www.tomsguide.com/entertainment/paramount-plus/mobland-season-2-kicks-things-off-with-a-bang-in-a-bloody-season-premiere-and-the-return-of-tom-hardy">bloody season 2 premiere</a>. So make sure to check it out this weekend and to catch up on season 1 if you haven't already.</p><p><em>Watch the premiere of </em><a href="https://www.paramountplus.com/home/" target="_blank" rel="nofollow"><em>"MobLand" season 2 on Paramount+</em></a><em> now</em></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W2d5vX"></div>                            </div>                            <script src="https://kwizly.com/embed/W2d5vX.js" async></script><h2 id="39-lioness-39-season-3">'Lioness' season 3</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/OrunH41K3Ps" allowfullscreen></iframe></div></div><p><strong>Genre:</strong> Spy thriller series</p><p><strong>What's it about?</strong> Zoe Saldaña stars in this spy thriller as CIA operative Joe McNamara. She is in charge of Lioness, a program that inserts women operatives undercover and then takes down enemy targets in the war on terror. Once embedded, these women typically bring down their marks by getting close to the women around the dangerous characters and then finding an exploit from there. </p><p><strong>Why you should watch it: </strong>"Lioness" season 3 has Joe dealing with a sticky situation, to say the least. But she's not the only one in trouble. Audiences initially loved this season, but it's now 78% fresh on <a href="https://www.rottentomatoes.com/tv/lioness/s03" target="_blank">Rotten Tomatoes</a>. That's a notable drop from the 91% it had been rated by fans at the start of the season. Hopefully it can stick the landing with an epic season 3 finale.</p><p><em>Watch the first seven episodes of </em><a href="https://www.paramountplus.com" target="_blank" rel="nofollow"><em>"Lioness" season 3 on Paramount+</em></a><em> now. Episode 8 (season finale) premieres on September 6</em></p><h2 id="39-south-park-39-season-29">'South Park' season 29</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/jp7rSWFt-YA" allowfullscreen></iframe></div></div><p><strong>Genre:</strong> Animated adult comedy series</p><p><strong>What's it about?</strong> "South Park" features the voices of Trey Parker and Matt Stone as Stan, Eric, Kyle and Kenny. These four, their friends and their families are used by the creative duo to pillory ... well, just about everyone and everything. Last year, it was mostly U.S. President Donald Trump who took the brunt of Parker and Stone's wit. Given that the show is now technically "South America," a nod to Trump's penchant for naming things after the U.S., I would expect President 45/47 to bear the brunt of their comedic slings and arrows once again.</p><p><strong>Why you should watch it: </strong>Last year, "South Park" season 27 was one of <a href="https://www.tomsguide.com/entertainment/streaming/ive-watched-60-shows-in-2025-here-are-the-10-best">my top 10 shows of 2025</a>. I can't wait to see if season 29 can be a contender in 2026.</p><p><em>Watch the premiere of </em><a href="https://www.paramountplus.com/" target="_blank" rel="nofollow"><em>"South Park" season 29 on Paramount+</em></a><em> now</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/movies/resident-evil-2026-review">'Resident Evil' review: Officially the best video game movie of all time, but also Zach Cregger's worst</a></li><li><a href="https://www.tomsguide.com/entertainment/apple-tv/slow-horses-season-6-kicks-things-off-with-a-stunning-death-and-im-still-in-shock">'Slow Horses' season 6 kicks things off with a stunning death, and I'm still in shock</a></li><li><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">Alan Ritchson does his best John Wick impression in a hyper-violent 'Reacher' season 4 finale</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ ‘The History of Concrete’ review: John Wilson’s documentary is probably unlike anything you’ve ever seen ]]></title>
                                                                                                <dc:content><![CDATA[ <div  class="fancy-box"><div class="fancy_box-title">Tom's Guide Verdict: 'The History of Concrete' (2026)</div><div class="fancy_box_body"><p class="fancy-box__body-text"><ul><li><strong>Rating:</strong> <strong>3/5 stars</strong></li><li><strong>Verdict: </strong>"The History of Concrete" is unlike any documentary you've ever seen. Well, except for John Wilson's previous project, "How to with John Wilson." But this doc is often only tangentially about concrete, and while Wilson always manages to connect his metaphors, it doesn't always make for an entertaining movie. This movie is definitely a must-see, but it might be best seen at home.</li><li><strong>Where to watch:</strong> <a data-analytics-id="inline-link" href="https://www.fandango.com/the-history-of-concrete-2026-246807/movie-overview" target="_blank">See "The History of Concrete" (2026) in theaters now</a></li></ul></p></div></div><p>I've seen five movies this week, but<strong> "The History of Concrete" </strong>is unlike any movie I think I've ever seen. Over the course of an hour and 41 minutes, comedian and documentarian John Wilson attempts to tell the definitive history of concrete, purportedly using the structure of a Hallmark movie.</p><p>Incredibly, I think Wilson fails on both fronts. After watching the movie, it's clear that there's not much in the way of the history of concrete on offer. </p><p>Now, that's not the same as saying this movie ignores concrete — it doesn't. In fact, I learned <em>a lot</em> about concrete over the 101 minutes I spent watching Wilson's feature-length documentary debut. But I'd argue that it focuses more on the present and future states of concrete, rather than how it's been used throughout history. </p><p>I'd also argue that the Hallmark movie aspect of the film would go over the head of anyone who isn't in the filmmaking industry. The connections to Hallmark are in the film, and Wilson does make an effort to set up this meta aspect of his documentary. But I don't think at the end of watching "The History of Concrete," you'll end up instantly comparing it to "'Twas the Date Before Christmas."</p><p>This isn't to say the movie isn't good. It is. John Wilson's ability to find humor in the mundane aspects of life and connect dots that you wouldn't expect is impressive. I just don't know that concrete will be the most memorable aspect of this movie for most people.</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="concrete-is-probably-the-least-interesting-part-of-this-documentary">Concrete is probably the least interesting part of this documentary</h2><p>To set the stage, Wilson is pitching this documentary following the end of his successful HBO series, "How To with John Wilson." As he puts it, "The space between projects is hard," at which point he expertly cuts to a sculpture of a wiener sandwiched between a hot dog bun. So the beginning of the documentary is about Wilson's search to find a new project.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/O05arcJjOd0" allowfullscreen></iframe></div></div><p>Ultimately, after one poor attempt at patching concrete at a building he owns and a Writers Guild of America seminar on how to write a Hallmark movie later, he's landed on a pitch: "The History of Concrete." So he heads to Rome, where ... he proceeds to learn nothing about concrete.</p><p>He does, however, find a wax museum with an AI companion app that's equally eerie and hilarious. He then interviews "The Sopranos" star Michael Imperioli about how to make a movie, and <em>then</em> we finally get into some cold, hard concrete.</p><p>But even as we start to explore concrete — and we do explore concrete — it becomes clear that it's the people connected to the concrete who are far more interesting subjects. Whether it's the driving school in Ohio that operates on the oldest concrete street in America, the man who blasts gum off of New York City's concrete sidewalks or the chorus of women who serenade runners in a 3,100-mile run on a single square block of Jamaican Queens' concrete, it's their stories that cement themselves into our heads more than the concrete itself.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1422px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="RPB7NrrTLQfsGKXBHN98JX" name="The-History-of-Concrete" alt="The History of Concrete by John Wilson" src="https://cdn.mos.cms.futurecdn.net/RPB7NrrTLQfsGKXBHN98JX-1920-80.webp" mos="" align="middle" fullscreen="" width="1422" height="800" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Magnolia Pictures)</span></figcaption></figure><p>As the documentary continues, though, concrete itself does become more prominent, and more of a downer. I don't need to go into the full details, since that's what the documentary is for. But suffice it to say, the future of concrete is as bleak as the future of everything else.</p><p>But before Wilson's pseudo-Hallmark movie can come to a close, we meet Jack Macco. He instantly steals the movie, for better and worse, and by the end of the film, this documentary is almost as much about Wilson's interactions with Jack as it ever was about an essential building block of society.</p><h2 id="verdict-39-the-history-of-concerte-39-is-definitely-a-must-watch-but-it-might-be-best-as-a-movie-to-stream-at-home">Verdict: 'The History of Concerte' is definitely a must-watch, but it might be best as a movie to stream at home</h2><p>Now, I'm not mad that I didn't actually learn about the history of concrete in this documentary. I'm more than willing to let a documentary entertain me more than it informs (see: "<a href="https://www.tomsguide.com/entertainment/movies/lorne-is-an-snl-documentary-far-more-hilarious-than-most-comedy-movies-and-i-had-a-blast">Lorne</a>"). But as the movie went on, Wilson's tangents became less and less rewarding, even if they were often humorous and always connected back to the core of the film without fail.</p><p>Despite this complaint, though, I undeniably liked this movie. It's a must-see, and fans of John Wilson will definitely want to see it in theaters. Especially if they want to see more John Wilson projects. As he points out in "The History of Concrete," it's difficult to finance a movie these days.</p><p>But if you're not a Wilson fan, or not sure about this documentary, it should eventually come to a <a href="https://www.tomsguide.com/us/best-streaming-video-services,review-2625.html">streaming service</a>. Specifically, <a href="https://www.tomsguide.com/entertainment/streaming/hbo-max">HBO Max</a>, which has a deal with Magnolia Pictures. I'm glad I watched this one from the comfort of my own home, so I won't blame you if you do the same. Just make sure you ultimately watch it.</p><p><a href="https://www.fandango.com/the-history-of-concrete-2026-246807/movie-overview" target="_blank" rel="nofollow"><em>"The History of Concrete" is in theaters now</em></a></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ORVgVO"></div>                            </div>                            <script src="https://kwizly.com/embed/ORVgVO.js" async></script><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/entertainment/movies/the-weight-pits-ethan-hawke-against-russell-crowe-in-a-dark-heist-movie-thats-a-must-watch-this-weekend">'The Weight' pits Ethan Hawke against Russell Crowe in a dark heist movie that's a must-watch this weekend</a></li><li><a href="https://www.tomsguide.com/entertainment/paramount-plus/mobland-season-2-kicks-things-off-with-a-bang-in-a-bloody-season-premiere-and-the-return-of-tom-hardy">'MobLand' season 2 kicks things off with a bang in a bloody season premiere and the return of Tom Hardy</a></li><li><a href="https://www.tomsguide.com/entertainment/movies/resident-evil-2026-review">'Resident Evil' review: Officially the best video game movie of all time, but also Zach Cregger's worst</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/movies/the-history-of-concrete-review-john-wilsons-documentary-is-probably-unlike-anything-youve-ever-seen</link>
                                                                            <description>
                            <![CDATA[ John Wilson’s 'The History of Concrete' documentary is probably unlike anything you’ve ever seen. It works sometimes, but it's not always a good thing. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">iAtwbh77aG2hvEEXF8VdbF</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/Up6WZpibXJ7qWCXDbrpgji-1920-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Sat, 19 Sep 2026 09:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Movies]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                                                                <author><![CDATA[ malcolm.mcmillan@futurenet.com (Malcolm McMillan) ]]></author>                    <dc:creator><![CDATA[ Malcolm McMillan ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/sSDLEbNEgBXf86HpujaWZ6-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Malcolm McMillan is a Streaming Editor for Tom&#039;s Guide, covering all the latest in streaming TV shows and movies. That means news, analysis, recommendations, reviews and more for just about anything you can watch, including sports! If it can be seen on a screen, he can write about it. &lt;/p&gt;&lt;p&gt;Malcolm has been with Tom&#039;s Guide since June 2022, starting as a staff writer covering breaking news. Since then, he&#039;s transitioned to cover artificial intelligence (AI), A/V tech and VR headsets. Since late 2023 he has almost exclusively covered streaming and entertainment for Tom&#039;s Guide.&lt;/p&gt;&lt;p&gt;Before writing for Tom&#039;s Guide, Malcolm worked as a fantasy football analyst writing for several sites and also had a brief stint working for Microsoft selling laptops, Xbox products and even the ill-fated Windows phone. He is passionate about video games and sports, though both cause him to yell at the TV frequently. He proudly sports many tattoos, including an Arsenal tattoo, in honor of the team that causes him to yell at the TV the most.&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/Up6WZpibXJ7qWCXDbrpgji-1920-80.png">
                                                            <media:credit><![CDATA[Courtesy of Magnolia Pictures.]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A scene from &quot;The History of Concrete,&quot; a Magnolia Pictures release.]]></media:description>                                                            <media:text><![CDATA[A scene from &quot;The History of Concrete,&quot; a Magnolia Pictures release.]]></media:text>
                                <media:title type="plain"><![CDATA[A scene from &quot;The History of Concrete,&quot; a Magnolia Pictures release.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/Up6WZpibXJ7qWCXDbrpgji-1920-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div  class="fancy-box"><div class="fancy_box-title">Tom's Guide Verdict: 'The History of Concrete' (2026)</div><div class="fancy_box_body"><p class="fancy-box__body-text"><ul><li><strong>Rating:</strong> <strong>3/5 stars</strong></li><li><strong>Verdict: </strong>"The History of Concrete" is unlike any documentary you've ever seen. Well, except for John Wilson's previous project, "How to with John Wilson." But this doc is often only tangentially about concrete, and while Wilson always manages to connect his metaphors, it doesn't always make for an entertaining movie. This movie is definitely a must-see, but it might be best seen at home.</li><li><strong>Where to watch:</strong> <a data-analytics-id="inline-link" href="https://www.fandango.com/the-history-of-concrete-2026-246807/movie-overview" target="_blank">See "The History of Concrete" (2026) in theaters now</a></li></ul></p></div></div><p>I've seen five movies this week, but<strong> "The History of Concrete" </strong>is unlike any movie I think I've ever seen. Over the course of an hour and 41 minutes, comedian and documentarian John Wilson attempts to tell the definitive history of concrete, purportedly using the structure of a Hallmark movie.</p><p>Incredibly, I think Wilson fails on both fronts. After watching the movie, it's clear that there's not much in the way of the history of concrete on offer. </p><p>Now, that's not the same as saying this movie ignores concrete — it doesn't. In fact, I learned <em>a lot</em> about concrete over the 101 minutes I spent watching Wilson's feature-length documentary debut. But I'd argue that it focuses more on the present and future states of concrete, rather than how it's been used throughout history. </p><p>I'd also argue that the Hallmark movie aspect of the film would go over the head of anyone who isn't in the filmmaking industry. The connections to Hallmark are in the film, and Wilson does make an effort to set up this meta aspect of his documentary. But I don't think at the end of watching "The History of Concrete," you'll end up instantly comparing it to "'Twas the Date Before Christmas."</p><p>This isn't to say the movie isn't good. It is. John Wilson's ability to find humor in the mundane aspects of life and connect dots that you wouldn't expect is impressive. I just don't know that concrete will be the most memorable aspect of this movie for most people.</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="concrete-is-probably-the-least-interesting-part-of-this-documentary">Concrete is probably the least interesting part of this documentary</h2><p>To set the stage, Wilson is pitching this documentary following the end of his successful HBO series, "How To with John Wilson." As he puts it, "The space between projects is hard," at which point he expertly cuts to a sculpture of a wiener sandwiched between a hot dog bun. So the beginning of the documentary is about Wilson's search to find a new project.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/O05arcJjOd0" allowfullscreen></iframe></div></div><p>Ultimately, after one poor attempt at patching concrete at a building he owns and a Writers Guild of America seminar on how to write a Hallmark movie later, he's landed on a pitch: "The History of Concrete." So he heads to Rome, where ... he proceeds to learn nothing about concrete.</p><p>He does, however, find a wax museum with an AI companion app that's equally eerie and hilarious. He then interviews "The Sopranos" star Michael Imperioli about how to make a movie, and <em>then</em> we finally get into some cold, hard concrete.</p><p>But even as we start to explore concrete — and we do explore concrete — it becomes clear that it's the people connected to the concrete who are far more interesting subjects. Whether it's the driving school in Ohio that operates on the oldest concrete street in America, the man who blasts gum off of New York City's concrete sidewalks or the chorus of women who serenade runners in a 3,100-mile run on a single square block of Jamaican Queens' concrete, it's their stories that cement themselves into our heads more than the concrete itself.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1422px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="RPB7NrrTLQfsGKXBHN98JX" name="The-History-of-Concrete" alt="The History of Concrete by John Wilson" src="https://cdn.mos.cms.futurecdn.net/RPB7NrrTLQfsGKXBHN98JX-1920-80.webp" mos="" align="middle" fullscreen="" width="1422" height="800" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Magnolia Pictures)</span></figcaption></figure><p>As the documentary continues, though, concrete itself does become more prominent, and more of a downer. I don't need to go into the full details, since that's what the documentary is for. But suffice it to say, the future of concrete is as bleak as the future of everything else.</p><p>But before Wilson's pseudo-Hallmark movie can come to a close, we meet Jack Macco. He instantly steals the movie, for better and worse, and by the end of the film, this documentary is almost as much about Wilson's interactions with Jack as it ever was about an essential building block of society.</p><h2 id="verdict-39-the-history-of-concerte-39-is-definitely-a-must-watch-but-it-might-be-best-as-a-movie-to-stream-at-home">Verdict: 'The History of Concerte' is definitely a must-watch, but it might be best as a movie to stream at home</h2><p>Now, I'm not mad that I didn't actually learn about the history of concrete in this documentary. I'm more than willing to let a documentary entertain me more than it informs (see: "<a href="https://www.tomsguide.com/entertainment/movies/lorne-is-an-snl-documentary-far-more-hilarious-than-most-comedy-movies-and-i-had-a-blast">Lorne</a>"). But as the movie went on, Wilson's tangents became less and less rewarding, even if they were often humorous and always connected back to the core of the film without fail.</p><p>Despite this complaint, though, I undeniably liked this movie. It's a must-see, and fans of John Wilson will definitely want to see it in theaters. Especially if they want to see more John Wilson projects. As he points out in "The History of Concrete," it's difficult to finance a movie these days.</p><p>But if you're not a Wilson fan, or not sure about this documentary, it should eventually come to a <a href="https://www.tomsguide.com/us/best-streaming-video-services,review-2625.html">streaming service</a>. Specifically, <a href="https://www.tomsguide.com/entertainment/streaming/hbo-max">HBO Max</a>, which has a deal with Magnolia Pictures. I'm glad I watched this one from the comfort of my own home, so I won't blame you if you do the same. Just make sure you ultimately watch it.</p><p><a href="https://www.fandango.com/the-history-of-concrete-2026-246807/movie-overview" target="_blank" rel="nofollow"><em>"The History of Concrete" is in theaters now</em></a></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ORVgVO"></div>                            </div>                            <script src="https://kwizly.com/embed/ORVgVO.js" async></script><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/entertainment/movies/the-weight-pits-ethan-hawke-against-russell-crowe-in-a-dark-heist-movie-thats-a-must-watch-this-weekend">'The Weight' pits Ethan Hawke against Russell Crowe in a dark heist movie that's a must-watch this weekend</a></li><li><a href="https://www.tomsguide.com/entertainment/paramount-plus/mobland-season-2-kicks-things-off-with-a-bang-in-a-bloody-season-premiere-and-the-return-of-tom-hardy">'MobLand' season 2 kicks things off with a bang in a bloody season premiere and the return of Tom Hardy</a></li><li><a href="https://www.tomsguide.com/entertainment/movies/resident-evil-2026-review">'Resident Evil' review: Officially the best video game movie of all time, but also Zach Cregger's worst</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Notify Me is easily one of the best features iOS 27 has to offer — but it needs to do better ]]></title>
                                                                                                <dc:content><![CDATA[ <p>Over the past few years I have spent an inordinate amount of my time sitting in virtual queues, waiting for my chance to buy something. Recently my phone was sitting in one for around four hours as I attempted to book a family trip to Disneyland Paris. Since it was the day bookings opened, it seems as though half of Europe was doing the same thing.</p><p>Waiting is bad enough, but it was made worse by the fact I got distracted partway through waiting and missed my window. That means starting the whole process again, and mentally kicking myself for letting myself get distracted attempting to troubleshoot my temperamental 3D printer. This is far from an isolated case for me, either.</p><p>So you can imagine my excitement when I found out about the <a href="https://www.tomsguide.com/phones/iphones/i-tried-the-new-ios-27-safari-features-heres-3-settings-worth-using">new "Notify Me" feature in iOS 27</a>, with the promise that it can monitor webpages and alert you to any changes. Unfortunately spending time with Notify Me shows that Apple hasn't really gone far enough.</p><h2 id="what-notify-me-is-and-how-it-works">What Notify Me is, and how it works</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="3TNuPjESwkkQGg3otBq68M" name="Notify Me in Safari iOS 27" alt="Notify Me in Safari iOS 27" src="https://cdn.mos.cms.futurecdn.net/3TNuPjESwkkQGg3otBq68M-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>Notify Me is an artificial intelligence feature for Apple's Safari browser. The idea is that you can single out a webpage and have Apple's AI tell you when things change. That can be general changes, or it could be something specific that you describe with a written prompt.</p><p>The main thing to remember about Notify Me is that the AI doesn't monitor that page all the time. Instead you have to tell it when it should come back and see what's changed. Your options are to do this hourly, daily, weekly or monthly. You also get to set the exact time, day or date (depending on the frequency) that the AI goes back to check.</p><p> It's a very simple feature that can be accessed from the Safari menu bar which sits on the left-hand side of the URL bar — which is typically at the bottom of the screen on iPhone and iPad. It's easy to find and use, which is more than I can say for a lot of features in iOS 27. </p><p>From a practical stand point, Notify Me has everything going for it. Apart from the fact its usefulness is currently rather limited.</p><h2 id="hourly-checks-aren-39-t-enough-to-be-truly-useful">Hourly checks aren't enough to be truly useful</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="bQHyd7TqzPHSxriuHhKYHX" name="iOS 27 Safari on iPhone" alt="An image of an iPhone screen showing the Safari app icon in the center and the iOS 27 logo" src="https://cdn.mos.cms.futurecdn.net/bQHyd7TqzPHSxriuHhKYHX-1920-80.png" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>I'm not saying that Notify Me is useless in its current form, quite the opposite in fact. The tool is ideal for keeping tabs on certain pages in the long-term. Use cases include keeping tabs on restocks, or checking for discounts on specific products. The pages that you would only look at periodically, checking in very briefly before going back to whatever you would normally be doing.</p><p>Notify Me saves you the effort of remembering to do this yourself, especially if you want to check on some sort of schedule. You don't need to take time out of your day to look, when you have an AI that has been instructed to take care of that for you.</p><p>But in the short term? Notify Me's scope is still a little too limited for my liking. </p><p>Typically getting to the front of a virtual queue means you get some kind of grace period to complete whatever transaction you're doing. In the case of my trip it was 20 minutes, but I've seen them vary anywhere between 10 minutes and an hour. Obviously, having a tool that refreshes a page once an hour at most is not ideal for dealing with these kinds of situations. By the time the AI checks the page, it'll already be too late and you'll have missed your spot.</p><p>Really it would be better if Apple expanded Notify Me for much smaller periods of time. Five to ten minutes would expand its usefulness by a lot, since it would be as close to real-time monitoring as we can hope for with a free AI tool. But even increasing page refreshes to 30 or 15 minutes would make it a more useful and versatile tool.</p><h2 id="bottom-line-3">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:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Gvdmm9HZT4DwWH6WPi4FW8" name="TG-safari-iphone-shutterstock.jpg" alt="An image of an iPhone screen showing the Safari app icon in the center" src="https://cdn.mos.cms.futurecdn.net/Gvdmm9HZT4DwWH6WPi4FW8-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>Notify Me is definitely a useful tool, but its scope is too limited right now. The fact that you can instruct AI to check webpages for any kind of change you can describe is pretty incredible. But it's very much a long-term tool, that a lot of people probably won't get much use out of. It certainly has the potential to offer a lot more, though.</p><p>The question is whether Apple can actually do that. AI needs a lot of resources to run, and the more you utilize it the more pressure it's going to put on your hardware. In fact, we don't know where this processing is done or how it affects your phone, so there's no telling what sort of stress checking a page multiple times an hour might inflict. Even if<a href="https://www.tomsguide.com/phones/iphones/iphone-18-pro-benchmarks-apple-just-built-the-most-powerful-phones-weve-ever-seen"> Apple has just released the fastest phones</a> we've ever tested.</p><p>But I hope that this is just the start of what Apple has planned, and that Notify Me will be getting an expansion in future versions of iOS and Apple Intelligence. After all, the less we all have to sit in virtual queues to try and get tickets to the next big concert or event, the better.</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/phones/iphones/i-tested-iphone-18-pro-max-variable-aperture-camera-and-i-can-almost-ditch-my-mirrorless"><strong>I tested the iPhone 18 Pro Max's variable aperture camera — here's the results</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/phones/iphones/apple-increased-the-price-of-iphone-18-pro-battery-repairs-heres-how-much-youll-pay-now"><strong>Apple increased the price of iPhone 18 Pro battery repairs — here's how much you'll pay now</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/phones/iphones/siri-in-ios-27-actually-lives-up-to-the-hype-here-are-the-3-truly-unique-uses"><strong>Siri in iOS 27 actually lives up to the hype — here are 3 truly unique uses</strong></a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/phones/iphones/notify-me-is-easily-one-of-the-best-features-ios-27-has-to-offer-but-it-needs-to-do-better</link>
                                                                            <description>
                            <![CDATA[ Notify Me is useful, but it could be even better if Apple let it check pages more often. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">xRJcfAgXCqMwUM6tkpCB9U</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/K5SQbjBSv85JzgqYxoY5Lm-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 19 Sep 2026 07:00:00 +0000</pubDate>                                                                                                                                <updated>Sat, 19 Sep 2026 12:37:17 +0000</updated>
                                                                                                                                            <category><![CDATA[iPhones]]></category>
                                                    <category><![CDATA[Apple Intelligence]]></category>
                                                    <category><![CDATA[Phones]]></category>
                                                    <category><![CDATA[AI]]></category>
                                                                                                <author><![CDATA[ tom.pritchard@futurenet.com (Tom Pritchard) ]]></author>                    <dc:creator><![CDATA[ Tom Pritchard ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/biCewUkKfSA6QnT2HxVc3f-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/K5SQbjBSv85JzgqYxoY5Lm-1920-80.jpg">
                                                            <media:credit><![CDATA[Tom&#039;s Guide/Apple/Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[iOS 27 icon shown on an iPhone screen]]></media:description>                                                            <media:text><![CDATA[iOS 27 icon shown on an iPhone screen]]></media:text>
                                <media:title type="plain"><![CDATA[iOS 27 icon shown on an iPhone screen]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/K5SQbjBSv85JzgqYxoY5Lm-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Over the past few years I have spent an inordinate amount of my time sitting in virtual queues, waiting for my chance to buy something. Recently my phone was sitting in one for around four hours as I attempted to book a family trip to Disneyland Paris. Since it was the day bookings opened, it seems as though half of Europe was doing the same thing.</p><p>Waiting is bad enough, but it was made worse by the fact I got distracted partway through waiting and missed my window. That means starting the whole process again, and mentally kicking myself for letting myself get distracted attempting to troubleshoot my temperamental 3D printer. This is far from an isolated case for me, either.</p><p>So you can imagine my excitement when I found out about the <a href="https://www.tomsguide.com/phones/iphones/i-tried-the-new-ios-27-safari-features-heres-3-settings-worth-using">new "Notify Me" feature in iOS 27</a>, with the promise that it can monitor webpages and alert you to any changes. Unfortunately spending time with Notify Me shows that Apple hasn't really gone far enough.</p><h2 id="what-notify-me-is-and-how-it-works">What Notify Me is, and how it works</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="3TNuPjESwkkQGg3otBq68M" name="Notify Me in Safari iOS 27" alt="Notify Me in Safari iOS 27" src="https://cdn.mos.cms.futurecdn.net/3TNuPjESwkkQGg3otBq68M-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>Notify Me is an artificial intelligence feature for Apple's Safari browser. The idea is that you can single out a webpage and have Apple's AI tell you when things change. That can be general changes, or it could be something specific that you describe with a written prompt.</p><p>The main thing to remember about Notify Me is that the AI doesn't monitor that page all the time. Instead you have to tell it when it should come back and see what's changed. Your options are to do this hourly, daily, weekly or monthly. You also get to set the exact time, day or date (depending on the frequency) that the AI goes back to check.</p><p> It's a very simple feature that can be accessed from the Safari menu bar which sits on the left-hand side of the URL bar — which is typically at the bottom of the screen on iPhone and iPad. It's easy to find and use, which is more than I can say for a lot of features in iOS 27. </p><p>From a practical stand point, Notify Me has everything going for it. Apart from the fact its usefulness is currently rather limited.</p><h2 id="hourly-checks-aren-39-t-enough-to-be-truly-useful">Hourly checks aren't enough to be truly useful</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-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="bQHyd7TqzPHSxriuHhKYHX" name="iOS 27 Safari on iPhone" alt="An image of an iPhone screen showing the Safari app icon in the center and the iOS 27 logo" src="https://cdn.mos.cms.futurecdn.net/bQHyd7TqzPHSxriuHhKYHX-1920-80.png" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>I'm not saying that Notify Me is useless in its current form, quite the opposite in fact. The tool is ideal for keeping tabs on certain pages in the long-term. Use cases include keeping tabs on restocks, or checking for discounts on specific products. The pages that you would only look at periodically, checking in very briefly before going back to whatever you would normally be doing.</p><p>Notify Me saves you the effort of remembering to do this yourself, especially if you want to check on some sort of schedule. You don't need to take time out of your day to look, when you have an AI that has been instructed to take care of that for you.</p><p>But in the short term? Notify Me's scope is still a little too limited for my liking. </p><p>Typically getting to the front of a virtual queue means you get some kind of grace period to complete whatever transaction you're doing. In the case of my trip it was 20 minutes, but I've seen them vary anywhere between 10 minutes and an hour. Obviously, having a tool that refreshes a page once an hour at most is not ideal for dealing with these kinds of situations. By the time the AI checks the page, it'll already be too late and you'll have missed your spot.</p><p>Really it would be better if Apple expanded Notify Me for much smaller periods of time. Five to ten minutes would expand its usefulness by a lot, since it would be as close to real-time monitoring as we can hope for with a free AI tool. But even increasing page refreshes to 30 or 15 minutes would make it a more useful and versatile tool.</p><h2 id="bottom-line-3">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:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Gvdmm9HZT4DwWH6WPi4FW8" name="TG-safari-iphone-shutterstock.jpg" alt="An image of an iPhone screen showing the Safari app icon in the center" src="https://cdn.mos.cms.futurecdn.net/Gvdmm9HZT4DwWH6WPi4FW8-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>Notify Me is definitely a useful tool, but its scope is too limited right now. The fact that you can instruct AI to check webpages for any kind of change you can describe is pretty incredible. But it's very much a long-term tool, that a lot of people probably won't get much use out of. It certainly has the potential to offer a lot more, though.</p><p>The question is whether Apple can actually do that. AI needs a lot of resources to run, and the more you utilize it the more pressure it's going to put on your hardware. In fact, we don't know where this processing is done or how it affects your phone, so there's no telling what sort of stress checking a page multiple times an hour might inflict. Even if<a href="https://www.tomsguide.com/phones/iphones/iphone-18-pro-benchmarks-apple-just-built-the-most-powerful-phones-weve-ever-seen"> Apple has just released the fastest phones</a> we've ever tested.</p><p>But I hope that this is just the start of what Apple has planned, and that Notify Me will be getting an expansion in future versions of iOS and Apple Intelligence. After all, the less we all have to sit in virtual queues to try and get tickets to the next big concert or event, the better.</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/phones/iphones/i-tested-iphone-18-pro-max-variable-aperture-camera-and-i-can-almost-ditch-my-mirrorless"><strong>I tested the iPhone 18 Pro Max's variable aperture camera — here's the results</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/phones/iphones/apple-increased-the-price-of-iphone-18-pro-battery-repairs-heres-how-much-youll-pay-now"><strong>Apple increased the price of iPhone 18 Pro battery repairs — here's how much you'll pay now</strong></a><strong></strong></li><li><strong></strong><a href="https://www.tomsguide.com/phones/iphones/siri-in-ios-27-actually-lives-up-to-the-hype-here-are-the-3-truly-unique-uses"><strong>Siri in iOS 27 actually lives up to the hype — here are 3 truly unique uses</strong></a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I just watched Denzel Washington and John Travolta's action thriller remake and it really goes off the rails ]]></title>
                                                                                                <dc:content><![CDATA[ <div  class="fancy-box"><div class="fancy_box-title">The Tom's Guide verdict: 'The Taking of Pelham 123' (2009)</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>Rating: 2.5/5 stars</strong></p><p class="fancy-box__body-text"><strong>Verdict:</strong> "The Taking of Pelham 123" is rarely bad. It's also rarely good. This might be the most average action thriller ever made. Its most egregious sin of all is that, despite featuring Denzel Washington, John Travolta, John Turturro and James Gandolfini, it underutilizes most of them. Save for maybe Travolta, whose performance still leaves something to be desired.</p><p class="fancy-box__body-text"><strong>Where to watch: </strong><a data-analytics-id="inline-link" href="https://www.philo.com/" target="_blank" rel="nofollow">Stream "The Taking of Pelham 123" on Philo</a> or watch it on demand via many cable/satellite/live TV streaming services</p></div></div><p>It's important to note that "<strong>The Taking of Pelham 123</strong>" is a different movie than "The Taking of Pelham One Two Three." The former is the latest movie I had to watch in my year-long <a href="https://www.tomsguide.com/tag/denzelwatchathon"><strong>Denzel Watchathon</strong></a>. The latter is a 1974 action thriller that's actually good.</p><p>Now, to be fair to this remake, it's not bad. I've seen far worse films. I've seen worse films starring Denzel Washington. But it's also not particularly good; it's just fine. It's inoffensive for the most part, and there's no performance or moment that elevates it or drags it down.</p><p>If there's one thing that defines this movie, it's sadly not Denzel Washington. In fact, it's probably the first movie I've seen where you could have replaced him and likely gotten a film that was just as good or close to it. No, aside from the fact that this is visually recognizable as a Tony Scott film for those of us who have seen a lot of Tony Scott films, the standout performance in this movie is Denzel's opposite number: John Travolta. </p><p><em>If you want to watch this movie before you read on, you can </em><a href="https://www.philo.com/" target="_blank" rel="nofollow"><em>stream it on Philo</em></a><em>. If you've never signed up for Philo before, new customers get a seven-day free trial, meaning you can stream "The Taking of Pelham 123" for free.</em></p><p><em>Alternatively, you can see if your cable TV, satellite or </em><a href="https://www.tomsguide.com/us/best-cable-replacements,review-4387.html"><em>live TV streaming service</em></a><em> has it and watch it on demand. If you get AMC as a channel, you should have this movie available to watch on demand for free.</em></p><h2 id="this-movie-wouldn-39-t-change-with-or-without-denzel">This movie wouldn't change with or without Denzel</h2><p>For those of you who aren't familiar with this 2009 action thriller, or the 1974 original ... or the 1998 television movie, "The Taking of Pelham 123" is adapted from the John Godey novel of the same name. In it, a group of armed men hijacks the Pelham 123 train (a New York City 6 train that originates from Pelham Bay at 1:23 p.m.) and demands a ransom from the city of New York.</p><p>In this movie, the men are led by Ryder, played by John Travolta. He wants $10 million from the Mayor of New York (James Gandolfini), delivered within the hour, or he'll start killing a hostage every minute. </p><div  class="fancy-box"><div class="fancy_box-title">Read more Denzel Watchathon</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>Here are some of the other Denzel Washington movies I've covered to date in my Denzel Watchathon:</strong></p><p class="fancy-box__body-text"><ul><li><a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/movies/i-just-watched-denzel-washingtons-controversial-first-movie-and-you-can-stream-it-free-right-now">"Carbon Copy" (1981)</a></li><li><a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/movies/this-denzel-washington-political-biopic-is-a-must-watch-in-2026-and-its-an-oscar-worthy-performance">"Cry Freedom" (1987)</a></li><li><a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/movies/denzels-first-oscar-winner-still-holds-up-36-years-later-and-you-can-stream-it-on-netflix-now">"Glory" (1989)</a></li><li><a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/movies/denzel-was-robbed-of-an-oscar-in-this-1992-biopic-stream-it-and-see-for-yourself">"Malcolm X" (1992)</a></li><li><a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/movies/i-just-watched-philadelphia-and-i-cant-believe-this-was-the-only-time-tom-hanks-and-denzel-teamed-up-for-a-movie">"Philadelphia" (1993)</a></li><li><a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/movies/over-30-years-later-this-denzel-washington-and-gene-hackman-action-thriller-is-still-one-of-my-favorite-movies">"Crimson Tide" (1995)</a></li><li><a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/movies/i-just-rewatched-remember-the-titans-and-ironically-i-forgot-how-good-denzel-washington-is-in-this-sports-movie">"Remember the Titans" (2000)</a></li><li><a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/movies/nearly-25-years-later-training-day-remains-denzel-washingtons-greatest-performance-ever">"Training Day" (2001)</a></li><li><a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/movies/this-denzel-washington-action-thriller-was-savaged-by-critics-in-2004-but-over-20-years-later-its-an-undeniable-must-watch">"Man on Fire" (2004)</a></li><li><a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/movies/denzel-still-shines-in-this-2004-psychological-thriller-but-i-think-meryl-streep-steals-the-spotlight">"The Manchurian Candidate" (2004)</a></li><li>"<a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/movies/this-denzel-washington-and-russell-crowe-crime-drama-is-still-great-19-years-later-and-you-can-stream-it-for-free">American Gangster" (2007)</a></li><li><a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/movies/this-denzel-washington-historical-drama-movie-is-often-forgotten-but-its-still-a-must-watch-performance-nearly-20-years-later">"The Great Debaters" (2007)</a></li></ul></p><p class="fancy-box__body-text"><strong>Read more: </strong><a data-analytics-id="inline-link" href="https://www.tomsguide.com/tag/denzelwatchathon"><strong>Every Denzel Watchathon movie so far</strong></a><strong></strong></p></div></div><p>The intermediaries between Ryder and the Mayor are Walter Garber (Denzel Washington), the MTA subway dispatcher who receives the call from Ryder demanding the ransom, and Lt. Vincent Camonetti (John Turturro), the NYPD hostage negotiator who briefly takes control of the situation. </p><p>This movie is largely about Ryder and Garber, though. Especially once Ryder kills the subway train's motorman in response to Camonetti taking over the phone from Garber. That's probably the high point of the movie, because it's in that moment that you realize there are real stakes to this hostage situation.</p><p>The reality is, despite a cast that includes Denzel, Travolta, Turturro and Gandolfini, you probably didn't need any of them. Replace them with replacement-level actors and change nothing else, and you'd probably get just as good a movie.</p><p>The lone exception is maybe Travolta, who is cranked up to 11 in this movie. Maybe that was a direction or script choice. The character Ryder isn't historically a stoic. But if it was even partially Travolta making an acting choice, something a bit more subtle might have been an improvement. But, honestly, I'm not even sure that's true.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OoNVoW"></div>                            </div>                            <script src="https://kwizly.com/embed/OoNVoW.js" async></script><h2 id="verdict-watch-39-the-taking-of-pelham-one-two-three-39-instead">Verdict: Watch 'The Taking of Pelham One Two Three' instead</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/N8TtjRlX_3E" allowfullscreen></iframe></div></div><p>Unless you're a Denzel completionist like me, you don't need to watch this movie. That's partially because it's not especially worth your time, but also because you could watch the 1974 original instead, which is currently streaming for free on <a href="https://tubitv.com/movies/303184/the-taking-of-pelham-one-two-three" target="_blank" rel="nofollow">Tubi</a> and is a better film.</p><p>If you're committed to watching this remake, though, now is the time to do it. You can likely watch it for free on <a href="https://www.philo.com/" target="_blank" rel="nofollow">Philo with a seven-day free trial</a> or as a video on-demand as part of your cable TV, satellite or <a href="https://www.tomsguide.com/us/best-cable-replacements,review-4387.html">live TV service</a> subscription. I watched it for free on <a href="https://www.dpbolvw.net/click-8900245-17161926?sid=hawk-custom-tracking" target="_blank" rel="nofollow">YouTube TV</a>, and I'm glad I only had to spend just under two hours of my time, rather than my hard-earned money.</p><p><a href="https://www.philo.com/" target="_blank" rel="nofollow"><em>Stream "The Taking of Pelham 123" on Philo with a seven-day free trial right now</em></a><em></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/movies/the-weight-pits-ethan-hawke-against-russell-crowe-in-a-dark-heist-movie-thats-a-must-watch-this-weekend">'The Weight' pits Ethan Hawke against Russell Crowe in a dark heist movie that's a must-watch this weekend</a></li><li><a href="https://www.tomsguide.com/entertainment/paramount-plus/mobland-season-2-kicks-things-off-with-a-bang-in-a-bloody-season-premiere-and-the-return-of-tom-hardy">'MobLand' season 2 kicks things off with a bang in a bloody season premiere and the return of Tom Hardy</a></li><li><a href="https://www.tomsguide.com/entertainment/movies/resident-evil-2026-review">'Resident Evil' review: Officially the best video game movie of all time, but also Zach Cregger's worst</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/movies/i-just-watched-denzel-washington-and-john-travoltas-action-thriller-remake-and-it-really-goes-off-the-rails</link>
                                                                            <description>
                            <![CDATA[ "The Taking of Pelham 123" stars Denzel Washington and John Travolta in an action thriller remake that underutilizes them both. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">wSjC69EVA4KxmSJ6tJVGdH</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/CMSB335598jsehg4XK7snn-1920-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Sat, 19 Sep 2026 06:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Movies]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                                                                <author><![CDATA[ malcolm.mcmillan@futurenet.com (Malcolm McMillan) ]]></author>                    <dc:creator><![CDATA[ Malcolm McMillan ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/sSDLEbNEgBXf86HpujaWZ6-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Malcolm McMillan is a Streaming Editor for Tom&#039;s Guide, covering all the latest in streaming TV shows and movies. That means news, analysis, recommendations, reviews and more for just about anything you can watch, including sports! If it can be seen on a screen, he can write about it. &lt;/p&gt;&lt;p&gt;Malcolm has been with Tom&#039;s Guide since June 2022, starting as a staff writer covering breaking news. Since then, he&#039;s transitioned to cover artificial intelligence (AI), A/V tech and VR headsets. Since late 2023 he has almost exclusively covered streaming and entertainment for Tom&#039;s Guide.&lt;/p&gt;&lt;p&gt;Before writing for Tom&#039;s Guide, Malcolm worked as a fantasy football analyst writing for several sites and also had a brief stint working for Microsoft selling laptops, Xbox products and even the ill-fated Windows phone. He is passionate about video games and sports, though both cause him to yell at the TV frequently. He proudly sports many tattoos, including an Arsenal tattoo, in honor of the team that causes him to yell at the TV the most.&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/CMSB335598jsehg4XK7snn-1920-80.png">
                                                            <media:credit><![CDATA[Alamy]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Denzel Washington in &quot;The Taking of Pelham 123&quot; (2009)]]></media:description>                                                            <media:text><![CDATA[Denzel Washington in &quot;The Taking of Pelham 123&quot; (2009)]]></media:text>
                                <media:title type="plain"><![CDATA[Denzel Washington in &quot;The Taking of Pelham 123&quot; (2009)]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/CMSB335598jsehg4XK7snn-1920-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div  class="fancy-box"><div class="fancy_box-title">The Tom's Guide verdict: 'The Taking of Pelham 123' (2009)</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>Rating: 2.5/5 stars</strong></p><p class="fancy-box__body-text"><strong>Verdict:</strong> "The Taking of Pelham 123" is rarely bad. It's also rarely good. This might be the most average action thriller ever made. Its most egregious sin of all is that, despite featuring Denzel Washington, John Travolta, John Turturro and James Gandolfini, it underutilizes most of them. Save for maybe Travolta, whose performance still leaves something to be desired.</p><p class="fancy-box__body-text"><strong>Where to watch: </strong><a data-analytics-id="inline-link" href="https://www.philo.com/" target="_blank" rel="nofollow">Stream "The Taking of Pelham 123" on Philo</a> or watch it on demand via many cable/satellite/live TV streaming services</p></div></div><p>It's important to note that "<strong>The Taking of Pelham 123</strong>" is a different movie than "The Taking of Pelham One Two Three." The former is the latest movie I had to watch in my year-long <a href="https://www.tomsguide.com/tag/denzelwatchathon"><strong>Denzel Watchathon</strong></a>. The latter is a 1974 action thriller that's actually good.</p><p>Now, to be fair to this remake, it's not bad. I've seen far worse films. I've seen worse films starring Denzel Washington. But it's also not particularly good; it's just fine. It's inoffensive for the most part, and there's no performance or moment that elevates it or drags it down.</p><p>If there's one thing that defines this movie, it's sadly not Denzel Washington. In fact, it's probably the first movie I've seen where you could have replaced him and likely gotten a film that was just as good or close to it. No, aside from the fact that this is visually recognizable as a Tony Scott film for those of us who have seen a lot of Tony Scott films, the standout performance in this movie is Denzel's opposite number: John Travolta. </p><p><em>If you want to watch this movie before you read on, you can </em><a href="https://www.philo.com/" target="_blank" rel="nofollow"><em>stream it on Philo</em></a><em>. If you've never signed up for Philo before, new customers get a seven-day free trial, meaning you can stream "The Taking of Pelham 123" for free.</em></p><p><em>Alternatively, you can see if your cable TV, satellite or </em><a href="https://www.tomsguide.com/us/best-cable-replacements,review-4387.html"><em>live TV streaming service</em></a><em> has it and watch it on demand. If you get AMC as a channel, you should have this movie available to watch on demand for free.</em></p><h2 id="this-movie-wouldn-39-t-change-with-or-without-denzel">This movie wouldn't change with or without Denzel</h2><p>For those of you who aren't familiar with this 2009 action thriller, or the 1974 original ... or the 1998 television movie, "The Taking of Pelham 123" is adapted from the John Godey novel of the same name. In it, a group of armed men hijacks the Pelham 123 train (a New York City 6 train that originates from Pelham Bay at 1:23 p.m.) and demands a ransom from the city of New York.</p><p>In this movie, the men are led by Ryder, played by John Travolta. He wants $10 million from the Mayor of New York (James Gandolfini), delivered within the hour, or he'll start killing a hostage every minute. </p><div  class="fancy-box"><div class="fancy_box-title">Read more Denzel Watchathon</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>Here are some of the other Denzel Washington movies I've covered to date in my Denzel Watchathon:</strong></p><p class="fancy-box__body-text"><ul><li><a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/movies/i-just-watched-denzel-washingtons-controversial-first-movie-and-you-can-stream-it-free-right-now">"Carbon Copy" (1981)</a></li><li><a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/movies/this-denzel-washington-political-biopic-is-a-must-watch-in-2026-and-its-an-oscar-worthy-performance">"Cry Freedom" (1987)</a></li><li><a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/movies/denzels-first-oscar-winner-still-holds-up-36-years-later-and-you-can-stream-it-on-netflix-now">"Glory" (1989)</a></li><li><a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/movies/denzel-was-robbed-of-an-oscar-in-this-1992-biopic-stream-it-and-see-for-yourself">"Malcolm X" (1992)</a></li><li><a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/movies/i-just-watched-philadelphia-and-i-cant-believe-this-was-the-only-time-tom-hanks-and-denzel-teamed-up-for-a-movie">"Philadelphia" (1993)</a></li><li><a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/movies/over-30-years-later-this-denzel-washington-and-gene-hackman-action-thriller-is-still-one-of-my-favorite-movies">"Crimson Tide" (1995)</a></li><li><a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/movies/i-just-rewatched-remember-the-titans-and-ironically-i-forgot-how-good-denzel-washington-is-in-this-sports-movie">"Remember the Titans" (2000)</a></li><li><a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/movies/nearly-25-years-later-training-day-remains-denzel-washingtons-greatest-performance-ever">"Training Day" (2001)</a></li><li><a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/movies/this-denzel-washington-action-thriller-was-savaged-by-critics-in-2004-but-over-20-years-later-its-an-undeniable-must-watch">"Man on Fire" (2004)</a></li><li><a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/movies/denzel-still-shines-in-this-2004-psychological-thriller-but-i-think-meryl-streep-steals-the-spotlight">"The Manchurian Candidate" (2004)</a></li><li>"<a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/movies/this-denzel-washington-and-russell-crowe-crime-drama-is-still-great-19-years-later-and-you-can-stream-it-for-free">American Gangster" (2007)</a></li><li><a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/movies/this-denzel-washington-historical-drama-movie-is-often-forgotten-but-its-still-a-must-watch-performance-nearly-20-years-later">"The Great Debaters" (2007)</a></li></ul></p><p class="fancy-box__body-text"><strong>Read more: </strong><a data-analytics-id="inline-link" href="https://www.tomsguide.com/tag/denzelwatchathon"><strong>Every Denzel Watchathon movie so far</strong></a><strong></strong></p></div></div><p>The intermediaries between Ryder and the Mayor are Walter Garber (Denzel Washington), the MTA subway dispatcher who receives the call from Ryder demanding the ransom, and Lt. Vincent Camonetti (John Turturro), the NYPD hostage negotiator who briefly takes control of the situation. </p><p>This movie is largely about Ryder and Garber, though. Especially once Ryder kills the subway train's motorman in response to Camonetti taking over the phone from Garber. That's probably the high point of the movie, because it's in that moment that you realize there are real stakes to this hostage situation.</p><p>The reality is, despite a cast that includes Denzel, Travolta, Turturro and Gandolfini, you probably didn't need any of them. Replace them with replacement-level actors and change nothing else, and you'd probably get just as good a movie.</p><p>The lone exception is maybe Travolta, who is cranked up to 11 in this movie. Maybe that was a direction or script choice. The character Ryder isn't historically a stoic. But if it was even partially Travolta making an acting choice, something a bit more subtle might have been an improvement. But, honestly, I'm not even sure that's true.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OoNVoW"></div>                            </div>                            <script src="https://kwizly.com/embed/OoNVoW.js" async></script><h2 id="verdict-watch-39-the-taking-of-pelham-one-two-three-39-instead">Verdict: Watch 'The Taking of Pelham One Two Three' instead</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/N8TtjRlX_3E" allowfullscreen></iframe></div></div><p>Unless you're a Denzel completionist like me, you don't need to watch this movie. That's partially because it's not especially worth your time, but also because you could watch the 1974 original instead, which is currently streaming for free on <a href="https://tubitv.com/movies/303184/the-taking-of-pelham-one-two-three" target="_blank" rel="nofollow">Tubi</a> and is a better film.</p><p>If you're committed to watching this remake, though, now is the time to do it. You can likely watch it for free on <a href="https://www.philo.com/" target="_blank" rel="nofollow">Philo with a seven-day free trial</a> or as a video on-demand as part of your cable TV, satellite or <a href="https://www.tomsguide.com/us/best-cable-replacements,review-4387.html">live TV service</a> subscription. I watched it for free on <a href="https://www.dpbolvw.net/click-8900245-17161926?sid=hawk-custom-tracking" target="_blank" rel="nofollow">YouTube TV</a>, and I'm glad I only had to spend just under two hours of my time, rather than my hard-earned money.</p><p><a href="https://www.philo.com/" target="_blank" rel="nofollow"><em>Stream "The Taking of Pelham 123" on Philo with a seven-day free trial right now</em></a><em></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/movies/the-weight-pits-ethan-hawke-against-russell-crowe-in-a-dark-heist-movie-thats-a-must-watch-this-weekend">'The Weight' pits Ethan Hawke against Russell Crowe in a dark heist movie that's a must-watch this weekend</a></li><li><a href="https://www.tomsguide.com/entertainment/paramount-plus/mobland-season-2-kicks-things-off-with-a-bang-in-a-bloody-season-premiere-and-the-return-of-tom-hardy">'MobLand' season 2 kicks things off with a bang in a bloody season premiere and the return of Tom Hardy</a></li><li><a href="https://www.tomsguide.com/entertainment/movies/resident-evil-2026-review">'Resident Evil' review: Officially the best video game movie of all time, but also Zach Cregger's worst</a></li></ul>
                                                            </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 new Hulu shows you need to binge-watch this weekend (Sept. 18-20) ]]></title>
                                                                                                <dc:content><![CDATA[ <p><strong></strong><a href="https://www.tomsguide.com/entertainment/streaming/hulu"><strong>Hulu</strong></a> is a great <a href="https://www.tomsguide.com/us/best-streaming-video-services,review-2625.html">streaming service </a>if you're looking for <strong>new shows to binge this weekend</strong>. It features a deep library of series from a range of Disney-owned networks, including FX, ABC and 20th Television. It also has tons of original hit shows that you don't want to miss. As per usual, this week, I've put together a list of three newly added shows (or shows with new episodes) perfect for adding to your weekend watchlist. </p><p>First up is the ABC crime drama "<strong>R.J. Decker</strong>" <strong>season 2</strong>, which just debuted on Hulu this week. Once you've watched that, catch up on "<strong>It's Always Sunny in Philadelphia</strong>" <strong>season 18</strong> and "<strong>Futurama</strong>" <strong>season 14</strong>, both of which are almost done with their respective 10-episode seasons.</p><p>So, without further ado, <strong>here are three new to Hulu shows you need to binge-watch this weekend</strong>, and why you need to watch them. For more recommendations, check out the full list of <a href="https://www.tomsguide.com/entertainment/hulu/new-on-hulu-and-disney-in-september-2026-all-the-new-shows-and-movies-to-watch">everything new to Hulu and Disney+ in September 2026</a>.</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-rj-decker-39-season-2">'RJ Decker' 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/HGEc9TDxUPY" allowfullscreen></iframe></div></div><p><strong>Genre:</strong> Crime drama series</p><p><strong>What's it about?</strong> “R.J. Decker" stars Scott Speedman as the titular character. He's a discredited Florida journalist turned private investigator, and he's dived into the weird criminal underworld of South Florida. That's put him in the path of Emi Ochoa (Jaina Lee Ortiz), who sent R.J. to prison on the orders of her father (David Zayas), whose death they're now investigating together.</p><p><strong>Why you should watch it: </strong>The first season of this show was well-received by critics on <a href="https://www.rottentomatoes.com/tv/rj_decker/s01" target="_blank">Rotten Tomatoes</a>, and audiences weren't too far behind. Just from the trailer for season 2 alone, it seems like it gets the tone of author Carl Hiaasen, whose 1987 novel "Double Whammy" this show is based on, pretty spot on. If you're looking for a new crime drama with a twisted sense of humor, stream "R.J. Decker" season 1 now, then check out the season 2 premiere, which dropped on Hulu earlier this week.</p><p><em>Watch the premiere of </em><a href="https://click.linksynergy.com/fs-bin/click?id=kXQk6%2aivFEQ&offerid=1589248.206&type=3&subid=0&u1=tomsguide-us-1981311753635218823" target="_blank" rel="nofollow"><em>"R.J. Decker" season 2 on Hulu</em></a><em> now</em></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W2d5vX"></div>                            </div>                            <script src="https://kwizly.com/embed/W2d5vX.js" async></script><h2 id="39-it-39-s-always-sunny-in-philadelphia-39-season-18">'It's Always Sunny in Philadelphia' season 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/RYukoBaEHKw" allowfullscreen></iframe></div></div><p><strong>Genre:</strong> Situational comedy series</p><p><strong>What's it about?</strong> The gang — Charlie, Mac, Dee and Dennis (Charlie Day, Rob McElhenney, Kaitlin Olson and Glenn Howerton) — is back for another season of hijinks. This season, they've already gone to college and the Renaissance Faire, as well as planned a wedding and a funeral. This past week, they tried to get people back off the wagon and drink at Paddy's Pub, after noticing a rise in non-alcoholic beer consumption.</p><p><strong>Why you should watch it: </strong>"It's Always Sunny in Philadelphia" is never a bad time, and if you've watched any of the past 17 seasons, you probably already knew that. But if for some reason you've never seen this show or are still on the fence, now's the time to give it a shot. Whether you start with season 18 or season 1, you'll have a good time..</p><p><em>Watch the first six episodes of </em><a href="https://click.linksynergy.com/fs-bin/click?id=kXQk6%2aivFEQ&offerid=1589248.206&type=3&subid=0&u1=tomsguide-us-1981311753635218823" target="_blank" rel="nofollow"><em>"It's Always Sunny in Philadelphia" season 18 on Hulu</em></a><em> now</em></p><h2 id="39-futurama-39-season-14">'Futurama' season 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/Jb2LBG5qa88" allowfullscreen></iframe></div></div><p><strong>Genre:</strong> Animated sci-fi sitcom series</p><p><strong>What's it about? </strong>Set in the third millennium A.D., "Futurama" centers around a band of misfit humans, aliens, mutants and even a robot, masquerading as a delivery service. Don't expect many packages to make it to their destinations, though. This show is all about the hijinks and some clever zingers.</p><p><strong>Why you should watch it: </strong>"Futurama" is one of the best animated sitcoms of this millennium, and it's rare that it doesn't score several big laughs in an episode. I won't pretend that recent seasons are as good as the older episodes before the switch to Hulu, but at least you can always go back and stream the old seasons once you've caught up on season 14.</p><p><em>Watch the first eight episodes of </em><a href="https://click.linksynergy.com/fs-bin/click?id=kXQk6%2aivFEQ&offerid=1589248.206&type=3&subid=0&u1=hawk-custom-tracking" target="_blank" rel="nofollow"><em>"Futurama" season 14 on Hulu</em></a><em> now</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/movies/resident-evil-2026-review">'Resident Evil' review: Officially the best video game movie of all time, but also Zach Cregger's worst</a></li><li><a href="https://www.tomsguide.com/entertainment/apple-tv/slow-horses-season-6-kicks-things-off-with-a-stunning-death-and-im-still-in-shock">'Slow Horses' season 6 kicks things off with a stunning death, and I'm still in shock</a></li><li><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">Alan Ritchson does his best John Wick impression in a hyper-violent 'Reacher' season 4 finale</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/hulu/3-new-hulu-shows-you-need-to-binge-watch-this-weekend-sept-18-20-2026</link>
                                                                            <description>
                            <![CDATA[ Here are three new to Hulu shows that you need to add to your weekend watchlist right now. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">drMzgCZSRW7KdGGNNDmYLY</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/Wjo69aGmKWa4FQCSfqbH5J-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 18 Sep 2026 14:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Hulu]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                    <category><![CDATA[Streaming]]></category>
                                                                                                <author><![CDATA[ malcolm.mcmillan@futurenet.com (Malcolm McMillan) ]]></author>                    <dc:creator><![CDATA[ Malcolm McMillan ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/sSDLEbNEgBXf86HpujaWZ6-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Malcolm McMillan is a Streaming Editor for Tom&#039;s Guide, covering all the latest in streaming TV shows and movies. That means news, analysis, recommendations, reviews and more for just about anything you can watch, including sports! If it can be seen on a screen, he can write about it. &lt;/p&gt;&lt;p&gt;Malcolm has been with Tom&#039;s Guide since June 2022, starting as a staff writer covering breaking news. Since then, he&#039;s transitioned to cover artificial intelligence (AI), A/V tech and VR headsets. Since late 2023 he has almost exclusively covered streaming and entertainment for Tom&#039;s Guide.&lt;/p&gt;&lt;p&gt;Before writing for Tom&#039;s Guide, Malcolm worked as a fantasy football analyst writing for several sites and also had a brief stint working for Microsoft selling laptops, Xbox products and even the ill-fated Windows phone. He is passionate about video games and sports, though both cause him to yell at the TV frequently. He proudly sports many tattoos, including an Arsenal tattoo, in honor of the team that causes him to yell at the TV the most.&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/Wjo69aGmKWa4FQCSfqbH5J-1920-80.jpg">
                                                            <media:credit><![CDATA[Hulu; Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Hulu logo on a blue rays background]]></media:description>                                                            <media:text><![CDATA[Hulu logo on a blue rays background]]></media:text>
                                <media:title type="plain"><![CDATA[Hulu logo on a blue rays background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/Wjo69aGmKWa4FQCSfqbH5J-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p><strong></strong><a href="https://www.tomsguide.com/entertainment/streaming/hulu"><strong>Hulu</strong></a> is a great <a href="https://www.tomsguide.com/us/best-streaming-video-services,review-2625.html">streaming service </a>if you're looking for <strong>new shows to binge this weekend</strong>. It features a deep library of series from a range of Disney-owned networks, including FX, ABC and 20th Television. It also has tons of original hit shows that you don't want to miss. As per usual, this week, I've put together a list of three newly added shows (or shows with new episodes) perfect for adding to your weekend watchlist. </p><p>First up is the ABC crime drama "<strong>R.J. Decker</strong>" <strong>season 2</strong>, which just debuted on Hulu this week. Once you've watched that, catch up on "<strong>It's Always Sunny in Philadelphia</strong>" <strong>season 18</strong> and "<strong>Futurama</strong>" <strong>season 14</strong>, both of which are almost done with their respective 10-episode seasons.</p><p>So, without further ado, <strong>here are three new to Hulu shows you need to binge-watch this weekend</strong>, and why you need to watch them. For more recommendations, check out the full list of <a href="https://www.tomsguide.com/entertainment/hulu/new-on-hulu-and-disney-in-september-2026-all-the-new-shows-and-movies-to-watch">everything new to Hulu and Disney+ in September 2026</a>.</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-rj-decker-39-season-2">'RJ Decker' 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/HGEc9TDxUPY" allowfullscreen></iframe></div></div><p><strong>Genre:</strong> Crime drama series</p><p><strong>What's it about?</strong> “R.J. Decker" stars Scott Speedman as the titular character. He's a discredited Florida journalist turned private investigator, and he's dived into the weird criminal underworld of South Florida. That's put him in the path of Emi Ochoa (Jaina Lee Ortiz), who sent R.J. to prison on the orders of her father (David Zayas), whose death they're now investigating together.</p><p><strong>Why you should watch it: </strong>The first season of this show was well-received by critics on <a href="https://www.rottentomatoes.com/tv/rj_decker/s01" target="_blank">Rotten Tomatoes</a>, and audiences weren't too far behind. Just from the trailer for season 2 alone, it seems like it gets the tone of author Carl Hiaasen, whose 1987 novel "Double Whammy" this show is based on, pretty spot on. If you're looking for a new crime drama with a twisted sense of humor, stream "R.J. Decker" season 1 now, then check out the season 2 premiere, which dropped on Hulu earlier this week.</p><p><em>Watch the premiere of </em><a href="https://click.linksynergy.com/fs-bin/click?id=kXQk6%2aivFEQ&offerid=1589248.206&type=3&subid=0&u1=tomsguide-us-1981311753635218823" target="_blank" rel="nofollow"><em>"R.J. Decker" season 2 on Hulu</em></a><em> now</em></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W2d5vX"></div>                            </div>                            <script src="https://kwizly.com/embed/W2d5vX.js" async></script><h2 id="39-it-39-s-always-sunny-in-philadelphia-39-season-18">'It's Always Sunny in Philadelphia' season 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/RYukoBaEHKw" allowfullscreen></iframe></div></div><p><strong>Genre:</strong> Situational comedy series</p><p><strong>What's it about?</strong> The gang — Charlie, Mac, Dee and Dennis (Charlie Day, Rob McElhenney, Kaitlin Olson and Glenn Howerton) — is back for another season of hijinks. This season, they've already gone to college and the Renaissance Faire, as well as planned a wedding and a funeral. This past week, they tried to get people back off the wagon and drink at Paddy's Pub, after noticing a rise in non-alcoholic beer consumption.</p><p><strong>Why you should watch it: </strong>"It's Always Sunny in Philadelphia" is never a bad time, and if you've watched any of the past 17 seasons, you probably already knew that. But if for some reason you've never seen this show or are still on the fence, now's the time to give it a shot. Whether you start with season 18 or season 1, you'll have a good time..</p><p><em>Watch the first six episodes of </em><a href="https://click.linksynergy.com/fs-bin/click?id=kXQk6%2aivFEQ&offerid=1589248.206&type=3&subid=0&u1=tomsguide-us-1981311753635218823" target="_blank" rel="nofollow"><em>"It's Always Sunny in Philadelphia" season 18 on Hulu</em></a><em> now</em></p><h2 id="39-futurama-39-season-14">'Futurama' season 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/Jb2LBG5qa88" allowfullscreen></iframe></div></div><p><strong>Genre:</strong> Animated sci-fi sitcom series</p><p><strong>What's it about? </strong>Set in the third millennium A.D., "Futurama" centers around a band of misfit humans, aliens, mutants and even a robot, masquerading as a delivery service. Don't expect many packages to make it to their destinations, though. This show is all about the hijinks and some clever zingers.</p><p><strong>Why you should watch it: </strong>"Futurama" is one of the best animated sitcoms of this millennium, and it's rare that it doesn't score several big laughs in an episode. I won't pretend that recent seasons are as good as the older episodes before the switch to Hulu, but at least you can always go back and stream the old seasons once you've caught up on season 14.</p><p><em>Watch the first eight episodes of </em><a href="https://click.linksynergy.com/fs-bin/click?id=kXQk6%2aivFEQ&offerid=1589248.206&type=3&subid=0&u1=hawk-custom-tracking" target="_blank" rel="nofollow"><em>"Futurama" season 14 on Hulu</em></a><em> now</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/movies/resident-evil-2026-review">'Resident Evil' review: Officially the best video game movie of all time, but also Zach Cregger's worst</a></li><li><a href="https://www.tomsguide.com/entertainment/apple-tv/slow-horses-season-6-kicks-things-off-with-a-stunning-death-and-im-still-in-shock">'Slow Horses' season 6 kicks things off with a stunning death, and I'm still in shock</a></li><li><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">Alan Ritchson does his best John Wick impression in a hyper-violent 'Reacher' season 4 finale</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 3 new to Paramount+ movies you need to stream this weekend (Sept. 18-20) ]]></title>
                                                                                                <dc:content><![CDATA[ <p><a href="https://www.tomsguide.com/entertainment/streaming/paramount-plus"><strong>Paramount+</strong></a> is a great <a href="https://www.tomsguide.com/us/best-streaming-video-services,review-2625.html">streaming service </a>if you're building a weekend movie marathon. It adds dozens of movies to the platform each month. It <a href="https://www.tomsguide.com/entertainment/paramount-plus/paramount-just-added-121-new-movies-and-shows-heres-the-5-im-streaming-first-september-1-2026">added over 120 new movies and shows on September 1</a> alone. Many of these are beloved classics or more modern hits. A few times a month, you also get brand-new movies from Paramount Skydance Studios.</p><p>This week, I'm going with a modern sports drama masterpiece, a dark satirical comedy and wrapping things up with a parody film that's one of the biggest movies of the year. </p><p>So let's start with "<strong>Creed</strong>," which was added on September 1 along with its two sequels and the rest of the "Rocky" franchise. Once you're done with that, check out the hilariously twisted "<strong>Death of Stalin</strong>," which is about exactly what you think it's about. Finally, "<strong>Scary Movie</strong>" <strong>(2026)</strong> arrived on Paramount+ earlier this month, so if you haven't already checked it out, consider this your excuse to do so.</p><p><strong>Here are the three new to Paramount+ movies that you need to be streaming this weekend</strong>. If you need more recommendations, check out our full guide to <a href="https://www.tomsguide.com/entertainment/paramount-plus/new-on-paramount-in-september-2026-top-movies-and-shows-to-stream-this-month">everything new on Paramount+ in September 2026</a>.</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-creed-39-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><strong>Genre: </strong>Sports drama movie</p><p><strong>What's it about? </strong>Michael B. Jordan stars as Adonis Creed in what is now his second of five collaborations with director Ryan Coogler. In this sequel/spin-off to the "Rocky" franchise, Adonis is the illegitimate son of former heavyweight champion Apollo (Carl Weathers), and is something of a boxer himself. His shot at greatness comes when World Light Heavyweight Champion "Pretty" Ricky Conlan (Tony Bellew) challenges him to a title fight, so he turns to his father's old rival, Rocky Balboa (Sylvester Stallone), for help.</p><p><strong>Why you should watch it: </strong>Jordan and Coogler simply don't miss when paired together, and they pair together a lot. The Oscar-winning actor has been in <em>every</em> movie Coogler has ever directed, and some consider this to be their best pairing. Well ... probably second best, behind "Sinners." But don't let that stop you from watching "Creed" and its two sequels.</p><p><em>Watch </em><a href="https://www.paramountplus.com/" target="_blank" rel="nofollow"><em>"Creed" on Paramount+</em></a><em> now</em></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OoVqqW"></div>                            </div>                            <script src="https://kwizly.com/embed/OoVqqW.js" async></script><h2 id="39-the-death-of-stalin-39-2017">'The Death of Stalin' (2017)</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/E9eAshaPvYw" allowfullscreen></iframe></div></div><p><strong>Genre:</strong><em><strong> </strong></em>Political satire black comedy movie</p><p><strong>What's it about?</strong> "The Death of Stalin" is hilarious. Based on the French graphic novel "La Mort de Staline," it depicts the internal power struggle in the Soviet Politburo following the death of U.S.S.R. leader Joseph Stalin in 1953. But it does so with an incredible cast and a script written by "Veep" creator Armando Iannucci.</p><p><strong>Why you need to watch it:</strong> If you wanted a comedy about the death of a major historical figure and the ensuing chaos, you'd be hard-pressed to find a better cast. This movie stars Steve Buscemi, Simon Russell Beale, Paddy Considine, Rupert Friend, Jason Isaacs, Michael Palin, Andrea Riseborough and Jeffrey Tambor as various members of the Politburo and the Soviet ruling class. Throw in Iannucci as writer and director, and it's no surprise people loved "The Death of Stalin."</p><p><em>Watch </em><a href="https://paramountplus.com" target="_blank" rel="nofollow"><em>"The Death of Stalin" on Paramount+</em></a><em> now</em></p><h2 id="39-scary-movie-39-2026">'Scary Movie' (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/cGgWAHXuTKc" allowfullscreen></iframe></div></div><p><strong>Genre:</strong><em><strong> </strong></em>Parody horror comedy movie</p><p><strong>What's it about? </strong>The "Scary Movie" franchise has been parodying horror flicks since I was in elementary school, and I'm not exactly young anymore. Heck, this isn't even the first movie in the franchise called "Scary Movie." This latest installment is a follow-up to the first two "Scary Movie" films, in particular, and it follows Cindy Campbell (Anna Faris), Ray Wilkins (Shawn Wayans) and the Meeks siblings, Shorty (Marlon Wayans) and Brenda (Regina Hall). They're forced to reunite to stop a masked killer from the original "Scary Movie."</p><p><strong>Why you need to watch it:</strong> "Scary Movie" (2026) is a bit polarizing, at least according to <a href="https://www.rottentomatoes.com/m/scary_movie_2026" target="_blank">Rotten Tomatoes</a>. Critics despised it, rating it just 24% fresh. But audiences were far kinder, giving it a 64% rating. My guess? The less seriously you take this horror comedy, the better.</p><p><em>Watch </em><a href="https://paramountplus.com" target="_blank" rel="nofollow"><em>"Scary Movie" (2026) on Paramount+</em></a><em> now</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/movies/resident-evil-2026-review">'Resident Evil' review: Officially the best video game movie of all time, but also Zach Cregger's worst</a></li><li><a href="https://www.tomsguide.com/entertainment/apple-tv/slow-horses-season-6-kicks-things-off-with-a-stunning-death-and-im-still-in-shock">'Slow Horses' season 6 kicks things off with a stunning death, and I'm still in shock</a></li><li><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">Alan Ritchson does his best John Wick impression in a hyper-violent 'Reacher' season 4 finale</a></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.tomsguide.com/entertainment/paramount-plus/3-new-to-paramount-movies-you-need-to-stream-this-weekend-sept-18-20-2026</link>
                                                                            <description>
                            <![CDATA[ Paramount+ just added a ton of must-watch movies worth watching this weekend. Here are my top 3 picks. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">AV2snMH4upVjMKSUWcuZGg</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/kmebLpavt7z9sBPbgrresG-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 18 Sep 2026 13:45:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Paramount Plus]]></category>
                                                    <category><![CDATA[Movies]]></category>
                                                    <category><![CDATA[Entertainment]]></category>
                                                    <category><![CDATA[Streaming]]></category>
                                                                                                <author><![CDATA[ malcolm.mcmillan@futurenet.com (Malcolm McMillan) ]]></author>                    <dc:creator><![CDATA[ Malcolm McMillan ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/sSDLEbNEgBXf86HpujaWZ6-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Malcolm McMillan is a Streaming Editor for Tom&#039;s Guide, covering all the latest in streaming TV shows and movies. That means news, analysis, recommendations, reviews and more for just about anything you can watch, including sports! If it can be seen on a screen, he can write about it. &lt;/p&gt;&lt;p&gt;Malcolm has been with Tom&#039;s Guide since June 2022, starting as a staff writer covering breaking news. Since then, he&#039;s transitioned to cover artificial intelligence (AI), A/V tech and VR headsets. Since late 2023 he has almost exclusively covered streaming and entertainment for Tom&#039;s Guide.&lt;/p&gt;&lt;p&gt;Before writing for Tom&#039;s Guide, Malcolm worked as a fantasy football analyst writing for several sites and also had a brief stint working for Microsoft selling laptops, Xbox products and even the ill-fated Windows phone. He is passionate about video games and sports, though both cause him to yell at the TV frequently. He proudly sports many tattoos, including an Arsenal tattoo, in honor of the team that causes him to yell at the TV the most.&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/kmebLpavt7z9sBPbgrresG-1920-80.jpg">
                                                            <media:credit><![CDATA[Paramount+; Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Paramount Plus logo on orange film reel background]]></media:description>                                                            <media:text><![CDATA[Paramount Plus logo on orange film reel background]]></media:text>
                                <media:title type="plain"><![CDATA[Paramount Plus logo on orange film reel background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/kmebLpavt7z9sBPbgrresG-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p><a href="https://www.tomsguide.com/entertainment/streaming/paramount-plus"><strong>Paramount+</strong></a> is a great <a href="https://www.tomsguide.com/us/best-streaming-video-services,review-2625.html">streaming service </a>if you're building a weekend movie marathon. It adds dozens of movies to the platform each month. It <a href="https://www.tomsguide.com/entertainment/paramount-plus/paramount-just-added-121-new-movies-and-shows-heres-the-5-im-streaming-first-september-1-2026">added over 120 new movies and shows on September 1</a> alone. Many of these are beloved classics or more modern hits. A few times a month, you also get brand-new movies from Paramount Skydance Studios.</p><p>This week, I'm going with a modern sports drama masterpiece, a dark satirical comedy and wrapping things up with a parody film that's one of the biggest movies of the year. </p><p>So let's start with "<strong>Creed</strong>," which was added on September 1 along with its two sequels and the rest of the "Rocky" franchise. Once you're done with that, check out the hilariously twisted "<strong>Death of Stalin</strong>," which is about exactly what you think it's about. Finally, "<strong>Scary Movie</strong>" <strong>(2026)</strong> arrived on Paramount+ earlier this month, so if you haven't already checked it out, consider this your excuse to do so.</p><p><strong>Here are the three new to Paramount+ movies that you need to be streaming this weekend</strong>. If you need more recommendations, check out our full guide to <a href="https://www.tomsguide.com/entertainment/paramount-plus/new-on-paramount-in-september-2026-top-movies-and-shows-to-stream-this-month">everything new on Paramount+ in September 2026</a>.</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-creed-39-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><strong>Genre: </strong>Sports drama movie</p><p><strong>What's it about? </strong>Michael B. Jordan stars as Adonis Creed in what is now his second of five collaborations with director Ryan Coogler. In this sequel/spin-off to the "Rocky" franchise, Adonis is the illegitimate son of former heavyweight champion Apollo (Carl Weathers), and is something of a boxer himself. His shot at greatness comes when World Light Heavyweight Champion "Pretty" Ricky Conlan (Tony Bellew) challenges him to a title fight, so he turns to his father's old rival, Rocky Balboa (Sylvester Stallone), for help.</p><p><strong>Why you should watch it: </strong>Jordan and Coogler simply don't miss when paired together, and they pair together a lot. The Oscar-winning actor has been in <em>every</em> movie Coogler has ever directed, and some consider this to be their best pairing. Well ... probably second best, behind "Sinners." But don't let that stop you from watching "Creed" and its two sequels.</p><p><em>Watch </em><a href="https://www.paramountplus.com/" target="_blank" rel="nofollow"><em>"Creed" on Paramount+</em></a><em> now</em></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OoVqqW"></div>                            </div>                            <script src="https://kwizly.com/embed/OoVqqW.js" async></script><h2 id="39-the-death-of-stalin-39-2017">'The Death of Stalin' (2017)</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/E9eAshaPvYw" allowfullscreen></iframe></div></div><p><strong>Genre:</strong><em><strong> </strong></em>Political satire black comedy movie</p><p><strong>What's it about?</strong> "The Death of Stalin" is hilarious. Based on the French graphic novel "La Mort de Staline," it depicts the internal power struggle in the Soviet Politburo following the death of U.S.S.R. leader Joseph Stalin in 1953. But it does so with an incredible cast and a script written by "Veep" creator Armando Iannucci.</p><p><strong>Why you need to watch it:</strong> If you wanted a comedy about the death of a major historical figure and the ensuing chaos, you'd be hard-pressed to find a better cast. This movie stars Steve Buscemi, Simon Russell Beale, Paddy Considine, Rupert Friend, Jason Isaacs, Michael Palin, Andrea Riseborough and Jeffrey Tambor as various members of the Politburo and the Soviet ruling class. Throw in Iannucci as writer and director, and it's no surprise people loved "The Death of Stalin."</p><p><em>Watch </em><a href="https://paramountplus.com" target="_blank" rel="nofollow"><em>"The Death of Stalin" on Paramount+</em></a><em> now</em></p><h2 id="39-scary-movie-39-2026">'Scary Movie' (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/cGgWAHXuTKc" allowfullscreen></iframe></div></div><p><strong>Genre:</strong><em><strong> </strong></em>Parody horror comedy movie</p><p><strong>What's it about? </strong>The "Scary Movie" franchise has been parodying horror flicks since I was in elementary school, and I'm not exactly young anymore. Heck, this isn't even the first movie in the franchise called "Scary Movie." This latest installment is a follow-up to the first two "Scary Movie" films, in particular, and it follows Cindy Campbell (Anna Faris), Ray Wilkins (Shawn Wayans) and the Meeks siblings, Shorty (Marlon Wayans) and Brenda (Regina Hall). They're forced to reunite to stop a masked killer from the original "Scary Movie."</p><p><strong>Why you need to watch it:</strong> "Scary Movie" (2026) is a bit polarizing, at least according to <a href="https://www.rottentomatoes.com/m/scary_movie_2026" target="_blank">Rotten Tomatoes</a>. Critics despised it, rating it just 24% fresh. But audiences were far kinder, giving it a 64% rating. My guess? The less seriously you take this horror comedy, the better.</p><p><em>Watch </em><a href="https://paramountplus.com" target="_blank" rel="nofollow"><em>"Scary Movie" (2026) on Paramount+</em></a><em> now</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/movies/resident-evil-2026-review">'Resident Evil' review: Officially the best video game movie of all time, but also Zach Cregger's worst</a></li><li><a href="https://www.tomsguide.com/entertainment/apple-tv/slow-horses-season-6-kicks-things-off-with-a-stunning-death-and-im-still-in-shock">'Slow Horses' season 6 kicks things off with a stunning death, and I'm still in shock</a></li><li><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">Alan Ritchson does his best John Wick impression in a hyper-violent 'Reacher' season 4 finale</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
            </channel>
</rss>